Koan:使用正确的CBOW更新的word2vec否定采样实现

2021-01-03 09:53:44

...禅宗的态度是言语与真理是不相容的,或者至少没有言语可以捕捉真理。

具有正确的CBOW更新的word2vec否定采样实现。 kōan仅取决于本征。

尽管连续词袋(CBOW)嵌入比skipgram(SG)嵌入可以更快地进行训练,但人们普遍认为SG嵌入在实践中往往表现更好。 Word2Vec的原始作者[1]和随后的工作[2]都观察到了这一点。但是,我们发现带有负采样的word2vec的流行实现(例如word2vec和gensim)无法正确实现CBOW更新,因此,如果经过正确培训,可能会导致对CBOW嵌入性能的误解。

我们发布kōan,以便其他人可以使用更正后的权重更新有效地训练CBOW嵌入。有关kōan与gensim word2vec否定采样实现的基准,请参阅此技术报告。如果您使用kōan为自己的作品学习单词嵌入,请引用:

Ozanİrsoy,Adrian Benton和Karl Stratos。 "kōan:已更正的CBOW实施。 arXiv预印本arXiv:2012.15332(2020)。

[1] Tomas Mikolov,Ilya Sutskever,Kai Chen,Greg S Corrado和Jeff Dean。单词和短语的分布式表示及其组成。在神经信息处理系统的进展中,第3111–3119页,2013年。

[2] Karl Stratos,Michael Collins和Daniel Hsu。计数矩阵分解产生的基于模型的词嵌入。在《计算语言学协会第53届年会暨第七届自然语言处理国际联合会议》(第1卷:长论文)的会议记录中,第1282-1129页,2015年。

您需要一个支持C ++ 17的编译器来构建koan(已通过g ++ 7.5.0、8.4.0、9.3.0和clang 11.0.3测试)。 安装就像将koan二进制文件放在PATH上一样简单(您可能需要sudo): ./build/koan -V 2000000 \ --epochs 10 \ --dim 300 \ --negatives 5 \ --context-size 5 \ -l 0.075 \ --threads 16 \ --cbow true \ --min-count 2 \ --file ./wikitext-2/wiki.train.tokens 或使用--cbow false来运行跳过图嵌入。 ./build/koan --help以获得命令行参数和描述的完整列表。 学习到的嵌入内容将保存到当前工作目录中的embeddings _ $ {CURRENT_TIMESTAMP} .txt中。