当前位置: 首页 > news >正文

损失函数与正则化的本质

1. 损失函数的由来

在机器学习中,损失函数(loss function)用于衡量模型预测与真实目标之间的差异。训练模型的过程,本质上就是在参数空间中寻找一组参数,使得总体损失尽可能小。

从更深层的角度看,常见损失函数并不是“凭经验拍脑袋定义”的,而通常来自两条主线:

  1. 误差度量观点:直接衡量预测值与真实值之间的偏差;
  2. 概率建模观点:先假设数据的生成过程,再用极大似然估计推导出损失函数。

通常来说:

  • 回归问题中的均方误差、绝对误差,常可由不同的噪声分布假设推导得到;
  • 分类问题中的交叉熵损失,通常来自伯努利分布或类别分布下的负对数似然

1.1 回归问题中的损失:绝对误差与最小二乘法

设训练样本为:

\[\mathcal{D}=\{(x_i,y_i)\}_{i=1}^n \]

模型对输入 \(x_i\) 的预测记为 \(\hat{y}_i\)

1.1.1 绝对误差(MAE)

单个样本的绝对误差定义为:

\[L_i = |y_i-\hat{y}_i| \]

一个批量上的平均绝对误差为:

\[L = \frac{1}{n}\sum_{i=1}^n |y_i-\hat{y}_i| \]

绝对误差对异常值相对更鲁棒,因为误差是线性增长的。


1.1.2 均方误差(MSE)与最小二乘法

单个样本的平方误差定义为:

\[L_i = (y_i-\hat{y}_i)^2 \]

一个批量上的平均平方误差为:

\[L = \frac{1}{n}\sum_{i=1}^n (y_i-\hat{y}_i)^2 \]

这就是常见的均方误差(Mean Squared Error, MSE)。如果我们最小化误差平方和:

\[\sum_{i=1}^n (y_i-\hat{y}_i)^2 \]

就称为最小二乘法(Least Squares)

需要特别注意:

  • 最小二乘法对应的是平方误差,不是绝对误差
  • 原文中把

    \[|y_i-\hat{y}_i| \]

    \[(y_i-\hat{y}_i)^2 \]

    混在一起称为“最小二乘法”,这是不准确的。

1.1.3 从概率角度理解回归损失

如果进一步假设真实数据满足:

\[y_i = f_\theta(x_i) + \varepsilon_i \]

其中噪声 \(\varepsilon_i\) 服从不同分布,就会导出不同损失函数:

  • \(\varepsilon_i \sim \mathcal{N}(0,\sigma^2)\)(高斯噪声),则最大似然估计对应最小化平方误差
  • \(\varepsilon_i\) 服从拉普拉斯分布,则最大似然估计对应最小化绝对误差

因此,MSE 和 MAE 都可以看作概率建模的结果,而不仅仅是“经验定义”。


1.2 极大似然估计:从概率模型到损失函数

1.2.1 抛硬币的例子

设一枚硬币正面朝上的概率为 \(p\)。现在独立抛掷 \(n\) 次,其中有 \(k\) 次正面朝上。我们希望根据结果估计参数 \(p\)

在参数为 \(p\) 的模型下,观察到这组结果的概率为:

\[P(K|p)=\binom{n}{k}p^k(1-p)^{n-k} \]

这就是似然函数(likelihood)。极大似然估计的目标是:

\[p^* = \arg\max_p P(K|p) \]

由于组合项 \(\binom{n}{k}\)\(p\) 无关,优化时可以忽略,于是等价于最大化:

\[p^k(1-p)^{n-k} \]

进一步取对数,可得:

\[\log P(K|p)=\log \binom{n}{k}+k\log p+(n-k)\log(1-p) \]

因此,极大似然估计常常转化为最大化对数似然,或者等价地,最小化负对数似然


1.2.2 从 MLE 到 MAP

严格地说:

  • 极大似然估计(MLE):只最大化数据在参数下出现的概率;
  • 最大后验估计(MAP):在 MLE 基础上再考虑参数本身的先验分布。

MLE 的目标是:

\[\theta^*=\arg\max_\theta P(\mathcal{D}|\theta) \]

MAP 的目标是:

\[\theta^*=\arg\max_\theta P(\theta|\mathcal{D}) \]

根据贝叶斯公式:

\[P(\theta|\mathcal{D})=\frac{P(\mathcal{D}|\theta)P(\theta)}{P(\mathcal{D})} \]

由于 \(P(\mathcal{D})\) 与参数 \(\theta\) 无关,因此 MAP 等价于:

\[\theta^*=\arg\max_\theta P(\mathcal{D}|\theta)P(\theta) \]

这件事很重要,因为后面常见的 L2 正则化、L1 正则化,都可以理解为给参数加入了不同形式的先验。


1.2.3 有监督学习中的正确建模方式

原文中把“人脑模型”“真实模型”“预测标签来自什么模型”等概念混在一起,这在概率建模上并不严谨。更规范的表述是:

设训练集为:

\[\mathcal{D}=\{(x_i,y_i)\}_{i=1}^n \]

模型参数记为:

\[\theta=(W,b) \]

在有监督学习中,我们的目标是找到参数 \(\theta\),使得在给定输入 \(x_i\) 时,真实标签 \(y_i\) 出现的条件概率尽可能大,即:

\[\theta^*=\arg\max_\theta P(\mathcal{D}|\theta) \]

若假设样本独立同分布(i.i.d.),则有:

\[P(\mathcal{D}|\theta)=\prod_{i=1}^n P(y_i|x_i;\theta) \]

于是:

\[\theta^*=\arg\max_\theta \prod_{i=1}^n P(y_i|x_i;\theta) \]

取对数后得到:

\[\theta^*=\arg\max_\theta \sum_{i=1}^n \log P(y_i|x_i;\theta) \]

等价地,也就是最小化负对数似然:

\[\mathcal{L}(\theta)=-\sum_{i=1}^n \log P(y_i|x_i;\theta) \]

这就是许多损失函数的统一来源。


1.3 信息量、熵、KL 散度与交叉熵

为了更好地理解分类损失,尤其是交叉熵,需要先理解信息论中的几个基本概念。


1.3.1 信息量

一个事件越罕见,它一旦发生所携带的信息就越大。香农定义事件 \(A\) 的信息量为:

\[I(A)=-\log P(A) \]

它满足两个直观性质:

  1. 事件越不容易发生,信息量越大;
  2. 独立事件的信息量可加。

若以 2 为底,则单位是 bit:

\[I(A)=-\log_2 P(A) \]

若以自然对数为底,则单位是 nat:

\[I(A)=-\ln P(A) \]

底数不同只对应单位不同,不影响本质。


1.3.2 熵

熵刻画一个随机变量整体上的不确定性。若随机变量 \(X\) 的分布为 \(P(x)\),则其熵定义为:

\[H(P)=-\sum_x P(x)\log P(x) \]

也可以理解为信息量的期望:

\[H(P)=\mathbb{E}_{x\sim P}[-\log P(x)] \]

直观上:

  • 分布越均匀,不确定性越大,熵越高;
  • 分布越集中,不确定性越小,熵越低。

1.3.3 KL 散度

仅比较两个分布的熵并不能判断它们是否相同,因为不同分布可能具有相同的熵。因此需要引入KL 散度来衡量两个分布之间的差异。

设真实分布为 \(P\),模型分布为 \(Q\),则 KL 散度定义为:

\[D_{KL}(P\|Q)=\sum_x P(x)\log\frac{P(x)}{Q(x)} \]

展开可得:

\[D_{KL}(P\|Q)=\sum_x P(x)\log P(x)-\sum_x P(x)\log Q(x) \]

即:

\[D_{KL}(P\|Q)=H(P,Q)-H(P) \]

其中:

  • \(H(P)\) 是真实分布的熵;
  • \(H(P,Q)\) 是真实分布 \(P\) 与模型分布 \(Q\) 之间的交叉熵

1.3.4 交叉熵

交叉熵定义为:

\[H(P,Q)=-\sum_x P(x)\log Q(x) \]

它表示:当真实分布是 \(P\) 时,用模型分布 \(Q\) 去编码样本所需要的平均信息量

\[D_{KL}(P\|Q)=H(P,Q)-H(P) \]

可知,对给定数据而言,真实分布 \(P\) 是固定的,因此 \(H(P)\) 是常数。于是:

最小化 KL 散度,等价于最小化交叉熵。

这就是为什么分类任务中常使用交叉熵作为损失函数。


1.4 二分类交叉熵的推导

考虑二分类问题,标签:

\[y_i\in\{0,1\} \]

模型对“正类”的预测概率记为:

\[\hat{p}_i=P(y_i=1|x_i;\theta) \]

通常 \(\hat{p}_i\) 来自 sigmoid 输出:

\[\hat{p}_i=\sigma(f_\theta(x_i)) \]

则在伯努利分布假设下,单个样本的条件概率为:

\[P(y_i|x_i;\theta)=\hat{p}_i^{\,y_i}(1-\hat{p}_i)^{\,1-y_i} \]

解释如下:

  • \(y_i=1\),则上式变为 \(\hat{p}_i\)
  • \(y_i=0\),则上式变为 \(1-\hat{p}_i\)

对整个数据集,似然为:

\[P(\mathcal{D}|\theta)=\prod_{i=1}^n \hat{p}_i^{\,y_i}(1-\hat{p}_i)^{\,1-y_i} \]

取对数:

\[\log P(\mathcal{D}|\theta)=\sum_{i=1}^n \left[y_i\log \hat{p}_i+(1-y_i)\log(1-\hat{p}_i)\right] \]

因此,负对数似然为:

\[\mathcal{L}(\theta)= -\sum_{i=1}^n \left[y_i\log \hat{p}_i+(1-y_i)\log(1-\hat{p}_i)\right] \]

这就是二分类交叉熵(Binary Cross Entropy, BCE)。

如果取平均,则写为:

\[\mathcal{L}(\theta)= -\frac{1}{n}\sum_{i=1}^n \left[y_i\log \hat{p}_i+(1-y_i)\log(1-\hat{p}_i)\right] \]


1.4.1 这里的一个常见记号误区

在分类任务中,应尽量区分:

  • \(y_i\):真实标签;
  • \(\hat{p}_i\):模型输出的概率;
  • \(\hat{y}_i\):将概率阈值化后的预测类别。

训练交叉熵时,真正进入公式的是预测概率 \(\hat{p}_i\),而不是阈值化后的 \(\hat{y}_i\)
因此,把交叉熵写成关于 \(\hat{y}_i\in\{0,1\}\) 的函数,在概念上是不严谨的。


1.5 多分类交叉熵的推导

设多分类问题共有 \(C\) 个类别。对样本 \(x_i\),模型输出 softmax 概率:

\[\hat{p}_{i,c}=P(y_i=c|x_i;\theta), \quad c=1,\dots,C \]

满足:

\[\sum_{c=1}^C \hat{p}_{i,c}=1 \]

若真实标签采用 one-hot 编码,记为 \(y_{i,c}\in\{0,1\}\),则单个样本的条件概率可写为:

\[P(y_i|x_i;\theta)=\prod_{c=1}^C \hat{p}_{i,c}^{\,y_{i,c}} \]

于是整个数据集的负对数似然为:

\[\mathcal{L}(\theta)=-\sum_{i=1}^n \sum_{c=1}^C y_{i,c}\log \hat{p}_{i,c} \]

若取平均:

\[\mathcal{L}(\theta)=-\frac{1}{n}\sum_{i=1}^n \sum_{c=1}^C y_{i,c}\log \hat{p}_{i,c} \]

这就是多分类交叉熵(Categorical Cross Entropy)。

需要注意:

  • 单标签多分类通常使用 softmax + cross entropy
  • 多标签分类中每个类别独立判断,通常使用 sigmoid + binary cross entropy
  • 原文把“多分类交叉熵”与“sigmoid 输出”直接绑定,这并不准确。

1.6 小结:损失函数的统一理解

可以把常见损失函数总结为下面这条主线:

  1. 先假设数据的生成方式;
  2. 写出样本在模型下出现的概率;
  3. 对整个数据集做极大似然估计;
  4. 将“最大化似然”等价改写为“最小化负对数似然”;
  5. 得到具体的损失函数。

于是:

  • 高斯噪声 \(\Rightarrow\) 均方误差(MSE);
  • 拉普拉斯噪声 \(\Rightarrow\) 绝对误差(MAE);
  • 伯努利分布 \(\Rightarrow\) 二分类交叉熵(BCE);
  • 类别分布 + softmax \(\Rightarrow\) 多分类交叉熵。

因此,损失函数不是孤立的技巧,而是概率建模与统计推断的直接结果


2. 正则化的本质

如果说损失函数回答的是“如何让模型拟合训练数据”,那么正则化回答的就是“如何让模型不过度拟合训练数据”。


2.1 为什么需要正则化

深度学习模型通常参数量巨大,表达能力很强。如果只追求训练误差最小,模型很容易记住训练集中的噪声与偶然模式,导致在测试集上表现变差,这就是过拟合

正则化的核心目标是:

  • 限制模型的有效复杂度;
  • 降低过拟合风险;
  • 提高模型在未见数据上的泛化能力。

从直观上说,正则化并不是阻止模型学习,而是偏向于让模型学习更简单、更稳定、更平滑的规律


2.2 常见正则化方法

2.2.1 L2 正则化

L2 正则化在原损失基础上加入参数平方和惩罚:

\[\mathcal{L}_{reg}=\mathcal{L}+\lambda\|\theta\|_2^2 \]

它倾向于让参数整体更小、更平滑,但通常不会直接产生稀疏解。

从贝叶斯观点看,L2 正则化等价于对参数施加高斯先验


2.2.2 L1 正则化

L1 正则化形式为:

\[\mathcal{L}_{reg}=\mathcal{L}+\lambda\|\theta\|_1 \]

它更倾向于产生稀疏参数,使部分参数直接变为 0,因此常被用于特征选择或稀疏建模。

从贝叶斯观点看,L1 正则化等价于对参数施加拉普拉斯先验


2.2.3 Dropout

Dropout 在训练时以一定概率随机将一部分神经元输出置零。这样做会使模型无法过度依赖某些局部特征或某几个固定通路,从而提升泛化能力。

它可以理解为一种随机子网络集成思想:

  • 每次迭代都在训练一个不同的“稀疏子网络”;
  • 测试时则近似于对这些子网络做集成平均。

因此,Dropout 本质上是一种随机扰动型正则化


2.2.4 数据增强与早停

严格来说,正则化并不只包括对参数显式加惩罚项。许多方法虽然形式不同,但本质上都在减少过拟合,例如:

  • 数据增强(Data Augmentation):通过扩充样本分布,提高模型对输入扰动的鲁棒性;
  • 早停(Early Stopping):在验证集性能开始下降前停止训练,防止模型过度拟合训练集。

2.2.5 Batch Normalization 的定位

原文把 Batch Normalization 直接归为“正则化的本质体现”,这需要更谨慎。

Batch Normalization 的主要作用是:

  • 稳定训练过程;
  • 缓解梯度问题;
  • 允许更大学习率;
  • 加快收敛。

它在实践中常常带来一定正则化效果,因为 mini-batch 统计量会引入噪声扰动,但它的首要目标并不是像 L1/L2 那样显式约束参数复杂度。

因此,更准确的说法是:

Batch Normalization 主要是优化与训练稳定化技术,同时可能附带一定的正则化效应,但不宜简单地把它与 L1/L2、Dropout 完全并列为同一种意义上的正则化。


2.3 正则化的本质是什么

正则化的本质可以概括为:

在拟合训练数据之外,额外引入某种偏好或约束,使模型更倾向于选择简单、稳定、泛化更好的解。

这种“偏好”可以体现在多个层面:

  1. 参数层面:限制参数过大或鼓励参数稀疏,例如 L1/L2;
  2. 结构层面:通过随机失活减少共适应,例如 Dropout;
  3. 数据层面:通过增强样本多样性减少过拟合,例如数据增强;
  4. 优化路径层面:通过早停、噪声扰动等方式避免走向过拟合解。

因此,正则化并不只是“限制参数分布”,而是更广义地:

缩小模型的有效假设空间,或者降低模型对训练数据细节噪声的敏感性。


2.4 对“平滑性”的理解

正则化常常会让模型表现出更好的平滑性,即:

  • 相似的输入,输出更接近;
  • 模型不会因为微小扰动而产生剧烈变化。

但要注意,这种平滑性通常是结果,不是所有正则化方法的直接定义。

例如:

  • L2 正则化通常会让函数更平滑;
  • 数据增强会让模型对输入扰动更鲁棒;
  • Dropout 会减少对局部特征组合的过度依赖。

所以更准确的说法不是“正则化就是让输出平滑”,而是:

正则化通过限制模型复杂度或提高鲁棒性,往往会诱导出更平滑、更稳定的输入输出关系。


2.5 小结:正则化的统一理解

损失函数与正则化可以统一理解为:

  • 损失函数决定模型要“拟合什么”;
  • 正则化决定模型要“偏好什么样的解”。

二者结合后,训练目标通常写成:

\[\mathcal{L}_{total}=\mathcal{L}_{data}+\lambda \Omega(\theta) \]

其中:

  • \(\mathcal{L}_{data}\) 衡量模型对数据的拟合程度;
  • \(\Omega(\theta)\) 表示对模型复杂度的约束或偏好;
  • \(\lambda\) 控制拟合数据与限制复杂度之间的权衡。

从这个角度看,机器学习训练不是单纯追求“把训练集做对”,而是在数据拟合模型泛化之间寻找平衡。


3. 总结

本文可以归结为两条主线:

第一条主线:损失函数的来源

损失函数并不是孤立定义的技巧,而通常来自概率建模与统计推断:

  • 高斯噪声对应 MSE;
  • 拉普拉斯噪声对应 MAE;
  • 伯努利分布对应二分类交叉熵;
  • softmax 类别分布对应多分类交叉熵。

从统一角度看,很多损失函数本质上都是负对数似然

第二条主线:正则化的本质

正则化的根本目的不是降低训练误差,而是控制模型复杂度、抑制过拟合、提升泛化能力。它通过对参数、结构、数据或优化路径施加约束,使模型偏向于更简单、更稳定、更鲁棒的解。

因此,机器学习中的训练目标,本质上是在回答两个问题:

  1. 模型应该怎样拟合数据?
  2. 模型应该偏向什么样的解?

前者由损失函数回答,后者由正则化回答。

http://www.jsqmd.com/news/473050/

相关文章:

  • 2026他达拉非品牌推荐:合规选购科普指南 - 企业推荐官【官方】
  • 零基础入门:用快马AI生成你的第一个Python服务器,轻松理解Web后端
  • 网络安全的本质:用数学建立秩序,用哲学理解混沌
  • 易全科技与东鹏特饮携手14年载,利用 “一物一码”技术为东鹏构建独特数字化能力 - 企业推荐官【官方】
  • 1007: 破译密码
  • Flutter 三方库 shouldly 的鸿蒙化适配指南 - 打造语义化极致、让单元测试像说人话一样的断言神器
  • uniapp u-popup遮罩层滚动穿透难题:CSS动态绑定与事件拦截的实战解析
  • macOS窗口切换效率解决方案:三指手势控制实战指南
  • 2026结婚钻戒怎么选?超越4C的终极避坑指南:个性化定制与高性价比全攻略 - 企业推荐官【官方】
  • 曲辕RPA官方使用帮助链接
  • 手把手教你用7款免费AI论文神器,5分钟出万字真实文献论文 - 麟书学长
  • SQL Server2022详细安装教程
  • 2026 男士控油洗面奶排行榜前 7 名推荐:清爽不踩坑 精准适配全肤质 - 企业推荐官【官方】
  • SAP CDS View 与SAP UI5 SADL解析机制揭秘
  • Flutter 三方库 eosdart 的鸿蒙化适配指南 - 在 OpenHarmony 上高效构建去中心化应用、详解加密签名与链上交互实战
  • 196.像2FSK这种调制方式可以用星座图表示吗?
  • WorkBuddy 安装与远程配置笔记
  • Flutter 三方库 tree_state_machine 的鸿蒙适配之路 - 构建具备分层感知力的高级 UI 状态治理体系、重塑复杂业务流的架构逻辑
  • Python基于flask的农产品物流运输系统
  • 2026 男士控油洗面奶第一名推荐:7 款实测精选,告别大油田 - 企业推荐官【官方】
  • 直接case when 聚合和先聚合后case when在duckdb150和sqlite3.52的性能比较
  • 打卡信奥刷题(2944)用C++实现信奥题 P5858 「SWTR-3」Golden Sword
  • Flutter 三方库 twitch_api 的鸿蒙适配指南 - 打造高性能流媒体互动体验、深度集成直播数据与实时信令
  • 工程设计类学习(DAY21):EMC检测全解析:从EMI到EMS
  • 【优化功率】基于遗传算法GA分析发电站的用电需求和发电量优化输电线路的功率损失附Matlab实现
  • 【麒麟系统】Kylin-Server-10-SP2-x86日常使用记录
  • C语言学习Class5
  • .NET命名之谜:它与C#纠缠20年的关系揭秘
  • 从六边形到 DDD:一条真正可落地的 Go 渐进演进路线
  • Java高频面试题(五):MySQL事务与索引优化全解析