概率机器学习实战:从损失函数到深度神经网络的代码验证

通过概率视角与代码验证,揭示损失函数背后的数学本质,打通机器学习理论与实践的鸿沟。
本文介绍了「概率机器学习」系列教程第二讲的核心内容与教学理念。课程以L1/L2损失对比为起点,逐步引入高斯输出分布来建模预测不确定性,并通过数学推导揭示:在高斯噪声假设下,最小化负对数似然(NLL)与最小化均方误差(MSE)完全等价——这一结论将习以为常的损失函数赋予了概率解释。课程随后以线性回归的凸碗形损失曲面展示优化保证,再借多项式回归直观呈现欠拟合与过拟合,最终以深度神经网络收尾,展示自动特征学习相对于手工特征工程的优势。整体采用「理论讲座+代码实现」双视频结构,强调每一行代码的输出都应能与数学公式相互印证,为希望从"会调包"进阶到"懂原理"的学习者提供了一套扎实的学习范式。
连接数学理论与代码实践
在机器学习的学习路径中,理论与实践之间往往存在一道鸿沟。许多学习者能够熟练调用现成的库函数,却难以真正理解模型输出背后的数学原理。近期,一位名为 Aayush 的内容创作者发布了「概率机器学习」系列的第二讲代码实现,试图打通这道鸿沟——不仅教你如何写代码,更引导你理解所得到的输出,并用数学验证结果。

这种教学思路强调「知其然,更知其所以然」:当你亲眼看到在高斯分布假设下,负对数似然(Negative Log Likelihood, NLL)与均方误差(Mean Squared Error, MSE)的结果完全等价时,理论与实践之间那种优雅的呼应感便油然而生。
损失函数背后的概率视角
L1 损失与 L2 损失的曲线对比
课程首先从最基础的损失函数入手,对比 L1 损失(绝对值误差)与 L2 损失(平方误差)的曲线形态。这两者不仅是数学上的选择差异,更对应着不同的概率假设与鲁棒性表现:L2 损失对异常值更敏感,而 L1 损失则相对稳健。理解这一点,是后续深入概率建模的基础。
高斯输出分布与不确定性建模
真正让这一课程区别于普通调包教程的,是它引入了高斯输出分布来对预测的不确定性进行建模。传统回归任务往往只给出一个点估计,而在概率视角下,模型输出的是一个完整的概率分布——不仅告诉你预测值是多少,还告诉你对这个预测有多大把握。
这种不确定性建模方式在现实应用中意义重大。在自动驾驶、医疗诊断等高风险场景中,模型「知道自己不知道什么」的能力,往往比单纯的预测精度更为关键。
高斯输出分布属于预测不确定性量化(Uncertainty Quantification, UQ)的最基础形式。在这种框架下,模型不再输出单一标量 $\hat{y}$,而是输出分布参数——通常是均值 $\mu(x)$ 和方差 $\sigma^2(x)$,二者均可由神经网络学习。方差 $\sigma^2(x)$ 捕捉的是认知不确定性与随机不确定性的混合:前者反映模型对某区域数据见得少、把握不足;后者反映数据本身固有的噪声。这与贝叶斯神经网络、深度集成(Deep Ensembles)等更高级的不确定性估计方法共享同一底层动机,是迈向可信赖AI(Trustworthy AI)的重要基础概念。
NLL 与 MSE 的数学等价性
课程中一个核心的顿悟时刻,是揭示了在高斯输出分布假设下,最小化负对数似然与最小化均方误差在数学上完全等价。
这一等价性并非巧合。当我们假设预测误差服从均值为零、方差固定的高斯分布时,对似然函数取负对数并展开,其主要项恰好就是均方误差的形式。这意味着我们日常习以为常的 MSE 损失,其实隐含了一个高斯噪声假设。理解这一点,能帮助我们在面对非高斯数据时,更有意识地选择合适的损失函数。
从数学推导角度展开:假设观测数据 $y_i$ 满足 $y_i = f(x_i) + \epsilon$,其中 $\epsilon \sim \mathcal{N}(0, \sigma^2)$,则每个样本的似然为 $p(y_i|x_i) = \frac{1}{\sqrt{2\pi\sigma^2}} \exp\left(-\frac{(y_i - f(x_i))^2}{2\sigma^2}\right)$。对全数据集取负对数似然并化简后,常数项与 $\sigma$ 相关的项均与参数无关,剩余的最小化目标恰好等价于 $\sum_i (y_i - f(x_i))^2$,即 MSE。这一推导揭示了一个深刻的对称性:选择损失函数,本质上就是在为数据噪声选择概率分布模型。若噪声服从拉普拉斯分布,最优损失函数则变为 L1(绝对值误差);若噪声为重尾分布,则需要更鲁棒的损失设计。由此可见,损失函数的选择并非惯例,而是一种关于数据生成过程的概率假设声明。
从线性回归到深度神经网络
凸碗形损失曲线与优化保证
课程接着分析线性回归,并展示其损失曲线呈现经典的「凸碗形」(convex bowl shape)。凸性保证了优化过程存在唯一的全局最小值,梯度下降不会陷入局部最优。这也是线性模型至今仍被广泛使用的原因之一:可解释性强、优化简单、理论保证充分。
用多项式回归理解欠拟合与过拟合
为了直观解释欠拟合与过拟合这一机器学习的核心难题,课程借助多项式回归进行演示。当多项式阶数过低时,模型无法捕捉数据的真实规律,表现为欠拟合;当阶数过高时,模型会过度拟合训练数据中的噪声,导致泛化能力下降。
通过逐步调整模型复杂度、观察损失变化的实验方式,比单纯的文字描述更能让学习者建立起对「偏差-方差权衡」的直觉认识。
偏差-方差权衡(Bias-Variance Tradeoff)是理解欠拟合与过拟合的核心框架。模型的期望泛化误差可以分解为三项:偏差的平方(模型对真实规律的系统性偏离)、方差(模型对训练数据波动的敏感程度)以及不可约噪声。低阶多项式偏差高、方差低,对应欠拟合;高阶多项式偏差低、方差高,对应过拟合。解决过拟合的常用手段包括正则化(L1/L2 惩罚项)、Dropout、早停(Early Stopping)以及增加训练数据量——这些技术在深度学习中同样适用,而其理论根基正是在多项式回归这一简单场景中最容易看清楚的。
深度神经网络:从手动特征工程到自动特征学习
多项式回归虽然能拟合复杂曲线,但它依赖人工设计特征。当数据维度增高、结构变复杂时,手动设计特征变得力不从心。这正是深度神经网络登场的契机——它能够自动学习数据中的层次化特征表示,无需人工干预。
课程以编写一个深度神经网络作为收尾,将前面积累的概念(损失函数选择、概率建模思路、拟合问题诊断)在一个更强大的模型框架中融会贯通。这种循序渐进的编排,让学习者能够清晰地看到:为什么我们需要神经网络,以及它究竟解决了什么问题。
理论与代码相互印证的学习价值
在当下的 AI 学习资源中,快速上手类教程层出不穷,但真正深入到数学原理与代码实现相互印证的内容却相对稀缺。Aayush 的这一系列采用理论讲座加代码实现的双视频结构,提供了一种更扎实的学习范式:先理解理论推导,再通过代码验证,最终让抽象的公式变成可运行、可观察的结果。
对于希望从「会调用API」进阶到「懂底层原理」的机器学习学习者来说,这种把负对数似然、高斯分布、损失曲线等概念与实际代码输出一一对应的方式,能有效弥补理论学习中常见的「知道公式却不知其意义」的困境。
机器学习的美,恰恰在于理论与实践的统一。当你亲手写出的代码验证了教科书上的数学结论时,那种理解的深度是单纯阅读所无法给予的。无论你是刚入门的学习者,还是希望夯实基础的从业者,这种「理论—代码—验证」三位一体的学习方式,都值得尝试。
相关资源:
- 代码实现视频:https://youtu.be/6ZTVp70Mf5s
- 理论讲座视频:https://youtu.be/iThI5AapBc0
相关推荐

@ai-sdk/zai@3.0.10 发布:依赖更新的补丁版本解析
Vercel AI SDK 发布 @ai-sdk/zai@3.0.10 补丁版本,同步更新 provider、provider-utils 与 openai-compatible 等底层依赖。本文解析该版本变更内容及 AI SDK provider 体系的设计意义。

Vercel AI SDK 更新:@ai-sdk/workflow 2.0.29 修复工具结果保留问题
Vercel AI SDK 发布 @ai-sdk/workflow 2.0.29 补丁版本,核心修复工作流在终止、延迟、暂停三种响应状态下 provider 工具执行结果的保留问题,并同步升级 ai@7.0.98 等核心依赖。

Vercel AI SDK 更新:@ai-sdk/xai 4.0.58 批处理与图像生成改进
Vercel AI SDK 发布 @ai-sdk/xai 4.0.58 版本更新,新增批处理图像生成支持,修复批处理请求类型校验及 DeepSeek 推理流问题,并同步升级 provider 相关依赖。