📜  变压器入门

📅  最后修改于: 2022-05-13 01:58:07.873000             🧑  作者: Mango

变压器入门

Transformer 是 2017 年提出的深度学习模型,本质上用于 NLP 任务。如果您从事自然语言处理任务,例如文本摘要、翻译或情感预测,那么您会经常遇到这个术语。

RNN 遇到了导致长期记忆丧失的消失梯度问题。 RNN 按顺序处理文本,这意味着如果有一个长句,例如“XYZ 于 2019 年去过法国,当时没有新冠肺炎病例,他在那里遇到了那个国家的总统。”现在,如果我们问这里的“那个国家”是指哪个地方? RNN 将无法回忆起这个国家是“法国”,因为它很久以前就遇到过“法国”这个词。处理的顺序性意味着模型是在单词级别而不是句子级别进行训练的。梯度携带在 RNN 参数更新中使用的信息,当梯度变小时,就不会进行真正的学习。

通过增加几个记忆单元并解决梯度消失的问题,长期记忆丧失的问题得到了一定程度的解决。但是顺序处理的问题仍然存在,因为 RNN 无法一次处理完整的句子。它不是并行处理,而是一个一个地处理单词。由于 LSTM 的顺序设计,这个问题无法在 LSTM 中解决。在 LSTM 中,我们使用静态嵌入方法,这表明我们在不知道单词上下文的情况下将其嵌入到某个 n 维向量中。但是,如果上下文发生变化,含义也会发生变化。

例如:有一个词-'Point ',我们在下面给出的两个不同上下文中使用它

  • 针有一个尖
  • 指着人是不礼貌的。

在这里, “Point”这个词在两个句子中都有两个不同的上下文,但是当嵌入完成时,上下文没有考虑在内。因此,需要一种不同的架构——Transformer。 Transformer 是在论文Attention is All You Need 中提出的



神经网络主要分为两组,即前馈反馈。变压器基于前馈网络,这意味着信息从输入移动到输出,并且不包含反馈回路。与此相反,LSTM 使用反馈网络,这意味着信息可以向两个方向传递,并且它由反馈路径组成,即我们可以再次利用记忆进行新的预测。

现在,来到 Transformer 的架构。编码器解码器是 Transformer 的构建块。编码器块将输入词序列转换为向量,解码器将向量转换为序列。例如:处理成对应英文的法文文本可以是:

Je suis étudiant –> 我是学生。

变压器架构

编码器架构有两层: Self AttentionFeed Forward 。编码器的输入首先通过自注意力层,然后自注意力层的输出被馈送到前馈神经网络。顺序数据具有时间特征。它表示每个词都相对于另一个词具有某种位置。例如,让我们看一句话-“猫没有追老鼠,因为它不饿”。在这里,我们可以很容易地看出“它”指的是猫,但对于算法来说并不那么简单。当模型处理“it”这个词时,自我注意允许它把“it”和“cat”联系起来。 Self-attention 是一种基于句子的所有其他单词重新表述表示的方法。

Transformer的编码器和解码器层架构

解码器架构有三层:Self Attention、Encoder-decoder attention和Feed Forward。解码器同时具有自注意力和前馈层,它们也存在于编码器中,但它们之间有一个注意力层,帮助解码器专注于输入句子的相关部分。

Transformer 架构中有六层编码器和解码器。在底部编码器中,执行词嵌入并将每个词转换为大小为 512 的向量。其他编码器的输入将是直接位于下方的编码器的输出。编码器的各个层用于发现 NLP 管道。 Like——第一层用于词性标签,第二层用于成分,第三层用于依赖,第四层用于语义角色,第五层用于共指,第六层用于关系。

最后一层是 Softmax 层,它为词汇表中的每个单词分配一个概率,所有这些概率之和为 1。