原文:Label Smoothing - 2019.08.10

作者:Lei Mao

机器学习和深度学习中,往往采用很多正则化技术,比如L1,L2, dropout 等,来避免模型过拟合.

在分类任务中,模型有时候会对训练样本过度自信的预测,这对于模型的泛化能力是不好的.

这里,介绍类别标签平滑作为分类问题的正则化技术,避免模型对训练样本过度自信的预测.

1. 分类交叉熵损失函数

对于 K 类的分类问题,{1,2,...,K}, 例如,对于样本 i, 训练数据集中的 (xi,yi),则可以得到其关于类别标签的 groundtruth 分布 p(y|xi),且 y=1Kp(y|xi)=1.

假设参数为 θ 的模型,其预测的类别分布为 qθ(y|xi),且 y=1Kqθ(y|xi)=1.

正如在 Cross Entropy, KL Divergence, and Maximum Likelihood Estimation 博文里所描述的,这里的交叉熵是:

Hi(p,qθ)=y=1Kp(y|xi)logqθ(y|xi)

假设训练数据集中共有 n 个样本,则损失函数为:

L=i=1nHi(p,qθ)

L=i=1ny=1Kp(y|xi)logqθ(y|xi)

2. One-Hot 类别编码

一般情况下,p(y|xi) 是 one-hot 编码向量,有:

p(y|xi)={1if y=yi0otherwise

基于此,损失函数可以进一步简约为:

L=i=1ny=1Kp(y|xi)logqθ(y|xi)

L=i=1np(yi|xi)logqθ(yi|xi)

最小化该损失函数,等价于对训练数据集的最大化似然估计.(证明可参考 Cross Entropy, KL Divergence, and Maximum Likelihood Estimation)

在损失函数优化过程中,如果训练数据集中不存在任何冲突的类别标签,是有可能将 L 几乎最小化到值为0 的. 冲突的类别标签,是指,数据集中存在两个样本能够提取相同的特征,但其 groundtruth 类别标签不同.

由于 qθ(yi|xi) 往往是采用 softmax 函数计算得到的:

qθ(yi|xi)=exp(zyi)j=1Kexp(zj)

采用 One-hot 类别标签编码的结果是,exp(zyi) 的值非常大,其它 exp(zj),jyi 的值非常小.给定一个无冲突(non-conflicting) 的数据集,模型会将每个训练样本以置信度几乎为 1 的正确预测. 这显然是过拟合的一个信号,过拟合的模型,其泛化能力不够好.

那么如何确认在模型训练过程中,不是朝着对训练数据中的类别标签过度自信的方向呢? 采用无冲突的训练数据集,以及 one-hot 类别编码,过拟合好像是不可避免的.

对此,引入了类别平滑技术作为正则化.

3.标签平滑

标签平滑是引入噪声分布 u(y|x).

对于数据 xi,yi,其 groundtruth 标签是:

p(y|xi)=(1ϵ)p(y|xi)+ϵu(y|xi)

p(y|xi)={1ϵ+ϵu(y|xi)if y=yiϵu(y|xi)otherwise

其中,ϵ[0,1] 为权重因子,y=1Kp(y|xi)=1.

对应的,损失函数为:

L=i=1ny=1Kp(y|xi)logqθ(y|xi)

L=i=1ny=1K[(1ϵ)p(y|xi)+ϵu(y|xi)]logqθ(y|xi)

进一步简化损失函数:

L=i=1n{(1ϵ)[y=1Kp(y|xi)logqθ(y|xi)]+ϵ[y=1Ku(y|xi)logqθ(y|xi)]}

L=i=1n[(1ϵ)Hi(p,qθ)+ϵHi(u,qθ)]

可以看出,对于训练数据集中的每个样本,损失函数的分布是 one-hot 编码分布和预测的分布 Hi(p,qθ) 间的交叉熵,与噪声分布和预测的分布 Hi(u,qθ) 间的交叉熵,的混合体.

在训练过程中,如过模型过度自信的学习分布,则 Hi(p,qθ) 将趋向于 0;但 Hi(u,qθ) 将会明显增加.

因此,采用标签平滑,可以真正引入了正则子 Hi(u,qθ),以避免模型过度自信的预测.

实际上,u(y|x) 是服从均匀分布的,其不依赖于数据,也就是:

u=1K

4. 总结

标签平滑是分类问题中的一种正则化技术,其避免模型在训练过程中过度自信的预测类别,提升泛化能力.

5. 相关材料

[1] - Rethinking the Inception Architecture for Computer Vision

[2] - Pytorch - 标签平滑labelsmoothing实现 - AIUAI

[3] - InceptionV3 - 类别标签平滑正则化LSR - AIUAI

[4] - [基于 Keras 和 Tensorflow 的标签平滑实现[译] - AIUAI](https://www.aiuai.cn/aifarm1347.html)

Last modification:March 2nd, 2020 at 10:20 pm