很快就发现,在为目标任务初始化一个模型时,如果用word2vec或GloVe所定义的用于中级任务的预训练词向量进行训练,将会使模型在目标任务上更加具有优势。因此,由word2vec和GloVe生成的词向量在NLP的许多任务中找到了广泛的实验方法。 隐藏向量 这些预训练的词向量表现出有趣的属性,并提供了对随机初始化的词矢量的性能增益。但是正如上面所叙述的那样,单词很少独立出现。使用预训练词向量的模型必须学习如何使用它们。我们的工作是通过对中级任务进行训练,找到一种用于改进词向量情境化的随机初始化方法,从而提取词矢量。 编码器 情境化词向量的一种常见方法是使用一个循环神经网络(RNN)。RNN是一种处理可变长度的向量序列的深度学习模型。这使得它们适合于处理词向量的序列。我们使用的是一种称为长短期记忆网络(LSTM)的特定类型的RNN,从而更好地处理长序列。在处理的每个步骤中,LSTM接收一个词向量,并输出一个称为隐藏向量的新向量。该过程通常被称为编码序列,并且将执行编码的神经网络称为编码器。 图6:LSTM编码器接收一个词矢量序列并输出一个隐藏向量序列。 双向编码器 这些隐藏的向量不包含序列中稍后出现的单词的信息,但这一点很容易进行补救。我们可以反向运行一个LSTM从而获得一些反向输出向量,并且我们可以将它们与正向LSTM的输出向量相连,以获得更有用的隐藏向量。我们把这对正向和反向的LSTM当做一个单元,它通常被称为双向LSTM。它接收一个词向量序列,运行正向和反向LSTM,连接对应于相同输入的输出,并返回所得到的隐藏向量的结果序列。 图7:双向编码器包含每个单词前后的信息。 我们使用一组两个双向LSTM作为编码器。第一个双向LSTM处理其整个序列,然后将输出传递给第二个。 机器翻译中的隐藏向量 正如预训练的词向量被证明是许多NLP任务的有效表征一样,我们期望预训练我们的编码器,以便它能够输出通用的隐藏向量。为此,我们选择机器翻译作为第一个训练任务。机器翻译训练集要远大于其他大多数NLP任务的翻译训练集,翻译任务的性质似乎具有一种吸引人的属性,可用于训练通用情境编码器,例如,翻译似乎比文本分类这样的任务需要更一般的语言理解能力。 解码器 在实验中,j2直播,我们教编码器如何如何将英语句子翻译成德语句子,从而教它生成有用的隐藏向量。编码器为英语句子生成隐藏向量,另一个称为解码器的神经网络在生成德语句子时将引用这些隐藏向量。 正如LSTM是我们编码器的主干一样,LSTM在解码器中也扮演着重要的角色。我们使用一个与编码器一样具有两个层的解码器LSTM。解码器LSTM从编码器的最终状态初始化,读入一个特殊的德语词向量作为开始,并生成一个解码器状态向量。 图8:解码器使用单向LSTM从输入词向量中创建解码器状态。 注意 (责任编辑:本港台直播) |