把注意力当作(并不完美的)解释(attention as explanation)
/ uh-TEN-shun az im-PER-fikt ek-spluh-NAY-shun /
许多现代模型,尤其是Transformer,内部都含有一种「注意力机制」:在处理一句话时,它会算出一组权重,说明每个词应当对其他每个词「聚焦」多少。人们很容易把这些权重读成一种解释——「模型把『bank』译成河岸,是因为它注意到了旁边的『河流』。」这张注意力图看上去像一扇通往模型推理的窗户,而多年来人们也确实把它当成了一扇窗。
其吸引力显而易见,画面也极具诱惑:一张整齐的方格图,显示模型把哪些输入彼此关联了起来,分文不取,还早已在模型内部算好。不像那些得你自己去构造的显著性图,注意力权重就现成地摆在那儿。于是从业者动不动就把它们可视化,用以论证「瞧,这就是模型当时在关注的东西」,在语言和翻译任务里尤其如此。
可经审慎研究确证的症结在于:注意力,往好里说是一种局部的、往往还会误导人的解释。你常常能找到截然不同的注意力模式,却产出完全相同的预测——这意味着你看到的那组权重,并不是答案的缘由。对某个词的高注意力,并不可靠地代表那个词对输出重要,因为信息还会经由网络中其他路径流动。注意力能就「该往哪儿看」给出一条有用的提示,但把一张注意力图当成「模型为何如此决定」的忠实陈述,是一个有据可查的错误。
研究者拿一个训练好的文本分类器,去搜寻另一组注意力权重——指向的是完全不同的词——而模型的预测却原封不动。他们轻而易举就找到了。如果两张互相矛盾的注意力图,产出的是一模一样的输出,那么它们谁也当不成那个输出的真正解释。
倘若不同的注意力图给出同一个答案,那这张图就不是答案的缘由。
「注意力不是解释」之所以成了一篇引发响应的论文标题,是有道理的——尽管这场争论颇有微妙之处:在某些情况下(尤其是单层结构里),注意力确实会与重要性吻合。稳妥的立场是:注意力显示的是「模型把什么关联了起来」,而非「它为何如此决定」。把它当作一条值得去查的线索,永远别当作定论。