梯度下降法

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

牛顿法

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

相关文章:

  • 2021-05-10
  • 2022-12-23
  • 2021-04-13
  • 2021-11-30
  • 2022-01-01
  • 2021-07-05
  • 2022-01-15
  • 2022-12-23
猜你喜欢
  • 2021-08-09
  • 2021-10-16
  • 2021-10-03
  • 2022-12-23
  • 2021-04-26
  • 2021-10-05
相关资源
相似解决方案