Word Embedding、LookupTable、Word Embedding 可视化

Zah*_*bar 6 text-mining word2vec deep-learning word-embedding

我需要问几个关于词嵌入的问题......可能是基本的。

  1. 当我们将一个词的 one-hot 向量(例如 king)[0 0 0 1 0]转换为嵌入向量时E = [0.2, 0.4, 0.2, 0.2]......结果词向量中的每个索引是否有任何重要性?例如E[1],哪个是 0.2....具体E[1]定义了什么(尽管我知道它基本上是到另一个空间的转换)...或词向量共同定义上下文但不是单独定义...
  2. 与原始 one-hot 向量相比,词向量的维度(减少或增加)如何重要?
  3. 我们如何根据嵌入层定义查找表?
  4. 查找表是一种随机生成的表,还是已经针对数据中的数据实例进行了单独训练,我们稍后仅在神经网络操作中使用它?5- 是否有任何方法可以在隐藏层可视化嵌入向量(就像我们在基于图像的神经网络处理中所做的那样)?

提前致谢

Hah*_*pro 7

1:嵌入向量中的每个元素(或一组元素)都有一定的意义,但大多数是人类不知道的。取决于您使用的算法,词嵌入向量可能具有不同的含义,但通常很有用。例如,Glove,类似的词“青蛙”、“蟾蜍”在向量空间中彼此靠近。King - man 结果与 Queen 相似。

  1. 把词汇变成索引。例如,你有一个词汇表:[dog, cat, mouse, feed, play, with] 那么句子: Dog play with cat => 0, 4, 5, 1 而你的嵌入矩阵如下

    [0.1, 0.1, 0] # 注释:这是狗
    [0.2, 0.5, 0.1] # 这是猫
    [...]
    [...]
    [...]
    [...]

其中第一行是狗的嵌入向量,第二行是猫,然后依此类推然后,查找后使用索引 (0, 4, 5, 1) 将成为矩阵 [[0.1, 0.1, 0][... ][...][0.2, 0.5, 0.1]]

  1. 一个或两个
    • 您可以随机初始化嵌入向量并使用梯度下降对其进行训练
    • 您可以采用预训练的词向量并保持固定(即:只读,无变化)。您可以在模型中训练词向量并在另一个模型中使用它。我们您可以在线下载预训练词向量。常见爬网示例(840B 令牌,2.2M 词汇,大小写,300d 向量,2.03 GB 下载):手套上的glove.840B.300d.zip
    • 您可以使用预训练的词向量进行初始化,并通过梯度下降使用您的模型进行训练

更新: One-hot 向量不包含任何信息。您可以认为 one-hot 向量是该向量在词汇表中的索引。例如,狗 => [1, 0, 0, 0, 0, 0] 和猫 => [0, 1, 0, 0, 0, 0]。one-hot 与 index 之间有一些不同:

  • 如果你输入一个索引列表:[0, 4, 5, 1] 到你的多层感知器,它不能学习任何东西(我试过......)。但是如果你输入一个单热向量 [[. ..1][1...][...][...]],它学到了一些东西。但它在 RAM 和 CPU 方面成本很高。

  • One-hot 花费大量内存来存储零。因此,如果您没有嵌入矩阵,我建议随机初始化嵌入矩阵。将数据集存储为索引,并使用索引查找嵌入向量

“这意味着查找表只是词汇表中每个单词的嵌入向量矩阵(已经通过 word2vec 或...单独训练)。在神经网络的过程中,我们可以使用嵌入层,也可以只需参考查找表中的嵌入向量,即可针对特定的单热向量获得该特定嵌入向量。”

使用“INDEX”在查找表中查找。将 dog 变为 0,cat 变为 1。 one-hot 向量和索引包含相同的信息,但是 one-hot 需要更多的内存来存储。此外,许多深度学习框架都接受索引作为嵌入层的输入(其中,输出是表示该索引中单词的向量。)

“。我们如何得到这个嵌入向量……”

=> 阅读论文。这是关于Word2vecGlove 的论文。向您的讲师询问更多详细信息,他们愿意为您提供帮助。