补充导读:从数学女孩到机器学习

以第1卷第6章的微分、差分与连续离散转换为数学锚点,建立从学习问题、数据边界、损失优化到泛化评估的机器学习证据链。

学习目标

  • 能把机器学习任务写成包含预测时点、输入、标签和错误代价的学习问题契约
  • 能用矩阵、损失函数和梯度检查解释线性模型的一次更新,并识别数值稳定风险
  • 能区分模型表达能力、优化过程、泛化表现与数据泄漏,设计可复现的训练验证测试流程
  • 能通过交互实验比较正常切分与泄漏场景,说明离线高分为什么不自动等于上线可靠

从数学工具开始:经验不是证明

先预测:训练损失降到零,是否说明模型已经“学会”任务?不一定。模型可能只是记住训练样本,或者提前看到了验证、测试甚至未来信息。机器学习的核心证据不是“训练过程能跑”,而是对未见数据仍有可复核表现,并且这个表现对应真实使用时的错误代价。

本章是独立重写的补充导读,不把机器学习伪装成《数学女孩》前四卷中的原章。它选择第1卷第6章《在米尔嘉旁边》作为数学锚点:那一章把微分差分并置,比较一次函数、二次函数、三次函数,讨论下降阶乘幂微分与差分的对应,还把连续指数函数 e^x 与离散指数函数 2^x放在在两个世界中往返的旅行中理解。这里沿着同一条桥继续走:微分给出局部方向,差分帮助检查实现,矩阵组织数据,概率描述不确定性,最后由数据切分检验泛化。

从数学工具到机器学习证据微分给方向,差分查实现,数据边界决定评估是否可信学习问题时点 · 输入 · 代价数据边界采样 · 切分 · 泄漏模型优化矩阵 · 损失 · 梯度泛化评估未见数据 · 漂移数学表示Xθ · 残差 · ∇L函数、差分与矩阵实现检查有限差分 · 形状 · 数值训练曲线不是唯一证据独立评估验证 · 测试 · 时间切片分布漂移与错误代价高训练分数只说明模型看过训练数据可靠结论还要通过未见数据、真实时间边界和上线监控
机器学习交付不是训练分数,而是从问题定义到泛化证据的完整链路。

一、先定义学习问题

给每个样本一对 (xᵢ,yᵢ) 还不够。必须说明 xᵢ 在预测时是否真的可得、yᵢ 何时确定、样本代表哪个未来分布,以及假阳性和假阴性的代价是否相同。例如预测违约时,预测时点是申请提交时;“催收次数”若在违约后才产生,就不能成为预测特征。

三种反馈结构

监督学习有标签,连续目标通常是回归,离散目标通常是分类;无监督学习没有指定答案,要从距离、尺度和模型假设中寻找聚类或降维结构;强化学习则围绕状态、动作、回报、探索和信用分配展开。三种结构的反馈来源不同,不能用一个指标或一个数据切分模板包办。

问题契约还要写清楚基线。若预测明天的销量,永远输出训练集均值就是一个回归基线;若正类只占 1%,永远预测负类可能有 99% 准确率,却没有识别任何正类。基线不是低级方案,而是防止复杂模型只比“什么也不做”好看一点的参照物。

先画时间边界,再切数据每一列特征都要回答:预测发生时真的可获得吗?历史样本预测时点未来标签不可回看训练拟合参数拟合预处理验证选超参数定阈值与停止测试方案冻结后估计泛化同一主体分组、时间切分和预处理统计量都属于数据边界把测试行或未来信息提前带入,会制造看似可信的高分
数据集的职责不同;预测时点之后的信息不能穿越边界进入特征。

二、线性回归:把矩阵变成可验收的损失

设有 m 个样本、p 个特征,把特征写成设计矩阵 X∈R^{m×p},参数为 θ∈R^p,预测为:

y^=Xθ.\hat{\mathbf y}=X\boldsymbol\theta.

若需要截距,可在 X 中加入一列常数 1。残差向量是 r=Xθ-y,定义

L(θ)=1mXθy22.L(\boldsymbol\theta)=\frac1m\lVert X\boldsymbol\theta-\mathbf y\rVert_2^2.

平方损失把大误差放大,适合某些连续目标,却不等于所有业务的真实代价。对参数求导:

θL=2mXT(Xθy).\nabla_{\boldsymbol\theta}L =\frac2mX^\mathsf T(X\boldsymbol\theta-\mathbf y).

令梯度为零得到正规方程 XᵀXθ=Xᵀy。若 X 满列秩,平方损失严格凸并有唯一解;但这不意味着实现应显式计算 (XᵀX)⁻¹。构造 XᵀX 会放大条件数,特征共线时矩阵甚至奇异;QR 分解、SVD 或稳定的最小二乘求解器通常更合适。

正则化改变目标

岭回归加入惩罚:

Lλ(θ)=1mXθy22+λθ22.L_\lambda(\boldsymbol\theta)=\frac1m\lVert X\boldsymbol\theta-\mathbf y\rVert_2^2+\lambda\lVert\boldsymbol\theta\rVert_2^2.

它常能缓解共线性并降低方差,却也引入偏差。λ 应由训练集之外的验证过程选择,不能为了让测试分数好看而反复窥视测试集;是否惩罚截距、特征是否标准化,也属于模型契约的一部分。

三、梯度下降:局部方向不是全局保证

是局部一阶信息:在足够小的步长下,负梯度给出最陡的局部下降方向。更新式为:

θt+1=θtηL(θt).\boldsymbol\theta_{t+1}=\boldsymbol\theta_t-\eta\nabla L(\boldsymbol\theta_t).

学习率 η 过大可能震荡或发散,过小则进展缓慢。即使每一步都降低训练损失,也不能推出找到了全局最优,更不能推出对分布外数据有效。对梯度为 β-Lipschitz 的凸函数,固定步长常需满足 0<η<2/β 一类条件;非凸模型、随机小批量和自适应优化器需要分别说明保证对象。

这正是第1卷微分与差分的桥:解析梯度描述连续局部变化,有限差分用离散扰动检查代码是否忠实。对第 j 个参数做中心差分:

LθjL(θ+εej)L(θεej)2ε.\frac{\partial L}{\partial\theta_j}\approx \frac{L(\boldsymbol\theta+\varepsilon\mathbf e_j)-L(\boldsymbol\theta-\varepsilon\mathbf e_j)}{2\varepsilon}.

ε 太大有截断误差,太小会放大舍入误差,所以梯度检查使用相对误差容差,不要求逐位相等。

def mse_and_gradient(X, y, theta):
    residual = X @ theta - y
    loss = np.mean(residual ** 2)
    gradient = (2.0 / X.shape[0]) * X.T @ residual
    return loss, gradient
 
def gradient_check(X, y, theta, index, epsilon=1e-6):
    step = np.zeros_like(theta)
    step[index] = epsilon
    plus, _ = mse_and_gradient(X, y, theta + step)
    minus, _ = mse_and_gradient(X, y, theta - step)
    numeric = (plus - minus) / (2.0 * epsilon)
    _, analytic = mse_and_gradient(X, y, theta)
    return numeric, analytic[index]

特征尺度差异会把损失等高线拉成长椭圆,让统一学习率来回摆动。标准化不是为了让公式好看,而是改善优化几何;标准化统计量必须只在训练集上拟合,再应用到验证和测试数据。

一次更新:方向、步长与检查等高线越靠中心损失越小,但一次下降不等于全局保证较小损失θₜ−∇L步长 η过大:震荡或发散过小:进展缓慢有限差分:L(θ+εeⱼ) 与 L(θ−εeⱼ)ε 过大有截断误差,过小放大舍入误差;比较相对误差而非逐位相等
梯度给出局部方向,有限差分检查实现;学习率决定更新是否稳定。

四、分类、概率与评价指标

二元分类可以令:

pθ(y=1x)=σ(xTθ),σ(z)=11+ez.p_\theta(y=1\mid x)=\sigma(x^\mathsf T\theta),\qquad \sigma(z)=\frac1{1+e^{-z}}.

交叉熵为 ℓ(y,p)=-y log p-(1-y)log(1-p);输出概率到最终类别还要选择阈值。阈值不是自然常数,而是由错误代价、资源约束和业务风险共同决定。

类别极不平衡时,应同时查看混淆矩阵、精确率、召回率、PR 曲线、概率校准和切片指标。总准确率可能掩盖少数类完全失效;ROC-AUC 也不能代替一个具体阈值下的成本评估。指标必须对应学习问题契约,不能只挑最高的数字。

五、神经网络:表达、优化与泛化分开验收

一层神经网络写作:

h(k)=ϕ ⁣(W(k)h(k1)+b(k)).h^{(k)}=\phi\!\left(W^{(k)}h^{(k-1)}+b^{(k)}\right).

若各层都只有线性变换,多层矩阵乘积仍等价于一个线性变换;非线性激活使表示空间真正扩展。万能逼近定理是表示能力结论:在给定条件下,某类网络能逼近连续函数。它不保证有限数据识别目标、不保证优化器找到参数、不保证模型很小,也不保证分布外

不是一条新的求导定律,而是链式法则的高效组织:前向计算保存中间量,反向阶段复用它们计算梯度。自动微分减少手写错误,却不免除对损失定义、张量形状、数值稳定和不可导点约定的检查。

前向表达,反向求导每条边都携带张量形状;每个中间量都服务于链式法则输入 x特征向量线性层Wh+b激活 φ非线性表示输出预测与损失反向传播:链式法则表示能力 ≠ 优化成功 ≠ 泛化保证自动微分仍需检查损失、形状、数值稳定和不可导点约定
表达能力来自非线性复合;反向传播是链式法则的高效组织。

六、数据切分、泄漏与上线证据

训练集可以被优化器反复使用;验证集用于选择超参数、阈值和停止时机;测试集应在方案冻结后尽量只使用一次,估计最终泛化误差。若先在全数据上标准化、按全体目标编码类别、把同一用户的记录拆到不同集合,或使用预测时点之后生成的特征,离线分数都会被污染。

时间任务通常按时间切分,不能随机打散未来和过去;同一主体的多条记录常需要分组切分,避免模型从同一人的近重复样本中“认出答案”。验证集也不是永久干净的:反复依据验证分数修改方案,最终会对验证集过拟合,因此需要保留未见测试或外部评估。

同一个分数,可能对应两条证据链评估可信度取决于信息是否越过预测边界安全切分训练:拟合参数验证:选择方案测试:冻结后估计0.78:可解释的未见数据表现泄漏路径全量预处理或未来特征测试被提前看见0.99:虚假高分,无法上线解释去掉泄漏后重新冻结测试集再报告基线、时间切片、错误代价和不确定性
高分只有在数据边界独立、时间顺序正确且指标对应代价时才有解释力。

上线后,泛化不是一次测试就永久成立。要监控输入覆盖、缺失率、预测分布、切片指标、延迟标签、数据漂移和回退机制。若训练分布与生产分布改变,原来正确的阈值和错误代价可能不再适用;监控触发的是重新评估流程,不是自动证明模型已经失效或仍然可靠。

交互实验:把“高分”拆成证据

先选择模型容量和数据处理方式,再观察训练、验证与测试的相对表现。开启“泄漏模式”会让测试信息提前进入特征,分数可能变得漂亮,却同时标红评估不再独立;“重置”恢复安全切分,方便对照实验。

分数必须带着数据边界解释当前:低容量模型 · 安全切分0.000.250.500.751.00训练0.82验证0.79测试0.78

安全切分下,高容量模型的训练分数可以很高,但验证和测试承担独立验收。

交互实验把模型容量、数据泄漏和三份评估分数放在同一张可复现的证据图上。

分步验收:从数学更新到可信评估

分步1 / 4

1. 定义:固定预测时点与代价

写出预测对象、可用特征、标签产生时间和错误代价;检查每一列特征在真实预测时是否已经存在,并与基线比较。

先画时间边界,再切数据每一列特征都要回答:预测发生时真的可获得吗?历史样本预测时点未来标签不可回看训练拟合参数拟合预处理验证选超参数定阈值与停止测试方案冻结后估计泛化同一主体分组、时间切分和预处理统计量都属于数据边界把测试行或未来信息提前带入,会制造看似可信的高分
数据集的职责不同;预测时点之后的信息不能穿越边界进入特征。

本章回顾:机器学习的五份证据

  • 先定义预测时点、输入、标签、代价和基线。
  • 矩阵与损失写清拟合目标,梯度检查验证实现。
  • 表达能力、优化过程和泛化表现不是同一个命题。
  • 训练、验证、测试和时间切片各有职责,泄漏会污染分数。
  • 上线仍需监控分布、切片、延迟标签和回退机制。

练习与答案

练习

  1. 问题 1:写出学习问题契约。 以“预测申请提交时的违约风险”为例,列出预测时点、允许使用的输入、标签时间和至少两种错误代价;指出一个看似有用但非法的特征。
  1. 问题 2:检查梯度更新。 对一个参数写出中心有限差分公式,并说明学习率过大、过小各会在训练曲线上出现什么现象;再给出一个实现层面的检查。
  1. 问题 3:改 Demo 代码。 在交互实验中增加一个“按时间切分”选项:当数据顺序包含未来信息时,禁止随机切分,并在界面显示训练区间早于验证区间、验证区间早于测试区间。
  1. 问题 4:解释一个高分。 如果开启泄漏模式后测试准确率从 0.78 升到 0.99,你会先检查哪些证据,而不是直接发布模型?

名词解释

本章出现的专业名词,用大白话再讲一遍。

学习问题

规定预测什么、何时预测、能看见哪些输入,以及错了要付出什么代价。

损失函数

把预测和真实目标之间的差异变成一个可计算、可优化的数字。

梯度下降

反复沿损失局部下降最快的方向移动参数的优化方法。

泛化

模型在没有参与训练的、且符合真实使用分布的数据上仍然有效。

反向传播

沿计算图反向应用链式法则,高效计算各参数对损失的影响。

数据泄漏

把预测时本来不知道的信息带进训练或预处理,造成虚假的高分。

资料与写作方式声明

本章以图灵数学女孩系列中文前四卷权威目录界定学习范围,并结合正文列出的技术资料独立重写;不宣称复现原书正文,也不沿用原作表述。

原作版权归作者与出版社所有;本站原创教学结构与表述仅供学习交流。

讨论

评论区加载中…