梯度下降法

概念

梯度下降法(gradient descent)或最速下降法(steepest descent)是求解无约束最优问题的一种常用的方法,实现简单。梯度下降法是迭代算法,每一步需要求解目标函数的梯度。

假设f(x)是 Rn 上具有一阶连续偏导数的函数。求解的约束最优化问题是:

minxεRnf(x)

梯度下降法是一种迭代算法。选取适当的初始值 x(0) ,不断迭代,更新 x 的值,进行目标函数的极小化,知道收敛。由于负梯度方向是使函数值下降最快的方向,在迭代的每一步,以负梯度方向更新 x 的值,从而减小目标函数的目的。

由于 f(x) 具有一阶连续偏导数,若第 k 次迭代值为 xk ,则可将 f(x) xk 附近进行一阶泰勒展开:

f(x)=f(xk)+gTk(xxk)

这里, gk=g(x(k))=f(x(k)) f(x) x(k) 的梯度。

求出第 k+1 次迭代值 x(k+1) :

x(k+1)=x(k)+λkpk

其中, pk 是搜索方向,取负梯度方向 pk=f(xk) λk 是步长,由一维搜索确定,即 λk 使得:
f(xk+λkpk)=minλ0f(x(k)+λkpk)

算法过程

输入:目标函数 f(x) ,梯度函数 g(x)=f(x) ,计算精度 ϵ
输出: f(x) 的极小点 x
1.取初始值 x0ϵRn ,置 k=0
2.计算 f(xk)
3.计算梯度 gk=g(x(k)) ,当 gk<ϵ 时,停止迭代,令 x=xk ;否则,令 pk=g(x(k)) ,求 λk ,使

f(xk+λkpk)=minλ0f(x(k)+λkpk)

4.置 x(k+1)=x(k)+λkpk ,计算 f(x(k+1)) ,当 f(x(k+1))f(x(k))<ϵ x(k+1)x(k)<ε 时,停止迭代,令 x=xk+1
5.否则,置 k=k+1 ,转向3

评价

当目标函数是凸函数时候,梯度下降法的解就是全局最优解。一般情况,不能保证是全局最优解,同时梯度下降法不一定是最快的。

应用 (最小二乘法LMS原理)

1.当去正梯度方向时候,是梯度上升法
2.对于线性回归问题中
梯度下降法_第1张图片

xi,y(x) 是已经知道的,训练集中的数据, h(x) 是我们的预测值, n 是模型中特征的个数, x0=1 ,因为线性方程中可能存在常数项

对给定的训练集,我们要尽可能的准确预测出,要保证代价函数最小
梯度下降法_第2张图片
根据梯度下降法,我们需要最小化代价函数来求出 Θ
迭代公式如下:

α 是步长
对代价函数求导
梯度下降法_第3张图片
则:每次迭代的 Θ

注:
1.迭代公式左边的 Θj 可以理解为 Θj+1
2.如果在迭代的过程中,每次随机的选取 x(i) 就是随机梯度下降法
3.在上面的迭代公式中我们可以看出,每次的迭代误差是:
,迭代的过程受误差的大小影响很大,所以我们可以在一次迭代中计算所有误差的和。

这个过程叫:batch gradient descent 增量梯度下降法
注意:这里 Θj 是一个数,不是向量,对每次是更新一个值,而上面的对 x 求导是最向量求导,每次更新的是所有的值
m 是训练集样本数量

4.为了提高速度,不需要每天都要计算所有的误差
梯度下降法_第4张图片
随机梯度下降法应运而生,stochastic gradient descent
5.矩阵计算形式
梯度下降法_第5张图片

令导数为0
XTXΘ=XTy
then
Θ=(XTX)1XTy
6.上面的过程可以是最小二乘法原理,同时也是线性拟合的过程。

你可能感兴趣的:(最小二乘法,梯度下降法,随机梯度下降法)