2

在 Word2Vec 中,我了解到 CBOW 和 Skip-gram 都产生一个单热编码值来创建一个向量(cmiiw),我想知道如何计算或表示一个单热编码值到一个实值向量,例如(来源:DistrictDataLab's Blog about Distributed Representations) from this: One-Hot Encoding 的例子 into: One-Hot Encoding 的例子 please help,我一直在努力寻找这些信息。

4

1 回答 1

4

word2vec 算法本身是增量学习实值向量的方法,具有不同的维度值。

与 one-hot 编码相比,这些向量通常被称为“密集嵌入”。它们是“密集的”,因为与 one-hot 编码不同,后者是“稀疏”的具有许多维度且大多数为零值,它们具有更少的维度并且(通常)没有零值。它们是“嵌入”,因为它们已经将一组离散的单词“嵌入”到另一个连续坐标系中。

您可能想阅读word2vec 的原始论文,以获得有关如何制作密集嵌入的完整正式描述。

但要点是密集向量完全随机开始,因此起初算法的内部神经网络对于预测相邻单词是无用的。但是文本语料库中的每个(上下文)->(目标)单词训练示例都会针对网络进行尝试,并且每次与所需预测的差异都用于对两个词向量应用微小的推动,以实现更好的预测和内部网络权重值。

重复了很多次,最初使用较大的微调(更高的学习率),然后使用越来越小的微调,密集向量将它们的坐标从初始随机性重新排列为有用的相对排列——一个尽可能好的预测给定模型本身的限制,训练文本。(也就是说,任何进一步的推动可以改善对某些示例的预测,但会使其他示例的预测恶化——所以你不妨考虑完成训练。)

然后,您从模型中读取生成的密集嵌入实值向量,并将它们用于除邻近词预测之外的其他目的。

于 2017-08-06T20:00:08.953 回答