人工智能导论 第 2 章 · 第四节
课程第 2 章第四节 非凸优化极小值与鞍点二阶信息特征值判别逃离鞍点现代优化算法随机梯度下降动量法自适应学习率三者对比结构设计本节小结本节习题
第 2 章 人工智能数学基础 · 第四节

非凸优化与现代优化算法

坡度为零的地方未必是谷底
本 节 知 识 点
  1. 312.4.2 非凸优化挑战
  2. 32局部极小值与鞍点
  3. 33局部极小值与鞍点的判别方法
  4. 34通过海森矩阵判别临界点
  5. 35逃离鞍点
  6. 362.4.3 现代优化算法
  7. 37随机梯度下降
  8. 38动量法
  9. 39自适应学习率优化算法
  10. 40三种自适应算法的收敛路径
  11. 41神经网络结构设计
  12. 42小结
  13. 43习题
31
第 2 章 · 第四节

2.4.2 非凸优化挑战

坡度为零的地方不一定是谷底,也可能只是走到了平地。

第 31 页课件

关键术语

临界点Critical Point
所有方向的一阶偏导数都等于零的点。它可能是局部极小值、局部极大值或者鞍点。

重 点那个记号在说什么

θL(θ*) = 0 展开来是一个向量,里面装着目标函数对每一个参数的偏导数。全都等于零,才叫临界点。

关键在于:梯度为零只说明脚下是平的,不说明这里是最低点。山顶是平的,马鞍中间也是平的。

打个比方

浓雾里下山,走到一处发现四周都不往下了,你会以为到了山脚。但你也可能只是走到了半山腰的一块平台,或者一个山口。光凭脚感分不出来。

知道更多为什么这在深度学习里特别麻烦

页面第一句说,深度学习的目标函数通常是非线性、非凸的,函数曲面包含大量梯度接近零的平坦区域。凸函数只有一个最低点,走到平的地方就是答案。非凸函数遍地是平地,其中影响最大的是局部极小值和鞍点

想一想

你怎么判断自己是走到了山脚,还是只走到了一块平台?

32
第 2 章 · 第四节

局部极小值与鞍点

一个是四面都是上坡的坑,一个是有的方向还能下去的马鞍。

第 32 页课件

重 点看两个红框就够了

左边局部极小值:沿任意方向的微小扰动都使函数值增大,邻域内已经不存在能进一步降低 L 的方向。红框写着“不存在继续降低目标函数的方向,参数容易被困在次优解附近”。

右边鞍点:某些方向呈上升趋势,另一些方向仍可继续下降。红框写着“梯度也为零,但仍存在下降方向,若能摆脱其影响,优化过程仍可继续推进”。

两者的梯度都是零,差别在于还有没有出路

打个比方

局部极小值是一个碗底,往哪个方向爬都是上坡,真出不去。鞍点是一副马鞍,沿着马背前后走是上坡,跨着马身左右走是下坡。人站在马鞍正中央也感觉是平的,但只要往侧面挪一步就能滑下去。

右图那个曲面正是马鞍的样子,看一眼就明白为什么叫鞍点。

知道更多哪个更常见

在参数极多的高维空间里,一个点要成为局部极小值,需要所有方向都往上弯,这个条件很苛刻。只要有一个方向往下弯,它就是鞍点。所以深度学习里遇到的平地,绝大多数是鞍点而不是局部极小值。这算是个好消息。

想一想

站在马鞍正中间,怎么知道往哪边挪能下去?

33
第 2 章 · 第四节

局部极小值与鞍点的判别方法

一阶梯度只能看出平不平,要分辨类型得看二阶。

第 33 页课件

关键术语

海森矩阵Hessian Matrix
目标函数关于参数的二阶偏导数矩阵,可以理解为梯度向量的再次求导,描述曲面在各个方向上的弯曲情况。

重 点二阶泰勒近似在说什么

那个展开式有三项。第一项 L(θ*) 是当前高度。第二项带 g,是一阶项,但在临界点处 g 等于零,这一项直接消失。第三项带 H,是二阶项。

所以在临界点附近,函数怎么变完全由二阶项说了算。这就是必须引入海森矩阵的原因。

打个比方

一阶梯度回答“这里是不是平的”,二阶信息回答“平的这一块是往上弯还是往下弯”。

好比闭着眼摸一个碗和一个倒扣的碗,摸到最中间那一点,两者都是平的,摸不出区别。要分清楚,必须再往四周摸一圈,看看是往上翘还是往下垂。这一圈就是二阶信息。

知道更多那张大矩阵别被吓到

右边那个方阵,第 i 行第 j 列装的是 L 对第 i 个和第 j 个参数的混合二阶偏导。因为混合偏导可交换,所以 H 是对称矩阵。它就是一张表,把所有方向的弯曲程度都记下来。

想一想

碗底和倒扣的碗顶,最中心那一点有什么共同点?

34
第 2 章 · 第四节

通过海森矩阵判别临界点

看特征值的符号,就能知道这个临界点是什么类型。

第 34 页课件

重 点这张表怎么用

把海森矩阵的特征值理解成各个方向上的弯曲方向,正数表示往上弯,负数表示往下弯。

全为正数,四面都往上弯,是碗底,局部极小值全为负数,四面都往下弯,是山顶,局部极大值有正有负,有的方向往上有的往下,是马鞍,鞍点

知道更多表格最后两行是什么情况

特征值非负但至少有一个等于零,这个方向既不往上也不往下,是完全平的。这时二阶信息也判别不了,红框写着“退化情形中二阶判别不足,需进一步采用高阶导数或其他方法分析”。

知道有这么一档就够了,实际中不常处理。

打个比方

好比用手在一个曲面上沿不同方向摸过去。每摸一个方向记一个符号,往上翘记正,往下垂记负。全正是坑,全负是包,有正有负是马鞍。特征值就是把这些符号系统地算出来。

想一想

一个方向往上弯、九十九个方向往下弯的点,是什么类型?

35
第 2 章 · 第四节

逃离鞍点

负特征值对应的那个方向,就是还能继续往下走的通道。

第 35 页课件

重 点推导只有三步

设 u 是海森矩阵的特征向量,λ 是对应的特征值。第一步:uᵀHu = uᵀ(λu) = λ‖u‖²,把矩阵作用化简成一个数乘以长度平方。第二步:λ 小于零时,因为 ‖u‖² 恒为正,所以这个数是负的,意味着沿 u 方向走函数值会下降。第三步:把参数从 θ* 挪到 θ* + u,就滑出了鞍点。

一句话:负特征值方向等于可继续下降的方向。

打个比方

站在马鞍正中央,四周摸一圈,发现左右两侧是往下垂的。那就往左边迈一步,人自然就滑下去了。负特征值方向就是“左右两侧”这个方向,特征向量就是那个具体的朝向。

知道更多红字那段现实困境

道理很清楚,做起来很贵。直接构造一个 d 乘 d 的海森矩阵代价极高,d 是参数个数,动辄上亿。所以实际训练中没人真去算它,只能用下一节那些只依赖一阶梯度的现代优化算法来间接逃离鞍点。

想一想

知道办法却因为太贵而用不了,前面哪一页也遇到过同样的情况?

36
第 2 章 · 第四节

2.4.3 现代优化算法

不算二阶,只用一阶梯度,也要把二阶的活干出来。

第 36 页课件

重 点三大类各解决一个问题

随机梯度下降解决速度问题,通过随机采样训练样本来近似整体梯度。动量法解决震荡问题,累积历史梯度方向,减弱震荡进而加快收敛。自适应学习率算法解决步长问题,根据梯度大小动态调整不同参数的更新步长。

知道更多为什么非要绕开二阶

页面第二句说得很直接:直接构造或利用 Hessian 矩阵计算代价过高,优化算法通常需要在仅依赖一阶梯度信息的条件下提升训练效率。上一页的困境,这一节给的就是绕行方案。

重 点最后那句蓝框

这些方法在不显式使用二阶导数的情况下,部分弥补了一阶方法对曲率信息刻画不足的问题。注意是部分弥补,不是完全替代。

想一想

不能直接测量一样东西,只能用别的办法估计它,你还能想到什么例子?

37
第 2 章 · 第四节

随机梯度下降

每次只看一个或一小撮样本就更新,把单步开销压到最低。

第 37 页课件

关键术语

随机梯度下降Stochastic Gradient Descent
批量梯度下降在极端情形下的特例,每次迭代仅使用一个训练样本或小批量样本估计梯度并更新参数。

重 点看图上那条锯齿路径

从起始点到最优点,SGD 走的是一条抖动剧烈的锯齿线。这正是它的两个特点的直观体现:计算开销小,每次更新只用部分样本。随机波动明显,梯度估计含噪声,可能导致震荡或收敛不稳定。

打个比方

相当于问路。全批量是把全城的人都问一遍再决定往哪走,答案准但一天只能走一步。随机梯度下降是随便拉一个路人问一句就走,那个人可能指错,但你一天能走几百步。走错几步没关系,方向的平均值是对的。

知道更多公式里那个下标

更新式 θk+1 = θk − η∇L(θk) 和前面完全一样,唯一的区别是这里的 ∇L 只用一小批样本算,不是全部。图上红圈标的正是这一点。

想一想

问一个路人和问一百个路人,哪种更容易走冤枉路,哪种更容易一天走不完?

38
第 2 章 · 第四节

动量法

不只看这一步的坡度,还带着之前的惯性。

第 38 页课件

关键术语

动量法Momentum
对梯度做指数加权平均,在参数更新过程中引入历史梯度信息,对更新方向做平滑处理。

重 点两行公式一句话讲完

第一行 vk+1 = βvk + (1−β)∇L(θk):新的更新方向,等于历史方向占 β 的份额,加上当前梯度占 1−β 的份额。图上两个红圈标的就是这两部分。

第二行把 v 代替原来的梯度去更新参数。也就是说,走的方向不再由当前这一步单独决定,而是历史和当下的混合。

打个比方

把它想成一个滚下山的球。球不会因为脚下坡度稍微变了就立刻改向,它带着速度往前冲。

方向一致时速度不断累加,越滚越快。方向来回摇摆时正负互相抵消,摆动就被压下去了。图上 Momentum 那条路径明显比上一页的锯齿线平滑,就是这个原因。

知道更多惯性也有代价

页面第二个特点说,由于具有惯性,在接近最优点时可能出现过冲,导致参数在最优点附近来回摆动。球冲得太快,到了谷底也会冲上对面坡再滚回来。这是动量法要付的代价。

想一想

骑车下坡到了平路,你会立刻停住吗?

39
第 2 章 · 第四节

自适应学习率优化算法

不同参数用不同步长,谁动得频繁就让谁慢一点。

第 39 页课件

重 点三列表格的区别只在怎么记历史

AdaGrad 把历史梯度的平方全部累加,分母越加越大,步长越来越小,后期几乎走不动。

RMSprop 改成指数加权平均,只记得最近一段的梯度平方,步长不会一路衰减到零,能稳定推进。

Adam 同时记一阶矩二阶矩。一阶矩记方向,相当于动量法。二阶矩记幅度,相当于 RMSprop。所以表格最后一行写着“结合动量与自适应”。

重 点那个分母在干什么

三个公式里都有 η 除以根号下累积量的形式。含义很直接:某个参数过去梯度一直很大,就把它的步长调小。过去梯度一直很小,就把它的步长调大。加上那个极小的常数是为了防止分母为零。

打个比方

相当于因材施教。一个班里基础好的学生进度快,基础弱的进度慢,用同一个进度必然有人跟不上有人吃不饱。自适应学习率就是给每个参数配一个自己的进度。

想一想

三个算法里,你觉得哪一个最不适合训练很久的任务?

40
第 2 章 · 第四节

三种自适应算法的收敛路径

同一座山,三条不同的下山路线。

第 40 页课件

重 点对着三条彩色路径看

AdaGrad(绿色)步长持续衰减,后期步长过小,收敛变慢,路径越走越密。RMSprop(橙色)近期梯度自适应,步长稳定、持续推进。Adam(紫色)结合动量和自适应的优势,收敛更快、更平稳。

知道更多那些同心椭圆是什么

是损失函数的等高线,和地图上的等高线一个意思。线越密表示坡越陡。中间那颗红星是最优点。三条路径都要从起始点走到红星,比的是谁走得快、谁走得稳。

知道更多实际用哪个

Adam 是目前最常用的默认选择。但这不代表它永远最好,具体任务上仍需要试。深度学习里很多结论都是这样:有一个通常不错的默认值,但没有放之四海皆准的答案。

想一想

三条路径最后都到了红星,那快和稳哪个更重要?

41
第 2 章 · 第四节

神经网络结构设计

除了改算法,还可以改模型结构,让这座山本身变得好走。

第 41 页课件

关键术语

归一化Normalization
把网络中间层的输出标准化,缩小不同参数方向上的尺度差异。
残差连接Residual Connection
引入跨层的直接连接,让梯度信号可以直接传回浅层。

重 点这一页换了个思路

前面几页都在改优化算法,也就是换个走法。这一页在改模型结构,相当于把山修一修。目标函数的几何形态变好了,一阶梯度方法自然更容易收敛。

打个比方归一化在解决什么

假如一个参数的合理范围是 0 到 1,另一个是 0 到 10000,那么等高线会被拉成一个极扁的椭圆。沿着窄的方向稍微一动就冲过头,沿着长的方向走半天没进展。

归一化就是把两个方向的尺度拉回到差不多,把扁椭圆变回接近圆形,路自然好走了。图上批量归一化按列做,层归一化按行做,方向不同,目的一样。

打个比方残差连接在解决什么

右边那张图,x 绕过中间两层直接加到输出上,标着 identity。这条旁路的作用是给梯度修了一条直通车道。

网络很深时,梯度一层层往回传会越传越弱,传到最前面几层已经几乎没有了。有了这条旁路,梯度可以不衰减地直接传回浅层。

想一想

与其练出更强的登山技巧,不如先把路修好。这个思路你还能用在哪?

42
第 2 章 · 第四节

小结

从解析解走到梯度下降,从一阶走到自适应。

第 42 页课件

重 点

解析解在大规模、非线性模型中不可行,梯度下降通过局部一阶梯度信息迭代更新参数,是 AI 模型训练的通用求解框架。小批量梯度下降降低单次成本并引入适度随机性。非凸目标函数中,梯度为零的临界点可能是局部极小值或鞍点,需通过海森矩阵的特征值判别。AdaGrad、RMSprop 和 Adam 根据梯度历史动态调整步长。归一化层和残差连接从模型层面改善了优化几何。

想一想

这一节里,哪一个办法是“换走法”,哪一个是“修路”?

43
第 2 章 · 第四节

习题

两道题,覆盖本节最要紧的两个判断。

第 43 页课件

知道更多第一题的思路

回到第 24 页那两条局限。解析解要求矩阵求逆,代价随特征维度三次方增长,而且要求矩阵可逆,深度网络两条都不满足。小批量被优先采用的原因在第 29 和第 30 页,一是效率,二是噪声有助于逃离局部极小值。

知道更多第二题的思路

临界点的定义在第 31 页,局部极小值与鞍点的几何差别在第 32 页。仅靠一阶梯度不能区分,因为两者的梯度都是零,要借助的数学工具是海森矩阵,判别依据是特征值的符号,见第 33 和第 34 页。

想一想

用一句不带公式的话,向没学过这一节的人解释什么是鞍点。

保山学院·人工智能教研室·曹鼎鼎