从产品经理视角学习AI-Transformer架构

122 阅读5分钟

一、为什么出现?

RNN虽然能捕捉记忆,但是有两个问题:

1、无法并行计算,计算效率低下

2、一些早期记忆会随着步数增加而逐渐遗忘,难以捕捉远距离元素的关系

在这样的背景下,Tansformer诞生了

二、整体架构

image.png

1、Word Embedding

image.png

初始输入X=将输入的单词转换为数字向量X1 + 将位置信息转换为数字向量X2

1.1、为什么需要位置信息?

传统的RNN是通过串行输入信息,其数字天然包含了隐藏的上下文和位置信息

而Transformer允许并行输入序列,transformer的自注意力机制会同时关注并行序列中的所有词语,计算一个词与其他所有词的关系。但模型是不知道这个词在原序列中的位置关系。如果没有位置信息,模型在学习“我爱你”和“你爱我”的时候,这俩句话顺序不同,语义相反,但此时模型难以区分这种顺序差异,可能会认为这俩句话是一个意思。

2、Self-Attention结构

2.1、单个self-attention结构

单个self-attention结构就长这样:

image.png

2.2、Q、K、V分别代表什么意思?

把Q、K、V可以想象成生活当中的查字典,比如你在读英语论文中,看到一个不认识的单词“attention”,你去词典里面查这个单词,那么:

  • Q(Query):就是你想要查的问题:这个单词代表什么意思?

    ——它代表你现在想要查什么信息

  • K(Key):这个单词在字典中的索引

    ——它代表现在数据库里面有哪些索引?标识

  • V(Value):这个单词在字典中的解释

    ——它代表这个标识代表什么信息?

在transformer中,这个Q、K、V就表示成了:每一个序列的词都要查下本体和其他词的关联:

  • 在处理句子“狗追猫”时,那么每一个词都会生成自己的Q:

    • 狗的Q可能表示为:我要做什么样的动作?/我的动词是什么?

    • 追的Q可能表示为:我的动作执行者是谁?/谁来承担这个动作?/我的作用对象是谁?

  • 同时,每一个词也会生成自己的K、V:

    • 追的K可能表示:我是一个动作索引/标识;V可能表示:表示追赶的行为

    • 猫的K可能表示:是一种动物标签/索引;V可能表示:表示一种常见动物,能跑会叫···

那么注意力机制通过计算Q和K的匹配度,即计算这个查询和哪一个索引最匹配,然后和V相乘,最终得到了这些词的相关性表示。

2.3、Q、K、V是怎么来的呢?

Self-Attention的输入为X,X通过线性变化矩阵W_Q、W_K、W_V变化得到的。

其中,W_Q、W_K、W_V是一个可学习的权重矩阵,初始值是随机的。可学习说明是通过反向传播和梯度下降来进行调整权重的。

那么得到Q、K、V后,就可以输出计算self-attention的值了。

image.png

2.4、Multi-head-Attention

顾名思义,就是由多个attention结构合一起:

image.png

将输入的矩阵X分别传入到h个不同的Attention层,得到不同的输出Z1、Z2...Zh,然后将这些矩阵拼接,再进行线性变化,得到新的矩阵Z0。

为什么要多头注意力机制?

——并行学习不同子空间特征。

可以这么理解:你在抓拍一个场景:

  • 你可能先关注“人物之间的位置关系”
  • 再关注“人物的动作”
  • 最后关注“表情动作”

多头注意力就是从多个视角来分析这个场景,从而让分析更全面。

3、Encoder-Decoder结构

encoder-decoder可以理解为将现实问题转换为数学问题,解决完再转换为现实问题的解决方案来输出

3.1、Encoder结构

Encoder由N个Encoder层组成

image.png

①、Add&Norm层组件(残差连接+层归一化)

  • Add:减少“梯度消失”,把当前模块的输入和输出加起来,既保留输出注意力计算的新特征,也保留了原输入信息的特征
  • Norm:对数据进行标准化处理,让模型更收敛

②、Feed Forward组件

  • 两层全连接网络,增强特征表达

3.2、Decoder结构

Decoder也是由N个相同的Decoder层组成

image.png

①、Masked-Multi-Head Attention(掩码多头自注意力)

在解码器生成输出的时候,是一个单词接着一个单词的生成。比如“I am a man”,在指向“am”的时候,后面的单词都会被掩码遮盖掉,这样模型无法知道后面的单词是什么,只能看到当前位置之前的内容并基于之前的内容进行预测。从而生成更符合内容的上下文内容。

②、Multi-Head Attention(多头注意力)

建立起编码器输出和解码器输入之间的关系,接收来自编码器的V、K输入和上一层解码器的Q输入,可以这么理解:询问编码器:关于输入,还需要注意什么?

注: Encoder是通过多层Encoder堆叠而成,这么做是为了能够进一步理解深层次的特征,更加融合上下文,从而输出更准确的结果。

image.png

4、输出

将归一化的特征映射到词汇表,输出每个单词的生成概率,最高概率的词就是模型的生成结果

image.png

三、总结

  • transformer没有用RNN,而是用了encoder-decoder架构
  • 通过前馈神经网络和自注意力机制生成中间状态
  • 自注意力机制是语义理解的钥匙
  • 多头注意力来并行计算不同子空间特征
  • transformer为大模型奠定基础