transformer 之 attention

  • Transformer

1.简介

非rnn结构,仅仅基于attention + fc

现在机器翻译,全部用transformer + bert

2. 回顾attention

Hm:对所有的输入的概括

根据状态sj,生成单词。新生成的单词,作为xn

每一个s计算一个c(context vector)

Decoder 的当前状态与encoder的所有状态做对比,用align函数计算相关性alpha。

此处,WK,WQ,WV均为attention的参数,需要从训练集中学习到。

此处的attention是用在RNN上的。

对,根据RNN的性质,此处的参数是共享的。

3. attention without RNN

此时,会得到attention 和 self-attention,而transformer正式有这两层结构组成的。

下面搭建attention层

不用RNN,直接计算输入的k和v,一共得到m个k向量和m个v向量。注意,一共三个参数。

  

每一个c向量,对应一个x向量。

C就是最终的输出。

C2可以看到全部输入x,以及解码器的本次输入x’

C2作为特征向量,输入softmax,得到概率分布p2,

P2抽样,得到x3‘

这个过程和rnn很相似,RNN采用状态h作为特征向量;attention采用c作为特征向量。并且不会遗忘。

此即为attention层,输出c为矩阵,其列向量为c1,c2,…

4. self-attention without RNN

Self attention 并非sequence2sequence。

其只有一个输入序列,输出为c1,c2,。。。cm

C:2并非仅仅依赖于x2,而是依赖于所有的m个x向量,改变任意一个x向量,c:2均会发生改变。

Self attention的原理和self attention的原理一样,仅仅是输入不一样。

和attention的区别,仅仅是q向量的获取方式不一样。Attention是从解码器中获取的。Self attention是从编码器中获取的。

5.总结

 

总结:

首先attention是用在sequence2sequence中,后来发现,attetion并不仅限于s2s模型,而是可以用在所有的rnn上。当只有一个rnn时,称为self-attemtion。

后来发现,仅仅只用attention就很好的,加上rnn效果反而不好了。此即为transformer。

Selft-attention的输入和输出一样,因此可以替换rnn。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值