我从https://www.kaggle.com/c/word2vec-nlp-tutorial/details/part-3-more-fun-with-word-vectors读了Kaggle的word2vec示例 我无法理解为什么模型的词汇长度与单词向量长度有所不同。
单词向量中的每个单元格都不代表与词汇表中其他单词的关系,因此每个单词与其他单词有关系吗? 如果没有,那么单词矢量中的每个单元代表什么?
非常感谢任何帮助。
答案 0 :(得分:1)
Word2Vec捕获单词的分布式表示,本质上意味着,多个神经元(单元格)捕获单个概念(概念可以是单词含义/情感/词性等),还有单个神经元(细胞)有助于多个概念。
这些概念是自动学习的,而不是预先定义的,因此您可以将它们视为潜在/隐藏。
神经元(细胞)的数量越多,神经网络表示这些概念的能力就越多,但是需要更多的数据来训练这些向量(因为它们是随机初始化的)。
word-vector的 size
明显小于词汇量(通常),因为我们需要压缩的单词表示。两个单词向量之间的余弦相似性表示两个单词之间的相似性。
修改强>
为了更清楚起见,请考虑每个单词之前由词汇大小的单热编码向量表示,其大小为数千/百万。现在将相同的词压缩成200或300维向量。为了找到两个单词之间的关系,你需要计算这两个单词的向量表示之间的余弦相似度。
答案 1 :(得分:1)
word2vec将单词嵌入到维度为用户定义的向量空间中。出于计算和性能原因,这个维度通常很小(范围在50-1000之间)。
事实上,Levy和Goldberg的这个excellent paper表明word2vec有效地计算了PMI矩阵的分解,这类似于你想到的那个。因此,单词嵌入中的每个坐标都可以解释为量化一些未知的线性关系到多个(如果不是全部)上下文单词,而不仅仅是一个。
答案 2 :(得分:1)
之前的答案提到性能和计算成本是矢量大小小于词汇量大小的原因。如果向量不是与词汇表中所有其他词的关系,那么我想知道它到底是什么。
一些早期的算法确实创建了全尺寸的单词向量,然后使用线性代数缩小它们。然后将浓缩的特征向量输入神经网络。
word2vec将此过程浓缩为一步,并在其神经网络的隐藏层中构建单词向量。单词向量的大小对应于隐藏层中的节点数。
有源的较长版本可用here