梯度下降法
直接举一个二次代价函数的例子,目标函数就是:
C(ω,b)=12n∑x∣∣y(x)−α∣∣2
C(\omega, b)=\frac{1}{2n}\sum_x||y(x)-\alpha||^2
C(ω,b)=2n1x∑∣∣y(x)−α∣∣2
目的就是要寻找合适的ω\omegaω和bbb,让C≃0C \simeq 0C≃0,让y(x)y(x)y(x)和α\alphaα大小差不多。因此需要最小化这个二次代价函数。
使用vvv代替ω\omegaω和bbb,假设v=v1,v2v=v_1,v_2v=v1,v2,其函数图像如下:

⾸先把我们的函数想象成⼀个⼭⾕。只要瞄⼀眼上⾯的绘图就不难理解。我们想象有⼀个
小球从⼭⾕的斜坡滚落下来。我们的⽇常经验告诉我们这个球最终会滚到⾕底。当我们在v1v_1v1和v2v_2v2⽅向分别将球体移动⼀个很小的量,即∆v1∆v_1∆v1和∆v2∆v_2∆v2时,球体将会发⽣什么情况。微积分告诉我们 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=∂v1∂C∆v1+∂v2∂C∆v2
我们要寻找⼀种选择∆v1∆v_1∆v1和∆v2∆v_2∆v2的⽅法使得∆C∆C∆C为负;即,我们选择它们是为了让球体滚落。定义∆v∆v∆v为vvv变化的向量,∆v=(∆v1,∆v2)T∆v = (∆v1, ∆v2)^T∆v=(∆v1,∆v2)T。
我们也定义CCC的梯度为偏导数的向量,(∂C∂v1,∂C∂v2)T(\frac{\partial C}{\partial v_1},\frac{\partial C}{\partial v_2})^T(∂v1∂C,∂v2∂C)T我们⽤∇C∇C∇C来表⽰梯度向量,即:
∇C=(∂C∂v1,∂C∂v2)T
∇C=(\frac{\partial C}{\partial v_1},\frac{\partial C}{\partial v_2})^T
∇C=(∂v1∂C,∂v2∂C)T
⽤∆v∆v∆v和梯度∇C∇C∇C来重写∆C∆C∆C的变化:
∆C≃∇C⋅∆v
∆C \simeq ∇C · ∆v
∆C≃∇C⋅∆v
∇C∇C∇C把vvv的变化关联为CCC的变化,正如我们期望的⽤梯度来表⽰。当选择:∆v=−η∇C∆v =-η∇C∆v=−η∇C时能够让∆C∆C∆C为负数。这⾥的ηηη是个很小的正数(称为学习速率)。那么:
∆C≃−η∇C⋅∇C=η∥∇C∥2
∆C \simeq −η∇C·∇C = η∥∇C∥^2
∆C≃−η∇C⋅∇C=η∥∇C∥2
由于∥∇C∥2≥0∥∇C∥^2 ≥ 0∥∇C∥2≥0,这保证了∆C≤0∆C ≤ 0∆C≤0,如果按照∆C≃∇C⋅∆v∆C \simeq ∇C · ∆v∆C≃∇C⋅∆v的规则去改变vvv,那么CCC会⼀直减小,不会增加。
因此使用−η∇C-η∇C−η∇C计算∆v∆v∆v,来移动球体的位置
v:v→v′=v−η∇C
v: v → v′ = v - η∇C
v:v→v′=v−η∇C
然后我们⽤它再次更新规则来计算下⼀次移动。如果我们反复持续这样做,我们将持续减小CCC直到获得⼀个全局的最小值。
总结⼀下,梯度下降算法⼯作的⽅式就是重复计算梯度∇C∇C∇C,然后沿着相反的⽅向移动,沿着⼭⾕“滚落”。我们可以想象它像这样:

牛顿法
考虑无约束最优化问题:
minx∈R∗f(x)
{min}_{x\in R^*}f(x)
minx∈R∗f(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(x−x(k))+21(x−x(k))TH(x(k))(x−x(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)=[∂xi∂xj∂2f]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(x−x(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)−Hk−1gk
或:
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)−Hk−1gk作为迭代公式的算法就是牛顿算法。

1万+





