梯度下降法和牛顿法学习笔记

梯度下降法

直接举一个二次代价函数的例子,目标函数就是:
C(ω,b)=12n∑x∣∣y(x)−α∣∣2 C(\omega, b)=\frac{1}{2n}\sum_x||y(x)-\alpha||^2 C(ω,b)=2n1xy(x)α2
目的就是要寻找合适的ω\omegaωbbb,让C≃0C \simeq 0C0,让y(x)y(x)y(x)α\alphaα大小差不多。因此需要最小化这个二次代价函数。
使用vvv代替ω\omegaωbbb,假设v=v1,v2v=v_1,v_2v=v1,v2,其函数图像如下:
在这里插入图片描述
⾸先把我们的函数想象成⼀个⼭⾕。只要瞄⼀眼上⾯的绘图就不难理解。我们想象有⼀个
小球从⼭⾕的斜坡滚落下来。我们的⽇常经验告诉我们这个球最终会滚到⾕底。当我们在v1v_1v1v2v_2v2⽅向分别将球体移动⼀个很小的量,即∆v1∆v_1v1∆v2∆v_2v2时,球体将会发⽣什么情况。微积分告诉我们 C 将会有如下变化:
∆C=∂C∂v1∆v1+∂C∂v2∆v2 ∆C=\frac{\partial C}{\partial v_1}∆v_1+\frac{\partial C}{\partial v_2}∆v_2 C=v1Cv1+v2Cv2
我们要寻找⼀种选择∆v1∆v_1v1∆v2∆v_2v2的⽅法使得∆C∆CC为负;即,我们选择它们是为了让球体滚落。定义∆v∆vvvvv变化的向量,∆v=(∆v1,∆v2)T∆v = (∆v1, ∆v2)^Tv=(v1,v2)T
我们也定义CCC的梯度为偏导数的向量,(∂C∂v1,∂C∂v2)T(\frac{\partial C}{\partial v_1},\frac{\partial C}{\partial v_2})^T(v1C,v2C)T我们⽤∇C∇CC来表⽰梯度向量,即:
∇C=(∂C∂v1,∂C∂v2)T ∇C=(\frac{\partial C}{\partial v_1},\frac{\partial C}{\partial v_2})^T C=(v1C,v2C)T
∆v∆vv和梯度∇C∇CC来重写∆C∆CC的变化:
∆C≃∇C⋅∆v ∆C \simeq ∇C · ∆v CCv
∇C∇CCvvv的变化关联为CCC的变化,正如我们期望的⽤梯度来表⽰。当选择:∆v=−η∇C∆v =-η∇Cv=ηC时能够让∆C∆CC为负数。这⾥的ηηη是个很小的正数(称为学习速率)。那么:
∆C≃−η∇C⋅∇C=η∥∇C∥2 ∆C \simeq −η∇C·∇C = η∥∇C∥^2 CηCC=ηC2
由于∥∇C∥2≥0∥∇C∥^2 ≥ 0C20,这保证了∆C≤0∆C ≤ 0C0,如果按照∆C≃∇C⋅∆v∆C \simeq ∇C · ∆vCCv的规则去改变vvv,那么CCC会⼀直减小,不会增加。
因此使用−η∇C-η∇CηC计算∆v∆vv,来移动球体的位置
v:v→v′=v−η∇C v: v → v′ = v - η∇C vvv=vηC
然后我们⽤它再次更新规则来计算下⼀次移动。如果我们反复持续这样做,我们将持续减小CCC直到获得⼀个全局的最小值。
总结⼀下,梯度下降算法⼯作的⽅式就是重复计算梯度∇C∇CC,然后沿着相反的⽅向移动,沿着⼭⾕“滚落”。我们可以想象它像这样:
在这里插入图片描述

牛顿法

考虑无约束最优化问题:
minx∈R∗f(x) {min}_{x\in R^*}f(x) minxRf(x)
其中x∗x^*x为目标函数的极小值点。
假设f(x)f(x)f(x)具有二阶连续偏导数,若第kkk次迭代值为x(k)x^{(k)}x(k),则可将f(x)f(x)f(x)x(k)x^{(k)}x(k)附近进行二阶泰勒展开:
f(x)=f(x(k))+gkT(x−x(k))+12(x−x(k))TH(x(k))(x−x(k)) f(x)=f(x^{(k)})+g_k^T(x-x^{(k)})+\frac{1}{2}(x-x^{(k)})^TH(x^{(k)})(x-x^{(k)}) f(x)=f(x(k))+gkT(xx(k))+21(xx(k))TH(x(k))(xx(k))
此处,gk=g(x(k))=∇f(x(k))g_k=g(x^{(k)})=∇f(x^{(k)})gk=g(x(k))=f(x(k))f(x)f(x)f(x)的梯度向量在点x(k)x^{(k)}x(k)的值,H(x(k))H(x^{(k)})H(x(k))f(x)f(x)f(x)的海塞矩阵:
H(x)=[∂2f∂xi∂xj]m×n H(x)=[\frac{\partial^2f}{\partial x_i\partial x_j}]_{m\times n} H(x)=[xixj2f]m×n
在点x(k)x^{(k)}x(k)的值。函数f(x)f(x)f(x)有几只的必要条件实在极值点处的一阶导数为0,即梯度向量为0。特别是当H(x(k))H(x^{(k)})H(x(k))是正定矩阵时,函数f(x)f(x)f(x)的极值为极小值。
牛顿法利用极小值的必要条件:
∇f(x)=0 ∇f(x)=0 f(x)=0
每次迭代中从点x(k)x^{(k)}x(k)开始,求目标函数的极小点,作为第k+1k+1k+1次迭代值x(k+1)x^{(k+1)}x(k+1)。具体地,假设x(k+1)x^{(k+1)}x(k+1)满足:
∇f(x(k+1))=0 ∇f(x^{(k+1)})=0 f(x(k+1))=0
有:
∇f(x)=gk+Hk(x−x(k)) ∇f(x)=g_k+H_k(x-x^{(k)}) f(x)=gk+Hk(xx(k))
其中Hk=H(x(k))H_k=H(x^{(k)})Hk=H(x(k)),这样就有:
gk+Hk(x(k+1)−x(k))=0 g_k+H_k(x^{(k+1)}-x^{(k)})=0 gk+Hk(x(k+1)x(k))=0
因此:
x(k+1)=x(k)−Hk−1gk x^{(k+1)} = x^{(k)}-H_k^{-1}g_k x(k+1)=x(k)Hk1gk
或:
x(k+1)=x(k)+pk x^{(k+1)} = x^{(k)}+p_k x(k+1)=x(k)+pk
其中,Hkpk=−gkH_kp_k=-g_kHkpk=gk
使用x(k+1)=x(k)−Hk−1gkx^{(k+1)} = x^{(k)}-H_k^{-1}g_kx(k+1)=x(k)Hk1gk作为迭代公式的算法就是牛顿算法。

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yougwypf1991

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值