梯度下降法

梯度

在二元函数的情形,设函数 f(x,y) 在平面区域 D 内具有一阶连续偏导数,则对于每一点 P0(x0,y0)D,都可以定出一个向量

fx(x0,y0)i+fy(x0,y0)j

这向量称为函数 f(x,y) 在点 P0(x0,y0) 的梯度,记为 f(x0,y0) grad(x0,y0) ,即
f(x0,y0)=grad(x0,y0)=fx(x0,y0)i+fy(x0,y0)j

其中 (nabla)表示向量微分算子。

通俗的说梯度就是该点的沿函数的增长最快的方向的那个向量,模值等于最大的方向导数。

范例

函数 φ=2x+3y2sin(z) 的梯度为:

φ=(φx,φy,φz)=(2,6y,cos(z))

梯度下降

梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。如果相反地向梯度正方向迭代进行搜索,则会接近函数的局部极大值点;这个过程则被称为梯度上升法。

描述

梯度下降方法基于以下的观察:如果实值函数 F(x) 在点 a 处可微且有定义,那么函数 F(x) a 点沿着梯度相反的方向 F(a) 下降最快。

因而,如果

b=aγF(a)

对于 γ>0 为一个够小数值时成立,那么 F(a)F(b)

考虑到这一点,我们可以从函数 F 的局部极小值的初始估计 x0 出发,并考虑如下序列 x0,x1,x2, 使得

xn+1=xnγnF(xn), n0

因此可得到

F(x0)F(x1)F(x2),

如果顺利的话序列 (xn) 收敛到期望的极值。注意每次迭代步长 γ 可以改变。


这里写图片描述

图片示例了这一过程,这里假设 F 定义在平面上,并且函数图像是一个碗形。蓝色的曲线是等高线(水平集),即函数 F 为常数的集合构成的曲线。红色的箭头指向该点梯度的反方向。(一点处的梯度方向与通过该点的等高线垂直)。沿着梯度下降方向,将最终到达碗底,即函数 F 值最小的点。

应用

对给定数据集拟合多元线性回归方程

如果变量只有一个,我们高中都学过最小二乘法直接求出回归线的参数(斜率、截距),下面我们用梯度下降求多元线性回归方程的参数。

如果我们已经有了一个n个变量的m个元素的数据集 {(Xi(x1,x2,...,xn),yi)|i=1,2,...,m} ,设待求参数向量为 A(a0,a1,a2,...,an) ,我们设一个函数

f(X)=f(x1,x2,...,xn)=a0+a1x1+a2x2+...+anxn

为了方便我们取
Xi(x0=1,x1,x2,...,xn)

那么

f(X)=f(x0=1,x1,x2,...,xn)=a0x0+a1x1+a2x2+...+anxn=AX

我们定义损失函数,(为什么这样定义,因为该函数具有反应离理想目标误差程度的特性,并且方便计算)

J(A)=12mi=1m(AXiyi)2

现在我们需要求 J(A) 取最小值时 A 的取值

我们随机取一个点 A0, 可以求得

J(A0)=(J(A)a0,J(A)a1,...,J(A)an)

对于任意 k=0,1,...,n
J(A0)ak=1mi=1mxk(A0Xiyi)

xkXi(x0,x1,...,xn)xk

我们取一个适当的步长 γ ,对参数 A0 进行修正,即每次令

Ak=Ak1γk1J(A0)

重复以上过程,直至 J(A) 不再变小我们就找到了待求的 A(a0,a1,a2,...,an)

如有谬误 恳请指正
By chutpzah
参考 :
1. 维基 梯度下降法
2. 梯度下降(Gradient Descent)小结
3. 同济大学《高等数学》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值