梯度下降法、牛顿法与拟牛顿法markdown

匿名 (未验证) 提交于 2019-12-02 23:49:02

前人栽树,后人乘凉,既然前人已经完成了的工作,我觉得没必要做重复的工作,“拿来主义”对于我个人的入门和学习是必要的。在此谢谢他们。内容来自:https://cloud.tencent.com/developer/article/1326787,如果有侵权,联系我删除。

梯度下降算法

先上个公式,镇一下:
Θ1=Θ0αJ(Θ)\Theta^{1}=\Theta^{0}-\alpha \nabla J(\Theta)

其中J(Θ)\nabla J(\Theta)就是梯度,\nabla称为梯度算子。此公式的意义是:J是关于Θ的一个函数,我们当前所处的位置为Θ0\Theta^{0}点,要从这个点走到J的最小值点,也就是山底。首先我们先确定前进的方向,也就是梯度的反向,然后走一段距离的步长,也就是α,走完这个段步长,就到达了Θ1\Theta^{1}这个点!下面就这个公式的几个常见的疑问:

α是什么含义?
α在梯度下降算法中被称作为学习率或者步长,意味着我们可以通过α来控制每一步走的距离,以保证不要步子跨的太大扯着蛋,哈哈,其实就是不要走太快,错过了最低点。同时也要保证不要走的太慢,导致太阳下山了,还没有走到山下。所以α的选择在梯度下降法中往往是很重要的!α不能太大也不能太小,太小的话,可能导致迟迟走不到最低点,太大的话,会导致错过最低点!

为什么要梯度要乘以一个负号?
梯度前加一个负号,就意味着朝着梯度相反的方向前进!我们在前文提到,梯度的方向实际就是函数在此点上升最快的方向!而我们需要朝着下降最快的方向走,自然就是负的梯度的方向,所以此处需要加上负号

牛顿法

考虑无约束最优化问题minxRnf(x)\min _{x \in R^{n}} f(x)其中xx^{*}为目标函数的极小点。
假设f(x)f(x)有二阶连续偏导数,若第k次迭代值为x(k)x^{(k)},则可将f(x)f(x)x(k)x^{(k)}附近进行二阶泰勒展开:
f(x)=f(xk)+gkT(xx(k))+12(xx(k))TH(x(k))(xx(k))f(x)=f\left(x^{k}\right)+g_{k}^{T}\left(x-x^{(k)}\right)+\frac{1}{2}\left(x-x^{(k)}\right)^{T} H\left(x^{(k)}\right)\left(x-x^{(k)}\right)
这里gk=g(x(k))=f(x(k))g_{k}=g\left(x^{(k)}\right)=\nabla f\left(x^{(k)}\right)f(x)f(x)的梯度向量在点x(k)x^{(k)}的值,H(x(k))H\left(x^{(k)}\right)f(x)f(x)的海塞矩阵:H(x)=[2fxixj]n×nH(x)=\left[\frac{\partial^{2} f}{\partial x_{i} \partial x_{j}}\right]_{n \times n}在点x(k)x^{(k)}的值,函数f(x)f(x)有极值的必要条件是在极值点处一阶导数为0,即梯度向量为0.特别是H(x(k))H\left(x^{(k)}\right)当是正定矩阵时,函数f(x)f(x)的极值为极小值。
牛顿法利用极小点的必要条件f(x)=0\nabla f(x)=0每次迭代从x(k)x^{(k)}开始,求目标函数的极小点,作为第k+1次迭代值x(k)x^{(k)}.具体地,假设x(k)x^{(k)}满足f(x(k+1))=0\nabla f\left(x^{(k+1)}\right)=0,则有f(x)=gk+Hk(xx(k))\nabla f(x)=g_{k}+H_{k}\left(x-x^{(k)}\right)

解释为:当xx接近于x(k)x^{(k)}时,f(x)=(x(k))+Hk(xx(k))\nabla f(x)=\left(x^{(k)}\right)+H_{k}\left(x-x^{(k)}\right),则gk+Hk(x(k+1)x(k))=0g_{k}+H_{k}\left(x^{(k+1)}-x^{(k)}\right)=0,可以得出x(k+1)=x(k)Hk1gkx^{(k+1)}=x^{(k)}-H_{k}^{-1} g_{k}

牛顿法步骤如下:
输入:目标函数f(x)f(x),梯度g(x)=f(x)g(x)=\nabla f(x),海塞矩阵H(x)H(x),精度要求ε\varepsilon
输出:f(x)f(x)的极小值点xx^*
(1)取初始点x(0)x^{(0)}置k=0
(2)计算gk=g(x(k))g_{k}=g\left(x^{(k)}\right)
(3)若gk<ε\left\|g_{k}\right\|<\varepsilon,则停止计算,得近似解x=x(k)x^{*}=x^{(k)}
(4)计算Hk=H(x(k))H_{k}=H\left(x^{(k)}\right)并求: pk:Hkpk=gkp_{k :} H_{k} p_{k}=-g_{k}
(5)置x(k+1)=x(k)+pkx^{(k+1)}=x^{(k)}+p_{k}
(6)置k=k+1,转(2)

拟牛顿法

牛顿法计算海塞矩阵的逆矩阵开销太多,拟牛顿法用一个近似的矩阵代替海塞矩阵的逆矩阵。
HkH_{k}满足条件gk+1gk=Hk(x(k+1)x(k))g_{k+1}-g_{k}=H_{k}\left(x^{(k+1)}-x^{(k)}\right)gk=gk+1gk,δk=x(k+1)x(k)g_{k}=g_{k+1}-g_{k}, \delta_{k}=x^{(k+1)}-x^{(k)},则yk=Hkδky_{k}=H_{k} \delta_{k},或Hk1yk=δkH_{k}^{-1} y_{k}=\delta_{k}拟牛顿法将GkG_{k}作为Hk1H_{k}^{-1}的近似.

DFP(Davidon-Fletcher-Powell)算法:

DFP选择Gk+1G_{k+1}的方法是,假设每一步迭代中矩阵Gk+1G_{k+1}是由GkG_{k}加上两个附加项构成的,即
Gk+1=Gk+Pk+QkG_{k+1}=G_{k}+P_{k}+Q_{k}
,其中PkP_{k}QkQ_{k}和是待定矩阵,这时
Gk+1yk=Gkyk+Pkyk+QkykG_{k+1} y_{k}=G_{k} y_{k}+P_{k} y_{k}+Q_{k} y_{k}
为了使得Gk+1G_{k+1}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!