当前位置: 附加器 >> 附加器介绍 >> NLP深度学习的高级介绍RNN和变换器的
就在几年前,RNN及其门控变体(增加了乘法交互和更好的梯度转移机制)是用于NLP的最流行的架构。
像安德烈·卡尔帕西(AndreyKarpathy)这样的着名研究人员正在为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(编码器和解码器)组成。
编码器按顺序处理输入并生成一个思想向量,用于保存每个时间步的数据。然后,它的输出被传递给解码器,解码器使用该上下文来预测适当的目标序列(翻译,聊天机器人的回复等)
然而,vanillaseq2seq的问题在于它试图将整个输入的上下文填充到一个固定大小的向量中,并且它可以携带多少数据是有限制的。
这是注意机制有用的地方。它们允许解码器网络在产生输出时
转载请注明:http://www.aideyishus.com/lkyy/1810.html