梯度下降算法推导(机器学习系列-1)

  在网上能够搜到很多关于梯度下降算法的文章,但找了几篇发现推导都不能很好的理解(也可能是愚生数学功底差),本文将着重从数学角度讲述一下梯度下降算法的数学推导。


梯度下降算法理论

  梯度下降算法源自于线性回归模型的cost function 最小值计算,在线性回归中,我们通过一个拟合函数:

h(θ)=θ0+θ1x1
,然后计算cost function:
J(θ)=12mi=0m(hθ(x)y)2

  很明显这是计算在某一个 θ 向量取值的时候,所得拟合函数在每组数据 x 上的计算值与其实际值 y 的差值,为了更好的展现这种误差,我们用平方和均值来表示,为了后面的计算方便还将其乘以 12 。那么,后面的问题就是,当我们能够求得一组 θ 值使得 J(θ) 得到最小值的时候,我们就认为得到了最佳拟合参数– θ 向量。因此,线性拟合模型的问题,最后就归结到了cost function的最小值计算了。那么这里要介绍的方法就是 梯度下降方法。我们通过梯度下降的方法来寻找 J(θ) 的最小值。
  看过Andrew Ng视频的人肯定知道,梯度下降算法的原理,就是通过计算 J(θ) 的导数,通过寻找导数最小值的方式,来决定 J(θ) 的下降方向,在不断的迭代之后,即可找到 J(θ) 的最小值。以下就是 J(θ) 的求导计算:
J(θ)=(12mi=0m(hθ(x)y)2)=12m(i=0m(hθ(x)y)2)=12m2(hθ(x)y)i=0m(hθ(x)y)=1m(hθ(x)y)i=0m(hθ)=1m(hθ(x)y)i=0m(θ0+θ1x1+θ2x2+...+θn)

所以:
J(θj)=1m(hθ(x)y)i=0m(θ0+θ1x1+θ2x2+...+θn)=1m(hθ(x)y)xj

  在梯度下降算法中,我们需要不断收敛各个 θj ,寻找 J(θ) 的最小值。 θj 在其导数方向上减少(下降),即可使得 J(θ) 达到最小值,最后当 J(θ) 收敛时,则停止 θj 的计算。具体如下:
   θ 取随机值(初始值)
  repeat:
    计算 h(θ) ,将第一个样本数据y代入,更新 θj -= (h(θ)y)θj ,更新每个 θj ,然后把剩下的数据代入,得到一组新的 θ
    计算各组数据在新的 θ 下的 h(θ) 值与实际值y的误差,当误差小于阈值时.
  停止repeat。
完成计算,得到拟合函数 h(θ)

你可能感兴趣的:(机器学习)