我整理了1000道算法面试题:
获取
先说结论:从Attention is not all you need 这篇论文来看,单纯的不加残差连接且不加MLP的多层多头的Attention堆叠会导致模型输出的秩坍缩到rank-1的矩阵,也就是最后所有的表征都趋向于同一个向量了;论文还说明了加上残差连接和MLP会减缓这种衰减,但是也仅仅是减缓。
证明过程是比较复杂的,作者在文章中花了大量的篇幅来进行推导,这里我不菜,就照葫芦画瓢说一下整体的思路,部分图片来自论文,有兴趣的小伙伴可以看下原文。
论文的证明从简单到复杂,从简答的单头单层,到多头多层以及加上残差和MLP的这么一个过程。我们只说到多层单头的情况的推导,然后推广到多头多层以及加上残差和MLP的过程大家可以看paper.
首先看过来,作者先给了res(X)的定义,这个res可以理解为残差,表达式如下
这个res(X)就是可以理解为X和一个向量相减以保证减去后的||||最小,如果res(X)=0表述啥?就表示X里面的向量都是一样的了,也就是大家都长的一毛一样,这样的X做表征有个屁用,所以res(X)最好别太小。
我们直接到文章A.1 Single-layer and single-head这个部分去看,首先我们要考察的是经过attention计算后的X'的res,因此我们先得到X'是啥
这样样子好理解吧,P就是A经过softmax后的值,X是输入,Wv是value weight. 那么A是啥,A是如下:
二话不说先展开得到
其中
令
则A可以表示为:
好,左边一个东西乘以了1^T, 乘完后是个常数,干掉它,然后保留右边那几项,得到如下P=softmax(A)=如下
其中
令
可以得到
这个过程很复杂,作者估计也没弄懂,我们直接忽略
然后得到
这东西就是R(X')了
再近似一波得到1范数和∞的形式
从1直接推到2,然后1结合2得到3,得到3之后我们先后可以基于D的不等式,得到只关于R的表达式
上面推导了单层单头,多层多头的情况如下
可以看到如果res(X)小于1,我滴乖乖,那直接res(X**L)不得飞起到渣都没有了,也就论文说的输出的秩呈现双指数下降,太可怕...
后面作者做了一些实验,我截个图,大概也能看出随着层数增加输出秩的衰减