Nlp Word2Vec的随机性是什么?

Nlp Word2Vec的随机性是什么?,nlp,gensim,word2vec,Nlp,Gensim,Word2vec,我正在用Gensim对几个不同的语料库中的单词进行矢量化,得到的结果让我重新思考Word2Vec的功能。我的理解是Word2Vec是确定性的,并且单词在向量空间中的位置不会随着训练而改变。如果“我的猫在跑”和“你的狗不能跑”是语料库中的两个句子,那么“跑”(或其词干)的值似乎必然是固定的 然而,我发现这个值确实在不同的模型中有所不同,当我训练模型时,单词在向量空间中的位置会不断变化。这些差异并不总是意义重大,但它们确实表明存在某种随机过程。我在这里遗漏了什么?虽然我不知道gensim中Word2

我正在用Gensim对几个不同的语料库中的单词进行矢量化,得到的结果让我重新思考Word2Vec的功能。我的理解是Word2Vec是确定性的,并且单词在向量空间中的位置不会随着训练而改变。如果“我的猫在跑”和“你的狗不能跑”是语料库中的两个句子,那么“跑”(或其词干)的值似乎必然是固定的


然而,我发现这个值确实在不同的模型中有所不同,当我训练模型时,单词在向量空间中的位置会不断变化。这些差异并不总是意义重大,但它们确实表明存在某种随机过程。我在这里遗漏了什么?

虽然我不知道gensim中Word2Vec的任何实现细节,但我知道,一般来说,Word2Vec是由一个简单的神经网络训练的,第一层是嵌入层。这个嵌入层的权重矩阵包含我们感兴趣的词向量

也就是说,通常随机初始化神经网络的权重也是很常见的。这就是随机性的起源

但是,不管不同的(随机)启动条件,结果怎么可能不同呢

一个训练有素的模型将为具有相似含义的单词分配相似的向量。这种相似性是通过两个向量之间的夹角的余弦来衡量的。从数学上讲,如果
v
w
是两个非常相似单词的向量,那么

dot(v, w) / (len(v) * len(w)) # this formula gives you the cosine of the angle between v and w
将接近
1

此外,它还可以让你像著名的

king - man + woman = queen
为了便于说明,请想象二维向量。如果你(例如)围绕原点旋转某个角度,这些算术属性会丢失吗?有一点数学背景,我可以向你保证:不,他们不会

那么,你的假设

如果“我的猫在跑”和“你的狗不可能在跑”是两个 语料库中的句子,然后是“running”(或其词干)的值 似乎必然是固定的


这是错误的。“运行”的值根本不是固定的。然而,(某种程度上)固定不变的是与其他单词的相似性(余弦)和算术关系。

这一点在中有详细介绍,我在这里引用:

问题11:我已经使用完全相同的文本语料库反复训练了我的
Word2Vec
/
Doc2Vec
/etc模型,但每次的向量都不同。是有错误还是我犯了错误?(*2vec培训非决定论) 回答:*2vec模型(word2vec、fasttext、doc2vec…)以随机初始化开始,然后大多数模式使用额外的随机 在训练期间。(例如,培训窗口是随机的 截断作为一种有效的方法,可以对较近的单词赋予较高的权重 选择默认负采样模式下的负示例 随机的。和高频率单词的下采样,作为控制 通过
sample
参数,由随机选择驱动 行为都是在最初的Word2Vec论文的算法中定义的 描述。)

即使所有这些随机性都来自于 伪随机数生成器,它已被植入种子以提供 可复制的随机数流(gensim默认情况下会这样做), 通常情况下,多线程训练可以进一步改变准确度 文本示例的训练顺序,以及最终的模型状态。 (此外,在Python3.x中,字符串的散列是随机化的 重新启动Python解释器-更改迭代顺序 一次又一次地听写词汇表,因此即使是相同的 随机数的字符串以不同的方式抽取不同的单词 发射。)

因此,可以预期,模型会因运行而异,甚至 根据相同的数据进行培训。没有一个地方适合任何人 要结束的单词向量或文档向量:仅在 与其他矢量的距离和方向越来越有用 在同一模型内共同训练。(通常,只有 在不同用途的交叉课程中一起训练 在坐标上可比。)

合适的训练参数应产生大致相同的模型 有用的,从运行到运行,因为彼此。测试和评估 过程应能容忍向量位置的任何变化,以及 本实用新型整体实用性中的小“抖动”,由 算法固有的随机性。(如果观察到的质量 运行之间的差异很大,可能还有其他问题:数据太少, 调整不当的参数,或评估中的错误/弱点 方法。)

您可以尝试通过使用
workers=1
来限制确定性 培训到单个线程–如果在Python 3.x中,则使用
PYTHONHASHSEED
环境变量以禁用其常用的字符串哈希 随机化。但训练将比更多的训练慢得多 线程。而且,你会模糊固有的 基本算法的随机性/近似性 可能会使结果更加脆弱,并依赖于一个团队的运气 特定设置。最好容忍一点抖动,并使用 过度抖动是数据中其他地方出现问题的指示器,或 模型设置——而不是强加肤浅的决定论