梯度下降
在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。其意义从几何意义上讲,就是函数变化增加最快的地方。具体来说,对于函数f(x,y),在点
(x0,y0)
,沿着梯度向量的方向就是
(∂f/∂x0,∂f/∂y0)T
的方向是f(x,y)增加最快的地方。或者说,沿着梯度向量的方向,更加容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,也就是
−(∂f/∂x0,∂f/∂y0)T
的方向,梯度减少最快,也就是更加容易找到函数的最小值。
首先来看看梯度下降的一个直观的解释。比如我们在一座大山上的某处位置,由于我们不知道怎么下山,于是决定走一步算一步,也就是在每走到一个位置的时候,求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。这样一步步的走下去,一直走到觉得我们已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山峰低处。
梯度下降不一定能够找到全局的最优解,有可能是一个局部最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
一般线性回归函数的假设函数为:
hθ=∑j=0nθjxj
对应的能量函数(损失函数)形式为:
Jtrain(θ)=12m∑i=1m(hθ(x(i))−y(i))2
批量梯度下降法 (BGD)
批量梯度下降法,是梯度下降法最常用的形式,具体做法也就是在更新参数时使用所有的样本来进行更新。
随机梯度下降法 (SGD)
随机梯度下降法,其实和批量梯度下降法原理类似,区别在与求梯度时没有用所有的m个样本的数据,而是仅仅选取一个样本j来求梯度。对应的更新公式是:
小批量梯度下降法 (MBGD)
小批量梯度下降法是批量梯度下降法和随机梯度下降法的折衷,也就是对于m个样本,我们采用x个样子来迭代 (1<x<m) 。一般可以取x=10,当然根据样本的数据,可以调整这个x的值。对应的更新公式是: