您的位置:首页 > 科技 > 能源 > 多图带你读懂 Transformers 的工作原理

多图带你读懂 Transformers 的工作原理

2019-03-19 来源:雷锋网  浏览:    关键词:rnn,神经网络,attention,解码器

Transformer是一类神经网络架构,往常越来越受欢送了。

Transformer最近被OpenAI用于锻炼他们的言语模型,同时也被DeepMind的AlphaStar 采用,用于他们的程序击败那些顶级星际玩家。

Transformer是为理处置序列传导问题或神经网络机器翻译而设计的,意味着任何需求将输入序列转换为输出序列的任务都能够用,包括语音辨认和文本到语音转换等。

序列传导。

绿色表示输入,蓝色表示模型,紫色表示输出。

动图摘自:jalammar.github.io关于需求中止序列传导的模型,有必要有某种记忆。

例如,我们将以下句子翻译到另一种言语(法语):本例中,第二句话中的“the band”一词指代第一句中引入的“The Transformers”。

当你读到第二句中的"the band",你知道它指的是“The Transformers” band。

这可能对翻译很重要。

事实上,后一句话中的某个词指代前几句话中呈现的某个词,像这样的例子很多。

翻译这样的句子,模型需求找出之间的依赖和关联。

循环神经网络 (RNNs)和卷积神经网络(CNNs)由于其特性已被运用来处置这个问题。

让我们回想一下这两种架构及其缺陷。

循环神经网络内部有循环,允许信息保管其中。

如上图所示,我们看到神经网络的一部分A,处置输入x_t,然后输出h_t。

A处循环使得信息可从前一步传送至后一步。

能够换一种方式思索这些循环。

循环神经网络可以为是同一网络A的多重备份,每个网络将信息传送给其后续网络。

看一下假如我们将循环展开会如何:图中链式实质分明地标明循环神经网络与序列和列表相关。

假如以这种方式翻译一段文本,需求将文本中的每个单词设置为其输入。

循环神经网络将序列中前面的词语的信息传入后一个神经网络,这样便能够应用和处置这些信息。

下图展示了sequence to sequence模型通常是如何用循环神经网络工作的。

每个单词被单独处置,然后将编码阶段的隐状态传入解码阶段以生成结果句子,然后这样就产生了输出。

思索一下这类模型,即便用之前看到的单词预测下一个单词。

假如我们需求预测这句话“the clouds in the ___”的下一个单词,不需求额外的语境信息,很显然下个单词是“sky”。

这个例子里,相关信息和需预测单词的距离很近。

循环神经网络能够学习前面的信息,并找出句中下一个单词。

但有些状况我们需求更多语境信息。

例如试图预测这句话的最后一个单词: “I grew up in France… I speak fluent ___”。

最靠近这个单词的信息倡议这很有可能是一种言语,但当你想肯定细致是哪种言语时,我们需求语境信息France,而这出往常较前面的文本中。

当相关信息和词语之间距离变得很大时,RNN变得十分低效。

那是由于,需求翻译的信息经过运算中的每一步,传送链越长,信息就越可能在链中丧失。

理论上RNN能够学习这些长期依赖关系,不过理论表现不佳,学不到这些信息。

因而呈现了LSTM,一种特殊的RNN,试图处置这类问题。

我们平常布置日程时,通常会为不同的约会肯定不同的优先级。

假如有什么重要行程布置,我们通常会取消一些不那么重要的会议,去参与那些重要的。

RNN不会那么做。

无论什么时分都会不时往后面加信息,它经过应用函数转换全部现有信息。

在过程中一切信息都被修正了,它不去思索哪些重要,哪些不重要。

LSTMs在此基础上应用乘法和加法做了一些小改进。

在LSTMs里,信息流经一种机制称为细胞状态。

LSTM便能够选择性的记忆或遗忘那些重要或不重要的事情了。

LSTM内部看起来像是这样:每个细胞的输入为x_t (在句子到句子翻译这类应用中x_t是一个单词), 上一轮细胞状态以及上一轮的输出。

模型基于这些输入计算改动其中信息,然后产生新的细胞状态和输出。

本文不会细致讲每个细胞的完成机制。

假如你想了解这些细胞的运作机制,引荐你看一下Christopher的博客:采用细胞状态后,在翻译过程中,句子中对翻译单词重要的信息会被一轮一轮传送下去。

总体来说问题LSTM的问题与RNN一样,例如当句子过长LSTM也不能很好的工作。

缘由在于坚持离当前单词较远的上下文的概率以距离的指数衰减。

那意味着当呈现长句,模型通常会遗忘序列中较远的内容。

RNN与LSTM模型的另一个问题,由于不得不逐一单词处置,因而难以并行化处置句子。

不只如此,也没有长短范围依赖的模型。

总之,LSTM和RNN模型有三个问题:次第计算,不能有效并行化 没有显现的建模长短范围依赖 单词之间的距离是线性的为理处置其中部分问题,研讨者树立了一项能对特定单词产生留意力的技艺。

当翻译一个句子,我会特别留意我当前正在翻译的单词。

当我录制录音时,我会认真倾听我正在写下的部分。

假如你让我描画我所在的房间,当我这样做的时分,我会瞥一眼描画的物体。

神经网络用attention能够做到同样的效果,专注于给出信息的那部分。

例如,RNN可留意另一RNN的输出。

在每个时点它聚焦于其他RNN不同的位置。

为理处置这些问题,留意力(attention)是一种用于神经网络的技术。

关于RNN模型,与其只编码整个句子的隐状态,我们能够把每个单词的隐状态一同传给解码器阶段。

在RNN的每个步骤运用躲藏状态中止解码。

详见下面动图绿色步骤是编码阶段,紫色步骤是解码阶段,动图摘自此文:jalammar.github.io其背后的想法是句子每个单词都有相关信息。

为了精确解码,需求用留意力机制思索输入的每个单词。

关于要放入序列传导RNN模型的留意力,我们分红编码和解码两步。

一步以绿色表示另一步以紫色表示。

绿色步骤称为编码阶段紫色步骤称为解码阶段。

绿色步骤担任由输入树立隐状态。

我们把句子中每个单词产生的一切隐状态传入解码阶段,而不是和过去的attention一样,仅传送一个隐状态给解码器。

每个隐状态都会在解码阶段被运用,去找出网络应该留意的中央。

比如,当我们翻译这句 “Je suis étudiant”法语句子到英语时,需求在翻译时解码步骤去查不同的单词。

此动图展示当翻译“Je suis étudiant”至英语时,如何给每个隐状态赋予权重。

颜色越深关于每个单词的权重越大。

动图摘自此文:jalammar.github.io不过我们前面讨论的一些问题,用带attention的RNN依然无法处置。

比如,不可能并行处置输入的单词。

对较大的文本语料,增加了翻译文本的用时。

卷积神经网络能够辅佐处置这些问题,能够做到:并行化 (按层) 应用部分依赖 位置间的距离是对数级的一些最盛行的序列传导网络, 例如 Wavenet和Bytenet就采用卷积神经网络。

卷积神经网络可并行处置是由于,输入的每个单词可被同时处置并不用依赖于前一个单词翻译的结果。

不只如此,输出单词与任何CNN输入的单词的“距离”是log(N) 数量级— — 即输入单词到输出单词连线构成的树的高度 (如上面动图所示)。

这比RNN输出到其输入的距离要好很多,由于其距离是N数量级。

问题在于卷积神经网络在翻译句子过程中不一定有助于处置依赖问题。

这就是transformers被发明出来的缘由,它分离了CNN和attention机制.Transformers模型试图分离卷积神经网络和attention机制处置并行化问题。

attention机制提升模型从一个序列转换为另一个序列的速度。

从内部来看Transformer与之前模型架构相似,只是Transformer由6个编码器和6个解码器组成。

编码器十分相似,一切编码器都具有相同的架构。

解码器也有相同的属性诸如相互之间十分相似。

编码器有两层: self-attention层和前馈神经网络层。

编码器的输入先进入self-attention层,有助于编码器在编码句中特定单词时可参考输入句子中其他单词。

解码器也包含这两层,不过在两层中间增加了attention层,以辅佐解码器聚焦到输入句子的相关部分。

我们来看一下模型中各种不同的向量/张量,它们在已锻炼模型组件中如何流转,从而把输入转化成输出的。

由于这是一个NLP应用实例,我们先用词嵌入算法把每个输入的词语转换为词向量。

每个单词被转换为一个长度512的向量。

图中我们用这些简单的方块表示这些向量。

仅在最底层的解码器处中止词嵌入转换。

关于一切编码器,它们都接纳大小为512的向量列表

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:service@qeerd.com,投稿邮箱:tougao@qeerd.com