从一条直线开始:机器学习第一讲

查理大学 NPFL129 第一讲课件照片:多项式回归公式与四种次数的拟合图

这篇笔记的起点:NPFL129 第一讲中的线性回归课件。

一页机器学习课件里,左边是一串带上标的公式,右边是四幅越来越弯曲的图。它们其实在讨论同一个问题:怎样从已有的数据里找到规律,而不是把每一个点都硬记下来?

这篇整理自查理大学机器学习课程 NPFL129 第一讲的一张课件照片,从直线、多项式一直讲到欠拟合与过拟合,最后列出入门需要的基础和学习路线。读公式时,先分清三个角色:输入是什么、想预测什么、哪些数字需要模型去学习。

阅读顺序:先看直线和四图的直觉,再读误差与向量公式。第一次遇到矩阵或梯度时,可以先记住它们的用途,不必一次掌握全部推导。

这页课件在回答什么问题?

已知一些输入和对应结果,怎样学习一个公式,用它预测新的结果?

课件讨论输入和目标都是实数的情况:

x∈R,t∈R.x\in\mathbb{R},\qquad t\in\mathbb{R}.

这里,R\mathbb{R} 表示实数集合,xx 是输入,tt 是实际目标,t^\hat t 是模型给出的预测。预测连续数值的任务称为回归,例如根据面积预测房价,或根据学习时间估计成绩。

训练数据可以写成:

D={(xi,ti)}i=1N.\mathcal{D}=\{(x_i,t_i)\}_{i=1}^{N}.

NN 是样本数,ii 是样本编号。“训练”就是根据这些数据选择模型参数。

线性回归:先从直线开始

一个带截距的一元线性回归模型是:

t^=w0+w1x.\hat t=w_0+w_1x.
符号 含义 直观理解
xx 输入 每天学习几小时
tt 目标值 实际考试成绩
t^\hat t 预测值 模型估计的成绩
w0w_0 截距 x=0x=0 时模型的预测值
w1w_1 斜率 xx 每增加 1,预测值变化多少

严格说,若模型只有原始特征 xx,又不单独设置截距,则 t^=w1x\hat t=w_1x 是过原点的直线。加入常数特征 11,就能用 w0w_0 表示截距。

例子:学习时间与考试成绩

下面是一组便于理解的教学数据,不是课件右侧图中的数据:

学习时间 xx(小时) 实际成绩 tt(分)
1 55
2 65
3 70
4 85

对这四个点做带截距的最小二乘直线拟合,得到:

t^=45+9.5x.\hat t=45+9.5x.

例如,输入 x=3x=3,预测为 73.573.5 分;实际成绩是 7070 分,预测减去实际的误差为 3.53.5 分。

这条直线概括了数据中的趋势,但不会通过每个点。它也不能证明“多学习一小时必然提高 9.5 分”:拟合关系不等于因果关系,不应无限外推到数据范围之外。

多项式回归:把一个数变成一组特征

现实关系可能是弯曲的。课件的方法是把原始输入扩展为不同次方:

ϕ(x)=(1,x,x2,…,xM)T.\boldsymbol{\phi}(x)=(1,x,x^2,\ldots,x^M)^T.

照片中使用粗体 x\boldsymbol{x} 表示扩展后的输入向量;这里改用 ϕ(x)\boldsymbol{\phi}(x),方便区分原始数值 xx 与特征向量。常数项写成 11,对应课件中的 x0x^0。

模型变成:

t^=w0+w1x+w2x2+⋯+wMxM=∑j=0Mwjxj.\hat t=w_0+w_1x+w_2x^2+\cdots+w_Mx^M =\sum_{j=0}^{M}w_jx^j.

MM 是选定的最高次数,通常取非负整数;模型共有 M+1M+1 个系数。如果最高次项系数为零,实际多项式次数可以低于 MM。

具体算一次

取 x=2x=2、M=3M=3:

ϕ(2)=(1,2,4,8)T.\boldsymbol{\phi}(2)=(1,2,4,8)^T.

为了演示计算,假设 w=(1,2,−1,0.5)T\boldsymbol{w}=(1,2,-1,0.5)^T,则:

t^=1+2×2−1×4+0.5×8=5.\hat t=1+2\times2-1\times4+0.5\times8=5.

这些系数是演示用的,并非由上面的成绩数据训练得到。

为什么曲线也叫“线性回归”?

这里的“线性”指对待学习参数是线性的。x2x^2、x3x^3 可以作为已知特征,参数仍然只以加权求和的方式出现:

t^=wTϕ(x).\hat t=\boldsymbol{w}^T\boldsymbol{\phi}(x).

例如,w0+w1x+w2x2w_0+w_1x+w_2x^2 对参数线性;含有 w1w2w_1w_2 或 sin⁡(w1x)\sin(w_1x) 的表达式通常不对这些参数线性。判断时看参数怎样进入公式,不只看图像是否弯曲。

右侧四幅图怎样读?

原课件中的四图按左上、右上、左下、右下排列,分别标为 M=0M=0、M=1M=1、M=3M=3、M=9M=9。横轴是输入 xx,纵轴是目标或预测值 tt。

原课件中,空心圆是观测样本,绿色曲线表示参考趋势,红褐色曲线表示拟合模型。下面用一组新生成的数据重绘同类实验,帮助比较四种次数;它不是原图的精确复刻。真实任务中,参考趋势通常并不会直接告诉我们。

四种多项式拟合:零次为常数,一次为直线,三次较平滑,九次在样本之间明显摆动

同一组 10 个带噪声样本,分别拟合 0、1、3、9 次多项式。绿色为参考趋势,红褐色为拟合曲线,空心圆为样本。

位置 次数 模型与图像 这幅图说明什么
左上 M=0M=0 t^=w0\hat t=w_0,相对坐标轴是一条水平常数线 无论输入如何变化都给同一个预测,无法捕捉图中的起伏
右上 M=1M=1 t^=w0+w1x\hat t=w_0+w_1x,一条直线 可以表达整体升降,但不能表达先升、再降、再升的趋势
左下 M=3M=3 三次多项式,平滑弯曲 在这组示例中较好地跟随整体趋势,不必经过每个观测点
右下 M=9M=9 九次多项式,在点间和边缘明显摆动 对训练点贴合得很紧,却偏离平滑参考趋势,展示过拟合风险

不能从这张图得出“三次永远最好”或“九次必然过拟合”。 合适的次数取决于数据量、噪声、真实关系及约束。这里的四图用于比较模型复杂度,不是在规定通用的最佳次数。

下面这块钉板,把同一组样本换成了可以动手的版本:左右移动指针(或按方向键)改变次数 M,亮线是该次数的最小二乘拟合。再另外生成 10 个验证样本(蓝点),它们不参与拟合,只用来检验。盯住两个表盘:训练误差随 M 增大一路降到 0,验证误差却先降后升。

欠拟合、过拟合与泛化

欠拟合:模型表达能力不足,连数据的主要规律也没有学好。在图中的弯曲趋势下,常数和直线模型都过于简单。

过拟合:模型把训练样本中的偶然波动也学进去了。它可能在训练数据上误差很小,但对新数据的预测较差。高次多项式的剧烈摆动是本例中的直观表现,过拟合在其他模型中不一定能直接画出来。

泛化:模型对未参与训练的新数据仍有预测能力。机器学习的目标不仅是解释已有样本,还要让新样本的预测可靠。

情况 训练集表现 新数据表现 常见处理方向
欠拟合 通常较差 通常也较差 改善特征、适当增加模型表达能力
拟合较合适 较好 也较好 用独立数据继续检验
过拟合 很好 明显变差 降低复杂度、增加有效数据、使用正则化

实践中,可以用训练集学习参数,用验证集选择次数等设置,最后用此前未参与选择的测试集评估效果。数据较少时,可以用交叉验证辅助选择模型。不能反复根据测试集表现调参,否则测试评估也会受到影响。

补充:模型怎样“学到”系数?

一种常用方法是让均方误差尽量小:

MSE(w)=1N∑i=1N(wTϕ(xi)−ti)2.\mathrm{MSE}(\boldsymbol{w})= \frac{1}{N}\sum_{i=1}^{N} \left(\boldsymbol{w}^T\boldsymbol{\phi}(x_i)-t_i\right)^2.

计算顺序是:预测每个样本 → 减去实际值 → 平方 → 求平均。平方可以避免正负误差互相抵消,也会更重地惩罚大误差。

在成绩例子中,四个预测分别为 54.5,64,73.5,8354.5,64,73.5,83,因此:

MSE=(−0.5)2+(−1)2+3.52+(−2)24=4.375.\mathrm{MSE}=\frac{(-0.5)^2+(-1)^2+3.5^2+(-2)^2}{4}=4.375.

训练时改变参数 w\boldsymbol{w},寻找误差较小的取值。最小二乘问题可以用线性代数方法求解,也可以用梯度方法优化,并不是只能靠反复试数。

对于包含低次模型的多项式模型族,如果在同一训练集上无正则化地精确最小化平方误差,增大 MM 不会让最优训练误差上升。但验证或测试误差可能上升,这正是不能只看训练误差的原因。

需要哪些基础?

看懂这一页,先掌握函数、幂、坐标图和加权求和即可;理解后续推导与训练过程,再逐步补上向量、矩阵、导数、概率统计和编程。不必把全部数学学完才接触机器学习。

基础领域 优先学习内容 在本课中的作用
代数与函数 方程、幂、多项式、函数图像、求和符号 读懂预测公式与次数 MM
线性代数 向量、内积、转置、矩阵与矩阵乘法 理解 wTϕ(x)\boldsymbol{w}^T\boldsymbol{\phi}(x) 和批量预测
微积分 导数、偏导数、梯度、链式法则 理解误差如何随参数变化,以及如何优化
概率统计 均值、方差、期望、条件概率、正态分布 理解噪声、不确定性及模型评估
Python 变量、列表、循环、函数、数组 实现计算、拟合与画图

后续可以逐步使用 NumPy 做数组计算、Matplotlib 画图、scikit-learn 练习模型训练与评估。

分阶段学习路线

以下按掌握程度推进,无需按固定周数赶进度。Python 入门可以与数学基础并行。

阶段一:能看懂一个预测公式

  • 学习内容:变量、函数、幂、直线与抛物线、∑\sum 的含义。
  • 练习:给 y=2x2+3x+1y=2x^2+3x+1 代入 x=0,1,2x=0,1,2,结果应为 1,6,151,6,15;画出对应点。
  • 过关标准:能解释输入、预测、系数的区别,知道 M=0,1,3M=0,1,3 各表示什么。

阶段二:能读懂向量形式

  • 学习内容:向量、转置、内积、矩阵乘法。
  • 练习:把三次多项式写成 wTϕ(x)\boldsymbol{w}^T\boldsymbol{\phi}(x),手算 x=2x=2 时的特征向量。
  • 过关标准:能把内积展开为逐项相乘再相加,知道 MM 次模型有 M+1M+1 个参数。

阶段三:能解释模型为什么这样训练

  • 学习内容:平方误差、导数、偏导数、梯度与梯度下降的直觉。
  • 练习:固定 w1w_1,尝试几个不同的 w0w_0,比较成绩例子的均方误差。
  • 过关标准:理解训练是在调整参数以降低损失,而不是人工指定每个输入的答案。

阶段四:能判断模型是否学得合适

  • 学习内容:噪声、均值与方差、训练/验证/测试划分、欠拟合与过拟合。
  • 练习:解释为什么经过所有训练点的曲线仍可能预测很差。
  • 过关标准:能用新数据表现讨论模型好坏,并说明为什么不能只比较训练误差。

阶段五:完成一个小实验

  • 学习内容:Python 基础、数组与绘图、多项式特征、回归拟合。
  • 练习:生成一组带少量噪声的平滑曲线数据,划分训练集和验证集,分别拟合 M=0,1,3,9M=0,1,3,9,画出曲线并比较两组误差。
  • 过关标准:能结合图像和误差解释结果;如果九次模型没有过拟合,也能接受该次实验结果,而非强行套用课件结论。

中英术语表

English 中文 本文中的含义
Machine learning 机器学习 从数据中学习预测规则
Supervised learning 监督学习 使用有目标值的样本学习
Regression 回归 预测连续数值
Linear regression 线性回归 对参数线性的回归模型
Polynomial regression 多项式回归 使用输入各次幂作为特征的回归
Input 输入 原始输入值 xx
Feature 特征 提供给模型的量,例如 x2x^2
Target 目标值 已观测的实际结果 tt
Prediction 预测值 模型输出 t^\hat t
Parameter / Weight 参数/权重 从数据中学习的系数 wjw_j
Intercept 截距 常数项系数 w0w_0
Degree 次数 多项式的最高非零幂次
Fitting 拟合 调整参数使模型与数据相符
Loss function 损失函数 衡量预测误差的函数
Mean squared error (MSE) 均方误差 平方误差的平均值
Noise 噪声 观测中的随机扰动等变化
Underfitting 欠拟合 模型未充分捕捉主要规律
Overfitting 过拟合 过度适应训练样本,损害新数据表现
Generalization 泛化 对未见数据的预测能力
Validation set 验证集 用于选择模型设置的数据
Test set 测试集 用于最终独立评估的数据
Hyperparameter 超参数 如次数 MM,通常通过验证选择的设置
Regularization 正则化 通过约束或惩罚控制模型复杂度的方法

复习自测

  1. tt 与 t^\hat t 有什么区别? 前者是实际目标,后者是预测。
  2. M=0M=0 时模型是什么? t^=w0\hat t=w_0,所有输入得到同一个预测。
  3. M=3M=3 时有几个系数? 四个:w0,w1,w2,w3w_0,w_1,w_2,w_3。
  4. 曲线为什么也可以属于线性回归? 因为它对待学习参数是线性的。
  5. 训练误差最小的模型一定最好吗? 不一定,还需要检验新数据上的表现。
  6. 读懂这页先补什么? 先补函数、幂和坐标图,再补向量与内积。

这篇是怎么写的

本文根据我上传的课件照片和与 ChatGPT 的中文问答整理。照片页脚写的是 NPFL129, Lecture 1,此前问答中的“NFPL129”已据此更正。原课件四图的次数和位置经过照片核对;成绩例子、重绘示意图、误差计算及分阶段学习路线是补充说明,并非完整课堂实录或课程官方先修要求。

照片中的视频来源:查理大学 NPFL129 第一讲课程录像。这里只依据照片所示页面整理,没有据此声称核对过整段录像。

读完了?给这篇文章打个分