http://zh.d2l.ai/chapter_attention-mechanisms/self-attention-and-positional-encoding.html
这一节,我是真的没有理解,求大佬指点一下。
哪个部分不是很理解?可以一起探讨下呀?
如果实在理解不了可以去看看中文版的书,感觉书上解释的还挺清楚的。
1 Like
中文版的书比在线版内容多很多吗?谢谢!
我这里也没怎么看明白。
确实不是很懂,没明白自注意力和位置编码有什么关系
个人理解,不是自注意力和位置编码有关系,而是因为自注意力实现的过程中把位置信息丢失了(如果你仔细的看一下自注意力机制的实现过程就会发现,对于每个位置做的操作是完全相同的),所以需要通过位置编码的方式把这种位置信息告诉神经网络。
2 Likes
这是由于attention 应用了BMM(批量矩阵乘法)机制导致,所以这应是所有attention的共性而不是self-attention个性。而Bahdanau attention正常是因为手工实现了loop保留了tokens位置关系。再次,‘self-attention’只是data角度考虑,不是model层级
其实有关相对位置和绝对位置这块,我也没看懂,中文书名叫什么吗?求
说一下我的对于这个三角函数编码的理解,可能有不对的地方,大伙看看就行。
首先对于编码我们自然而然能够想到二进制编码,这也是书中讨论的,在二进制编码中,随着数的增加,最低位(最右边)的二进制位一定是变化次数最多的,因为每隔一个数字他就会跳变一次。同理每隔两个数字,倒数第二位就会变一次,每个四个数字,倒数第三位变一次。可以看到在二进制编码中,存在不同位的变化频率不同的规律。
再回到三角函数编码中,有n个序列,每个序列值的维度是d,三角函数编码每行随着d中2j的增大,频率会变低。也就是说,对于同一序列(三角编码的一行),越靠后的改变频率越低。即用三角编码的一行的不同位置模拟了二进制编码(模拟了不同位频率不同的特点)。
最后是P矩阵的热图(这里我的理解可能有些问题,可指正),可以看到越靠左和靠下颜色越深越密集。靠下我是这么理解的:对于一个长序列,越靠后的在网络中留下的信息越多(离结果近所以记得牢),即靠下的序列权重更大。 然后越靠左信息越多这个我不还是不太明白为什么。
我觉得很有道理,我是这么理解的,看课本中位置编码的热力图,当固定j不变的时候,周期不变,用三角函数的一个周期对不同的i进行位置编码;当j增大的时候,三角函数周期变大,可以理解为能进行位置编码的序列范围变大了,有点类似于增大卷积核的大小使得感受野变大。