Indeed: When AI sees a yellow or red, makes the consist to go a half speed. The issue is that if the signal is 10 miles away, the consist should not run at half speed. I may exaggerate the 10 miles, but really, it should be much shorter or depending of the line speed. It may be something very hard to do, as this issue has been around for far too long now, and many people have made noise about it.
Note: If you find the offending signal, you may set an invisible signal just in front. If the signal is yellow, the invisible one will be green, and the AI will see green and run at line speed.