原创:王稳钺
资料来源:张春阳
由于目前”调包“非常方便,往往让人忽略对于算法的深入理解。本文介绍使用TensorFlow从0实现Transformer,帮助从代码角度理解原理及其中的细节。
1. Self-attention
1.1 Self-attention原理
本文主要介绍代码实现,对于原理部分只做简单介绍。Self-attention主要想要实现的是句子中每一个token和其它token之间的相关性,将其融合起来的语义组成一个新的向量,计算过程如图。首先需要有QUERY和KEYS,在实际实现过程中,最开始就是两组随机的参数的向量。然后进行点乘,点乘后可以得到S值,点乘的过程就是在求相关性的过程。得到S后,经过softmax,得到权重W。之后再引入可学习参数VALUES,刚开始它也是一组随机值。用VALUES与W相乘,最终就可以得到新的向量。通过V1可以得到Y1,单纯使用V1表示时它只有自己的语意信息,而使用Y1时就包括了其与周边向量的关系。
1.2 Self-attention实现
生成矩阵作为输入,用来模拟V1,V2,V3,值是随机写的并没有特殊的含义。为了后续可以传入到模型中,将矩阵转换成tensor。
生成QUERY、KEYS、