吴恩达深度学习-序列模型 2.6 Word2vec

2020-02-08  本文已影响0人  prophet__

我们今天要学习的就是上一次讲到的通过上下文当中的某个单词进行嵌入矩阵训练的算法,Word2Vec。

首先我们会将它分成两个部分,context(上下文中的某个单词),target(要预测的单词)。要注意的是,这个target是在context某个词距之内的词,不能离这个词太远。它可以是这个词距之内的任意一个词,上图的例子是使用orange作为context选出不同的target进行预测。

这个模型要解决的并不是预测的问题,而是通过预测这个过程来训练这个嵌入矩阵。

在这个模型里,我们使用的是跟之前类似的组合,通过E和one-hot向量获取到context词对应的嵌入向量,然后属于softmax分类器,找到对应的词。

softmax分类器的公司如上图所示,它表示的是出现t单词的概率。里面有一个参数叫做Θt,这个参数跟预测结果相关。softmax的损失函数跟之前我们学习过的softmax损失函数相似,是对数总和的负值。

这个模型其实有一些问题,其中比较重点是计算速度问题,在1W个单词的时候,这个计算速度虽然比较慢但是还是可以接受的。 但是如果你使用的是10W或者100W个单词的时候下面那个求和的公式会带来很大的计算代价。

文献里有一种通过分级(树形)softmax解决这个问题的方法,把softmax变成一个二分类的分类器来对单词进行分类,这样可以减少求和这一步。分类器的个数跟词汇表呈log关系。在构建这个分类树的时候,往往不会是左右完美对称的,如果某个词的词频比较高,那么它往往会被放在比较浅层的地方,这样会比较容易被找到。

如何对context进行选择

如果我们按照均匀随机的方法,在整个语料库里随便选一个词,那么选到and、of、or这种连词跟谓语会很多,那么你的模型就会经常在训练这些词的嵌入向量。因此需要一些启发性的操作比如限制阈值或者是平衡数量来对这个语料库进行训练限制。

上一篇下一篇

猜你喜欢

热点阅读