梯度下降_机器学习-李宏毅

梯度下降

调整学习率learning rate

  • 学习率过大,发生震荡。学习率过小,学习效率低
  • 较好的方法是在较平坦的地方步子迈大些,陡峭的地方步子迈小些

自适应学习率

  • 随着迭代次数的增加,通过因子来减小学习率
  • 刚开始,初始点距离最低点远,使用大的学习率
  • 迭代若干次数后靠近最低点,采用小的学习率

Adagrad算法

一般梯度下降:

\[L=\sum_n(\tilde{y}^n - (b+\sum w_ix_i^n))^2 \\ w^{t+1}\gets w^t-\eta^tg^t\\ \eta^t=\frac{\eta}{\sqrt{t+1}} \]

Adagrad:

\[w^{t+1}\gets w^t-\frac{\eta^t}{\sigma}g^t\\ g^t=\frac{\partial L(\theta^t)}{\partial w}\\ \eta^t = \frac{\eta}{\sqrt{t+1}}\\ \sigma^t=\sqrt{\frac{1}{t=1}\sum^t_{i=0}(g^i)^2} \]

化简:

\[w^{t+1}\gets w^t-\frac{\eta}{\sqrt{\sum^t_{i=0}(g^i)^2}}g^t\\ \]

随机梯度下降 Stochastic Gradient Descent

  • 常规梯度下降是将 所有训练集数据处理后才开始更新参数
  • 随机梯度下降是计算一个例子的损失函数 \(L\) 后就开始更新梯度
  • 更新既可以按顺序更新,也可以随机挑选数据更新

特征缩放

  • 两个输入数据分布的范围不一样,差别较大,建议进行缩放处理,使得数据分布的范围一样

  • 数据不进行处理,会导致特征间的影响程度差异大,对于同一个学习率,更新数据偏差大

  • 实际上就是将数据分布由椭圆进行坐标变换,化为同心圆。

  • 常规做法:$$x_i^r \gets \frac{x_i^r - \bar{x}}{\sigma _i},\bar{x}是平均值,\sigma_i是标准差$$

泰勒展开式

如果\(h(x)在x=x_0\) 点的某个领域内有无限阶导数,则有泰勒级数:

\[\begin{split} h(x)&=\sum^\infty_{k=0}\frac{h^k(x_0)}{k!}(x-x_0)^k\\ &=h(x_0)+h'(x_0)(x-x_0)+\frac{h''(x_0)}{!}(x-x_0)^2+... \end{split} \]

二元泰勒:

\[h(x,y)=h(x_0,y_0)+\frac{\partial h(x_0,y_0)}{\partial x}(x-x_0)+\frac{\partial h(x_0,y_0)}{\partial y}(y-y_0)+... \]

梯度下降理论基础

在小范围的圆里面找到最小值,然后不断递归,直到找到全局最小值。

基于泰勒展开式,化简:

两个向量内积如何最小,一定是反向180°即可。因此有:

最后有:

梯度下降法的局限

  • 陷入局部最小值
  • 掉入鞍点
  • 陷入一个平原地区
posted @ 2019-02-27 20:51  hello.world!  阅读(542)  评论(0编辑  收藏  举报