Confident Adaptive(下)

本文首发于网站 机器翻译学堂
转载事宜请后台询问哦
作者 | 蒙龙
单位 | 东北大学自然语言处理实验室

保形校准
保形预测是基于假设检验,我们首先来复习一下假设检验的一些基础概念,假设检验他是一个统计决策的过程,对于一个统计模型,我们提出一个假设,根据抽取到的样本,来作出是接受还是拒绝这个假设。它的一个基本的流程是提出一个统计假设;选取一个合适的检验统计量;利用零假设成立时检验统计量的分布构造出一个小概率事件;代入样本观察值,如果使得这个小概率事件发生,就否定零假设而去接受对立假设,否则说明样本没有提供否定零假设的显著性证据,因此应该接受零假设。
而在这里,文章认为零假设是第层是不一致的,自然对立假设是第
层是一致的,
这里的我们选择 来作为我们的检验统计量, 因为
是用来训练预测
的,
越大,在一定程度上代表该层是一致的概率越大。因此它的拒绝域就应该是
偏大,
, 功效函数是否定零假设的概率, 要求我们犯第一类错误的概率不超过
,
所谓的犯第一类错误的概率指的拒真的概率,也就是当零假设成立时, 我们拒绝零假设的概率, 这里就是第 层实际是不一致层, 但是我们认为它一致。
一般的检验统计量我们要求它是当零假设成立的时候, 它的分布是完全已知的, 但是现在 的分布是末知的。那怎么办呢? 我们可以用经验分布来近似地代替。可以知道经验分布函数依概率,甚至几平处处收敛到真实的分布函数。
经验分布函数实际上是用样本观测值小于 的频率去估计概率。我们现在需要的是零假设成立的时候,
的分布, 所以样本的观测值应该是不一致时
的值, 我们把校准集中的数据输入到模型里面, 直接去取就可以了。
这样我们就可以通过分位点把 求出来, 也就是我们需要校准的
到此 的保形预测
我们就构建出来了,
最后还有一个小问题就是 的取值, 因为我们一共有
个层, 我们需要做
次独立的假设检验,
次假设检验中, 假设
和
, 假设检验之间相互独立, 不犯错误的概率为 (1−0.01)100=36.6% , 而至少犯一次错误的概率高达P=1−(1−0.01)100=1−0.366=63.4 %, 因此为了让最终犯错误的概率不超过 ϵ , 我们需要对
进行校正。这里我们使用的是 Bonferroni Correction, 也就是让所有的
加起来等于 ϵ
最后我们整体来看一下它的一个流程。首先我们需要给定一个原始模型 , 构建能够早退的模型
; 训练中间分类器
以及给退出信号的
; 通过校准得到
, 最后就可以用模型
来做推理了, 当
的值大于
时进行早退。
CATs实验
CATs在三个分类任务以及一个回归任务上进行了实验,分别是情感分析任务(IMDB)、事实验证任务(VitaminC)、新闻主题分类任务(AG)以及语义文本相似度回归(STS-B)。Baseline模型使用的是24层的Albert-xlarge。分类任务的评价指标使用的是正确率,回归任务的使用的是Pearson-correlation。分类实验的结果如下所示

其中Static为固定在模型的某一层退出。SM指的是使用Softmax的值作为退出信号,Meta指的是使用中间分类器。Thres.指的是非CP的方法,对于SM使用的Temperature Scaling进行校准,对于Meta则是当它超过1-ϵ 时退出。与Indep.和Shared使用了CP的方法进行对照,分别是独立校准和共享校准。括号中的值是保证的理论性能的下界,也就是原始模型性能的(1-ϵ)。
虽然在某些水平下非CP的方法也表现出很强的竞争力量,但是它缺乏正式的性能保证。对于比较严格的一致性水平下,Shared的方法在设定的范围内获得了显著的性能提升。Meta的方法比SM的方法在分类标签比较多的时候性能更好,因为此时SM的和一致性的相关程度会下降。回归任务的结果如下,

在这里, Meta 的一个优势是它可以适用于多种输出类型的任务。需要注意的是, 不管 的输出是什么形式,
的事件空间始终存在。也就是说这种方法可以 很好地适应分类之外的任务, 例如 CALM。
CALM需要回答的问题
CALM在CATs的基础上对问题做了进一步的扩展和讨论,在原本的CATs中,文章主要集中在分类以及回归任务上,CALM拓展到了翻译,新闻总结和QA等文本生成任务上。我们可以试想一下,如果直接把CATs的校准的流程直接用在生成任务上会有什么问题。我认为主要有两个,一个Auto-Regressive的生成方式,另外一个是如何判断一致。
当我们给定一个输入(可能是一个待翻译的句子,或者是一个需要总结的一段话),此时输出的token是一个一个产生的,后一个token的生成依赖于前面的token,它和分类任务中那种主要看[CLS]token并行的结构(Encoder)不同。当前面一个token提前退出之后,它后面层的隐藏状态没有了,那么后面的token在计算attention的时候如果直接进行隐藏层拷贝的时候会不会有问题?当前面的token由于提前退出而出现扰动的时候,会不会影响整个句子的生成。
我们应该怎么去判断当前的输出和最后的一层输出是否一致?如果我们直接还是用之前那种比较尖锐的是否相等的这种方法是否恰当?当我们是分类任务的时候,标签的数目比较少的,但是生成任务词表的维度要比这个大得多。并且,我们应该是让早退输出的每一个token都和完整模型的输出对应相等(local consistent)是不是太严格了,我们如何让两个模型的输出保持一个全局上的一致性。
CALM模型结构
CALM 的模型结构和 CATs 基本一样, 当模型的信心足够的时候, 可以用模型中间层的隐藏状态 进行输出
,
代表在模型当前的局部的信心的分数, 分数的值越高, 越倾向提前退出。
代表某个局部提前退出的阈值。
隐层拷贝
对于隐层拷贝的问题,文章做了实验来进行探索。通过控制输出的token一样来检验隐藏拷贝的问题,像是控制变量的过程。文章用了这样的一个oracle,当中间层预测的结果和最后一层一样的时候退出,这样,唯一可能导致生成差异的因素是skipped layers隐层拷贝问题。完整的模型的ROUGE-L的分数是38.32,而这个oracle的分数是38.24,平均退出层数只要有1.53,完整的模型是8层。文章还尝试了一个一直用第一层的隐藏层的oracle,达到了38.31的分数。
各位读者可以看到两个oracle的分数都很高。笔者的理解是这里的实验过程和实际的推理过程不同,这里的目的是为了探索实验,因此我们可以不计代价地先将最后一层的token算出来之后,再从前面的层,去选和最后一层一样的层。
这个实验说明了两个事情,一个是模型对于隐层拷贝的鲁棒性很高,另外一个是模型的早退潜力很大。文章还做了一个实验是,如果在计算attention时用skipped layer的K和V,那么模型的分数会下降很大。
局部错误敏感性
文章检验了局部单个token的扰动对整个句子生成的影响。文章实验了两种扰动的方法,一个Sample-Based,在解码时间步t时,在采样时我们用分数排在第10的token。另外一个是Layer-Based,在解码时间步t时使用第一层的预测的token。结果如下图所示,越早的扰动会让整个输出的句子分数更低,因为有更多后续的token受到了影响,并且Layer-Based的影响要比Sample-Based的影响更小,因为在实际解码时,很多早退的预测是准确的。

根据上述观察,文章提出了一个随着时间步衰减的阈值,随着解码的不断进行,它会更加容易早退。阈值建模成一个具有用户定义温度系数的一个函数,函数图像如下

本质上,这个函数提供了一个折中方案,即我们不想简单地对所有的解码时间步使用同样的阈值, 也不需要在每个时间步这么巨大空间上搜索。
一致性判断
对于怎么去判断是否是一致的问题, 文章提出了两种方法, Textually Consistent 和 Risk Consistent。给定一个无标签的校验集 ,
和
分别是完整的模型的输出和早退的输出(相当与 CATs 中的原始模型
以及早退的模型
)。
Textually Consistent 通过一个文本距离函数 来衡量, 当
和
距离小于用户设定的一个容忍度
的时候我们认为它是一致的,
然而, 对于某些任务, 强制要求与
文本一致可能是不必要的, 特别是在可以接受多个的 Reference 的情况下。在这种情况下,我们可以在校验集
中加入 Target Reference, 这个 Reference 可以是不止一个,
。 通过一个风险函数
来计算输出与 Reference 的分数, 当两者的分数小于容忍度
时, 我们论为它是一致的
在实际操作中这个和
可以用 F 1 或者 ROUGE 等指标。
Confident度量
在怎么给出模型应该早退的这个信号上, CATs 是额外训练了一个分类器, 而 CALM里面还用了三种不同的度量方法。
第一个是 Softmax Response, 取前两个 token 的之间的差值。在词表较大的时候, 会导致比较大的运算, 不过, 下一层可以并行启动计算, 从而避免额外的运行时间;
第二个是 Hidden-State Saturation 连续两层隐藏状态的余弦距离, 它是一种简单的无参数和快速的方法。根据定义, 最早的可以退出的层是第二层 (除非), 这个度量试图找到隐藏状态的饱和状态;
第三个是 Early Exit Classifier, 和 CATs 一样, 训练一个专门分类器来预测在当前隐藏状态下以局部一致性退出的可能性。
笔者认为, 这里我们需要的 Confident 度量方法, 其实是找到一个信号, 这个信号可以比较好地捕捉到当前层和最后一层一致的信息。因此我们并不一定需要是去训练一个分类器, 这种早退的信息也可能会隐藏在其他的信号里面。并且其实分类器的隐含的一个前提假设是这个分类器给出的置信度很大程度上代表了概率, 但是实际上分类器的预测的值是高度不可靠的, 虽然它隐含了一些信息, 但是它和真实分布之间可能还是有很大的差距。
CALM 校准
CALM 的校准过程和 CATs 类似, 同样是把调参问题建模成一个多重假设检验问题,使 用了一种叫 Learn then Test (LTT) [4] 的方法, 并且 CALM 在不同层之间使用同样的一个阈值。 具体的做法如下, 首先我们构造阈值的一个集合 可能满足约束也可能不满足, 它可以尽量包含
可能的范围, 例如它是一个 0-1 之间的等差数列。LTT 可以找到一个子集
, 满足
对里面所有的值进行如下的一个假设检验,零假设是模型是不一致的, 当拒绝零假设 时, 我们就相当于是找到了我们需要的一个阈值, 就可以把它放入到
里面
and
are not constant.
通过 Holding's inequality 我们可以直接把这个假设检验 pp 值求出来,
其中是随机变量
在检验集上的算术平均。对于不同的一致性 判断方法,
的计算方式不同
固定序列测试
虽然早退LLM的性能与之间的确切依赖关系是未知的,但在实践中,我们发现它往往是相当平滑的和大致单调的。也就是说,相近的阈值倾向于执行类似的性能,而更大的阈值倾向于更一致。
这样我们就不需要去检验中的每一个值,我们可以将这个数列从大到小排列,然后按顺序去做检验,当p值小于ϵ时我们拒绝零假设。直到我们第一次接受零假设我们就找到了最小的一个满足约束的阈值了。
CALM实验设置
CALM在三个文本生成任务上对模型进行了评估,一个是新闻总结任务(CNN/DM)、英法翻译(WMT15 EN-FR)以及QA(Open-book SQUAD 1.1)。Baseline使用的是8层的T5 1.1,用T5X框架来实现,不同层之间共享同一个分类器参数和输出Embedding。评价指标在新闻总结任务上用的是ROUGE,在WMT上用BLUE,在QA上用的F1。除了BLEU之外,都使用相同的度量来计算文本距离和风险,因为BLUE是一个预料级的评价指标,作者这里认为不太合适,用了BLUERT来代替。模型的效率评估用的是平均退出层数、FLOS以及加速比,其中加速比是直接在TPU v3上用两百的样本跑出来的。
性能和效率的权衡
文章首先在不同Confident度量方法上考察性能和效率的权衡。对于每个任务和度量方法,在验证集上评估,设置步长为0.05。

Softmax Response的度量方法效果比较好,只用了较小的性能损失,就在三个任务中都减少了超过一半的层。使用额外分类器的方法也不错,并且FLOS比较小。但是状态饱和度的这种方法的性能相对差一点。但是三者相比oracle还是有很大的差距,笔者认为这里的oracle相当于是一个上帝视角,可以代表性能效率权衡的上界。这说明了CALM潜力还是很大的,还有很大的一个优化空间。
校准性能
CALM检验了校准过程的结果。因为模型的性能被保证是有效的(即至少95%的样本≤ ),因此主要考察不同选择的
的效率收益。

总体来说Softmax Response的平均退出层数的加速比是最好的,额外分类器的方法相比于Softmax Response有时候虽然用的层数更多但是实际的加速比更好。因为当词表很大的时候,Softmax的计算量可能会很大。如果我们放松约束 ,或收紧置信区间(使用更大的校准集),可以进一步提高效率收益。
总结
能够在不过度降低性能的情况下加快预测,对工业级的机器学习系统至关重要。并且,能够量化预测中的不确定性,决定什么时候需要更深的计算量,对任何智能系统来说都是一个很重要的问题。CATs和CALM分别在分类任务和文本生成式任务上使用了Confident Adaptive的方法,认为当早期分类器的预测已经与完整模型的预测一致时进行退出,在早退信号上尝试了专用分类器以及隐藏层特征等方法,设计实验对隐藏层拷贝,局部扰动对整体生成的影响等问题进行了探索和分析,并且运用了统计理论的方法来校准模型,构建了一个易于实现的、快速的、具有统计性能保证的模型结构。

hi,这里是小牛翻译~
想要看到更多我们的文章,可以关注下
机器翻译学堂(公号或网站)
笔芯~

往期精彩文章


