Always keep a beginner's mind, don't f|

KeanShi

园龄:1年7个月粉丝:4关注:0

【论文阅读笔记】Transformer ——《Attention Is All You Need》

论文地址:https://arxiv.org/pdf/1706.03762
模型地址:https://github.com/huggingface/transformers

Introduction

  1. RNN,LSTM 处理时序信息的局限性:无法并行,部分历史信息会在后面丢弃
  2. 编码器与解码器结构
  3. proposed transformer:纯注意力机制

Background

  1. CNN 替换 RNN:无法对时序信息进行建模——自注意力可以解决;CNN 可以多个输出通道——多头注意力机制
  2. Memory-Network

Model Architecture

图 1:Transformer 架构

  • Encoderinput(x1,...,xn)output: z=(z1,...,zn),其中 zt(1tn)xt 的向量表示
  • Decoderinput(z1,...,zn)output: y=(y1,...,ym):一个一个生成(auto-regression),上一时刻输出为下一时刻输入

Encoder

2 个子层:LayerNorm(x+Sublayer(x))2,每一层输出均为 512 维

LN and BN

  1. 如果 feature 长度不同:BN 更加不稳定!
  1. 预测过程
  • BN:要记录全局的 μσ,如果有的 feature 很长训练没见过,μσ 就不合适了
  • LN:每个样本内部计算,不受全局影响,受长度影响很小

Decoder

3 个字层:LayerNorm(x+Sublayer(x))3,自回归

Attention

图 2:dot-product attention 结构

其中 Q,Kdk 维,Vdv 维,attention计算公式:

Attention(Q,K,V)=softmax(QKTdk)V

为什么是 scaled dot-product attention?

  1. 因为点乘非常简单,两次矩阵乘法易于并行计算
  2. dk 比较大,softmax(QKT) 分布发散,梯度比较小收敛慢

Mask 操作

QKT 后将 t 位置之后变为很小的负数(如1e10),softmax 后为 0

Multi-head Attention

能够学习到不同的投影,不同特征。计算公式如下:

MultiHead(Q,K,V)=Concat(head1,...,headn)Wo

where   headi=Attention(QWiQ,KWiK,VWiV)

Feed-Forward

FFN(x)=max(0,xW1+b1)W2+b2

Postion Encoding

加入时序信息:

PE(pos,2i)=sin(pos/100002i/d)

PE(pos,2i+1)=cos(pos/100002i/d)

Why self-attention

本文作者:shikean@Tianjin University

本文链接:https://www.cnblogs.com/keanshi/p/18535710

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   KeanShi  阅读(85)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起