Task07:优化算法进阶;word2vec;词嵌入进阶

Task07:优化算法进阶;word2vec;词嵌入进阶
Task07:优化算法进阶;word2vec;词嵌入进阶
也就是通过三百个维度,每个维度我们都赋予值,就算有299个维度值相同,有一个维度值不同,我们就可以判别为不同的词。通过这个方法,仅需要300维度,我们就可以表示所有的词汇。

一般的我们在我们平常输出的句子中会发现,有一些词的输出频率会特别高,比如‘the’,我们一般会通过二次采样来降低此类词出现的概率:对于出现在训练文中的每个单词,都会有一个从文本删除的概率,这个概率取决于相应单词的词频。

nagative sampling(负采样)
如果 vocabulary 大小为1万时, 当输入样本 ( “fox”, “quick”) 到神经网络时(fox为input, quick为output), “ fox” 经过 one-hot 编码,在输出层我们期望对应 “quick” 单词的那个神经元结点输出 1,其余 9999 个都应该输出 0。在这里,这9999个我们期望输出为0的神经元结点所对应的单词我们为 negative word. negative sampling 的想法也很直接 ,将随机选择一小部分的 negative words,比如选 10个 negative words 来更新对应的权重参数。

在论文中作者指出指出对于小规模数据集,建议选择 5-20 个 negative words,对于大规模数据集选择 2-5个 negative words.

如果使用了 negative sampling 仅仅去更新positive word- “quick” 和选择的其他 10 个negative words 的结点对应的权重,共计 11 个输出神经元,相当于每次只更新 300 x 11 = 3300 个权重参数。对于 3百万 的权重来说,相当于只计算了千分之一的权重,这样计算效率就大幅度提高。

词嵌入进阶:

Task07:优化算法进阶;word2vec;词嵌入进阶