Review
回顾在线性回归中函数最优化计算的过程中,需要对梯度进行计算,然后一步一步微调参数w和b,最后得到一个使loss最小的最优解。
每次都是沿着法线的方向对结果进行微调修改参数
Tip 1: Tuning your learning rates
如果学习率过大,就会在最低点上面来回动荡,永远都到不了最低点;
如果学习率过小,就会使收敛过慢,需要训练很久才能到达最优结果。
可以对学习率实时进行调整,一开始很大,然后逐渐减少。这个就是常规的方法,也称Vanilla Gradient dedcent
更好的解决方案:Adagrad。
用前一次的学习率乘以vanilla参数然后再除以前面所有梯度的均方根。
对Adagrag进行简化
问题:在Adagrag中,分子和分母的变化方向是一样的,是否造成矛盾?
直观的理由是造成一种反差的效果:
- 当前面几步比较慢的时候,后面会根据前面的梯度下降的值计算出一个比较小的均方根,导致下一步比较大;
-
当前面几步比较快的时候,后面会根据前面的梯度下降的值计算出一个比较大的均方根,导致下一步比较小;
最优的梯度下降方法应该是接近最低点的时候梯度下降速度减慢,而不是一直保持一个线性的值。
Tip 2: Stochastic Gradient Descent
思想:只对一个随机的样品进行梯度下降——加快训练速度
传统的梯度下降:一步要计算20个;随机梯度下降:一步计算一个,20步计算20个。
Tip 3: Feature Scaling
特征缩放:使不同的特征拥有一样的规模大小
原因:使梯度线偏向于一个圆形,更好的进行梯度下降
缩放方法:使数据的平均值为0,方差为1
为什么梯度下降方法有效?
梯度下降的目标:给定一个点,找到一个最“陡峭”的方向前进一步。如何找到这一个陡峭的方向?
泰勒公式:
圆圈的半径足够小,即学习率足够小,每次沿着梯度下降最快的方向走一步,就会找到圆圈内最小值
两个参数的情况:
虽然Gradient Descent方法有效找到一个“最低点”,但是还是会存在很多的问题,我们会在以后的学习中去解决它们。
胶片来自于台湾大学李宏毅教授的《机器学习课程》,侵删!
网友评论