从概率视角理解损失函数
本文主要从概率的角度理解\(L_1,L_2,NLL,CE,BCE,KL\)这些损失函数
似然性\(likelihood\)表示是给定观测结果概集合\(X\)概率密度函数的参数为\(\theta\)的可能性大小。最大似然估计(MLE)已知由\(\theta\)参数化的概率分布\(p(x;\theta)\),给定由\(n\)个独立的随机变量组成的观测数据集合\(X=\{X_1,X_2,\dots,X_n\}\),从所有的参数\(\theta_1,\theta_2,…\)中找出能最大似然性生成观测数据集合的参数\(\theta^*\)作为估计结果。
在回归问题中,参数化模型的预测值=真实值+噪声\(\varepsilon\):\(y=f(x;\theta)+\varepsilon\)。首先假设噪声服从零均值方差为常数但未知的正态分布\(\varepsilon\sim N(0,\sigma^2)\),则给定\(x\)时\(y\)服从正态分布,概率密度函数亦可写出。
已知的独立同分布样本集合\(D=\{(x_1,y_1),(x_2,y_2),…,(x_n,y_n)\}\),对\(Y\mid X=\{y_1\mid x_1,y_2\mid x_2,…,y_n\mid x_n\}\)进行极大似然估计:
假设噪声服从零均值拉普拉斯分布\(\varepsilon\sim L(0,\sigma^2)\),同理\(y\mid x\sim N(f(x;\theta),b)\)
拉普拉斯分布\(L(\mu,b)\)中\(\mu\)是位置参数,\(b\)是尺度参数,概率密度函数
\[f(x)=\frac{1}{2b}e^{-\frac{\vert x-\mu\vert}{b}}\\ \]零均值拉普拉斯分布正半部分尺度为\(\frac{1}{b}\)的指数分布的一半。\(L_1\)范数缺点原点处不连续优化计算时存在困难,不过\(L_1\)范数没有\(L_2\)范数对异常值敏感。
结论:
-
噪声服从Gaussian分布,残差平方和最小等价于极大似然估计最大,对应
torch.nn.MSELoss()
\[\max MLE\Leftrightarrow \min MSE\\ \] -
噪声服从Laplace分布,对应
torch.nn.L1Loss()
\[\max MLE\Leftrightarrow \min L_1loss\\ \]
在分类问题(以二分类为例)中,使用用\(CE\)而不是\(MSE\)作为损失函数:
-
MSE默认噪声高斯先验的前提假设,而二分类数据集服从伯努利分布
-
以\(sigmoid\)函数为例说明梯度消失问题
\[\begin{aligned} loss&=\sum_{i=1}^{N}\left(y_{i}-\sigma\left(w^{T} x_{i}\right)\right)^{2}=\sum_{i=1}^{N}\left(y_{i}-\frac{1}{1+\exp \left(-w^{T} x_{i}\right)}\right)^{2}\\ \frac{\partial l o s s}{\partial w}&= \sum_{i=1}^{N}\left[-2\left(y_{i}-\sigma\left(w^{T} x_{i}\right)\right) \sigma\left(w^{T} x_{i}\right)\left(1-\sigma\left(w^{T} x_{i}\right)\right) x_{i}\right] \end{aligned}\\ \]因为 \(\sigma\left(w^{T} x_{i}\right)\) 的优化目标是接近 \(y_{i}\),所以 \(\sigma\left(w^{T} x_{i}\right)\) 和 \(\left(1-\sigma\left(w^{T} x_{i}\right)\right)\) 其一必然越来越接近,即出现梯度消失\(loss\)难以继续下降。
-
由于非线性激活函数\(\sigma,softmax\)的存在,\(MSE\)损失是非凸(non-convex)的,存在很多局部极小值点,不能保证损失函数全局最小化

因此引入了交叉熵作损失函数,以\(sigmoid\)函数为例说明梯度消失问题得到缓解,亦可证明\(CE\)是凸函数容易梯度下降收敛
以二分类逻辑回归模型为例说明最大化对数似然估计和最小化交叉熵损失等价。逻辑回归模型:
二分类数据集\(D=\{X,Y\}\)每个样本独立且均服从伯努利分布\(Y\mid X\sim B(p)\),概率质量函数如下。【注意随机变量\(X\)服从伯努利分布即0-1分布\(B(1,p)\),\(n\)重伯努利试验随机变量\(X_1,X_2,\dots,X_n\)服从二项分布\(B(n,p)\)】
根据最大似然估计的想法,对\(Y\mid X=\{y_1\mid x_1,y_2\mid x_2,…,y_n\mid x_n\}\)进行极大似然估计:
结论:
一般地,在\(d\)分类问题中,对于每一个样本\(s_i=(x_i,y_i)\),模型预测概率\(q_i=f(x_i;\theta)\)是长度为\(d\)的向量,标签\(p_i\)也是长度为\(d\)的向量
- \(p_i\)若是独热编码,\(j\)表示真实类别,\(loss(s_i)\)可以理解为\(-\log q_{ij}\),即\(NLL\)(Negative Log Likelihood Loss)负对数似然损失,对应
torch.nn.NLLLoss()
- \(p_i\)若使用标签平滑则回归了交叉熵\(CE\)(Cross Entropy Loss)最一般形式,即向量\(-p_i\)与向量\(\log q_i\)的点积:\(loss(s_i)=-\sum_{j=1}^d p_{ij}\log q_{ij}\),对应
torch.nn.CrossEntropyLoss()
;特别的,当\(d=2\),就是二分类的\(CE\),即\(BCE\)(Binary Cross Entropy Loss),对应torch.nn.BCELoss()
另外值得一提的是:
- \(q_i\)由网络最后的最后全连接层概率化得到,二分类可以选取\(sigmoid\)函数多分类可以选取\(softmax\)函数,torch中API
tf.nn.log_softmax
用以结合\(softmax+CE\),torch.nn.BCEWithLogitsLoss
用以结合\(sigmoid+BCE\)。 - 还有一个常用的损失函数是
torch.nn.KLDivLoss()
,用以衡量两个概率分布之间的距离
torch内部实现细节详见PyTorch中NLLLoss|CrossEntropy|BCELoss记录
附:通俗理解Entropy
-
自信息/信息量:
出发点是量化单个事件的信息,一个不太可能发生的事件发生了,要比一个非常可能发生的事件提供更多的信息。为消除不确定性,需要付出一些努力。
\[I=\log_n \frac{1}{p}\\ \]其中\(n\)表示事件可能出现的结果数,\(p\)表示事件发生的概率
-
信息熵
自信息只能衡量单个事件的信息量,而整个系统呈现的是随机变量\(X\)各种取值情况服从一个分布\(X\sim P\),信息熵代表随机变量或整个系统的信息量。
信息熵代表的是随机变量或整个系统的不确定性,随机变量或系统的不确定性就越大,熵越大;对系统了解得越多,熵越小。而我们要消除不确定性,所要付出的最小努力(猜题次数、编码长度等)的大小就是信息熵。以
2
为底的对数可看作是编码信息所需要的最少二进制位个数bits的期望。\[H(X)=E_P\{I_P\}=\sum_{i=1}^n p_ilog\frac{1}{p_i}\\ \] -
交叉熵
交叉熵衡量在给定的真实分布P下,使用非真实分布Q所指定的策略消除系统的不确定性所需要付出的努力的大小。
\[CE=E_P\{I_Q\}=\sum_{i=1}^n p(x_i)log\frac{1}{q(x_i)}\\ \] -
相对熵
相对熵,Kullback-Leibler Divergence,相对熵 = 交叉熵 - 信息熵,量化两种策略/概率分布\(P\)和\(Q\)之间差异的方式,度量使用近似分布q来近似原始分布p时所损失的信息量。
KL散度是用来度量使用基于Q的编码来编码来自P的样本平均所需的额外位元数,即用非真实分布\(q(x)\)得到的平均码长比真实分布\(p(x)\)得到的平均码长多出的比特数就是相对熵。
\[\begin{aligned} KL(p||q)=&H(p,q)-H(p)\\ =&E_P\{I_P-I_Q\}\\ =&\sum_{i=1}^n p(x_i)log\frac{p(x_i)}{q(x_i)} \end{aligned}\\ \]
[注]
- KL散度不具备对称性,用p近似q和用q近似p,二者所损失的信息并不同。
- KL散度不满足三角不等式: \(KL(A,B)> KL(A,C)+KL(C,B)\)
- 在KL值相同的情况下,更倾向于使用更常见的、更简单的概率分布模型。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本