【论文笔记系列】AM-LFS:AutoML for Loss Function Search
目前AutoML技术非常火,尤其是NAS领域,之前有一篇文章已经对现有的AutoML技术做了总结,可阅读【AutoML:Survey of the State-of-the-Art】。 论文:AM-LFS:AutoML for Loss Function Search
不过这篇文章将介绍一下如何使用AutoML技术来搜索损失函数。一般来说,损失函数都是需要我们手动设计的,以分类任务而言,我们通常会使用交叉熵。碰到数据集imbalanced的情况,可能会给每个类别加上一个权重。在RetinaNet论文里为目标检测任务提出了FocalLoss。上述都是对交叉熵函数根据特定任务做了修改,可是这样的修改通常需要我们能够洞察到问题的本质,换句话说这需要专业的知识。那我们这种蔡文姬还有设计loss函数的机会吗?商汤科技在这方面做了探索,下面将介绍论论文细节。
1. 论文贡献
论文有两大贡献:
- 设计了损失函数搜索空间,该搜索空间能够覆盖常用的流行的损失函数设计,其采样的候选损失函数可以调整不同难度级别样本的梯度,并在训练过程中平衡类内距离和类间距离的重要性。
- 提出了一个bilevel的优化框架:本文使用强化学习来优化损失函数,其中内层优化是最小化网络参数的损失函数,外层优化是最大化reward。
2. 回顾之前的损失函数
- Softmax Loss
- Focal Loss
除了在概率上做变化外,Focal Loss对softmax loss做了如下变化:
3. Loss函数分析
3.1 Focal Loss
3.2 margin-based softmax loss
其中
同理相对于原始的softmax loss(公式1)的重要性比率是:
进一步可以求得:
4. 搜索空间
基于第3节的分析,我们可以知道可以在公式(3)作如下两处的变换:
5. 优化
双层(Bilevel)优化定义如下:
6. 实验结果
原论文给出了在多个不同类型的数据集的结果:
- Classification: Cifar10
- Face Recognition:CASIA-Webface用作训练集,MegaFace用做测试集
- Person ReID:Market-1501 and DukeMTMC-reID
7. 讨论
本小节是我自己在读完这篇论文后的一些存疑或者觉得需要讨论的点:
- 文中的损失函数搜索只是局限在了对softmax loss函数的变体搜索,而且对于多loss组成的任务,论文仅仅对softmax loss部分做了替换,其余部分保持不变。
- 由算法流程图可以看到,每个epoch都需要基于多个损失函数来训练模型,然后再在验证集上得到reward,这需要大量的计算资源,论文中说了,他们使用了64个GPU,这个emm。。。大力出奇迹,赞!
本篇文章是基于自己的理解写的,所以可能会有不正确的地方,欢迎指正!