吴恩达深度学习-序列模型 2.5 学习词嵌入
2020-02-07 本文已影响0人
prophet__
我们之前的几节课讲的都是如何应用词嵌入的特征向量来推导词与词之前的相关关系,那么如何获得这个词嵌入的向量集呢?今天我们就来学习几个关于词嵌入的算法。
现在流行的学习词嵌入算法往往都异常的简单,让人们会觉得有些神奇,为了更好地让大家能理解到算法在其中起到什么作用,我们从一个比较复杂的算法开始讲起。
首先,我们需要通过之前提到的E和one-hot向量把每个单词对应的e_xxxx从嵌入矩阵当中提取出来,获得了每个单词的嵌入向量之后,把它们进行堆叠,放入一个神经网络当中,然后经过softmax分类器,获得最后预测出的就是正确的单词。
往往在使用过程当中,我们不会把整个句子的嵌入向量都堆叠起来,而是选择要预测单词的前n个单词的嵌入向量。
这些词的嵌入向量作为神经网络的输入向量,成为了参数的一部分,在训练集向后传播的时候,就会对他们造成改变,会生成更加精确的E。
然后我们就可以发散一下,除了使用要预测单词前面的4个单词作为输入量之外,还有什么其他的形式可以预测这个单词呢?
很容易想到的是,我们不止使用前面的4个单词,还有包括后面的上下文,这样能更精确地预测这个词。
但是在实验当中发现了一个很有趣的现象,我们可以使用它的上一个词,或者是上下文当中的某一个词作为输入的嵌入向量,来进行训练。在这种情况下,我们也同样可以得到一个很好的嵌入向量集。(但是如果你要做的是一个单词预测模型,上下文多一点会更好)
这个算法的思想叫做skip-gram,我们在下节课当中会讲到。