科学解释为什么word2vec模型在小数据上表现不佳

时间:2017-12-14 12:02:09

标签: word2vec gensim

我想知道是否有任何科学解释为什么像CBOW这样的word2vec模型在小数据上表现不佳。这是我测试的内容;

data=[[context1], [context2], [context3]......[contextn]]

model=trained word2vec model

model.most_similar('word')
output=[word not in even in top-10]

我用10倍的数据集重新训练了模型。

model.most_similar(word)
output=[word in the 10 most similar words]

是否有任何科学原因可以提高性能,因为随着数据量的增加数据量的增加,数据量会增加?

1 个答案:

答案 0 :(得分:2)

单词在随机位置开始进行word2vec训练,而Word2Vec只能“推断”一对单词是相似的,如果它看到许多指导性的例子,逐渐通过所有训练,将这些单词推到相似的位置。它只能排列很多很多单词,以便所有这些成对的相似性同时得到支持,如果它得到许多很多不同的例子,那么很多很多很多机会逐渐将它们推到更好的地方。

如果你有一个很小的数据集:

(1)可能没有或很少有例子表明期望相似的单词在相似的附近单词上下文中。对于 no 示例,其中存在共享的附近单词,将该对轻推到同一位置的基础很少 - 内部Word2Vec任务,预测附近的单词,不需要他们彼此靠近,如果他们每个人都预测完全不同的话。但即使使用少数示例,也存在问题,例如......

(2)单词需要从原始随机位置移动很多,最终到达成功的word2vec会话中有用的“星座”。如果一个单词仅出现在您的数据集中10次,并且您在数据集10次迭代上进行训练,则该单词仅获得100次CBOW微调。相反,如果单词出现1000次,那么10次训练迭代会给它10,000次CBOW更新 - 从最初任意位置移动到有用位置的机会要大得多。因此,您可以有时通过增加训练迭代来从较小的数据集中挤出略微更好的结果。这有点模拟了一个更大的语料库。但是在那些重复的背景下仍然没有真正的变化,所以你仍然有......的问题。

(3)较小的数据集,具有较大的模型(许多“自由参数”,如每个上下文单词和预测目标单词的独立坐标),会产生“过度拟合”。也就是说,他们可以真正擅长培训任务,主要是通过“记忆”数据的特性,而不是实现通常希望能够将结果应用于新颖的各种数据的那种压缩/概括。例如,在一个很小的语料库中,有很多内部参数,也许“快乐”和“欣喜若狂”不会需要彼此靠近 - 它们的上下文只重叠一点,并且有很多模型中的“空间”将它们置于完全不同的位置,但仍能很好地预测其相邻的单词。您有时可以通过缩小模型来挤压任何可能的泛化,例如,当数据集很小时,使矢量size参数小得多。然后,它仍然被迫利用存在的任何(少数)上下文相似性。

但Word2Vec的本质是使用批量数据和批量训练来强制发现可推广的模式 - 所以将小型语料库扩展为只是几乎不能利用它的东西的技巧它最强的方式。