梯度下降法
直接举一个二次代价函数的例子,目标函数就是:
C(ω,b)=2n1x∑∣∣y(x)−α∣∣2
目的就是要寻找合适的ω和b,让C≃0,让y(x)和α大小差不多。因此需要最小化这个二次代价函数。
使用v代替ω和b,假设v=v1,v2,其函数图像如下:

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

牛顿法
考虑无约束最优化问题:
minx∈R∗f(x)
其中x∗为目标函数的极小值点。
假设f(x)具有二阶连续偏导数,若第k次迭代值为x(k),则可将f(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))是f(x)的梯度向量在点x(k)的值,H(x(k))是f(x)的海塞矩阵:
H(x)=[∂xi∂xj∂2f]m×n
在点x(k)的值。函数f(x)有几只的必要条件实在极值点处的一阶导数为0,即梯度向量为0。特别是当H(x(k))是正定矩阵时,函数f(x)的极值为极小值。
牛顿法利用极小值的必要条件:
∇f(x)=0
每次迭代中从点x(k)开始,求目标函数的极小点,作为第k+1次迭代值x(k+1)。具体地,假设x(k+1)满足:
∇f(x(k+1))=0
有:
∇f(x)=gk+Hk(x−x(k))
其中Hk=H(x(k)),这样就有:
gk+Hk(x(k+1)−x(k))=0
因此:
x(k+1)=x(k)−Hk−1gk
或:
x(k+1)=x(k)+pk
其中,Hkpk=−gk。
使用x(k+1)=x(k)−Hk−1gk作为迭代公式的算法就是牛顿算法。