欢迎来到太阳集团8722娱乐!

太阳集团8722娱乐

高精度编码器成功进入中国航天领域

被列为重点攻关计划并已多次荣获科技创新项目基金!

咨询热线
0431-85102283
新闻中心
您的位置:太阳集团 > 行业新闻 > 详细内容

NLP深度学习的高级介绍RNN和变换器的工作原理

发布者:太阳集团8722娱乐2019-07-21

就在几年前,RNN及其门控变体(增加了乘法交互和更好的梯度转移机制)是用于NLP的最流行的架构。

像安德烈·卡尔帕西(Andrey Karpathy)这样的着名研究人员正在为RNN的不合理效力唱歌,而大公司则热衷于采用模型将其纳入虚拟代理商和其他NLP应用程序。

现在变形金刚(BERT,GPT-2)已经出现,社区甚至很少提到经常性的网络。

在本文中,我们将为您提供NLP深度学习的高级介绍; 我们将简要解释RNN和变压器如何工作以及后者的哪些特定属性使其成为适用于各种NLP任务的更好架构。


开始了!

让我们从RNN开始,为什么,直到最近,它们才被认为是特殊的。

递归神经网络是一系列神经架构,具有很酷的属性 - 循环机制 - 使其成为处理可变长度序列数据的自然选择。与标准NN不同,RNN可以在接收新输入时挂起来自先前层的信息。

这是它的工作原理

假设我们正在构建一个电子商务聊天机器人,它包含一个处理文本的RNN和一个预测其背后意图的前馈网络。机器人收到这条消息:“嗨!你们这件衬衫有不同的颜色吗?”

作为我们的输入,我们有11个单词(11个字嵌入)和序列,切入标记,看起来像这个I1,I2 ...... ..I11。

RNN背后的核心思想是它将相同的权重矩阵应用于每个单独的输入,并且还产生一系列隐藏状态(它们将具有与我们输入一样多的数据),其携带来自先前时间步骤的信息。

基于先前隐藏状态(Ht-1)和当前输入(It)计算每个隐藏状态(Ht); 正如我们所提到的,它们实际上是在每个时间步都不断修改的状态。

因此,处理开始于第一个单词嵌入(I1)与初始隐藏状态(H0)一起进入模型; 在RNN的第一个单元内,对I1和H0进行线性变换,增加偏差,最终值通过某种非线性(sigmoid,ReLU等) - 这就是我们得到H1的方式。

之后,模型吃I2与H1配对并执行相同的计算,然后I3与H2进入,接着是I4与H3,依此类推,直到我们完成整个序列。

由于我们一遍又一遍地使用相同的权重矩阵,因此RNN可以使用冗长的序列而不会增加大小本身。另一个优点是,理论上,每个时间步都可以访问许多步骤之前的数据。

问题

RNN的独特之处 - 它多次使用相同的层 - 也使它极易受到消失和爆炸渐变的影响。实际上,这些网络很难通过多个步骤保存数据。

此外,RNN在序列中看不到任何层次结构。每次处理新输入时,模型都会改变隐藏状态,尽管它可能无关紧要。因此,来自较早层的数据可能在网络到达序列结束时被完全洗掉。

这意味着在我们的例子中“嗨!你们有这种衬衫有不同的颜色吗?“前馈网可能只是试图根据”任何不同的颜色来预测意图?“即使是人类也不容易做到。

另一个固有的缺点在于顺序处理的本质:由于输入的一部分是一次处理一个(除非我们有H1,否则我们无法计算H2)网络的计算总体来说非常慢。

门控变种

为了解决上面讨论的问题,已经提出了不同的架构修改来改进RNN,最流行的是长短期记忆(LSTM)和门控循环单元(GTU)。

大致来说,LSTM背后的主要思想是除了隐藏状态之外,每个单元内都有一个单元状态 - 一个存储器存储器(它们都是相同大小的矢量)。

此外,这些模型具有三个门(忘记门,输入门,输出门),用于确定从单元状态写入,读取或擦除哪些信息。

所有的门都是与隐藏状态长度相同的向量,这正是它们的用途:

忘记门确定应保留什么与应从前一时间步骤擦除的内容。输入门确定应该将哪些新信息放入单元状态。输出门确定应将来自单元的哪些数据合并到隐藏状态。它们都是使用sigmoid函数计算的,因此它们总是输出0到1之间的值。

如果一个门产生接近1的东西,它被认为是开放的(数据可以包含在单元状态中),如果它给出一个接近0的值,则该信息将被忽略。

GRU的运行方式与LSTM类似,但它们在架构上更简单; 它们消除了单元状态并在隐藏状态之前计算了两个门而不是三个门。

GRU的要点是保持LSTM的功率和鲁棒性(在减少消失的梯度方面)并摆脱其复杂性。GRU的大门是:

更新门确定应修改隐藏状态的哪些部分以及应保留哪些部分。在某种程度上,它在LSTM中执行输入和忘记门的操作。

重置门确定隐藏状态的哪些部分现在很重要。如果它输出一个接近1的数字,我们可以复制先前的状态并使网络免于更新权重(没有重量调整 - 没有消失的梯度。)

LSTM和GRU都能够控制信息流,掌握远程依赖性,并根据输入使错误消息以不同的强度流动。

序列到序列(seq2seq)模型和注意机制

序列模型曾经在神经机器翻译(NMT)领域如此受欢迎,它由两个堆叠在一起的RNN(编码器和解码器)组成。

编码器按顺序处理输入并生成一个思想向量,用于保存每个时间步的数据。然后,它的输出被传递给解码器,解码器使用该上下文来预测适当的目标序列(翻译,聊天机器人的回复等)


然而,vanilla seq2seq的问题在于它试图将整个输入的上下文填充到一个固定大小的向量中,并且它可以携带多少数据是有限制的。

这是注意机制有用的地方。它们允许解码器网络在产生输出时关注输入的相关部分。他们通过为编码步骤中的每个解码步骤添加额外的输入来实现这一点。

RNN的堕落和变形金刚

是的,我们可以使用LSTM构建在RNN中延长短记忆,甚至使用注意力来记忆长记忆。但是我们仍然不能完全消除消失梯度的影响,使这些模型(其设计抑制并行计算)更快,或者让它们明确地模拟序列中的长程依赖性和层次结构。

Transformer是2017年谷歌研究人员推出的模型,它克服了RNN的所有缺点。这种全新的革命性架构使我们能够通过完全依赖注意机制来消除周期性计算并在各种NLP任务(NMT,问答等)中实现最先进的结果。

变压器也包括编码器和解码器。它实际上在一侧有一堆编码器,在另一侧有一堆解码器(具有相同数量的单元)。

编码器

每个编码器单元由自关注层和前馈层组成

自我关注是允许单元格将输入的内容与序列中的所有其他输入进行比较并将它们之间的关系包括在嵌入中的机制。如果我们在谈论一个单词,那么自我关注可以表示句子中哪些其他单词与之有很强的关系。

在变压器模型中,每个位置可以同时与输入中的所有其他位置相互作用; 网络的计算对于并行化来说是微不足道的。

自我关注层通过多头注意机制得到进一步增强,该机制提高了模型聚焦于各种位置的能力,并使其能够创建表示子空间(将不同的权重矩阵应用于相同的输入)。

为了建立输入的顺序,变换器为每个嵌入添加另一个向量(这称为位置编码),这有助于它们识别序列中每个输入的位置以及它们之间的距离。

每个编码器将其输出推送到其正上方的单元。

在解码器侧,单元也具有自注意层,前馈层和一个附加元件 - 编码器解码器注意层 - 在它们之间。变形金刚中的解码器组件接收来自顶部编码器的输出 - 一系列注意向量 - 并在预测目标序列时将其用于聚焦于输入的相关部分。

总的来说,变压器比RNN更轻,它们更容易训练,并且很适合并行化; 他们可以学习远程依赖。

结论性说明

变压器架构已成为许多突破性模型的基础。

谷歌的研究使用了“注意就是你所需要的”论文来开发BERT - 一种强大的语言表示模型,可以很容易地适应各种NLP任务(通过增加一个微调输出层)和OpenAI科学家设法创造了一个令人难以置信的连贯语言模型GPT-2,据他们说,这种模式太危险了,无法发布。

现在正在各种研究领域试用多头注意力技术。很快,我们可能会看到它以一种深刻的方式改变了多个行业。这将是令人兴奋的。