My opinion is that i believe that you should have both. A person should have fun and work hard as well. I believe that if you are not having fun, then there is no point in doing it. A person should do what they like. If a person does what they like, naturally that person will start to explore things about what they are doing(karate) and will start working hard because they want to work hard. So that person will naturally become stronger, better, etc. If you are forcing yourself to improve, you are only improving because you feel you have to,not because you want to. If a beginner took on an advanced player, a person can get really discouraged or use that loss as motivation to try to get better. I can't blame anyone for getting discouraged. Losses get to some people really bad. I think that a beginner should play an advanced player only in moderation. A beginner learns from an advanced player while fighting, but a beginner can also learn from a different beginner how to fight.
I play Street Fighter 4. I will use as example. When I started playing, i was a beginner myself (over here in U.S.). I played amongst my friends who were also beginners and we improved by playing each other. Street Fighter 4 was fun! I had a lot of fun so i wanted to see others play to learn I also learned by watching advanced players play. Then when I gained confidence, I went to tournaments and I played against advanced players. I lost at my first tournament, but I learned from my mistakes. i have continued to play, and am improving little by little.
So, in summary, I feel that a beginner should play other beginners and occasionally play against an advanced player.
I hope you can understand what I have said, I feel that I have confused you. xD