动手学习深度学习(24)transformer

茴香豆 Lv5

Transformer作为编码器-解码器架构的一个实例。Transformer是由编码器和解码器组成的。Transformer的编码器和解码器是基于自注意力的模块叠加而成的,源(输入)序列和目标(输出)序列的嵌入(embedding)表示将加上位置编码(positional encoding),再分别输入到编码器和解码器中。

transformer架构

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

编码器

编码器使用layer normalization

解码器

使用Autoregressive,解码器每次的输入为上次解码器的输出和编码器的输出。

多头注意力(multi-head attention)

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

以两头注意力为例:

有掩码的多头注意力(masked multi-head attention)

  • 解码器对序列中一个元素输出时,不应该考虑该元素之后的元素
  • 可以通过掩码来实现。也就是计算 x_i 输出时,假装当前序列长度为 i

以计算第二个位置为例:

基于位置的前馈网络(相当于全连接)(Positionwise FFN)

  • 将输入形状由 (b,n,d) 变换成 (bn,d)
  • 作用两个全连接层
  • 输出形状由 (bn,d) 变化回 (b,n,d)
  • 等价于两层核窗口为1的一位卷积层

层归一化(add & norm)

  • 批量归一化(Batch Norm)对每个特征/通道里元素进行归一化。不适合序列长度会变的NLP应用。
  • transformer使用层归一化(Layer Norm)对每个样本里的元素进行归一化。

信息传递

  • 假设编码器中的输出 y_1,...,y_n
  • 将其作为编码中第 i 个Transformer块中多头注意力的key和value。它的query来自目标序列。
  • 意味着编码器和解码器中的块的个数和输出维度都是一样的。

cross attention

预测

  • 预测第 t+1 个输出时。
  • 解码器中输入前 t 个预测值。在自注意力中,前 t 个预测值作为key和value,第 t 个预测值还作为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