Sparsemax封闭形式解及其损失函数的推导
本文目标是三个方面。第一部分讨论了sparsemax背后的动机及其与softmax的关系,首次介绍了该激活函数的原始研究论文摘要,以及使用sparsemax的优点概述。第二部分和第三部分专门讨论数学推导,具体地找到闭合形式的解以及适当的损失函数。
Martins等人通过论文《From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification》引入Sparsemax,提出了一种替代众所周知的softmax激活函数的新方法。
虽然softmax是输出在K个概率上归一化的概率分布的多类分类的适当选择,但在许多任务中,我们希望获得一个更稀疏的输出。Martins引入了一个新的激活函数sparsemax,该函数输出多项式分布的稀疏概率,因此从分布的质量中滤除了噪声。
这意味着sparsemax将为某些类分配恰好为0的概率,而softmax会保留这些类并为它们分配非常小的值,如10-3。在大型分类问题中,稀疏最大值可能特别有利;例如在自然语言处理(NLP)任务中,其中softmax层正在非常大的词汇集上进行多项分布建模。
但是,实际上,将softmax函数更改为稀疏估计器并不是一件容易的事。在保持softmax的一些基本属性的同时获得这种转换(例如,易于评估,易于微分并容易转换为凸损失函数)变得非常具有挑战性。
机器学习中解决该问题的传统方法是使用L1惩罚,该惩罚在神经网络中的输入变量和/或深层方面允许一定程度的稀疏性。虽然这种方法相对简单,但是L1惩罚会影响神经网络的权重,而不是作为稀疏概率的目标输出。
因此,论文作者认识到需要补充激活功能,即 sparsemax,他们将其公式化为可解决的二次问题,并在一组约束条件下找到一个解决方案,以获得与softmax类似的性质。
在深入研究sparsemax实现背后的证据之前,让我们首先讨论论文中的一些重要的高级发现。以下要点总结了一些主要内容:
尽管softmax形状等效于传统的S型函数,但Sparsemax在一个维度上却是"硬"的S型。此外,在两个维度上,sparsemax是具有整个饱和区域(0或1)的分段线性函数。这是论文中的图表,可帮助可视化softmax和sparsemax。
在二元情况下,导出的稀疏极大损失函数与用于分类的修正的Huber损失直接相关(定义在张童论文《基于凸风险优化的分类方法的统计特征和一致性》和邹惠,朱季,和黑斯,特雷弗论文《基于边缘向量、容许损失和多类边缘的分类器》,斯坦福大学2006年技术报告)。也就是说,如果x和y是sparsemax之前的两个分数,则使用sparsemax层和sparsemax损失,且t = x-y,并且在不失一般性的前提下,假设正确的标签为1,我们可以证明:
这是一个很好的性质,证明了sparsemax的理论基础;Huber损失是L1和L2惩罚之间的折衷,这正是我们试图从softmax激活中获得的结果,同时包括稀疏性。此外,可以通过将损失与其他标准分类损失进行比较来证明与Huber损失的相似性:
在上图中,您可以看到,对于t的负值,即对于大误差,损耗与误差呈线性比例关系,类似于铰链损失。但是,随着t收敛到1,即误差减小,我们观察到平方关系,类似于最小二乘损失。
sparsemax框架已显示在带有大量标签的数据集上表现特别出色。在下面的示例中,您可以在表1中看到几个数据集及其详细信息,并在表2中看到了不同激活函数(即 S型,softmax和sparsemax)的微平均/宏平均F1分数。标签的数量(即较低的行数),与softmax相比,sparsemax性能的提升变得越来越明显。
表1:数据集说明
表2:不同数据集的性能基准
稀疏输出的想法也可以在具有注意力机制的深度学习模型中加以利用-一种用于计算潜在大量实体的注意力权重的神经网络。事实证明,这种注意力机制在NLP任务(例如翻译或语言建模)中特别有效,这导致了所谓的Transformers的创建,即利用自我注意力的非循环模型体系结构,广泛用于诸如BERT的最新语言模型。从sparsemax中获得严格的空概率的优势在于,如果某些隐藏状态(单词)被判断为不相关,则可以完全消除它们的影响--与softmax相比,softmax最终累积了所有不相关状态的无穷小和,并可能影响模型性能。此外,在概率为零的情况下,我们扩大了注意力的一个主要优势:可解释性。使用稀疏分数有助于清理注意力图,并阐明注意力系统的工作方式。
然而,根据经验,由于自然语言推理任务中的关注稀疏,本文仅报告了少量的性能提升。
表3:SNLI数据集上注意力模型的性能
既然我们已经强调了sparsemax的一些优点和关键发现,现在让我们继续进行sparsemax背后的两个重要推导:即找到其闭式解以及其损失函数方程。
回顾Softmax
Softmax是S形到多类分类的概括。它采用了对数变换把所有得分ž映射到概率p∈[0,1]:
从概念上讲,对于一组K类,softmax是一个把K维实数向量映射到K-1维概率分布Δ(即到K-1维概率单纯形)的函数。更准确地说:
重要的是要注意,只有K-1自由度是必要的,因为概率总和为1。
Softmax被定义为具有完全支持,即非零值输出,数学上定义为
修改此属性以允许零输出正是使我们能够获得稀疏概率的原因。
Sparsemax的定义
作者将sparsemax激活函数公式化为二次约束优化问题:
这等同于将其定义为的欧几里得投影Ž到概率单纯Δᴷ ¯ ¹。稀疏性是通过在投影过程中碰到单纯形边界的概率很高而引起的,从而使某些尺寸为零。
封闭式解决方案
上面的sparsemax定义可以用其封闭形式的解决方案编写为
代表阈值函数。我们将在第3节中逐步推导该方程式。
类似地,也可以在其闭式解中表示为
下面的算法1的伪代码总结了这组方程,可以帮助更好地理解向量z的sparsemax计算的步骤:
最具挑战性的部分是确定阈值 (z) ; 我们将我们在第3节最后证明时再回到这个,每个类的输出概率我是ž减去阈值τ (Z),如果该值为正,且0,如果是负的。
最后,我们还想导出对应于sparsemax的损失函数。虽然封闭形式解的第一个证明是直接根据sparsemax的原始定义确定的,但是损失函数是一个优先问题,可以采取不同的形式。让我们解释一下原因。
可以证明,结合使用交叉熵损失(即多项式分布上的负对数似然率)和softmax,损失函数简化为
其中k等于真实标签的索引。
交叉熵损失和softmax结合使用所产生的优势简化了梯度到
这意味着在反向传播期间,评估softmax(z)足以进行正向和反向传递,并且不需要额外的计算。这种行为是我们也想在sparsemax框架中维护的属性。
但是,根据经验,这种设置对于sparsemax来说是不可行的。尝试将sparsemax与交叉熵结合在一起产生的一个问题是,此损失函数现在将需要全支持,即仅需要非零值的输出。但是,由于损失函数采用概率的对数,因此,如果概率严格为空,则不会定义其对数。这就是为什么交叉熵损失不能用于sparsemax激活函数的原因。作者建议找到一个满足相似梯度表达式的可微分损失函数,即
通过添加另外的约束sparsemax损耗的最小值为0,当获得S(z)的= {K} ,即只有正确的类是非零的,我们可以表明sparsemax损失函数具有如下形式
目的
该证明的目的是证明以下等效:
换句话说,我们要解决概率p和得分z之差的平方欧几里德范数的arg min优化问题。这可以理解为在选择的最近点Δᴷ ¯ ¹从得分矢量Ž。
关于Karush-Kush-Tucker(KKT)条件的提醒
Karush–Kuhn–Tucker(KKT)条件是数学优化中的一个概念。给定一组特定约束,它们表示满足非线性编程解决方案的一阶必要条件。在我们的sparsemax的设置,我们要找到一些功能的最低点F:在一定条件下ℝⁿ→ℝ。
然后可以将优化问题写成如下形式:找到使函数f最小的x,使得满足g (x)和h (x)的条件,即:
为了解决这个问题,我们首先需要定义拉格朗日函数L(x,μ,λ):
的KKT方法的状态(处于高电平),其给出的拉格朗日函数L,如果(X *,μ*)是一个鞍点大号与μ≥0和互补松弛μᵢgᵢ(X *)≥0 ∈i∈[0,n],则x *是上述优化问题的最优向量。
以一种具体的方式,我们简单地寻找拉格朗日梯度为零的值,即:
推导
鉴于sparsemax是一个约束优化问题,我们用KKT的早期符号重写它,即使用f,g和h如下:
然后,拉格朗日采用
现在,我们可以针对x区分拉格朗日函数:
该解决方案成为一个包含三个方程式的系统:
第一个方程式(1)来自拉格朗日为零的梯度。第二等式(2)来自于原来的松弛条件μ≥0和从p是概率的正矢量。最后,等式(3)是互补松弛条件。
随后,我们根据方程式(2)和(3)区分两种情况。对于每个维度i∈[0,n],pᵢ*> 0从而μᵢ* = 0,或者μᵢ*> 0从而pᵢ* = 0。更确切地说,这意味着我们考虑两种情况:支撑S(z)的元素,其中p> 0,以及支撑S(z)之外的元素,其中p = 0。
在继续进行sparsemax证明时,我们需要记住,我们的目标是两件事:确定非零概率的值,以及确定概率为0的条件。因此:
在1.和2.中,zᵢ大于 *,因此pᵢ*等于它们的正差,或者pᵢ*为零。因此,pᵢ* =(zᵢ- (z))⁺。
此外,从等式(2)我们知道∑ᵢpᵢ* = 1,并且存在| S(z)|,非零pᵢ*,因此:
这是sparsemax封闭形式解推导的第一个证明。
目的
第二个证明的目的是证明以下等效性:
换句话说,我们要导出sparsemax损失函数的梯度与sparsemax损失函数本身之间的等价关系。
引理
在开始证明之前,我们需要定义一些重要的符号并建立两个重要的结果:
对于引理1,我们可以直接计算关于z的²的偏导数。
事实上,如果žᵢ是在S(z)的,那么这将是存在于分子和的导数将尺度成反比| S(z) |; 否则,导数将为null。
接下来,使用链式法则,我们可以推断出衍生τ²与问候ž:
请注意,如果j∉S(z)则(z)= 0。
在引理2,我们感兴趣的是所谓的自信 sparsemax,即当预测受让人重量的100%至只有真正类ķ。在这种情况下,我们有spar semax(z,k)=δ_k。这有两个结果,即:
我们想要获得sparsemax的损失函数,使得
首先,让我们以非矢量形式查看关于zᵢ的sparsemax的偏导数:
然后,我们可以推断,对于K∈ ℝ :
剩下的最后一步是确定积分常数。我们可以简单地挑K = 0和梯度仍然是正确的,但我们或许能有更合适的解决方案。这是我们使用上面定义的第二个引理的地方。在完美预测的情况下,我们希望损失等于零,类似于softmax或其他损失函数(如MAE / MSE)。
更准确地说,我们需要满足以下要求:
从而:
最后,我们获得:
得出关于稀疏最大损失函数推导的第二个证明。
在本文中,我们介绍了sparsemax激活函数背后的思想和数学公式,该函数与传统的softmax相比,允许稀疏输出域。我们首先总结了Martins等人的一些关键发现。本文认为,从经验上讲,随着类数的增加,sparsemax可以提高分类模型的性能。此外,在使用sparsemax训练的NLP注意模型中,性能提升以及更好的解释能力十分普遍。最后,主要部分专门介绍了sparsemax背后的两个重要证明;即闭合形式解的推导和潜在的损失函数。