为什么transformer比RNN和LSTM更好?

transofrmer

在机器翻译的上下文中引入了transofrmer,目的是避免递归,以便允许并行计算(减少训练时间),并减少由于长期依赖性而导致的性能下降。主要特点是:

非顺序的:句子是整体处理的,而不是逐字处理。
self attention:这是新引入的“单位”,用于计算句子中单词之间的相似性得分。
位置嵌入:引入了另一种替代复发的创新。这个想法是使用固定或学习的权重,该权重对与句子中标记的特定位置有关的信息进行编码。

第一点是transofrmer不受长期依赖问题困扰的主要原因。原始transofrmer不依赖于过去的隐藏状态来捕获对先前单词的依赖性,而是整体上处理一个句子,这就是为什么不存在丢失(或“忘记”)过去信息的风险的原因。此外,多头注意力和位置嵌入都提供有关不同单词之间关系的信息。

RNN / LSTM

涉及该问题的递归神经网络和长期短期记忆模型的核心属性几乎相同:

顺序处理:句子必须逐字处理。
过去的信息通过过去的隐藏状态保留:序列到序列模型遵循Markov属性,假定每个状态仅取决于先前看到的状态。
第一个属性是无法并行训练RNN和LSTM的原因。为了将第二个单词编码为一个句子,我需要先前计算出的第一个单词的隐藏状态,因此我需要首先计算该单词。第二个特性是比较隐蔽的,但在概念上并不难掌握。由于先前计算出的隐藏状态,因此保留了RNN和LSTM中的信息。关键是特定单词的编码仅在下一个时间步被保留,这意味着单词的编码仅强烈影响下一个单词的表示,在几个时间步长之后其影响很快消失。由于通过特定单位对隐藏状态进行了更深的处理(带有要训练的参数数量增加),LSTM(以及GruRNN)可以提高他们可以学习的依赖范围,但是,问题本质上与递归有关。人们缓解此问题的另一种方法是使用双向模型,该模型从起点到终点以及从终点到起点从两个方向对同一句子进行编码,从而使句子结尾的单词具有对隐藏表示的创建产生更大的影响,但这只是一种解决方法,而不是长期依赖项的真正解决方案。

CNN

卷积神经网络在nlp中也被广泛使用,因为它们的训练速度非常快并且对短文本有效。他们解决依赖关系的方式是对同一句子应用不同的内核,实际上,由于它们是首次应用于文本(用于句子分类的卷积神经网络),因此它们被实现为多通道CNN。为什么不同的内核允许学习依赖关系?例如,由于大小为2的内核将学习单词对之间的关​​系,因此大小为3的内核将捕获单词三胞胎之间的关系,依此类推。这里明显的问题是,捕获句子中单词的所有可能组合之间的依存关系所需的不同内核的数量将是巨大且不切实际的,因为在增加输入句子的最大长度时,组合的数量呈指数增长。

总而言之,变形金刚要比其他所有架构都要好,因为它们完全避免了递归,通过整体处理句子以及学习单词之间的关系来感谢多头注意机制和位置嵌入。但是,必须指出,转换器也只能捕获用于训练它们的固定输入大小内的依赖项,即,如果我将最大句子大小设为50,则该模型将无法捕获a的第一个单词之间的依赖项。句子和单词出现的时间超过50个单词,就像在另一段中一样。诸如Transformer-XL之类的新转换器试图通过引入已存储的已编码语句的隐藏状态以在后续语句的后续编码中利用它们的隐含状态来重新引入递归,从而完全解决此问题。

你可能感兴趣的:(神经网络)