问题
lstm的门机制对长依赖的解决不够彻底。更长的依赖关系无法学习到。并且门机制并行度提不上去。
结构
encoder-decoder架构,本质上是seqtoseq加上attention。
整体思想是,encoder接收初始序列,六层的最终输出,再输入到decoder的每一层模块。decoder能输出翻译后的句子。
encoder:输入序列进行embedding,然后加上position的encoding,进入self attention。self attention后面加入一个前馈网络层。(selfattention + 前馈FNN)为encoder的一个模块。
decoder:接收encoder的输入以及上一模块的输入。(self attention +encoderdecoder 的atten+ 前馈FNN)为decoder的一个模块。
encoder
self attention
假设输入词序列A B,对应的embedding为 a b。三个矩阵,Q K V。
a b分别和Q K V相乘,各得到三个向量,aq ak av,bq bk bv。
aq * ak = aq_ak_score ;aq * bk = aq_bk_score。两个➗8。再将这些分数softmax。得到0-1之间。
这里,得到了a对所有其他词的分数向量。
再将av bv分别和这些分数相乘后加和,得到了第一词A的输出。
类似得到B的输出。
矩阵形式
inputX * WQ = Q;inputX * WK = K;inputX * WV = V
softmax( Q*K / 8 ) * V = attentionOut
多头
多个attentionOut进行concat然后再*W0 = 新的out
W0进入模型一起训练
Positional Encoding
ref
https://jalammar.github.io/illustrated-transformer/
https://zhuanlan.zhihu.com/p/127774251
本文链接: https://satyrswang.github.io/2021/06/07/transformer/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!