人工智能导论 第 2 章 · 第三节
课程第 2 章第三节 优化理论本节三部分解析解的局限梯度下降参数更新停止与步长分批处理全批量与小批量噪声的好处
第 2 章 人工智能数学基础 · 第三节

梯度下降法

看不见山脚,怎么走到最低处
本 节 知 识 点
  1. 222.4 优化理论与方法
  2. 232.4 的三个小节
  3. 242.4.1 解析解与梯度下降法
  4. 25梯度下降法的核心逻辑
  5. 26梯度下降的参数更新过程
  6. 27停止准则与步长选择
  7. 28批量梯度下降
  8. 29全批量与小批量的取舍
  9. 30批量划分的优化动力学解释
22
第 2 章 · 第三节

2.4 优化理论与方法

前面把题目列好了,这一节讲怎么把答案算出来。

第 22 页课件

想一想

一道方程如果没有求根公式,你会怎么找它的解?

23
第 2 章 · 第三节

2.4 的三个小节

先讲梯度下降,再讲它会遇到的麻烦,最后讲现在怎么改进它。

第 23 页课件

想一想

下山的时候看不见山脚,你怎么判断该往哪个方向迈步?

24
第 2 章 · 第三节

2.4.1 解析解与梯度下降法

一步到位的公式确实存在,但在深度学习里用不了。

第 24 页课件

关键术语

解析解Analytical Solution
能用一个封闭的数学公式直接写出来的解,代入数据就能算出答案,不需要反复迭代。

重 点这个公式为什么用不了

线性回归的解析解是 θ* = (XᵀX)⁻¹Xᵀy,一步就能算完。但它有两道坎。

局限一:代价激增。矩阵求逆的时间复杂度是 O(d³),空间复杂度是 O(d²)。d 是特征维度。特征数翻一倍,时间涨到八倍,内存涨到四倍。图上那条红色曲线画的就是这个爆炸速度。

局限二:矩阵未必可逆。公式成立的前提是 XᵀX 可逆,而深度学习里这个矩阵常常不可逆,公式直接失效。

打个比方

三次方增长有多可怕,可以算一下。特征数 1000 时代价是 10 亿次运算,还能接受。特征数 100 万时是 10 的 18 次方,就算每秒算十亿次也要跑三十多年。而今天的模型参数动辄上亿。

想一想

有一个一步到位的公式却不能用,你觉得可惜吗?

25
第 2 章 · 第三节

梯度下降法的核心逻辑

看不见山脚,那就每一步都朝最陡的下坡方向挪一点。

第 25 页课件

关键术语

梯度Gradient
目标函数在当前位置上升最快的方向。取它的负方向,就是下降最快的方向。

重 点三个词说清整个方法

搜索方向取当前点的负梯度,也就是最陡的下坡方向。步长决定一步迈多大。迭代就是走一步、重新看方向、再走一步,反复进行,直到目标函数值不再明显下降。

打个比方

浓雾里下山,看不到山脚在哪。能做的只有用脚感受一下四周哪个方向最陡,朝那个方向迈一步,站定,再感受一次。

这个办法笨,但它有个巨大的好处:不需要知道整座山长什么样,只需要知道脚下这一小块的坡度。这正是它能应付上亿参数的原因。

知道更多图上那句蓝框

梯度下降法避开了复杂的矩阵求逆,为各类复杂的学习问题提供了一种统一的、可扩展的求解框架。避开求逆这四个字,正是上一页两道坎的解法。

想一想

图上有一个局部极小值和一个全局最小值。从图左端出发,你觉得会停在哪个点?

26
第 2 章 · 第三节

梯度下降的参数更新过程

新位置等于旧位置减去步长乘以坡度。

第 26 页课件

重 点这一行公式是整章最该记住的

θk+1 = θk − ηk∇L(θk)

逐项读:θk 是现在的参数,∇L 是当前位置的坡度,η 是步长,减号表示往坡度的反方向走。整句话就是往下坡方向挪一小步

四个小步骤对应图上的四行:算梯度、取负号当方向、按步长更新、到新位置再算梯度。然后重复。

打个比方

右图那条折线画的是实际走法。箭头长的地方坡陡,走得快,箭头短的地方坡缓,走得慢。这不是刻意设计的,而是公式自带的性质:坡越陡梯度越大,那一步自然迈得越大。

好处是接近谷底时会自动放慢,不至于一脚跨过去。

知道更多η 怎么定

η 太大,一步跨过谷底,来回震荡甚至越走越高。η 太小,走得稳但要走很久。它不是学出来的,而是人事先设的,这类要人来定的数叫超参数。

想一想

如果步长设得比整个山谷还宽,会发生什么?

27
第 2 章 · 第三节

停止准则与步长选择

什么时候该停下,以及每一步该迈多大。

第 27 页课件

重 点三个可以停下的理由

梯度足够小,说明脚下已经很平了。目标函数值变化足够小,说明再走也降不了多少。达到最大迭代次数,说明走够步数了,不能无限走下去。

三条满足任意一条就停。第三条看着像认输,实际训练里却是最常触发的那一条。

重 点步长的三种取法

固定步长最简单,全程用同一个 η,但过大易发散、过小收敛慢。精确线搜索每一步都去算最优的 η,走得准但开销大。非精确搜索用某种启发式规则折中,在效率与收敛性之间取平衡,这也是实际中最常用的做法。

知道更多右边那段伪代码

不必逐行看懂。抓三处:for 循环表示反复迭代,循环里第一行在算梯度,倒数第二行 θ 减去 η 乘 g 就是上一页那个更新公式。中间两个 if 就是前面说的停止准则。

想一想

训练到最大次数才停下来,说明模型练好了还是没练好?

28
第 2 章 · 第三节

批量梯度下降

实际训练不会拿全部数据算一次梯度,而是分批来。

第 28 页课件

关键术语

批量Batch
每次计算梯度所用的一小撮样本。
轮次Epoch
把全部数据完整过一遍,称为一个轮次。

重 点流程只有三句

遍历所有批量的过程叫一个轮次。每个轮次开始前随机打乱数据,重新划分批次。每个批次内部算梯度、更新参数。

打乱这一步不是可有可无的。如果数据本来按类别排好序,不打乱的话模型会先连着看几千张猫,再连着看几千张狗,学出来的东西会被顺序带偏。

打个比方

相当于复习。全批量像每次都把整本书从头翻到尾才总结一次,太慢。分批像每天看一章就总结一次,进度快得多。每轮打乱顺序,相当于每次复习换个章节次序,免得只记住了顺序而没记住内容。

想一想

一万个样本,每批一百个,一个轮次要更新多少次参数?

29
第 2 章 · 第三节

全批量与小批量的取舍

方向准和跑得快,两者不可兼得。

第 29 页课件

重 点两句话讲清区别

全批量梯度下降用全部样本算梯度,方向最准确,但计算时间很长,难以处理海量数据。小批量梯度下降用一部分样本,通过选择批量大小在计算效率与梯度稳定性之间取平衡。

打个比方

要判断一个班的整体水平,全批量是把每个人的卷子都批一遍再下结论,准但慢。小批量是随机抽十份批完就下结论,方向大致对,偶尔抽到几份特别好或特别差的会有偏差,但速度快几十倍。

关键在于:走一百步方向略偏,往往比走一步方向精准更快到达终点。

知道更多看图上左右两条轨迹

左边全批量的路径平滑,几乎是直线。右边小批量的路径抖来抖去,像一团毛线。但右边那张准确率对比图显示,两者最终的准确率相差不大,而小批量用的时间少得多。

想一想

批量大小设成 1,和设成全部样本,各有什么问题?

30
第 2 章 · 第三节

批量划分的优化动力学解释

小批量带来的抖动不是缺点,反而能把模型晃出小坑。

第 30 页课件

重 点这一页是反直觉的地方

批量划分引入的梯度噪声增强了采样随机性,为逃离局部极小值陷阱提供了动力。也就是说,方向不那么准这件事,在这里成了优点。

打个比方

一个球滚进路边的小坑,如果地面完全平静,它会一直待在坑里。如果地面在轻微震动,球就有机会被晃出来,继续往真正的低处滚。

小批量带来的抖动就是这个震动。全批量方向太准,掉进小坑就出不来了。

知道更多对着图看两条路径

左边全批量那条路走到中间就停滞了,标注写着停滞。右边小批量那条路同样遇到停滞点,但因为有抖动,最终逃离并继续下降到更低的位置。

想一想

做题的时候偶尔换个思路乱试一下,和这里的抖动像不像?

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