商汤科技《AM-LFS AutoML for Loss Function Search》解读
回顾部分损失函数
一篇arXiv论文《AM-LFS: AutoML for Loss Function Search》,商汤科技揭示使用AutoML方法设计Loss函数,以一个新的视角对部分损失函数进行解释,同时用统一的表达公式对其进行了表达。基于统一的表达式构建搜索空间让已有的损失函数发挥更好的性能。
Softmax Loss
以上是标准Softmax的图解(它的特点就是优化类间的距离非常棒,但是优化类内距离时比较弱),以下是《AM-LFS AutoML for Loss Function Search》给出的Softmax表达式
N
N
N是训练集的长度,
f
j
f_{j}
fj表示第
j
j
j类(
j
j
j取值范围从
[
1
,
C
]
[1,C]
[1,C],
C
C
C是类别数)得分。
f
f
f也是全连接层的激活函数,
f
j
f_{j}
fj可表示为下面表达(2)(内积),其为权重值和输入值的乘积,其中
θ
θ
θ是表示向量
w
j
w_{j}
wj和
x
i
x_{i}
xi之间的角度。
则最终传统的Softmax Loss可以表达为:
Margin-based Softmax Loss:
Margin-based Softmax Loss损失函数通过在原Softmax损失函数中,插入一个
t
(
)
t()
t()函数,得到
一般的
t
(
)
t()
t()函数作者列句了常用的3种,
t
(
)
t()
t()函数的引入其实就是为了更好的扩大类间距离的同时,让类内样本更加的紧凑(分类效果更好)
通用变体Loss
经过以上的Softmax损失函数的分析,作者抽象出了通用的变体函数。
损失函数分析
类间距离函数
d
j
d_{j}
dj和输出结果概率值第
j
j
j个
f
j
f_{j}
fj关系如下给出,其中定义
∣
∣
W
j
∣
∣
=
∣
∣
x
i
∣
=
1
||W_{j}||=||x_{i}|=1
∣∣Wj∣∣=∣∣xi∣=1
因此可以对损失函数在
f
y
i
f_{y_{i}}
fyi和
f
j
f_{j}
fj的上的表现进行求导分析
为了对类间距离和类内距离的相关评价,文章引入了
r
a
t
i
o
ratio
ratio
最终得到一个简单的表达式,因此可以得出一个非常重要的结论:“定义的损失函数表达式衍生函数
t
’
(
f
y
i
)
t^’(f_{y_{i}})
t’(fyi)实际上是具有控制类内距离对于类间距离显著性的作用”
搜索空间
可以基于Softmax及其变种函数,作者提出下面通用表达公式
搜索空间通过
T
T
T和
t
t
t来进行定义,其又可以定义为
则可以定义参数集合
θ
θ
θ,
L
θ
L^{θ}
Lθ仅仅就由
θ
θ
θ定义,在整个训练阶段的超参数
θ
θ
θ是符合正态分布的。
则我们的最终的搜索空间有:
优化
AM-LFS中采用双层优化框架:
inner level:训练模型权值
w
w
w让损失函数最低
outer level:寻找到一个好的损失函数超参数
θ
θ
θ,这个
θ
θ
θ能最大化奖励值
R
(
θ
)
R(θ)
R(θ)
算法AM-LFS
在这里插入图片描述在模型进行训练之前,对超参数进行初始化,得到一个集合
B
=
[
θ
1
,
θ
2
.
.
.
θ
B
]
B=[θ_{1},θ_{2}...θ_{B}]
B=[θ1,θ2...θB]。然后针对每一个epoch在训练过程中带入上面的超参数,经过
l
e
n
(
B
)
len(B)
len(B)个epoch后,所有的
B
B
B超参数都训练完成,并得到每个epoch下的
R
(
θ
1
)
,
.
.
.
R
(
θ
B
)
R(θ_{1}),...R(θ_{B})
R(θ1),...R(θB)从中选择得分最高的
R
(
θ
j
)
R(θ_{j})
R(θj)。最后进行
u
u
u和
M
M
M的更新。
【读这篇文章开荒了些知识,中间还有很多不是很明白的地方,希望以后再来进行补充,有什么需要更正的地方欢迎大家留言交流!】
【参考文献】
【1】【技术综述】一文道尽softmax loss及其变种
【2】论文地址:https://arxiv.org/pdf/1905.07375v1.pdf