机器学习实战(第二版)读书笔记(5)——通俗易懂Transformer

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、前言

2017年Google研究团队提出了“注意力就是你所需要 的一切”首次创建名为Transformer架构。目前Transformer仍然很热应用领域也很广最近读书的时候再次看到了这个模型所以想写一个总结旨在全面浅显得介绍此模型方便日后回顾。如果有问题欢迎批评指正。

阅读本文请先确保了解了一些编码器—解码器attention机制相关知识。如若不然请先看seq2seq模型&注意力机制BahdanauAttentionLuongAttention详解

二、Transformer

Transformer架构如下图1所示模型由编码器和解码器两部分组成没有使用任何循环层或卷积层只有注意力机制(加上嵌入层、密集层、归一化层、位置编码等)。下面将分别进行讲解。

图1Transformer架构

 2.1 Transformer中Encoder

左侧是编码器顶部堆叠了N次论文中N=6

作用对输入的单词序列进行编码序列中的每个单词的编码维度为512

输入[批处理大小最大输入句子长度] -——>输出[批处理大小最大输入句子长度512]

 2.2 Transformer中Decoder

解码器的顶部也堆叠了N次论文中N=6编码器堆的输出在N 层的每层中都馈送到解码器。

训练期间

  • 输入1、目标句子(ID的序列)向右移动一个时间步长(即在序列的开头插入一个序列开始令牌)。2、编码器的输出 (即来自左侧的箭头)。
  • 输出每个时间步长输出每个可能的下一个单词的概率(输出形状为[批处理大小最大输出句子长度词汇表长度])。

在推理期间

  • 输入因无法向解码器提供目标值因此改为提供先前输出的单词(从序列开始令牌开始)。
  • 输出每个时间步长输出每个可能的下一个单词的概率(在下一 回合中将其馈送到解码器直到输出序列结束令牌)。

 2.3 Multi-Head attention

编码器的多头注意力(Multi-Head Attention)层图2所示目的对同一句子中每个单词与其他单词之间的关系进行编码更加关注最相关的单词。它是缩放点积注意力的堆叠所以要理解“多头注意力”层如何工作我们必须首先理解自注意力及缩放点积注意力。

图2多头注意力

2.3.1 自注意力(self-attention)

为自注意力最原始的公式

对应下面的图\large x_1^T对应“早”字embedding之后的结果以此类推。矩阵\large XX^T是一个方阵里面保存了每个向量和自己与其他向量进行内积运算的结果与Luong注意力一样它表示每个单词与其他单词及本身的相关度。到这相信这个公式就不难理解了。

2.3.2 缩放点积注意力

公式如图三所示是不是和上面的公式差不多只是X换成了QKV。

图3缩放点积注意力

 QKV怎么来的呢其实都是\large X与矩阵的乘积本质上都是\large X的线性变换因为矩阵\large W都是可以训练的起到一个缓冲的效果提高模型的拟合能力。

的意义这使得的softmax分布的陡峭程度和d成功解耦从而使得Transformer在训练过程中的梯度值保持稳定

 2.4、位置嵌入

 为什么需要位置编码

如果词语出现位置不同意思可能发生翻天覆地的变化。Transformer 的是基于self-Attention地而self-attention是不能获取词语位置信息地就算打乱一句话中词语的位置每个词还是能与其他词之间计算attention值。

 位置编码公式如下具体怎么来的可以去看原文

图四位置编码公式

位置嵌入和特征嵌入明显是异构的那么为什么不是连接而是累加

有上面公式可以看出两者效果相同但 concat会引入额外参数。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: 机器学习