梯度下降
理论基础
梯度下降法是机器学习中常用的优化方法,其理论基础是当θs-θ→0时会有:
J(θs) ≈ J(θ)+▽(θ)(θs-θ)
因此当我们这样更新θs,并保证α>0且足够小时:
θs+1 = θs - α▽(θs)
则会有:
J(θs+1)
≈ J(θs)+▽(θs)(θs+1-θs)
≈ J(θs)+▽(θs)(-α▽(θs))≈ J(θs) - α▽(θs)2
这里我们可以发现迭代后的目标函数J(θ)变小了,因此经过多次迭代后,我们能够找到一个极小值(当▽(θs)=0时,θs+1 = θs,迭代结束)。
迭代结束条件
由于要达到▽(θs)=0必须迭代十分长的时间,因此实际操作中迭代条件并非▽(θs)=0,而是一下三个常用的条件:
- 迭代次数 < n
- J(θs+1)-J(θs) < ε
- |▽(θ1)|+|▽(θ2)|+...+|▽(θs)| < ε
优化方法
- 由于每一维度的值的范围可能差别很大(如有一些维度为0-1,另一些为100-200),这样当我们都统一从0开始迭代时,会使得范围小的维度很快得到拟合,而范围大的维度却需要长时间的拟合,因此我们常常会先将数据进行归一化。
- 当迭代次数较小的时候,我们希望一个较大的α来提高迭代速度;但是当迭代次数大的时候,我们则希望一个较小的α来更好的到达最优解(避免在极小值附近左右晃动)。因此我们可以避免使用固定的步长,而是当迭代次数到达一定的大小时,让α逐渐变小。