Transformer笔记

1. 模型结构示意图:

transformer.gif

这显示transformer有以下特征:

  • encoder部分有一种堆叠的效果,可以堆叠多个layer,而且每一层layer的模式是一样的。
  • 每一层都有self attention的效果,而所谓的self attention就是让词两两之间产生作用,并进行sum求和。
  • 可以预想到,这样可以进行长距离依赖的捕捉。
  • 在decoder阶段,需要考虑最后一层的encoder的输出,以及之前时刻的decoder在当前layer的输出结果,来得到下一层的输入。

2. 如何进行self attention?

可以看图片的时候思考几个问题:

  1. transformer中是用什么方法进行的attention?dot product,biaffine etc?
  2. 进行attention的表示与词的原始的embedding之间有何关系?
  3. 计算attention时,一个词作为query或者是作为被attent的词,的表示是否有区别?如何做到这一点。
    what is q k v.jpg

    首先得到一个词的q,k,v的表示,作为query,key和最后的value都不一样。这样为之后的点积起效果打下了预备。
    self attention layer.jpg

    注意这里面有根据维度进行归一化的内容。然后要对value做加权。
    matrix manipulation.jpg

    这个式子代码里面应该能直接看到。很系统完整。描述了整个self attention layer的工作的流程。因为示例中有两个单词,所以Q的第一维是2。
    multi-head.jpg

    multihead的实质就是多搞几套。如果原来的输出的Z的维度是d,head的值为4,那么在multihead下最终的Z的维度就是4d,不过是将最终的结果concat一下罢了。将concat的结果与W^O乘一下得到本层输出。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。