标签: vector-space

在使用余弦相似度之前是否有任何理由(不)对向量进行 L2 归一化?

我正在阅读 Levy 等人的论文“Improving Distributional Comparison\nwith Lessons Learned from Word Embeddings”,在讨论他们的超参数时,他们说:

\n\n
\n

向量归一化 (nrm)正如第 2 节中提到的,所有向量(即 W\xe2\x80\x99s 行)都归一化为单位长度(L2 归一化),使点积运算等效于余弦相似度。

\n
\n\n

然后我想起sim2Rtext2vec包中向量相似度函数的默认值首先是 L2 范数向量:

\n\n
sim2(x, y = NULL, method = c("cosine", "jaccard"), norm = c("l2", "none"))\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我想知道,归一化余弦(无论是在 text2vec 方面还是一般情况下)的动机可能是什么。我尝试阅读 L2 范数,但大多数情况下它是在使用欧几里德距离之前进行标准化的背景下出现的。我(令人惊讶地)找不到任何关于在词向量空间/嵌入的余弦相似性的情况下是否推荐或反对 L2 范数的任何信息。而且我不太具备计算分析差异的数学技能。

\n\n

所以这里有一个问题,意味着在从文本数据学习的词向量空间的背景下(要么只是可能由 tfidf、ppmi 等加权的共现矩阵;或者像 GloVe 这样的嵌入),并计算词相似度(目标是当然使用最能反映现实世界单词相似性的向量空间+度量)。
简而言之,在计算向量/单词之间的余弦相似度之前,是否有任何理由(不)在单词特征矩阵/术语共现矩阵上使用 L2 范数?

\n

normalization cosine-similarity vector-space text2vec

8
推荐指数
2
解决办法
1万
查看次数

Three.js - 如何围绕Vector3点旋转相机?

好的,我会尝试尽可能简洁.我对数学不是很了解,对你来说看起来很明显很可能对我来说是火箭科学.

我正在使用带有CSS3DRenderer的Three.js来创建虚拟图库空间.

我需要第一人称视角,就像FPS游戏一样.

我已经让相机成功向前,向后,向左和向右移动.

但是,当我去旋转相机时,我得到了结果 如图所示

相机正在旋转它的局部轴,但我需要的是viewport旋转,而不是相机

如图所示

所以我需要的是让摄像机绕枢轴点/矢量运行,然后使用重新聚焦 Object3d.lookAt()

我知道我可以通过将相机作为另一个对象的子节点,然后旋转对象的轴来解决我的问题.但是,我宁愿自己做数学.

简而言之,我想了解如何围绕另一个旋转一个矢量点,以及如何以数学方式表示该关系.

希望利用脚本,例如,three.js所pointer_lock控制,来完成这项工作.我想弄清楚实际数学.

任何建议或教程链接将不胜感激!

javascript trigonometry three.js vector-space

4
推荐指数
1
解决办法
2521
查看次数

如何在Gensim Word2Vec中手动更改单词的矢量尺寸

我有一个Word2Vec模型,有很多单词向量.我可以这样访问一个单词向量.

word_vectors = gensim.models.Word2Vec.load(wordspace_path)
print(word_vectors['boy'])
Run Code Online (Sandbox Code Playgroud)

产量

[ -5.48055351e-01   1.08748421e-01  -3.50534245e-02  -9.02988110e-03...]
Run Code Online (Sandbox Code Playgroud)

现在我有一个合适的矢量表示,我想用word替换word_vectors ['boy'].

word_vectors['boy'] = [ -7.48055351e-01   3.08748421e-01  -2.50534245e-02  -10.02988110e-03...]
Run Code Online (Sandbox Code Playgroud)

但是引发了以下错误

TypeError: 'Word2Vec' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

有没有时尚或解决方法来做到这一点?一旦训练模型,那就是手动操纵单词向量?除了Gensim之外的其他平台有可能吗?

python vector gensim word2vec vector-space

3
推荐指数
1
解决办法
1533
查看次数

atan2 是否需要归一化向量?对于向量之间的角度,使用 acos 或 atan 哪个更好?

在计算两个向量之间的角度时,我传统上使用 acos,但这需要对两个向量进行归一化。atan2 可用于完成相同的(特别是atan2(b.y_, b.x_) - atan2(a.y_, a.x_)),这是否需要归一化向量?

如果 atan2 不需要归一化向量,这是否更好用,因为归一化可能成本高昂且“更多”容易出错,因为它需要 sqrt 操作?

然后我读到 atan2 本身可能比 acos 更昂贵,但更准确?然后我还阅读了其他建议相反的互联网:( 很多相互矛盾的信息,不确定使用 acos 或 atan 计算两个向量之间的角度有什么关系。

推荐哪个?以及每次使用的好处/问题是什么?

任何帮助将不胜感激,谢谢!

c++ trigonometry angle vector-space atan

2
推荐指数
1
解决办法
648
查看次数