分类问题常用CE而不是MSE

·1454·4 分钟·
AI摘要: 本文分析了机器学习中分类任务常用MSE而非CE的原因,并从分布角度、优化角度进行了详细讨论。文章指出,MSE假设数据服从高斯分布,而现实中长尾分布也很常见,直接使用MSE可能导致效果不佳。同时,文中还提到在优化的角度上,如果分类问题使用MSE作为损失函数,是非凸优化,难以求出最优解。

机器学习通常分为回归和分类两大类,前者常用均方差(MSE),后者常用交叉熵(CE)。前人这么做,一定是有他的道理,我们这里从几个角度分析一下。

分布角度

MSE作为损失函数其实是有一个先验假设:误差服从标准高斯分布。这里简单推导下MSE损失函数的由来:

无非就是三步:假设分布、极大似然估计、推导出损失函数。

假设预测值和实际值之间的误差ϵ\epsilon服从标准高斯分布, 即ϵN(0,1)\epsilon \sim N(0, 1) , 又因为ϵ=f(X)Y\epsilon = f(X) - Y , 所以YN(f(X),1)Y \sim N(f(X), 1)

YY的概率密度函数为p(Y)=12πexp[(f(X)Y)22]p(Y) = \frac{1}{\sqrt{2 \pi }} \exp [- \frac{(f(X) - Y)^2}{2} ]

再用极大似然估计法:logL=i=1logp(Yi)=n2log(2π)12i=1[Yif(Xi)]2\log L = \sum_{i = 1} \log p(Y_i) = -\frac{n}{2} \log(2\pi) - \frac{1}{2} \sum_{i = 1} [Y_i - f(X_i)]^2

这个时候就推导出了MSE损失函数

这里稍微复习下

  1. 如果是Lasso损失函数,就是等价于参数服从拉普拉斯分布的最大后验估计;
  1. 如果是岭回归的损失函数,就是等价于参数服从高斯分布的最大后验估计;

CE是假设数据服从伯努利分布/多项式分布

伯努利分布即做N次试验,每次试验成功概率为pp, 失败概率为1p1- p , 那么成功次数的期望为NpN \cdot p, 方差为 Np(1p)N \cdot p \cdot (1-p) , 概率密度函数为f(x)=px(1p)1xf(x) = p^x (1 - p)^{1 -x}

那么在二分类任务当中,给定数据集DD, 那么对于每个样本DiD_i, 其概率密度函数都是px(1p)1xp^x(1 - p)^{1 -x}, 我们依然是用既然似然估计,就是可以得到logL=i=1log[pxi(1p)1xi]=i=1xilogp+(1xi)log(1p)\log L = \sum_{i = 1} \log[p^{x_i} ( 1- p)^{1 - x_i}] = \sum_{i = 1} x_i \log p + (1 - x_i) \log(1 - p)

这个时候就推导除了CE损失函数在二分类的情况。

所以,从先验的角度上,分类任务中,假设数据服从伯努利分布是更加符合实际的,因此分类任务中常常使用CE, 而回归任务中常常使用MSE

这里再讨论一下,mse是假设数据分布为高斯分布。但是现实中,长尾分布也非常常见,如果直接用MSE就效果不好。所以有时候做数据EDA的时候,发现数据不符合高斯分布才需要修正,比如采用对数变换、boxcox变换。

优化角度

在优化的角度上,如果分类问题使用MSE作为损失函数,这个时候是非凸优化,难以求出最优解。

L=1Ni=1[f(xi)yi]2=1Ni=1[yiσ(z)]=1Ni=1[yi11+exp(wx)] L = \frac{1}{N} \sum_{i = 1}[f(x_i) - y_i]^2\\ = \frac{1}{N} \sum{i = 1}[y_i - \sigma(z)] \\ = \frac{1}{N} \sum{i = 1}[y_i - \frac{1}{1 + \exp(-wx)}]

这是一个非凸函数。

Kaggle学习赛初探