Most glasses become cloudy and scratched as the antiglare coating starts to deteriorate. In some cases you can achieve amazing

click to enlarge
results by simply using a compound to remove the antiglare coating, especially when the scratches aren’t severe. One solution that works well on plastic/polycarbonate lenses is Armour Etch. WARNING: do not use this product on glasses that are made from actual glass, as the product is really designed to frost glass and will render any real glass-based glasses useless.
However, you can still achieve amazing results with a $10 bottle of Armour Etch and a little time. Apply just enough of the solution to both sides of the glass and rub in the solution with a finger for a few minutes. After which, simply rinse the solution from the lens with warm water and use a non-abrasive cloth to wipe the lens clean. It is best if you keep the solution off the frame to achieve the best results.
On the other hand, if you have glasses that are made from real glass you are better off using toothpaste to buff the lens, and hopefully remove small scratches, than you would by using Lens CPR. If you fail to remove the scratches with any of these solutions you may be left with no option but to replace the glasses or the lens if you have taken a liking to the frame.