一、梯度下降算法

梯度学习

根据导数的定义,如果输入发生微小的变化,那么输出也会相应的变化:
Tensorflow学习笔记(七)优化方法,梯度优化
对导数符号化后,有:
Tensorflow学习笔记(七)优化方法,梯度优化
梯度下降的思路如下:
寻找一个参数w,使得损失函数J(w)的值最小,通过不断的迭代,w会不断更新,最后会达到或接近最小值点。

梯度下降算法原理图:
Tensorflow学习笔记(七)优化方法,梯度优化
梯度下降算法实际上一种求解最小二乘法最优解的有效工具。
σ为学习率,该值越大学习速度越快,相反,也有可能因为过大而越过导致w变化过大导致始终无法达到最优点,所以应该适当的调整σ的大小。
可以得到参数的更新公式如下:
Tensorflow学习笔记(七)优化方法,梯度优化
例如:
Tensorflow学习笔记(七)优化方法,梯度优化
取更新率为0.2,在迭代10次后数值变为0.0605,此后w会不断的接近0,达到近似的最小值点。

求解多维

对于二维函数
Tensorflow学习笔记(七)优化方法,梯度优化
可以利用偏导数来描述函数沿任意方向的变化率。
J的导数可以汇总为每一个偏导数组成的向量:
Tensorflow学习笔记(七)优化方法,梯度优化

随机梯度下降

交叉熵损失函数的梯度下降需要计算:
Tensorflow学习笔记(七)优化方法,梯度优化
随着数据的增加,计算总的损失函数需要更多的时间以及更多的运算代价。
采取随机抽样的形式每次抽取i’个样本最为迭代的参考有:
Tensorflow学习笔记(七)优化方法,梯度优化
这样每次只需要对几百个样本进行计算即可。
这种方法准确度肯定不如对全部样本进行计算,但是它大大的缩短了迭代的运算量和时间。

因此,实际学习迭代过程中,通常使用部分全计算加部分随机梯度的方法进行。

相关文章: