Desperate for help !

I'm 19 and me and boyfriend have been together for 2 years now and I can honestly say I love him with all my heart. He's my first everything and I was hoping that he would also be my last. But throughout our relationship he has been caught cheating 3 times. And although he has never physically cheated on me the messages and pictures exchanged is what I consider cheating. Each time he did it I let him know how much it hurt me and how insecure it made me feel. The third and most recent time was right before our 2 year anniversary. He was messaging some new random on Twitter(he's "Twitter famous"). Telling her how beautiful she is and how he would love to meet her. Ofcourse when I found it I was again heart broken. He never complements me, his idea of a date nowadays is going to publix for subs, he's always yelling at me or cursing, he constantly lies about what he does on Twitter, and for some reason I still love him. Am I crazy ? I'm so conflicted I love him. Are men capable if changing ? Is this some phase he can just mature out of ?