0
点赞
收藏
分享

微信扫一扫

大模型基础之注意力机制和Transformer

【注意力机制】

核心思想:在decoder的每一步,把encoder端所有的向量提供给decoder,这样decoder根据当前自身状态,来自动选择需要使用的向量和信息.

【注意力带来的可解释性】

decoder在每次生成时可以关注到encoder端所有位置的信息。

通过注意力地图可以发现decoder所关注的点。

注意力使网络可以对齐语义相关的词汇。

【注意力机制的优势】

RNNs顺序计算阻碍了并行化

论文:Attention is all you need

【Transformer的结构】

概览encoder-decoder结构

把句子/单词序列切分成一个个的单元,每个单元叫做token,通过embedding幻化为一个向量。

输入层:token的byte pair encoding+token的位置向量(表示它在文本中的位置)

中间模型结构:一些编码和解码块的堆叠。

输出: 一个在词表上的概率分布

损失函数:交叉熵

【输入层:BPE + PE】

BPE byte pair encoding一种分词算法

解决了OOV(out of vocabulary)问题,把罕见字词和未知词编码为字词,例如用一些词根组合来表示。

PE:位置编码

因为不像RNN顺序依次处理每个单词,所以要把位置信息编码后喂给模型。

input=bpe+pe

以上就是论文中比较经典的图啦,对于小白来说太复杂了,暂时不建议深究。

【对transformer的感性认识】

作为一个实用主义者,为了更好的理解和方便后续应用大模型,此处粗略从感性角度讲一下,不妥之处请大拿评论区斧正。

【tansformer由两部分组成】

Transformer 由 Encoder 和 Decoder 两个部分组成,Encoder 和 Decoder 都包含 6 个 block。

如论文中图1所示:Transformer 的内部结构图,左侧为 Encoder block,右侧为 Decoder block。橘黄色部分为 Multi-Head Attention(多头注意力),是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

【自注意结构和多头注意力结构】

图2左边是 Self-Attention 的结构,右边是多头,即Self-Attention 重复N遍。

Self-Attention 的结构,在计算的时候需要用到矩阵Q(查询),K(键值),V(值)。而Q,K,V正是通过 Self-Attention 的输入层(词嵌入表示+位置编码)进行线性变换得到的。

其中有个操作时:每个词的Q矩阵都要与其他每个单词的K进行内积,我猜以此来表征句子中每个单词间关系,同时通过权重来反映“注意力”落在了哪里。

那多头就是重复N次自注意力结构的结算,Transformer 中 Multi-Head Attention 中有多个 Self-Attention,可以捕获单词之间多种维度上的相关系数 attention score。

Feed Forward 层比较简单,是一个两层的全连接层,将高维变低维度,方便后续的分类或其他任务。

【decoder块】

1、自底向上方法第一个多头的是masked多头,就是遮盖的意思,在生成第i个词的时候遮住第i个以后的词。它的输入是:样本输出句子编码矩阵/翻译后的句子编码矩阵+masked矩阵。

2、自底向上方法第二个多头矩阵和encoder里的多头计算基本一致。 主要的区别在于其中 Self-Attention 的 K, V矩阵不是使用 上一个 Decoder block 的输出计算的,而是根据 Encoder 的输出 C计算得到 K, V,根据上一个 Decoder block 的输出 Z 计算 Q

这样做的好处是在 Decoder 的时候,每一位单词都可以利用到 Encoder 所有单词的信息。

原理的知识暂且分享到这里,后面以更加实用的应用知识为主。

课后阅读:

transformer模型详解

举报

相关推荐

0 条评论