从最优化的角度看待 Softmax 损失函数

栏目: 数据库 · 发布时间: 5年前

内容简介:同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流

加入极市 专业CV交流群,与 6000+来自腾讯,华为,百度,北大,清华,中科院 等名企名校视觉开发者互动交流!更有机会与 李开复老师 等大牛群内互动!

同时提供每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流 点击文末“ 阅读原文 ”立刻申请入群~

者 | 王峰

来源 | https://zhuanlan.zhihu.com/p/45014864

本文经作者授权转载,二次转载请联系原作者。

Softmax交叉熵损失函数应该是目前最常用的分类损失函数了,在大部分文章中,Softmax交叉熵损失函数都是从概率角度来解释的,本周二极市就推送了一篇 Softmax相关文章: 一文道尽softmax loss及其变种

本文将尝试从最优化的角度来推导出Softmax交叉熵损失函数,希望能够启发出更多的研究思路。

一般而言,最优化的问题通常需要构造一个目标函数,然后寻找能够使目标函数取得最大/最小值的方法。目标函数往往难以优化,所以有了各种relax、smooth的方法,例如使用L1范数取代L0范数、使用sigmoid取代阶跃函数等等。

那么我们就要思考一个问题:使用神经网络进行多分类(假设为 C  类)时的目标函数是什么?神经网络的作用是学习一个非线性函数 f(x)  ,将输入转换成我们希望的输出。这里我们不考虑网络结构,只考虑分类器(也就是损失函数)的话,最简单的方法莫过于直接输出一维的类别序号 从最优化的角度看待 Softmax 损失函数   。而这个方法的缺点显而易见:我们事先并不知道这些类别之间的关系,而这样做默认了相近的整数的类是相似的,为什么第2类的左右分别是第1类和第3类,也许第2类跟第5类更为接近呢?

为了解决这个问题,可以将各个类别的输出独立开来,不再只输出1个数而是输出 C 个分数(某些文章中叫作logit[1],但我感觉这个词用得没什么道理,参见评论),每个类别占据一个维度,这样就没有谁与谁更近的问题了。那么如果让一个样本的真值标签(ground-truth label)所对应的分数比其他分数更大,就可以通过比较 C 个分数的大小来判断样本的类别了。这里沿用我的论文[2]使用的名词,称真值标签对应的类别分数为目标分数(target score),其他的叫非目标分数(non-target score)。

这样我们就得到了一个优化目标:

输出C个分数,使目标分数比非目标分数更大。

换成数学描述,设  从最优化的角度看待 Softmax 损失函数 为真值标签的序号,那优化目标即为:

从最优化的角度看待 Softmax 损失函数

得到了目标函数之后,就要考虑优化问题了。我们可以给 一个负的梯度,给其他所有 一个正的梯度,经过梯度下降法,即可使  升高而  下降。为了控制整个神经网络的幅度,不可以让   无限地上升或下降,所以我们利用max函数,让在   刚刚超过 时就停止上升:

从最优化的角度看待 Softmax 损失函数

然而这样做往往会使模型的泛化性能比较差,我们在训练集上才刚刚让  超过  ,那测试集很可能就不会超过。借鉴svm里间隔的概念,我们添加一个参数,让  比  大过一定的数值才停止:

从最优化的角度看待 Softmax 损失函数

这样我们就推导出了hinge loss...唔,好像跑题了,我们本来不是要说Softmax的么...不过既然跑题了就多说点,为什么hinge loss在SVM时代大放异彩,但在神经网络时代就不好用了呢?主要就是因为svm时代我们用的是二分类,通过使用一些小技巧比如1 vs 1、1 vs n等方式来做多分类问题。而如论文[3]这样直接把hinge loss应用在多分类上的话,当类别数  特别大时,会有大量的非目标分数得到优化,这样每次优化时的梯度幅度不等且非常巨大,极易梯度爆炸。

其实要解决这个梯度爆炸的问题也不难,我们把优化目标换一种说法:

输出C个分数,使目标分数比最大的非目标分数更大。

跟之前相比,多了一个限制词“最大的”,但其实我们的目标并没有改变,“目标分数比最大的非目标分数更大”实际上等价于“目标分数比所有非目标分数更大”。这样我们的损失函数就变成了:

从最优化的角度看待 Softmax 损失函数

在优化这个损失函数时,每次最多只会有一个+1的梯度和一个-1的梯度进入网络,梯度幅度得到了限制。但这样修改每次优化的分数过少,会使得网络收敛极其缓慢,这时就又要祭出smooth大法了。那么max函数的smooth版是什么?有同学会脱口而出:softmax!恭喜你答错了...

这里出现了一个经典的歧义,softmax实际上并不是max函数的smooth版,而是one-hot向量(最大值为1,其他为0)的smooth版。其实从输出上来看也很明显,softmax的输出是个向量,而max函数的输出是一个数值,不可能直接用softmax来取代max。max函数真正的smooth版本是LogSumExp函数( LogSumExp:https://en.wikipedia.org/wiki/LogSumExp ),对此感兴趣的读者还可以看看这个博客: 寻求一个光滑的最大值函数(https://kexue.fm/archives/3290)

使用LogSumExp函数取代max函数:

从最优化的角度看待 Softmax 损失函数

LogSumExp函数的导数恰好为softmax函数:

从最优化的角度看待 Softmax 损失函数

经过这一变换,给予非目标分数的1的梯度将会通过LogSumExp函数传播给所有的非目标分数,各个非目标分数得到的梯度是通过softmax函数进行分配的,较大的非目标分数会得到更大的梯度使其更快地下降。这些非目标分数的梯度总和为1,目标分数得到的梯度为-1,总和为0,绝对值和为2,这样我们就有效地限制住了梯度的总幅度。

LogSumExp函数值是大于等于max函数值的,而且等于取到的条件也是非常苛刻的(具体情况还是得看我的博士论文,这里公式已经很多了,再写就没法看了),所以使用LogSumExp函数相当于变相地加了一定的 m 。但这往往还是不够的,我们可以选择跟hinge loss一样添加一个  ,那样效果应该也会不错,不过softmax交叉熵损失走的是另一条路:继续smooth。

注意到ReLU函数  从最优化的角度看待 Softmax 损失函数 也有一个smooth版,即softplus函数  从最优化的角度看待 Softmax 损失函数 。使用softplus函数之后,即使   超过了LogSumExp函数,仍会得到一点点梯度让   继续上升,这样其实也是变相地又增加了一点   ,使得泛化性能有了一定的保障。替换之后就可以得到:

从最优化的角度看待 Softmax 损失函数

这个就是大家所熟知的softmax交叉熵损失函数了。在经过两步smooth化之后,我们将一个难以收敛的函数逐步改造成了softmax交叉熵损失函数,解决了原始的目标函数难以优化的问题。从这个推导过程中我们可以看出smooth化不仅可以让优化更畅通,而且还变相地在类间引入了一定的间隔,从而提升了泛化性能。

至于如何利用这个推导来对损失函数进行修改和一些进一步的分析,未完待续...

[1] Pereyra G, Tucker G, Chorowski J, et al. Regularizing neural networks by penalizing confident output distributions[J]. arXiv preprint arXiv:1701.06548, 2017.

[2] Wang F, Cheng J, Liu W, et al. Additive margin softmax for face verification[J]. IEEE Signal Processing Letters, 2018, 25(7): 926-930.

[3] Tang Y. Deep learning using linear support vector machines[J]. arXiv preprint arXiv:1306.0239, 2013.

*延伸阅读

一文道尽softmax loss及其变种

分享神经网络中设计loss function的一些技巧

CVPR 2018 | Repulsion loss:专注于遮挡情况下的行人检测

每月大咖直播分享、真实项目需求对接、干货资讯汇总,行业技术交流 点击左下角“ 阅读原文 ”立刻申请入群~

从最优化的角度看待 Softmax 损失函数

觉得有用麻烦给个好看啦~    从最优化的角度看待 Softmax 损失函数


以上所述就是小编给大家介绍的《从最优化的角度看待 Softmax 损失函数》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

XML Hacks

XML Hacks

Michael Fitzgerald / O'Reilly Media, Inc. / 2004-07-27 / USD 24.95

Developers and system administrators alike are uncovering the true power of XML, the Extensible Markup Language that enables data to be sent over the Internet from one computer platform to another or ......一起来看看 《XML Hacks》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具