Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
我有一个用于词嵌入的语料库。使用这个语料库,我训练了我的单词嵌入。但是,每当我训练单词嵌入时,结果就大不相同了(此结果基于K最近邻(KNN))。例如,在第一次训练中,“计算机”附近的单词是“笔记本电脑”,“计算机化”,“硬件”。但是,在第二次训练中,这knn个单词是“软件”,“机器”,...(“笔记本电脑”的排名低!)-所有训练均独立执行20个纪元,并且超参数都相同。
我想训练我的词嵌入非常相似(例如,“笔记本电脑”的排名很高)。我应该怎么做?我应该调制超参数(学习率,初始化等)吗?
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
2年前关闭。
我有一个用于词嵌入的语料库。使用这个语料库,我训练了我的单词嵌入。但是,每当我训练单词嵌入时,结果就大不相同了(此结果基于K最近邻(KNN))。例如,在第一次训练中,“计算机”附近的单词是“笔记本电脑”,“计算机化”,“硬件”。但是,在第二次训练中,这knn个单词是“软件”,“机器”,...(“笔记本电脑”的排名低!)-所有训练均独立执行20个纪元,并且超参数都相同。
我想训练我的词嵌入非常相似(例如,“笔记本电脑”的排名很高)。我应该怎么做?我应该调制超参数(学习率,初始化等)吗?
最佳答案
您没有说要使用什么word2vec软件,这可能会改变相关因素。
word2vec算法在初始化和训练的多个方面都固有地使用了随机性(例如,如果使用负采样,或者非常频繁的单词的随机下采样,则选择否定示例)。此外,如果您正在执行多线程训练,则OS线程调度中的本质上随机的抖动将改变训练示例的顺序,从而引入另一种随机性来源。因此,即使使用完全相同的参数和语料库,也不必期望随后的运行即可得出相同的结果。
尽管如此,如果有足够好的数据,合适的参数和适当的训练循环,则每次运行的相对邻居结果都应该非常相似。如果不是这样,更多的数据或更多的迭代可能会有所帮助。
如果模型对于您的语料库而言过大(尺寸/词过多),则很可能会产生截然不同的结果,从而易于拟合。就是说,它通过本质上记住其特性来找到一种很好的数据配置,而没有获得任何泛化能力。而且,如果这种过度拟合是可能的,那么通常会有很多同样好的记忆,因此它们可能与实际情况大不相同。同时,具有大量数据的大小合适的模型将捕获真实的一般性,并且尽管有任何随机性,但它们在每次运行之间都更加一致。
获取更多数据,使用更小的向量,使用更多的训练通过次数,或增加单词出现的最小次数以保留/训练单词都可能有所帮助。 (非常少见的单词不会获得高质量的向量,因此结束时只会干扰其他单词的质量,然后随机侵入最相似的列表中。)
要知道还有什么不对劲,您应该在问题中阐明以下内容:
使用的软件
使用的模式/元参数
语料库大小(以示例数为单位),平均样本大小(以单词为单位)和唯一单词计数(均在原始语料库中,并且在应用任何最小计数之后)
预处理方法
您用于培训的代码(如果您要自己管理多次培训,则可以通过)
08-24 23:22