梯度下降法

来源:互联网 发布:三知四会一联通的内容 编辑:程序博客网 时间:2024/04/28 23:46

概念

梯度下降法(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.对于线性回归问题中
这里写图片描述

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

对给定的训练集,我们要尽可能的准确预测出,要保证代价函数最小
这里写图片描述
根据梯度下降法,我们需要最小化代价函数来求出Θ
迭代公式如下:
这里写图片描述
α是步长
对代价函数求导
这里写图片描述
则:每次迭代的Θ
这里写图片描述
注:
1.迭代公式左边的Θj可以理解为Θj+1
2.如果在迭代的过程中,每次随机的选取x(i)就是随机梯度下降法
3.在上面的迭代公式中我们可以看出,每次的迭代误差是:
这里写图片描述,迭代的过程受误差的大小影响很大,所以我们可以在一次迭代中计算所有误差的和。
这里写图片描述
这个过程叫:batch gradient descent 增量梯度下降法
注意:这里Θj是一个数,不是向量,对每次是更新一个值,而上面的对x求导是最向量求导,每次更新的是所有的值
m是训练集样本数量

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

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

0 0
原创粉丝点击