问题提出
假设有这样一个数据样本
(y=3x1+4x2)
x1 | x2 | y |
---|---|---|
1 | 4 | 19 |
2 | 5 | 26 |
5 | 1 | 19 |
4 | 2 | 29 |
x1和x2是样本值,y是预测目标,我们需要以一条直线来拟合上面的数据,待拟合函数如下:
h(θ)=θ1x1+θ2x2
梯度下降法:
确定一个损失函数 xi,yi表示第i个样本:
J(θ)=12m∑i=1m[hθ(xi)−yi]2
其中,J(θ)是损失函数,m代表每次取多少样本进行训练,如果采用SGD进行训练,那每次随机取一组样本,m=1。
我们的目标是让损失函数J(θ)的值最小,根据梯度下降法,首先对J(θ)求偏导:
∂J(θ)∂θj=212m∑i=1m[hθ(xi)−yi]xij
由于是要最小化损失函数,所以参数θ 按其梯度方向来更新,α为更新步长:
θ′=θj−α∂J(θ)∂θj=θj+α1m∑i=1m(yi−hθ(xi))xij
随机梯度下降法
以上是批量梯度下降法的推导,下面介绍一下随机梯度下降法。
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:
参数θ更新过程就是:
Loop{
for i=1 to m,{
θ′=θj−α∂J(θ)∂θj=θj+α(yi−hθ(xi))xij