so if I'm a novice dodger and I'm being attacked by a pack of wolves with no natural attacking skills, I won't gain any exp if I dodge their attacks for an hour? Boo. This suggestion is kind of a broad one to completely chain when and how exp is assigned. Not necessary imo.
The problem is that the way experience is assigned is just broken. Its not even a "you can choose to exploit this or ignore it" thing at this point. If you sneak everywhere for a week you become legendary at no cost, and there's really no non-exploity way to train sneak if you don't start with it. Punching an immobile groundhog conveys as much experience per hit as swordfighting a legendary hero. Slaughtering civilians is greatly more practical in terms of gaining combat experience than killing bandits who fight back. The list goes on. Even if you are (as I do) specifically not trying to exploit the system, its impossible not to notice.
There are two problems here:
The training situation is completely unrealistic (see above) in a game that places as lot of priority on simulating these sort of things.
The system punishes the player by granting them an in game benefit (experience) at an out of game cost (real life time and effort). Repeatedly picking up and throwing a rock is really tedious for the player, but in game is massively practical and costs nothing (including any significant amount of time). Comparing shooting a bow at bandits (without using stealth, since that's basically an exploit as of now); you actually train way slower and there's a significant risk involved, but its way more engaging.
Now I agree with you that flat not gaining experience when fighting someone less skilled than you is a poor solution, but I completely disagree that a broad change to the way experience is granted isn't necessary.
I have two changes I would suggest to the way training works:
Firstly: Punching a wounded groundhog for three in-game hours is tedious and annoying to set up, and in universe shouldn't provide any more experience than just hitting a punching bag.
So why can't you just tell your character to hit a punching bag for an hour? Or hell, tell them to train for a year or a decade. We already have fast travel, quick waiting in the short term and plans to be able pass time quickly in the long term. The need for food/shelter, the fact that dangerous situations (wars, personal conflicts, monsters, famines, plauges) should emerge over time and the need to fufill societal duties should all provide a balancing factor on this trade of time for experience, as they do with real life training. And it would skip the boring parts of the story.
Secondly: There should be a baseline of skill gain rate that is training a skill with no factors that make it difficult: attacking an inanimate object, sneaking when there is no one to hide from, or any situation where there is no cost, risk, or unusually great exertion. This rate should be the same regardless of whether controling your character directly or just skipping time as above, and it should take years to reach grand-master at this rate. Any use of a skill should start at that baseline and be modified up by difficulty. So attacking a completely defenseless enemy would be the slow baseline (thus you might as well just hit a training dummy), killing a peasant would be faster but still give mediocre gains even if you drew it out, and sparring an experienced mentor would give very rapid skill gains. Ideally there would also be some sort of bonus for using combat skills against inherently dangerous creatures like dragons.
I'm not sure if risk should factor into this equation; on one hand, from a balance perspective, it makes all sort of sense that you should gain more from a real fight where your character might die than sparring which has little risk, but on the other hand I'm not sure that's realistic. And then there's the whole "so I learn less if my enemy is using a wooden sword/trying to be non-lethal, even if they are just as hard to fight?" issue. Maybe simulating adrenaline in dangerous situations would work, since you could perform beyond your usual abilities and thus train faster. Or maybe we could simulate fear as a penalty for inexperienced combatants and then lessen the fear penalty as they've experienced dangerous situations.
In summary: scale training rate more by difficulty of action as well is in-game cost and risk, take a long time to train with easy actions, allow player to time skip over basic/repetative training actions to compensate.
Well, I guess that's my first huge rant on this forum. A lot of that didn't have much to do with slothen's comment, sorry. Hopefully that was all coherent...