Taylor Softmax接下来要介绍的,是在《exp(x)在x=0处的偶次泰勒展开式总是正的》讨论过的 Taylor Softmax,它利用了 的泰勒展开式的一个有趣性质:对于任意实数 及偶数 ,总有,即 在 处的偶次泰勒展开式总是正的。利用这个恒正性,我们可以构建一个 Softmax 变体(是任意偶数):由于是基于 的泰勒展开式构建的,所以在一定范围内 Taylor Softmax 与 Softmax 有一定的近似关于,某些场景下可以用 Taylor Softmax 替换 Softmax。那么 Taylor Softmax 有什么特点呢?答案是更加长尾,因为 Taylor Softmax 是多项式函数归一化,相比指数函数衰减得更慢,所以对于尾部的类别,Taylor Softmax 往往能够给其分配更高的概率,可能有助于缓解 Softmax 的过度自信现象。
Taylor Softmax 的最新应用,是用来替换 Attention 中的 Softmax,使得原本的平方复杂度降低为线性复杂度,相关理论推导可以参考《Transformer升级之路:作为无限维的线性Attention》[4]。
该思路的最新实践是一个名为 Based 的模型,它利用 来线性化 Attention,声称比 Attention 高效且比 Mamba 效果更好,详细介绍可以参考博客《Zoology(Blogpost 2): Simple, Input-Dependent, and Sub-Quadratic Sequence Mixers》[5] 和《BASED: Simple linear attention language models balance the recall-throughput tradeoff》[6]。 Sparse SoftmaxSparse Softmax 是笔者参加 2020 年法研杯时提出的一个简单的 Softmax 稀疏变体,首先发表在《SPACES:“抽取-生成”式长文本摘要(法研杯总结)》,后来也补充了相关实验,写了篇简单的论文《Sparse-softmax: A Simpler and Faster Alternative Softmax Transformation》[7]。我们知道,在文本生成中,我们常用确定性的 Beam Search 解码,或者随机性的 TopK/TopP Sampling 采样,这些算法的特点都是只保留了预测概率最大的若干个 Token 进行遍历或者采样,也就等价于将剩余的 Token 概率视为零,而训练时如果直接使用 Softmax 来构建概率分布的话,那么就不存在绝对等于零的可能,这就让训练和预测出现了不一致性。Sparse Softmax 就是希望能处理这种不一致性,思路很简单,就是在训练的时候也把 Top- 以外的 Token 概率置零:其中 是将 从大到小排列后前 个元素的原始下标集合。简单来说,就是在训练阶段就进行与预测阶段一致的阶段操作。这里的 选取方式也可以按照 Nucleus Sampling 的 Top- 方式来操作,看具体需求而定。但要注意的是,Sparse Softmax 强行截断了剩余部分的概率,意味着这部分 Logits 无法进行反向传播了,因此 Sparse Softmax 的训练效率是不如 Softmax 的,所以它一般只适用于微调场景,而不适用于从零训练。 Perturb Max
这一节我们介绍一种新的构建概率分布的方式,这里称之为 Perturb Max,它是 Gumbel Max 的一般化,首次介绍于《从重参数的角度看离散概率分布的构建》,此外在论文《EXACT: How to Train Your Accuracy》[8] 也有过相关讨论,至于更早的出处笔者则没有进一步考究了。
问题反思首先我们知道,构建一个 的映射并不是难事,只要 是 (实数到非负实数)的映射,如 ,那么只需要让就是满足条件的映射了。如果要加上“两点性质” [9] 中的“单调性”呢?那么也不难,只需要保证 的单调递增函数,这样的函数也有很多,比如 。但如果再加上“不变性”呢?我们还能随便写出一个满足不变性的 映射吗?(反正我不能)可能有读者疑问:为什么非要保持单调性和不变性呢?的确,单纯从拟合概率分布的角度来看,这两点似乎都没什么必要,反正都是“力大砖飞”,只要模型足够大,那么没啥不能拟合的。但从 “Softmax 替代品”这个角度来看,我们希望新定义的概率分布同样能作为 的光滑近似,那么就要尽可能多保持跟 相同的性质,这是我们希望保持单调性和不变性的主要原因。 Gumbel MaxPerturb Max 借助于Gumbel Max 的一般化来构造这样的一类分布。不熟悉 Gumbel Max 的读者,可以先到《漫谈重参数:从正态分布到Gumbel Softmax》[10] 了解一下 Gumbel Max。简单来说,Gumbel Max 就是发现:怎么理解这个结果呢?首先,这里的 是指 的每个分量都是从 Gumbel 分布独立 [11] 重复采样出来的;接着,我们知道给定向量 ,本来 是确定的结果,但加了随机噪声 之后, 的结果也带有随机性了,于是每个 都有自己的概率;最后,Gumbel Max 告诉我们,如果加的是 Gumbel 噪声,那么i的出现概率正好是 。Gumbel Max 最直接的作用,就是提供了一种从分布 中采样的方式,当然如果单纯采样还有更简单的方法,没必要“杀鸡用牛刀”。Gumbel Max 最大的价值是“重参数(Reparameterization)”,它将问题的随机性从带参数 的离散分布转移到了不带参数的 上,再结合 Softmax 是 的光滑近似,我们得到 是 Gumbel Max 的光滑近似,这便是 Gumbel Softmax,是训练“离散采样模块中带有可学参数”的模型的常用技巧。 一般噪声Perturb Max 直接源自 Gumbel Max:既然 Softmax 可以从 Gumbel 分布中导出,那么如果将 Gumbel 分布换为一般的分布,比如正态分布,不就可以导出新的概率分布形式了?也就是说直接定义重复 Gumbel Max 的推导,我们可以得到其中 是 的累积概率函数。对于一般的分布,哪怕是简单的标准正态分布,上式都很难得出解析解,所以只能数值估计。为了得到确定性的计算结果,我们可以用逆累积概率函数的方式进行均匀采样,即先从 均匀选取 ,然后通过求解 来得到 。从 Perturb Max 的定义或者最后 的形式我们都可以断言 Perturb Max 满足单调性和不变性,这里就不详细展开了。那它在什么场景下有独特作用呢?说实话,还真不知道,《EXACT: How to Train Your Accuracy》[8] 一文用它来构建新的概率分布并优化准确率的光滑近似,但笔者自己的实验显示没有特别的效果。个人感觉,可能在某些需要重参数的场景能够表现出特殊的作用吧。 Sparsemax接下来要登场的是名为 Sparsemax 的概率映射,出自 2016 年的论文《From Softmax to Sparsemax: A Sparse Model of Attention and Multi-Label Classification》[12],它跟笔者提出的 Sparse Softmax 一样,都是面向稀疏性的改动,但作者的动机是用在 Attention 中提供更好的可解释性。跟 Sparse Softmax 直接强行截断 Top- 个分量不同,Sparsemax 提供了一个更为自适应的稀疏型概率分布构造方式。 基本定义原论文将 Sparsemax 定义为如下优化问题的解:通过拉格朗日乘数法就可以求出精确解的表达式。然而,这种方式并不直观,而且也不容易揭示它跟 Softmax 的联系。下面提供笔者构思的一种私以为更加简明的引出方式。首先,我们可以发现,Softmax 可以等价地表示为其中 是使得 的各分量之和为 1 的常数,对于 Softmax 我们可以求出 。然后,在 Taylor Softmax 那一节我们说了, 的偶次泰勒展开总是正的,因此可以用偶次泰勒展开来构建 Softmax 变体。但如果是奇数次呢?比如 ,它并不总是非负的,但我们可以加个 强行让它变成非负的,即 ,用这个近似替换掉式(20)的 ,就得到了 Sparsemax:其中 依然是使得 的各分量之和为1的常数,并且常数 1 也可以整合到 之中,所以上式也等价于 求解算法到目前为止,Sparsemax 还只是一个形式化的定义,因为 的具体计算方法尚不清楚,这就是本节需要探讨的问题。不过即便如此,单靠这个定义我们也不难看出 Sparsemax 满足单调性和不变性两点性质,如果还觉得不大肯定的读者,可以自行尝试证明一下它。现在我们转向 的计算。不失一般性,我们假设 各分量已经从大到小排序好,即 ,接着我们不妨先假设已知 ,那么很显然根据 的定义,我们有这就可以求出 。当然,我们无法事先知道 ,但我们可以遍历 ,利用上式求一遍 ,取满足 ,这也可以等价地表示为求满足 的最大的 ,然后返回对应的参考实现: