实际上词嵌入维度值代表什么?

数据挖掘 深度学习 nlp word2vec lstm 词嵌入
2021-10-03 15:51:30

我正在学习 word2vec 和词嵌入,我已经下载了 GloVe 预训练的词嵌入(形状 40,000 x 50)并使用此函数从中提取信息:

import numpy as np
def loadGloveModel(gloveFile):
    print ("Loading Glove Model")
    f = open(gloveFile,'r')
    model = {}
    for line in f:
        splitLine = line.split()
        word = splitLine[0]
        embedding = np.array([float(val) for val in splitLine[1:]])
        model[word] = embedding
    print ("Done.",len(model)," words loaded!")
    return model

现在,如果我将此函数称为“你好”这个词,例如:

print(loadGloveModel('glove.6B.100d.txt')['hello'])

它给了我这样的 1x50 形状矢量:

[ 0.26688    0.39632    0.6169    -0.77451   -0.1039     0.26697
  0.2788     0.30992    0.0054685 -0.085256   0.73602   -0.098432
  0.5479    -0.030305   0.33479    0.14094   -0.0070003  0.32569
  0.22902    0.46557   -0.19531    0.37491   -0.7139    -0.51775
  0.77039    1.0881    -0.66011   -0.16234    0.9119     0.21046
  0.047494   1.0019     1.1133     0.70094   -0.08696    0.47571
  0.1636    -0.44469    0.4469    -0.93817    0.013101   0.085964
 -0.67456    0.49662   -0.037827  -0.11038   -0.28612    0.074606
 -0.31527   -0.093774  -0.57069    0.66865    0.45307   -0.34154
 -0.7166    -0.75273    0.075212   0.57903   -0.1191    -0.11379
 -0.10026    0.71341   -1.1574    -0.74026    0.40452    0.18023
  0.21449    0.37638    0.11239   -0.53639   -0.025092   0.31886
 -0.25013   -0.63283   -0.011843   1.377      0.86013    0.20476
 -0.36815   -0.68874    0.53512   -0.46556    0.27389    0.4118
 -0.854     -0.046288   0.11304   -0.27326    0.15636   -0.20334
  0.53586    0.59784    0.60469    0.13735    0.42232   -0.61279
 -0.38486    0.35842   -0.48464    0.30728  ]

现在我没有得到这些值的实际代表,(我知道它的单层神经网络隐藏层的结果)但我的困惑是这些权重实际上代表什么以及它对我有什么用处?

因为我得到的假设是:

在此处输入图像描述

在这里我理解是因为每个单词都映射到每个列类别标签,但是在 GloVe 中没有 50 列的列标签,它只返回 50 个值向量,那么这些向量实际上代表什么以及我能用它做什么?我从 4-5 小时开始就试图找到这个,但是互联网上的每个人/每个教程都解释了什么是词嵌入以及它们的外观,但没有人解释这些权重实际上代表什么?

1个回答

这些列实际上是任意的,它们不代表人类的任何东西。然而,这并不意味着它们没有用,恰恰相反——计算机可以更容易地从这个高维空间中提取特征,例如在神经网络中。

为了提取对人类有用的信息,我建议查看Tomas Mikolov 的原始论文中的示例:

我们可以看看共同的首都。雅典之于希腊(从某种意义上说,它们具有相似的关系)就像奥斯陆之于挪威。我们可以使用之后使用 GloVe 获得的向量并构造

v(一个Hens)-v(GreeCe)+v(ñrw一个是的)

并且“全局”中的这个向量(意味着在通用数据集上训练,例如维基百科)训练的模型将最接近v(sl).