深度学习中最常见的问题就是模型的过拟合,我们通过正则化的技术来减少模型过拟合的情况;常用的正则化技术有:dropout,权重衰减,早停机制;除此之外,标签平滑也是一种正则化技术,因为它限制了softmax的最大概率,使得最大概率和其他概率相差不会特别大。
举个栗子:
标签进入模型中一般都会转化为one-hot编码,假设有个五分类的任务,某个标签会变成
[
0
,
0
,
0
,
1
,
0
]
[0,0,0,1,0]
[0,0,0,1,0],前向传播经过softmax时,五个类别的概率是
[
0.05
,
0.15
,
0.1
,
0.65
,
0.05
]
[0.05,0.15,0.1,0.65,0.05]
[0.05,0.15,0.1,0.65,0.05],此时我们通过交叉熵来计算损失:
C
E
=
−
∑
i
=
1
n
y
i
l
o
g
p
i
CE=-\sum_{i=1}^n y_ilogp_i
CE=−∑i=1nyilogpi,该样本的损失是
−
l
o
g
0.65
-log0.65
−log0.65,我们发现在计算损失时只考虑了最大输出概率的损失,这就意味模型只会优化正确标签的损失,而不关注错误标签的损失,那模型就不会去关注如何降低错误标签的预测概率,这将会导致模型在训练集上拟合的好,在测试集上拟合很糟糕,泛化能力差。
经过标签平滑后,我们设置平滑因子为
α
=
0.1
α=0.1
α=0.1:
y
1
=
(
1
−
α
)
∗
[
0
,
0
,
0
,
1
,
0
]
=
[
0
,
0
,
0
,
0.9
,
0
]
y_1=(1-α)*[0,0,0,1,0] =[0,0,0,0.9,0]
y1=(1−α)∗[0,0,0,1,0]=[0,0,0,0.9,0]
y
2
=
α
∗
[
1
,
1
,
1
,
1
,
1
]
=
[
0.1
,
0.1
,
0.1
,
0.1
,
0.1
]
y_2=α*[1,1,1,1,1] =[0.1,0.1,0.1,0.1,0.1]
y2=α∗[1,1,1,1,1]=[0.1,0.1,0.1,0.1,0.1]
o
n
e
−
h
o
t
标
签
将
会
变
为
[
0.1
,
0.1
,
0.1
,
1
,
0.1
]
one-hot标签将会变为[0.1,0.1,0.1,1,0.1]
one−hot标签将会变为[0.1,0.1,0.1,1,0.1]
此时再计算损失为
(
0.1
∗
l
o
g
p
1
+
0.1
∗
l
o
g
p
2
+
0.1
∗
l
o
g
p
3
+
1
∗
l
o
g
p
4
+
0.1
∗
l
o
g
p
5
)
(0.1*logp_1+0.1*logp_2+0.1*logp_3+1*logp_4+0.1*logp_5)
(0.1∗logp1+0.1∗logp2+0.1∗logp3+1∗logp4+0.1∗logp5)
损失明显变大,这种情况模型不光会关注去减小正确标签的损失,也会关注去减小错误标签的损失。
标签平滑 label smoothing
最新推荐文章于 2024-04-18 21:24:24 发布