一、梯度下降算法
梯度学习
根据导数的定义,如果输入发生微小的变化,那么输出也会相应的变化:
对导数符号化后,有:
梯度下降的思路如下:
寻找一个参数w,使得损失函数J(w)的值最小,通过不断的迭代,w会不断更新,最后会达到或接近最小值点。
梯度下降算法原理图:
梯度下降算法实际上一种求解最小二乘法最优解的有效工具。
σ为学习率,该值越大学习速度越快,相反,也有可能因为过大而越过导致w变化过大导致始终无法达到最优点,所以应该适当的调整σ的大小。
可以得到参数的更新公式如下:
例如:
取更新率为0.2,在迭代10次后数值变为0.0605,此后w会不断的接近0,达到近似的最小值点。
求解多维
对于二维函数
可以利用偏导数来描述函数沿任意方向的变化率。
J的导数可以汇总为每一个偏导数组成的向量:
随机梯度下降
交叉熵损失函数的梯度下降需要计算:
随着数据的增加,计算总的损失函数需要更多的时间以及更多的运算代价。
采取随机抽样的形式每次抽取i’个样本最为迭代的参考有:
这样每次只需要对几百个样本进行计算即可。
这种方法准确度肯定不如对全部样本进行计算,但是它大大的缩短了迭代的运算量和时间。
因此,实际学习迭代过程中,通常使用部分全计算加部分随机梯度的方法进行。