1. 机器学习中为什么需要梯度下降

梯度下降的作用:

  • 梯度下降是迭代法的一种,可以用于求解最小二乘问题
  • 在求解损失函数的最小值时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
  • 如果我们需要求解损失函数的最大值,可通过梯度上升法来迭代。梯度下降法和梯度上升法可相互转换

2. 梯度下降法缺点

缺点

  • 靠近极小值时收敛速度减慢。
  • 直线搜索时可能会产生一些问题。
  • 可能会“之字形”地下降。

注意

  • 梯度是一个向量,即有方向有大小
  • 梯度的方向是最大方向导数的方向
  • 梯度的值是最大方向导数的值

3. 梯度下降法直观理解

假如最开始,我们在一座大山上的某处位置,因为到处都是陌生的,不知道下山的路,所以只能摸索着根据直觉,走一步算一步,在此过程中,每走到一个位置的时候,都会求解当前位置的梯度,沿着梯度的负方向,也就是当前最陡峭的位置向下走一步,然后继续求解当前位置梯度,向这一步所在位置沿着最陡峭最易下山的位置走一步。不断循环求梯度,就这样一步步地走下去,一直走到我们觉得已经到了山脚。当然这样走下去,有可能我们不能走到山脚,而是到了某一个局部的山势低处。
由此,从上面的解释可以看出,梯度下降不一定能够找到全局的最优解,有可能是一个局部的最优解。当然,如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。

4. 梯度下降核心思想归纳

  • 确定优化模型的假设函数及损失函数。
  • 初始化参数,随机选取取值范围内的任意数;

  • 迭代操作:

    • 计算当前梯度
    • 修改新的变量
    • 计算朝最陡的下坡方向走一步
    • 判断是否需要终止,如否,梯度更新
  • 得到全局最优解或者接近全局最优解。

5. 如何对梯度下降法进行调优

实际使用梯度下降法时,各项参数指标不能一步就达到理想状态,对梯度下降法调优主要体现在以下几个方面:

(1)算法迭代步长梯度下降 - 图1选择。
在算法参数初始化时,有时根据经验将步长初始化为1。实际取值取决于数据样本。可以从大到小,多取一些值,分别运行算法看迭代效果,如果损失函数在变小,则取值有效。如果取值无效,说明要增大步长。但步长太大,有时会导致迭代速度过快,错过最优解。步长太小,迭代速度慢,算法运行时间长。

(2)参数的初始值选择。
初始值不同,获得的最小值也有可能不同,梯度下降有可能得到的是局部最小值。如果损失函数是凸函数,则一定是最优解。由于有局部最优解的风险,需要多次用不同初始值运行算法,关键损失函数的最小值,选择损失函数最小化的初值。

(3)标准化处理。
由于样本不同,特征取值范围也不同,导致迭代速度慢。为了减少特征取值的影响,可对特征数据标准化,使新期望为0,新方差为1,可节省算法运行时间。

6. 随机梯度和批量梯度区别

  1. 随机梯度下降(SDG)和批量梯度下降(BDG)是两种主要梯度下降法,其目的是增加某些限制来加速运算求解。<br />下面通过介绍两种梯度下降法的求解思路,对其进行比较。<br />假设函数为:

梯度下降 - 图2%20%3D%20%5Ctheta0%20x_0%20%2B%20%5Ctheta_1%20x_1%20%2B%20…%20%2B%20%5Ctheta_n%20x_n%0A#card=math&code=h%5Ctheta%20%28x_0%2Cx_1%2C…%2Cx_3%29%20%3D%20%5Ctheta_0%20x_0%20%2B%20%5Ctheta_1%20x_1%20%2B%20…%20%2B%20%5Ctheta_n%20x_n%0A&id=EJz8W)

损失函数为:

梯度下降 - 图3%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7B2m%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D(h%5Ctheta%20(x%5E%7Bj%7D0%0A%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n)-y%5Ej)%5E2%0A#card=math&code=J%28%5Ctheta_0%2C%20%5Ctheta_1%2C%20…%20%2C%20%5Ctheta_n%29%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7B2m%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D%28h_%5Ctheta%20%28x%5E%7Bj%7D_0%0A%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n%29-y%5Ej%29%5E2%0A&id=NLpJc)

其中,梯度下降 - 图4为样本个数,梯度下降 - 图5为参数个数。

1、 批量梯度下降的求解思路如下:
a) 得到每个梯度下降 - 图6对应的梯度:

梯度下降 - 图7%3D%5Cfrac%7B1%7D%7Bm%7D%5Csum%5E%7Bm%7D%7Bj%3D0%7D(h%5Ctheta%20(x%5E%7Bj%7D0%0A%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n)-y%5Ej)x%5E%7Bj%7D_i%0A#card=math&code=%5Cfrac%7B%5Cpartial%7D%7B%5Cpartial%20%5Ctheta_i%7DJ%28%7B%5Ctheta%7D_0%2C%7B%5Ctheta%7D_1%2C…%2C%7B%5Ctheta%7D_n%29%3D%5Cfrac%7B1%7D%7Bm%7D%5Csum%5E%7Bm%7D%7Bj%3D0%7D%28h_%5Ctheta%20%28x%5E%7Bj%7D_0%0A%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n%29-y%5Ej%29x%5E%7Bj%7D_i%0A&id=dJTrw)

b) 由于是求最小化风险函数,所以按每个参数 梯度下降 - 图8 的梯度负方向更新 $ \theta_i $ :

梯度下降 - 图9-y%5Ej)x%5E%7Bj%7Di%0A#card=math&code=%5Ctheta_i%3D%5Ctheta_i%20-%20%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D%28h_%5Ctheta%20%28x%5E%7Bj%7D_0%0A%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n%29-y%5Ej%29x%5E%7Bj%7D_i%0A&id=D0eQu)

c) 从上式可以注意到,它得到的虽然是一个全局最优解,但每迭代一步,都要用到训练集所有的数据,如果样本数据很大,这种方法迭代速度就很慢。
相比而言,随机梯度下降可避免这种问题。

2、随机梯度下降的求解思路如下:
a) 相比批量梯度下降对应所有的训练样本,随机梯度下降法中损失函数对应的是训练集中每个样本的粒度。
损失函数可以写成如下这种形式,

梯度下降 - 图10%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D(y%5Ej%20-%20h%5Ctheta%20(x%5E%7Bj%7D0%0A%09%09%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n))%5E2%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D%20cost(%5Ctheta%2C(x%5Ej%2Cy%5Ej))%0A#card=math&code=J%28%5Ctheta0%2C%20%5Ctheta_1%2C%20…%20%2C%20%5Ctheta_n%29%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D%28y%5Ej%20-%20h%5Ctheta%20%28x%5E%7Bj%7D_0%0A%09%09%09%2Cx%5E%7Bj%7D_1%2C…%2Cx%5E%7Bj%7D_n%29%29%5E2%20%3D%20%0A%09%09%09%5Cfrac%7B1%7D%7Bm%7D%20%5Csum%5E%7Bm%7D%7Bj%3D0%7D%20cost%28%5Ctheta%2C%28x%5Ej%2Cy%5Ej%29%29%0A&id=SGuCS)

b)对每个参数 $ \theta$ 按梯度方向更新 $ \theta$:

梯度下降 - 图11)%0A#card=math&code=%5Cthetai%20%3D%20%5Ctheta_i%20%2B%20%28y%5Ej%20-%20h%5Ctheta%20%28x%5E%7Bj%7D_0%2C%20x%5E%7Bj%7D_1%2C%20…%20%2Cx%5E%7Bj%7D_n%29%29%0A&id=Xz4PW)

c) 随机梯度下降是通过每个样本来迭代更新一次。
随机梯度下降伴随的一个问题是噪音较批量梯度下降要多,使得随机梯度下降并不是每次迭代都向着整体最优化方向。

小结:
随机梯度下降法、批量梯度下降法相对来说都比较极端,简单对比如下:

方法 特点
批量梯度下降 a)采用所有数据来梯度下降。
b)批量梯度下降法在样本量很大的时候,训练速度慢。
随机梯度下降 a)随机梯度下降用一个样本来梯度下降。
b)训练速度很快。
c)随机梯度下降法仅仅用一个样本决定梯度方向,导致解有可能不是全局最优。
d)收敛速度来说,随机梯度下降法一次迭代一个样本,导致迭代方向变化很大,不能很快的收敛到局部最优解。

下面介绍能结合两种方法优点的小批量梯度下降法。

3、 小批量(Mini-Batch)梯度下降的求解思路如下
对于总数为梯度下降 - 图12个样本的数据,根据样本的数据,选取其中的梯度下降 - 图13#card=math&code=n%281%3C%20n%3C%20m%29&id=O9H92)个子样本来迭代。其参数梯度下降 - 图14按梯度方向更新梯度下降 - 图15公式如下:

梯度下降 - 图16%20-%20y%5Ej%20)%20x%5E%7Bj%7D%7Bi%7D%0A#card=math&code=%5Ctheta_i%20%3D%20%5Ctheta_i%20-%20%5Calpha%20%5Csum%5E%7Bt%2Bn-1%7D%7Bj%3Dt%7D%0A%09%09%28%20h%5Ctheta%20%28x%5E%7Bj%7D%7B0%7D%2C%20x%5E%7Bj%7D%7B1%7D%2C%20…%20%2C%20x%5E%7Bj%7D%7Bn%7D%20%29%20-%20y%5Ej%20%29%20x%5E%7Bj%7D_%7Bi%7D%0A&id=NJQgH)

7. 各种梯度下降法性能比较

  1. 下表简单对比随机梯度下降(SGD)、批量梯度下降(BGD)、小批量梯度下降(Mini-batch GD)、和Online GD的区别:
BGD SGD Mini-batch GD Online GD
训练集 固定 固定 固定 实时更新
单次迭代样本数 整个训练集 单个样本 训练集的子集 根据具体算法定
算法复杂度 一般
时效性 一般 一般
收敛性 稳定 不稳定 较稳定 不稳定
  1. Online GDMini-batch GD/SGD的区别在于,所有训练数据只用一次,然后丢弃。这样做的优点在于可预测最终模型的变化趋势。
  2. Online GD在互联网领域用的较多,比如搜索广告的点击率(CTR)预估模型,网民的点击行为会随着时间改变。用普通的BGD算法(每天更新一次)一方面耗时较长(需要对所有历史数据重新训练);另一方面,无法及时反馈用户的点击行为迁移。而Online GD算法可以实时的依据网民的点击行为进行迁移。

8. 推导多元函数梯度下降法的迭代公式。

根据多元函数泰勒公式,如果忽略一次以上的项,函数在梯度下降 - 图17点处可以展开为

梯度下降 - 图18%3Df(%5Cmathbf%7Bx%7D)%2B(%5Cnabla%20f(%5Cmathbf%7Bx%7D))%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%2Bo(%5C%7C%5Cmathbf%7B%5CDelta%7D%20%5Cmathbf%7Bx%7D%5C%7C)%0A#card=math&code=f%28%5Cmathbf%7Bx%7D%2B%5CDelta%20%5Cmathbf%7Bx%7D%29%3Df%28%5Cmathbf%7Bx%7D%29%2B%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%2Bo%28%5C%7C%5Cmathbf%7B%5CDelta%7D%20%5Cmathbf%7Bx%7D%5C%7C%29%0A&id=isGKf)

对上式变形,函数的增量与自变量增量、函数梯度的关系为

梯度下降 - 图19-f(%5Cmathbf%7Bx%7D)%3D(%5Cnabla%20f(%5Cmathbf%7Bx%7D))%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%2Bo(%5C%7C%5CDelta%20%5Cmathbf%7Bx%7D%5C%7C)%0A#card=math&code=f%28%5Cmathbf%7Bx%7D%2B%5CDelta%20%5Cmathbf%7Bx%7D%29-f%28%5Cmathbf%7Bx%7D%29%3D%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%2Bo%28%5C%7C%5CDelta%20%5Cmathbf%7Bx%7D%5C%7C%29%0A&id=d2qxL)

如果令梯度下降 - 图20#card=math&code=%5CDelta%20%5Cmathbf%7Bx%7D%3D-%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29&id=zH0qk)则有

梯度下降 - 图21-f(%5Cmathbf%7Bx%7D)%20%5Capprox-(%5Cnabla%20f(%5Cmathbf%7Bx%7D))%5E%7B%5Cmathrm%7BT%7D%7D%20%5Cnabla%20f(%5Cmathbf%7Bx%7D)%20%5Cleq%200%0A#card=math&code=f%28%5Cmathbf%7Bx%7D%2B%5CDelta%20%5Cmathbf%7Bx%7D%29-f%28%5Cmathbf%7Bx%7D%29%20%5Capprox-%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%5E%7B%5Cmathrm%7BT%7D%7D%20%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%20%5Cleq%200%0A&id=yYQAX)

即函数值减小。即有

梯度下降 - 图22%20%5Cleq%20f(%5Cmathbf%7Bx%7D)%0A#card=math&code=f%28%5Cmathbf%7Bx%7D%2B%5CDelta%20%5Cmathbf%7Bx%7D%29%20%5Cleq%20f%28%5Cmathbf%7Bx%7D%29%0A&id=wBcat)

梯度下降法每次的迭代增量为

梯度下降 - 图23%0A#card=math&code=%5CDelta%20%5Cmathbf%7Bx%7D%3D-%5Calpha%20%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%0A&id=KqRbp)

其中梯度下降 - 图24为人工设定的接近于的正数,称为步长或学习率。其作用是保证梯度下降 - 图25梯度下降 - 图26
邻域内,从而可以忽略泰勒公式中的梯度下降 - 图27#card=math&code=o%28%5C%7C%5CDelta%20%5Cmathbf%7Bx%7D%5C%7C%29&id=lWLgP)项。

使用该增量则有

梯度下降 - 图28)%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%3D-%5Calpha(%5Cnabla%20f(%5Cmathbf%7Bx%7D))%5E%7B%5Cmathrm%7BT%7D%7D(%5Cnabla%20f(%5Cmathbf%7Bx%7D))%20%5Cleq%200%0A#card=math&code=%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%5E%7B%5Cmathrm%7BT%7D%7D%20%5CDelta%20%5Cmathbf%7Bx%7D%3D-%5Calpha%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%5E%7B%5Cmathrm%7BT%7D%7D%28%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%29%20%5Cleq%200%0A&id=yl3KO)

函数值下降。从初始点梯度下降 - 图29开始,反复使用如下迭代公式

梯度下降 - 图30%0A#card=math&code=%5Cmathbf%7Bx%7D%7Bk%2B1%7D%3D%5Cmathbf%7Bx%7D%7Bk%7D-%5Calpha%20%5Cnabla%20f%5Cleft%28%5Cmathbf%7Bx%7D_%7Bk%7D%5Cright%29%0A&id=ZPUeT)

只要没有到达梯度为0的点,函数值会沿序列梯度下降 - 图31递减,最终收敛到梯度为0 的点。从梯度下降 - 图32
出发,用迭代公式进行迭代,会形成一个函数值递减的序列梯度下降 - 图33

梯度下降 - 图34%20%5Cgeq%20f%5Cleft(%5Cmathbf%7Bx%7D%7B1%7D%5Cright)%20%5Cgeq%20f%5Cleft(%5Cmathbf%7Bx%7D%7B2%7D%5Cright)%20%5Cgeq%20%5Cldots%20%5Cgeq%20f%5Cleft(%5Cmathbf%7Bx%7D%7Bk%7D%5Cright)%0A#card=math&code=f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%20%5Cgeq%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B1%7D%5Cright%29%20%5Cgeq%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B2%7D%5Cright%29%20%5Cgeq%20%5Cldots%20%5Cgeq%20f%5Cleft%28%5Cmathbf%7Bx%7D_%7Bk%7D%5Cright%29%0A&id=b3KxD)

9. 梯度下降法如何判断是否收敛?

迭代终止的条件是函数的梯度值为0(实际实现时是接近于0 即可),此时认为已经达
到极值点。可以通过判定梯度的二范数是否充分接近于0 而实现。

10. 梯度下降法为什么要在迭代公式中使用步长系数?

其作用是保证梯度下降 - 图35梯度下降 - 图36的邻域内,即控制增量的步长,从而可以忽略泰勒公式中的
梯度下降 - 图37#card=math&code=o%28%5C%7C%5CDelta%20%5Cmathbf%7Bx%7D%5C%7C%29&id=W8IQB)项。否则不能保证每次迭代时函数值下降。

11. 梯度下降法和牛顿法能保证找到函数的极小值点吗,为什么?

不能,可能收敛到鞍点,不是极值点。

12. 解释一元函数极值判别法则。

假设梯度下降 - 图38为函数的驻点,可分为以下三种情况。
case1:在该点处的二阶导数大于0,则为函数的极小值点;
case2:在该点处的二阶导数小于0,则为极大值点;
case3:在该点处的二阶导数等于0,则情况不定,可能是极值点,也可能不是极值点。

13. 解释多元函数极值判别法则。

假设多元函数在点M的梯度为0 ,即M 是函数的驻点。其Hessian 矩阵有如下几种情
况。
case1:Hessian 矩阵正定,函数在该点有极小值。
case2:Hessian 矩阵负定,函数在该点有极大值。
case3:Hessian 矩阵不定,则不是极值点,称为鞍点。
Hessian 矩阵正定类似于一元函数的二阶导数大于0,负定则类似于一元函数的二阶导
数小于0。

14. 什么是鞍点?

Hessian 矩阵不定的点称为鞍点,它不是函数的极值点。

15. 解释什么是局部极小值,什么是全局极小值。

  • 全局极小值
    • 假设梯度下降 - 图39是一个可行解,如果对可行域内所有点梯度下降 - 图40都有梯度下降 - 图41%20%5Cleq%20f(%5Cmathbf%7Bx%7D)#card=math&code=f%5Cleft%28%5Cmathbf%7Bx%7D%5E%7B%2A%7D%5Cright%29%20%5Cleq%20f%28%5Cmathbf%7Bx%7D%29&id=li3Qx),则
      梯度下降 - 图42为全局极小值。
  • 局部极小值
    • 对于可行解梯度下降 - 图43,如果存在其梯度下降 - 图44邻域,使得该邻域内的所有点即所有满足
      梯度下降 - 图45的点梯度下降 - 图46,都有梯度下降 - 图47%20%5Cleq%20f(x)#card=math&code=f%5Cleft%28x%5E%7B%2A%7D%5Cright%29%20%5Cleq%20f%28x%29&id=Eoslb),则称梯度下降 - 图48为局部极小值。

16. 推导多元函数牛顿法的迭代公式。

根据费马定理,函数在点梯度下降 - 图49 处取得极值的必要条件是梯度为0

梯度下降 - 图50%3D%5Cmathbf%7B0%7D%0A#card=math&code=%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%3D%5Cmathbf%7B0%7D%0A&id=ueAJF)

对于一般的函数,直接求解此方程组存在困难。对目标函数在梯度下降 - 图51 处作二阶泰勒展开

梯度下降 - 图52%3Df%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%2B%5Cnabla%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%5E%7B%5Cmathrm%7BT%7D%7D%5Cleft(%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%2B%5Cfrac%7B1%7D%7B2%7D%5Cleft(%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%5E%7B%5Cmathrm%7BT%7D%7D%20%5Cnabla%5E%7B2%7D%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%5Cleft(%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%2Bo%5Cleft(%5Cleft%5C%7C%5Cmathbf%7Bk%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%5C%7C%5E%7B2%7D%5Cright)%0A#card=math&code=f%28%5Cmathbf%7Bx%7D%29%3Df%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%2B%5Cnabla%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5E%7B%5Cmathrm%7BT%7D%7D%5Cleft%28%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%2B%5Cfrac%7B1%7D%7B2%7D%5Cleft%28%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5E%7B%5Cmathrm%7BT%7D%7D%20%5Cnabla%5E%7B2%7D%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5Cleft%28%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%2Bo%5Cleft%28%5Cleft%5C%7C%5Cmathbf%7Bk%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%5C%7C%5E%7B2%7D%5Cright%29%0A&id=N7Vbr)

忽略二次以上的项,将目标函数近似成二次函数,等式两边同时对梯度下降 - 图53求梯度,可得

梯度下降 - 图54%20%5Capprox%20%5Cnabla%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%2B%5Cnabla%5E%7B2%7D%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%5Cleft(%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%0A#card=math&code=%5Cnabla%20f%28%5Cmathbf%7Bx%7D%29%20%5Capprox%20%5Cnabla%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%2B%5Cnabla%5E%7B2%7D%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5Cleft%28%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%0A&id=e8XqI)

其中 梯度下降 - 图55#card=math&code=%5Cnabla%5E%7B2%7D%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29&id=TW48p)为在![](https://g.yuque.com/gr/latex?%5Cmathbf%7Bx%7D%7B0%7D#card=math&code=%5Cmathbf%7Bx%7D_%7B0%7D&id=uDoVS) 处的Hessian 矩阵。令函数的梯度为0 ,有

梯度下降 - 图56%2B%5Cnabla%5E%7B2%7D%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%5Cleft(%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%3D%5Cmathbf%7B0%7D%0A#card=math&code=%5Cnabla%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%2B%5Cnabla%5E%7B2%7D%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5Cleft%28%5Cmathbf%7Bx%7D-%5Cmathbf%7Bx%7D_%7B0%7D%5Cright%29%3D%5Cmathbf%7B0%7D%0A&id=S6m66)

解这个线性方程组可以得到

梯度下降 - 图57%5Cright)%5E%7B-1%7D%20%5Cnabla%20f%5Cleft(%5Cmathbf%7Bx%7D%7B0%7D%5Cright)%0A#card=math&code=%5Ctag%7B1%7D%5Cmathbf%7Bx%7D%3D%5Cmathbf%7Bx%7D%7B0%7D-%5Cleft%28%5Cnabla%5E%7B2%7D%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%5Cright%29%5E%7B-1%7D%20%5Cnabla%20f%5Cleft%28%5Cmathbf%7Bx%7D%7B0%7D%5Cright%29%0A&id=PNRUd)

如果将梯度向量简写为梯度下降 - 图58 ,Hessian 矩阵简记为梯度下降 - 图59 ,式(1)可以简写为

梯度下降 - 图60

在泰勒公式中忽略了高阶项将函数做了近似,因此这个解不一定是目标函数的驻点,需要反复用式(2) 进行迭代。从初始点梯度下降 - 图61处开始,计算函数在当前点处的Hessian 矩阵和梯度向量,然后用下面的公式进行迭代

梯度下降 - 图62

直至收敛到驻点处。迭代终止的条件是梯度的模接近于0 ,或达到指定的迭代次数。其中梯度下降 - 图63是人工设置的学习率。需要学习率的原因与梯度下降法相同,是为了保证能够忽略泰勒公式中的高阶无穷小项。

参考资料:

深度学习500问: https://github.com/scutan90/DeepLearning-500-questions

机器学习与深度学习习题集答案-1:https://mp.weixin.qq.com/s/4kWUE8ml_o6iF0F1TREyiA