深度学习——第2章习题2-1
《神经网络与深度学习》——邱锡鹏
2-1 分析为什么平方损失函数不适用于分类问题。
平方损失函数(Quadratic Loss Function)经常用在预测标签y为实数值的任务中,定义为
L ( y , f ( x ; θ ) ) = 1 2 ( y − f ( x ; θ ) ) 2 \mathcal{L}\left(y,f(x;\theta)\right)=\frac{1}{2}\left(y-f(x;\theta)\right)^2 L(y,f(x;θ))=21(y−f(x;θ))2
平方损失函数一般不适用于分类问题。
为什么呢?
在issue里有人这样回答:
先来弄清楚回归问题和分类问题的区别:
回归问题:简单来说,就是预测一个连续的数值。比如,预测明天的气温、房价、股票价格等等。这里的关键在于,预测的结果是一个具体的数字,范围可以非常广泛。
分类问题:指的是将数据分到离散的类别中。比如,判断一封邮件是“垃圾邮件”还是“正常邮件”;识别一张图片是“猫”还是“狗”;或者诊断一个病人是“健康”还是“生病”。这里的关键在于,结果是有限的几个类别之一。
分类问题的核心目标是估计样本属于每个类别的概率,并最大化正确类别的概率(或对数似然)。
而平方损失函数的目标是最小化预测值(连续数值)与目标值(0或1)之间的数值差异。它没有直接建模概率或最大化似然的机制。
交叉熵损失函数直接来源于最大似然估计原理。它衡量的是预测概率分布于真实分布(one-hot)之间的差异,完美契合分类问题的概率建模目标。
(额。。。可能看不太懂,下面通俗一点讲)
分类问题要的是“选对”,而平方损失关心的是“猜得差不多”。
也就是说分类问题就像考试在做选择题(A/B/C/D),目标是选对正确答案。平方损失函数像是一个奇怪的考官:他不在乎你选哪个选项,他让你给每个选项打分(比如A打90分,B打5分,C打3分,D打2分)。然后他只看正确答案的分数离100分差多少,差的平方就是扣分。学生把正确答案从60分提高到70分,考官觉得“有进步,但不用非得追求90分”。交叉熵损失函数才是一个正常的分类考官:他要求你直接选一个答案(或者说每个答案的概率)。他只看你分配给正确答案的概率是多少。如果你很确定正确答案(概率接近100%),扣分极少;如果你不太确定(比如60%),扣分较多;如果你完全选错(概率接近0%),扣分极其严厉。这逼着学生:
- 在确定时大胆选正确答案(输出接近1)。
- 在不确定时,也会倾向于提高正确答案的概率(即使从60%到70%,考官给的“奖励”/减少的扣分也很大)。
- 绝不会为了“安全”而把答案说得模棱两可。
还有梯度问题,在优化过程中,模型需要根据损失函数的梯度来调整参数。对于分类问题,特别是多分类问题,平方损失函数在预测值接近实际值时梯度会变得非常小,这意味着模型的调整速度会变得很慢,收敛时间会更长。另外,在分类问题中,我们希望模型能给出一个概率值,表示某个样本属于某个类别的可能性。**平方损失函数只是简单地计算预测值和实际值之间的差距,没有考虑到概率的含义。**对数损失函数则能更好地解释模型的预测概率,帮助我们更准确地评估模型的性能。
平方损失函数一般用于解决什么问题呢?
平方损失函数的核心思想是:预测值离真实值越远,惩罚越重(按距离的平方增长)。很适合解决回归问题。
有很多关于MSE与CE的面试题(从xhs上找了两题):
1.MSE Loss 与 CE Loss 的误差分别满足什么分布?
MSE即均方误差,常用于回归任务(如预测连续值),其误差满足正态分布(高斯分布)。
原理:假设预测值与真实值的误差以真实值为中心,呈对称“钟形”分布(多数误差集中在0附近,离0越远概率越低)。
数学逻辑:当误差服从正态分布时,通过最大似然估计推导出的损失函数即为MSE,因此MSE本质是高斯分布假设下的最优选择。
CE即交叉熵,常用于分类任务(如二分类、多分类),其误差对应伯努利分布(二分类)或多项式分布(多分类)。
原理:衡量预测概率分布与真实标签分布的差异。以二分类为例,真实标签0/1服从伯努利分布(类似抛硬币的概率模型),CE损失通过最大化“预测概率符合真实分布”的似然性来优化。
数学逻辑:若样本服从伯努利/多项式分布,CE损失等价于最大化似然函数,误差本质是预测概率偏离真实分布的程度。
伯努利分布是什么?
伯努利分布(bernouli distribution),又叫做0-1分布,是一种离散型概率分布,指一次随机试验,结果只有两种。也就是一个随机变量的取值只有0和1.最简单的例子就是跑一次硬币,预测结果为正还是反。记成功概率为 p ( 0 ≤ p ≤ 1 ) ,则失败概率为 p(0\leq p \leq 1),则失败概率为 p(0≤p≤1),则失败概率为 q = 1 − p q=1-p q=1−p,则:
其概率质量函数为:
P ( x ) = p x ( 1 − p ) 1 − x = { p i f x = 1 q i f x = 0 P(x)=p^x(1-p)^{1-x}= \begin{cases} p & if\ x=1 \\ q & if\ x=0 \end{cases} P(x)=px(1−p)1−x={pqif x=1if x=0
其期望值为:
E ( x ) = ∑ x P ( x ) = 0 × q + 1 × p = p E(x)=\sum xP(x) = 0 \times q + 1 \times p=p E(x)=∑xP(x)=0×q+1×p=p
其方差为:
V a r ( x ) = E [ ( x − E ( x ) ) 2 ] = ∑ ( x − p ) 2 P ( x ) − p q Var(x)=E[(x-E(x))^2] = \sum (x-p)^2P(x)-pq Var(x)=E[(x−E(x))2]=∑(x−p)2P(x)−pq
2.为什么分类都用CE损失?回归用MSE损失?
先讲分类任务选择CE损失的核心原因。
- 与分类问题的概率本质匹配
分类任务的目标是预测样本属于某一类的概率(如图片是“猫”的概率为90%),而CE损失直接衡量预测概率分布与真实标签分布的差异(真实标签是one-hot向量,属于确定概率分布)。
例如:二分类中真实标签为1,若模型预测概率为0.1,CE损失会通过对数运算放大这种偏差,促使模型提高正确类别的概率;而MSE损失此时仅计算“0.1与1的差值平方”,对概率的惩罚不够直接。 - 避免MSE在分类中的梯度缺陷
若分类模型使用 sigmoid/softmax 激活函数,MSE损失会导致梯度消失问题:当预测概率接近0或1时,梯度趋近于0,模型难以优化。而CE损失与 sigmoid/softmax 组合时,梯度公式更简洁(如二分类中梯度为预测概率与真实标签的差值),训练更稳定。 - 符合分类误差的概率分布假设
分类问题的误差本质是“预测概率偏离真实分布”对应伯努利/多项式分布(如二分类类似抛硬币的概率模型)。CE损失基于最大似然估计,假设样本服从这些分布,因此更贴合分类任务的概率逻辑。
再看看回归问题选择MSE损失的核心原因。
与回归问题的连续值特性匹配
回归任务需要预测连续值(如房价、温度),目标是让预测值尽可能接近真实值,而MSE直接度量预测值与真实值的距离平方,误差越大惩罚越重,符合“最小化绝对偏差”的直观需求。例如:真实值为10,预测值为8和5,MSE对5的惩罚(25)远大于对8的惩罚(4),能更强烈地推动模型修正大误差。
符合回归误差的正态分布假设
回归问题中,误差(真实值-预测值)通常被假设为正态分布(如测量误差、自然现象的波动符合高斯分布)。MSE损失等价于在正态分布假设下的最大似然估计,即当误差服从高斯分布时,最小化MSE等价于最大化数据出现的概率,理论上最优。更易优化
MSE损失函数是凸函数,梯度为“预测值-真实值”,计算简单且优化过程平滑,不易陷入局部最小值(相比某些非凸损失函数),适合回归任务的数值优化。