【动手学深度学习v2】注意力机制—4 Transformer

模型

基于编码器-解码器架构处理序列对;
跟使用注意力的seq2seq不同,Transformer纯用基于注意力,不用RNN
Transformer

多头注意力 Multi-Head Attention

对同一key、value、query,希望抽取不同的信息(例如短距离/长距离关系)
使用h个独立的注意力池化,合并各个头输出得到最终输出
multi-head attention

  • 给定查询 q ∈ R d q \mathbf{q} \in \mathbb{R}^{d_q} qRdq、键 k ∈ R d k \mathbf{k} \in \mathbb{R}^{d_k} kRdk和值 v ∈ R d v \mathbf{v} \in \mathbb{R}^{d_v} vRdv
  • 注意力头 h i \mathbf{h}_i hi i = 1 , … , h i = 1, \ldots, h i=1,,h)的计算方法为: h i = f ( W i ( q ) q , W i ( k ) k , W i ( v ) v ) ∈ R p v \mathbf{h}_i = f(\mathbf W_i^{(q)}\mathbf q, \mathbf W_i^{(k)}\mathbf k,\mathbf W_i^{(v)}\mathbf v) \in \mathbb R^{p_v} hi=f(Wi(q)q,Wi(k)k,Wi(v)v)Rpv
  • 注意力头 h i \mathbf{h}_i hi可学习的参数: W i ( q ) ∈ R p q × d q \mathbf W_i^{(q)}\in\mathbb R^{p_q\times d_q} Wi(q)Rpq×dq W i ( k ) ∈ R p k × d k \mathbf W_i^{(k)}\in\mathbb R^{p_k\times d_k} Wi(k)Rpk×dk W i ( v ) ∈ R p v × d v \mathbf W_i^{(v)}\in\mathbb R^{p_v\times d_v} Wi(v)Rpv×dv
  • 注意力汇聚的函数 f f f(加性、缩放点集…)
  • 输出可学习参数: W o ∈ R p o × h p v \mathbf W_o\in\mathbb R^{p_o\times h p_v} WoRpo×hpv
  • 多头注意力输出: W o [ h 1 ⋮ h h ] ∈ R p o . \begin{split}\mathbf W_o \begin{bmatrix}\mathbf h_1\\\vdots\\\mathbf h_h\end{bmatrix} \in \mathbb{R}^{p_o}.\end{split} Wo h1hh Rpo.

有掩码的多头注意力 Masked multi-head attention

解码器对序列中一个元素输出时,不应考虑该元素之后的元素
通过掩码来实现,计算 x i x_i xi的输出时假装当前序列长度为 i i i(valid_len控制)

基于位置的前馈网络 Positionwise FFN

  1. 将输入由(b, n, d)变成(bn, d)
  2. 作用两个全连接
  3. 输出形状由(bn, d)变回(b, n, d)

b=batch_size, n=time_step, d=dimention
为什么要变维度?如果不变则为(b, nd),n非定值,导致网络不好设计,因此手动变为(bn, d)
等价于两层核窗口为1的1x1卷积

残差+层归一化 Add & Norm

Residual connection + Normalization
层归一化LayerNorm vs. 批量归一化BatchNorm

  • BatchNorm批量归一化:对每个特征/通道里元素进行归一化
  • LayerNorm层归一化:对每个样本的元素进行归一化

normalization方差变1,均值变0;图中,len为序列长度对应time_step,d为dimention为一个元素的特征维度,b为batch_size;
如果是BatchNorm,每次序列长度len都不一样,会不稳定
add norm

信息传递

Encoder和Decoder之间的信息传递
编码器的输出 y 1 , . . . , y n y_1, ... , y_n y1,...,yn作为解码器第i个Transformer块中多头注意力的key和value,query来自输入解码器的目标序列
意味着编码器和解码器的块的个数和输出维度一样

预测

预测第t+1个输出时,解码器中输入前t个预测,在self-attention中前t个预测值为key和value,第t个预测值为query

总结

  • Transformer是Encoder-Decoder架构,纯用注意力机制
  • Encoder和Decoder都有n个transformer块
  • 每个块中用多头(自)注意力,基于位置的前馈网络和层归一化

参考

DIVE INTO DEEP LEARNING> 10 注意力机制 > 10.7. Transformer
DIVE INTO DEEP LEARNING> 11 Attention Mechanisms and Transformers > 11.7. The Transformer Architecture
68 Transformer【动手学深度学习v2】

系列文章

【动手学深度学习v2】注意力机制—1 注意力评分函数
【动手学深度学习v2】注意力机制—2 使用注意力机制Seq2Seq
【动手学深度学习v2】注意力机制—3 自注意力&位置编码
【动手学深度学习v2】注意力机制—4 Transformer

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值