← 全部章节

P13 · 第 13 讲

预测神奇宝贝Pokemon

1:18:36

本章目录(8 节)
  1. 一、本节的问题与直观理解
  2. 二、核心知识:三步与两个梯度
  3. 三、关键推导:为什么这个损失是凸的(复习补充)
  4. 四、原讲义结果:一条先降后爆的曲线
  5. 五、易错点
  6. 六、自测
  7. 七、30 秒速记
  8. 八、和其他 P 的关系
项 内容
课程版本 李宏毅 2016 秋季《Machine Learning》Lecture 1:Regression - Case Study
视频分 P https://www.bilibili.com/video/BV1ou411N7X3?p=13 (1:18:36;搬运合集)
官方讲义 Regression (v6).pdf,37 页
材料说明 对应官方讲义整理+必要补充,非视频逐字稿

页码为 PDF 物理页(封面第 1 页)。本讲用宝可梦进化前的数值预测进化后的 CP(Combat Power),数据是讲义自带的 10 只训练样本;下文所有数据数字都出自讲义,标「复习补充」的算术才是自编。

一、本节的问题与直观理解

输入是一只宝可梦进化前的属性(当前 CP、HP、体重、身高、物种),输出是进化后的 CP。这是一个输出标量的回归问题,讲义第 3 页把它写成 \(f=\text{CP after evolution}\),第 4 页给出线性模型

$$y=b+\sum_{i}w_i x_i,$$

并列出三个具体候选:\(f_1:y=10.0+9.0x_{cp}\)、\(f_2:y=9.8+9.2x_{cp}\)、\(f_3:y=-0.8-1.2x_{cp}\)。这三条线的作用是提醒:模型不是一条线,而是一整族线,\(b,w\) 取遍实数得到的才是「模型」,训练是在这一族里挑一条。

直观上,进化后 CP 主要由进化前 CP 决定,所以先画一条过原点的粗略直线;但同样的 CP,不同物种的成长率不同,残差里剩下的是「物种」这个没被写进特征的因素。整讲的叙事就是:加特征 → 训练误差降 → 测试误差先降后爆 → 回头找隐藏因素 → 加正则化。

二、核心知识:三步与两个梯度

第一步,模型。 第 4 页:\(y=b+w\cdot x_{cp}\),\(b\) 是 bias、\(w\) 是 weight、\(x_{cp}\) 是 feature。第 6 页说明训练数据只有 10 只宝可梦,是真实数据(来源 openintro),记作 \((x^n_{cp},\hat y^n)\),\(n=1,\dots,10\)。

第二步,损失。 第 7 页:

$$L(f)=L(w,b)=\sum_{n=1}^{10}\left(\hat y^{n}-\left(b+w\cdot x^{n}_{cp}\right)\right)^{2}.$$

注意这里没有除以 10,和 P1 的 \(L=\frac1N\sum e_n\) 差一个常数因子。它不改变最优解,但会让梯度的量级大 10 倍,学习率要相应调小。第 8 页把每个 \((w,b)\) 对应的 \(L\) 画成等高线,颜色越深损失越小,并标出「每个点是一个函数」。

第三步,梯度下降。 第 10–12 页先讲单参数:随机取 \(w^0\),算 \(\left.dL/dw\right|_{w=w^0}\),若为正就减小 \(w\)、为负就增大 \(w\),写成

$$w^{1}\leftarrow w^{0}-\eta\left.\frac{dL}{dw}\right|_{w=w^{0}},$$

\(\eta\) 是 learning rate。第 13 页推广到两个参数,梯度是向量 \(\nabla L=(\partial L/\partial w,\partial L/\partial b)\),两个分量同时更新。第 15 页给出一句很重要的结论:线性回归的损失是凸的,没有 local optimal,所以「梯度下降卡在局部最小」在这类问题上不成立。

解析梯度。 第 16–17 页把链式法则走完:

$$\frac{\partial L}{\partial w}=\sum_{n=1}^{10}2\left(\hat y^{n}-\left(b+wx^{n}_{cp}\right)\right)\left(-x^{n}_{cp}\right),\qquad \frac{\partial L}{\partial b}=\sum_{n=1}^{10}2\left(\hat y^{n}-\left(b+wx^{n}_{cp}\right)\right)(-1).$$

两个式子只差一个乘数:对 \(w\) 乘 \(-x\),对 \(b\) 乘 \(-1\)。这就是「偏置的输入恒为 1」的直接结果,和 P12 的 \(\partial z/\partial w=\) 输入 是同一句话。

三、关键推导:为什么这个损失是凸的(复习补充)

讲义第 15 页只写了结论,这里补一句理由。把 10 个样本堆成向量 \(\hat{\mathbf{y}}\in\mathbb{R}^{10}\)、\(\mathbf{1}\in\mathbb{R}^{10}\)、\(\mathbf{x}\in\mathbb{R}^{10}\),令 \(\boldsymbol{\beta}=(b,w)^\top\)、设计矩阵 \(A=[\mathbf{1},\mathbf{x}]\in\mathbb{R}^{10\times2}\),则

$$L(\boldsymbol{\beta})=\lVert \hat{\mathbf{y}}-A\boldsymbol{\beta}\rVert^{2} =\boldsymbol{\beta}^{\top}A^{\top}A\boldsymbol{\beta}-2\hat{\mathbf{y}}^{\top}A\boldsymbol{\beta}+\hat{\mathbf{y}}^{\top}\hat{\mathbf{y}}.$$

二次项矩阵 \(A^{\top}A\) 对任意 \(\mathbf{v}\) 满足 \(\mathbf{v}^{\top}A^{\top}A\mathbf{v}=\lVert A\mathbf{v}\rVert^{2}\ge0\),所以半正定,\(L\) 是凸函数;只要两列线性无关(样本里的 \(x_{cp}\) 不全相同),它还是正定的,最优解唯一:

$$\boldsymbol{\beta}^{*}=(A^{\top}A)^{-1}A^{\top}\hat{\mathbf{y}}.$$

也就是说这 10 个点的最小二乘解可以直接算出来,梯度下降只是另一种到达方式。复习补充:自编 5 个点的数值对照(非讲义数据):取 \(x=(600,700,800,900,1000)\)、\(y=(1200,1500,1700,2100,2300)\),闭式解是 \(b=-480\)、\(w=2.8\),训练 MAE \(=32.0\);从 \(b=w=0\) 出发、把 \(x\) 标准化后用 \(\eta=0.1\) 迭代 3000 步,收敛到 \(b=1760\)、\(w=560\)(标准化坐标),换回原坐标正是 \(y=2.8x-480\),MAE 同样 32.0。这个对照说明:在凸问题里,GD 和闭式解到同一点,差别只在路径与步数;如果两者差很多,先怀疑学习率或迭代次数,而不是「模型没救」。

四、原讲义结果:一条先降后爆的曲线

一次模型。 第 19 页:\(b=-188.4\)、\(w=2.7\),训练平均误差 \(31.9\);第 20 页换成另外 10 只做测试,平均误差 \(35.0\)。测试比训练差,但还可用。

二次、三次模型。 第 21 页:\(y=b+w_1x_{cp}+w_2x_{cp}^2\),\(b=-10.3\)、\(w_1=1.0\)、\(w_2=2.7\times10^{-3}\),训练 \(15.4\)、测试 \(18.4\)。第 22 页加三次项:\(b=6.4\)、\(w_1=0.66\)、\(w_2=4.3\times10^{-3}\)、\(w_3=-1.8\times10^{-6}\),训练 \(15.3\)、测试 \(18.1\),只比二次好一点点。

四次、五次模型。 第 23 页四次:训练 \(14.9\)、测试 \(28.8\);第 24 页五次:训练 \(12.8\)、测试 \(232.1\)。训练误差一路降,测试误差先降后爆,第 26 页把五个模型排成表并写下 Overfitting:

模型 训练误差 测试误差
一次 31.9 35.0
二次 15.4 18.4
三次 15.3 18.1
四次 14.9 28.8(第 26 页表格写作 28.2)
五次 12.8 232.1

讲义第 23 页正文写 28.8、第 26 页汇总表写 28.2,两处不一致,引用时说明来源页即可,不必强行统一。

回头找隐藏因素。 第 27–30 页:同样的 CP,不同物种的曲线不同。引入物种指示变量 \(\delta(x_s=\text{Pidgey})\)(是则 1、否则 0),模型写成

$$y=\sum_{k}b_k\delta(x_s=k)+\sum_{k}w_k\delta(x_s=k)\,x_{cp},$$

它对参数仍然是线性的,所以还是线性模型,只是每个物种有自己的截距与斜率。第 31 页:训练 \(14.3\)、测试 \(3.8\)——测试误差比训练还低,说明物种确实是主要隐藏因素。

加太多特征又会爆。 第 33 页把 HP、身高、体重及其平方项全加进去,训练 \(1.9\)、测试 \(102.3\)。参数越多越容易把训练集的噪声也拟合进去。

正则化。 第 34 页在损失上加 \(\lambda\sum_i w_i^2\):

$$L=\sum_{n}\left(\hat y^{n}-\left(b+\sum_i w_ix_i^{n}\right)\right)^{2}+\lambda\sum_{i}w_i^{2}.$$

注意偏置 \(b\) 不在惩罚项里——惩罚 \(b\) 只会把整条曲线往下拽,没有平滑作用。第 34 页给的直觉是:若测试时输入被噪声扰动 \(x_i+\Delta x_i\),输出会多出 \(w_i\Delta x_i\),\(w_i\) 越小越不敏感,所以「平滑的函数更稳」。第 35 页的 \(\lambda\) 扫描:

\(\lambda\) 训练 测试
0 1.9 102.3
1 2.3 68.7
10 3.5 25.7
100 4.1 11.1
1000 5.6 12.8
10000 6.3 18.7
100000 8.5 26.8

\(\lambda\) 从 0 加到 100,测试误差从 102.3 掉到 11.1;再往上加,训练误差继续升、测试也回升,属于「平滑过头」。第 36 页的结论是最终测试误差 11.1,并留下两个问题:换一批新数据会高估还是低估?——留给验证集那一讲。

五、易错点

  1. 训练误差单调下降不代表模型变好。 五次模型训练 12.8 是所有模型里最好的,测试 232.1 是最差的;模型选择必须看没参与训练的数据。
  2. 拿测试集反复挑模型会污染测试集。 讲义用同一批测试数据比较了五个模型又一次次加特征,最后选出的 11.1 已经带选择偏差;正确做法是留验证集,这也是第 36 页指向的下一讲。
  3. 正则化不罚 \(b\)。 只罚 \(w\);把 \(b\) 写进 \(\sum w_i^2\) 是常见笔误。
  4. \(\lambda\) 不是越大越好。 第 35 页 \(\lambda=10^5\) 时测试 26.8,比 \(\lambda=100\) 的 11.1 差,属于欠拟合。
  5. 物种要 one-hot,不能编码成 1、2、3、4。 第 30 页用的是指示函数 \(\delta(\cdot)\);把物种当连续数会强行引入「Pidgey < Weedle」这种无意义的顺序。
  6. 第 23 与第 26 页的 28.8/28.2 不一致。 这是讲义自身的笔误或版本差异,写笔记时保留出处,不要悄悄改成一个数。
  7. 线性模型加平方项就不再是「对特征线性」。 \(y=b+w_1x+w_2x^2\) 对 \(x\) 是二次,但对 \((w_1,w_2)\) 仍是线性,所以仍是线性回归、仍可用闭式解;「线性」指的是对参数线性。

六、自测

Q1. 为什么第 15 页敢说线性回归没有局部最优?

参考答案

损失是参数的二次型 \(\lVert\hat y-A\beta\rVert^2\),二次项 \(A^\top A\) 半正定,函数是凸的;凸函数上任何局部最小都是全局最小。若 \(A\) 列满秩,还是严格凸,最优解唯一,可由 \((A^\top A)^{-1}A^\top\hat y\) 给出。

Q2. 五次模型训练误差 12.8、测试 232.1,说明优化失败了吗?

参考答案

不是。训练误差已经很低,说明优化在训练集上成功了;测试爆炸是过拟合——模型把 10 个点的噪声也拟合进去,换一批数据就崩。要处理它应该减复杂度、加数据或加正则化。

Q3. 为什么正则化项里通常不包含偏置 \(b\)?

参考答案

\(b\) 只整体平移输出,不改变函数的「陡峭程度」;惩罚它只会把预测整体拉向 0,不能抑制对输入扰动的敏感度。平滑性由权重 \(w_i\) 控制,所以只罚 \(w\)。

Q4. 第 30 页的物种模型对参数还是线性的吗?为什么?

参考答案

是。\(\delta(x_s=k)\) 是已知的 0/1 特征(由数据算出来,不是待学参数),模型对 \(b_k,w_k\) 仍是线性组合,所以仍属于线性回归,可以用同样的梯度下降或闭式解。

Q5. \(\lambda\) 从 100 加到 1000,训练误差 4.1→5.6、测试 11.1→12.8,怎么解释?

参考答案

正则化变强,模型被压得更平滑,拟合训练集的能力下降(训练误差升),同时偏差增大到开始损害测试表现(测试也升)。最优点在 \(\lambda\approx100\) 附近,说明正则化强度本身是要用验证集选的超参数。

七、30 秒速记

三步:\(y=b+\sum w_ix_i\) → \(L=\sum(\hat y-y)^2\) → 梯度下降。\(b=-188.4,w=2.7\) 得 31.9/35.0;二次 15.4/18.4;三次 15.3/18.1;四次 14.9/28.8;五次 12.8/232.1 = 过拟合。加物种 one-hot → 14.3/3.8;加太多特征 → 1.9/102.3;加 \(\lambda\sum w_i^2\)(不罚 \(b\))→ 最优 11.1。核心结论:复杂度与测试误差不是单调关系。

八、和其他 P 的关系

来源与说明

基于对应官方讲义整理,未取到完整视频字幕;不冒充逐字稿。