在上一篇里讲到,求最优化目标的常用方法有梯度下降法和标准方程法和其它一些高级算法。这里重点介绍梯度下降法和标准方程法。
批量梯度下降法
梯度下降法是一个用来求函数最小值的算法,梯度算法的思想是:随机选择一个参数的组合 ( θ 0, θ 1, θ 2…) 计算代价函数,然后寻找下一个能让代价函数值下降最多的参数组合,直到找到一个局部最优解。选择不同的初始参数,可能会找到不同的局部最小值。梯度下降算法是很常用的算法,它可以被用于很多算法的最优化求解问题上。这里介绍的是批量梯度下降算法,之所以叫批量梯度下降法,是因为在梯度下降的每一步中,我们都用到了所有的训练样本。
从数学公式中可以知道切线方向往往是下降最快的方向,因此这里引入了偏导数,用来求梯度下降最快的方向。由于需要不停的更改参数 θ ,下面给出了更新 θ 值的迭代公式:
θj:=θj−α∂∂θj J(θ)
其中::=表示赋值语句。 α 表示学习率,它决定了代价函数沿着下降最快方向下降的速度。
在梯度下降算法中,注意参数 θ 需要同时更新,不然单独一个参数 θj 的更新 会导致代价函数改变,从而导致其余参数更新错误。以两个参数为例,正确的更新方式如下:
temp0:=θ0−α∂∂θ0 J(θ0,θ1)
temp1:=θ1−α∂∂θ1 J(θ0,θ1)
θ0:=temp0