Transformer模型学习笔记

1 参考资料

该文介绍了RNN到Transformer的特征提取器,很全面
该文对Transformer论文的解释和介绍很清楚
该文对Transformer介绍也很透彻,本文主要内容来自这里,机会全文搬运,建议看
该文对Transformer有较多的补充,后文主要来自这里

论文的原文地址

2 模型主要内容

该模型是google提出的主要利用Attention思想做词embedding,也可以称为特征抽取器。目前大热的Bert也是以改模型为基础设计的,本文主要是对该模型进行一个学习记录。

模型的总体结构

该模型原本是由Google推出应用在翻译上的,因此,我们可以理解为,Transformer模型有以下的输入和输出:
在这里插入图片描述
对于Transformer模型来讲,它采用的是encoder-decoder架构,此架构是通过 input-encoder-处理-decoder-output这样的结构来规范化一些处理流程。
上图中的中间体黑盒,可以拆分为 编码组件(encoder)和解码组件(deconder)构成,如下:
在这里插入图片描述
其中对于 编码组件 和 解码组件,都由多个编码和解码单元构成。如下图(分别采用6个):
在这里插入图片描述

每个编码器和解码器如下图所示:
在这里插入图片描述
从编码器输入的句子首先会经过一个自注意力(self-attention)层,这层帮助编码器在对每个单词编码时关注输入句子的其他单词。
自注意力层的输出会传递到前馈(feed-forward)神经网络中。每个位置的单词对应的前馈神经网络都完全一样(译注:另一种解读就是一层窗口为一个单词的一维卷积神经网络)。

(解码器)decoder也包含encoder提到的两层网络,但是在这两层中间还有一层(注意力层)attention层,帮助当前节点获取到当前需要关注的重点内容。

模型的局部细节

已经了解了模型的大概构成,接下来我们对编码器和解码器进行详细的说明。
对于本模型输入的词,需要像所有的NLP任务那样,首先将每个输入单词通过词嵌入算法转换为词向量(embedding),例如采用World2vec模型。
在这里插入图片描述
本文中,每个单词都被嵌入到512维的向量中。

词嵌入过程只发生在最底层的编码器中。所有的编码器都有一个相同的特点,即它们接收一个向量列表,列表中的每个向量大小为512维。在底层(最开始)编码器中它就是词向量,但是在其他编码器中,它就是下一层编码器的输出(也是一个向量列表)。向量列表大小是我们可以设置的超参数——一般是我们训练集中最长句子的长度。

将输入序列进行词嵌入之后,每个单词都会流经编码器中的两个子层。
在这里插入图片描述
接下来我们看看Transformer的一个核心特性,在这里输入序列中每个位置的单词都有自己独特的路径流入编码器。在自注意力层中,这些路径之间存在依赖关系。而前馈(feed-forward)层没有这些依赖关系。因此在前馈(feed-forward)层时可以并行执行各种路径。

然后我们将以一个更短的句子为例,看看编码器的每个子层中发生了什么。

开始我们的encoder(编码)

对于句子“Thinking Machines”,通过词嵌入可以生成两个512维的词向量,将其输入到第一个编码器中。通过自注意力机制和前馈神经网络得到的输出向量再作为第二个编码器的输入。
在这里插入图片描述
输入序列的每个单词都经过自编码过程。然后,他们各自通过前向传播神经网络(完全相同的网络,而每个向量都分别通过它)

对于注意力机制(Attention)
宏观的角度(作用)

注意力机制即 使得进行embedding的时候 每个单词可以考虑上下文关系。例如对于句子:

The animal didn’t cross the street because it was too tired</

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值