动手学习深度学习(24)transformer
Transformer作为编码器-解码器架构的一个实例。Transformer是由编码器和解码器组成的。Transformer的编码器和解码器是基于自注意力的模块叠加而成的,源(输入)序列和目标(输出)序列的嵌入(embedding)表示将加上位置编码(positional encoding),再分别输入到编码器和解码器中。
transformer架构
- 基于编码器-解码器架构来处理序列对
- 跟使用注意力的seq2seq不同,Transformer是纯基于注意力
编码器
编码器使用layer normalization
解码器
使用Autoregressive,解码器每次的输入为上次解码器的输出和编码器的输出。
多头注意力(multi-head attention)
- 对同一key,value,query,希望抽取不同的信息。例如短距离关系和长距离关系。
- 多头注意力使用个独立的注意力池化。合并各个头(head)输出得到最终输出。
以两头注意力为例:
有掩码的多头注意力(masked multi-head attention)
- 解码器对序列中一个元素输出时,不应该考虑该元素之后的元素
- 可以通过掩码来实现。也就是计算输出时,假装当前序列长度为
以计算第二个位置为例:
基于位置的前馈网络(相当于全连接)(Positionwise FFN)
- 将输入形状由变换成
- 作用两个全连接层
- 输出形状由变化回
- 等价于两层核窗口为1的一位卷积层
层归一化(add & norm)
- 批量归一化(Batch Norm)对每个特征/通道里元素进行归一化。不适合序列长度会变的NLP应用。
- transformer使用层归一化(Layer Norm)对每个样本里的元素进行归一化。
信息传递
- 假设编码器中的输出
- 将其作为编码中第个Transformer块中多头注意力的key和value。它的query来自目标序列。
- 意味着编码器和解码器中的块的个数和输出维度都是一样的。
cross attention
预测
- 预测第个输出时。
- 解码器中输入前个预测值。在自注意力中,前个预测值作为key和value,第个预测值还作为query
- Title: 动手学习深度学习(24)transformer
- Author: 茴香豆
- Created at : 2023-02-13 19:42:13
- Updated at : 2023-02-16 09:01:17
- Link: https://hxiangdou.github.io/2023/02/13/DL_24/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments