In Mail, go to Mail > Preferences > Accounts then take a look at your settings for each account you have.
If you have a look at your settings for Junk you probably have it set to Store Junk Messages on the Server.
This is ok, but if you have it set to Never Delete Junk Messages they will keep coming back to your Junk Mailbox.
If you set it to Delete Junk Messages after One Day or One Week after this time they should not come back to your Junk Mailbox.
I hope this helps as I know how frustrating this can be.