I have personally found that difficult too, but it's very simple. Speak English as much as you possibly can. Think in English, speak to natives over IM or voice calls.
Speaking to natives is really scary, even to me who has had about 4 years of experience. It's not easy because they're very comfortable with the language so they speak really quickly and use odd terminology(depending on the region they are from). My advice on that is to speak to a lot of U.S.A. citizens. They have the easiest accent to understand by far. However, you should stay away from people from New Jersey and such states because they pronounce stuff weirdly and it would be a huge challenge to go through a conversation without a lot of 'what's and 'excuse me's, especially with them.
Look up anything and everything that you don't understand, don't try to play smart and just nod while you have no idea what the person is talking about. Ask questions, don't be afraid!
Mention to people that you want to improve your English and that you want them to correct you. When you don't understand why they corrected you, you just go ahead and ask why do they think what you said is wrong. Lots of times you'll get an answer that's something along the lines of 'It just sounds weird' and that's perfectly normal because you'll see that with time grammatical mistakes will sound weird to you too, but you won't really know which exact grammatical rule was broken.
Everyone has a different way of expressing things and that always depends on the people surrounding the person so don't get scared if you start sounding like the people you talk to, it's absolutely normal.