Transformer的几点笔记

1、encoder部分可以并行,decoder不可以。因为decode时还是要按顺序,依赖上一个输出;

2、attention有三种,分别是encoder部分的self-attention,以及decoder部分的masked self-attention和encoder-decoder attention,它们之间的异同要搞清楚。

1)在encoder部分的self-attention比较好理解,就是由输入的embeding a,衍生出三个向量,分别是q、k、v,它是由三个转换举证乘以a得到,这三个转换矩阵是可训练的。另外,如果是多头,那么就是多个qi、ki、vi。i最大值就是多头的数目。

然后是q中的某个元素x分别与k中的每个元素做内积运行,再经过softmax后与v中的元素分别相乘,然后求和,就得到x对应的元素经过注意力层处理后的向量了。如此处理所有输入元素,就是经过一层“蒸馏”。

2)masked self-attention比原始的self-attention多了一个掩盖矩阵。这么讲把简单的事整复杂了。本质就是,当在预测第一个位置的输出时,只有它自身做attention,结果自然是它自己;当预测第二个位置的输出时,就得看前一个和自身,这两个注意力是符合分配的,如此往复直到结束。

这么做的解释,也很有道理。你在实时翻译时是没有后视镜的,无法提前知道它将要说什么话。

3)encoder-decoder attention,就是当在解码时,经过masked self-attention后计算得到的表示,作为q与encoder最上层得到的输出作为k、v进行attention的计算,传递给下一个子层前馈网络。

3、transformer哪些是超参?

每个输入的个数最大值,一般比如20,表示句子的长度最大设定为20各词。

有几个head,每个head的k、v的dim是多少,也是超参。encoder和decoder叠加几层?是超参。

4、decoder时每次输出一个vector,表示对应某一个词。它会被当作下一次预测的部分输入。解码时还要考虑编码的信息,这就是decoder block比encoder block多一层encoder-decoder module的原因。

https://www.bilibili.com/video/av56239558/

这是台大李宏毅讲解transformer的视频,在encoder部分讲的很细致,但是decoder部分比较模糊。

http://jalammar.github.io/illustrated-transformer/

这是英文版的transformer介绍,比较详细。

http://bitjoy.net/2020/03/04/cs224n%EF%BC%882-21%EF%BC%89transformers-and-self-attention-for-generative-models/

一个中文解释的比较好的blog.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值