Word嵌入,LookupTable,Word嵌入可视化

时间:2017-07-03 09:24:23

标签: deep-learning text-mining word2vec word-embedding

我需要问一些关于单词嵌入的问题.....可能是基本的。

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

1 个答案:

答案 0 :(得分:2)

1:嵌入向量中的每个元素(或一组元素)都有一些含义,但对于人类来说大多是未知的。根据您使用的算法,单词嵌入向量可能具有不同的含义,但通常很有用。 例如,Glove,类似的单词'frog','toad'在向量空间中彼此靠近。 King - man导致矢量类似于Queen。

  1. 将词汇转换为索引。例如,您有一个词汇表: [狗,猫,老鼠,饲料,玩,用] 然后句子:狗玩猫=> 0,4,5,1 同时,你有嵌入矩阵如下

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

  2. 第一行是嵌入狗的矢量,第二行是猫,然后是等等 然后,在查找后将使用索引(0,4,5,1)成为矩阵[[0.1,0.1,0] [...] [...] [0.2,0.5,0.1]]

    1. 其中之一或两者
      • 您可以随机初始化嵌入向量并使用渐变下降训练
      • 你可以采用预训练的单词向量并保持固定(即:只读,无变化)。 您可以在模型中训练您的单词向量,并在另一个模型中使用它。我们可以在线下载预训练的单词向量。示例常见爬网(840B令牌,2.2M词汇,套管,300d向量,2.03 GB下载):在Glove上的glove.840B.300d.zip
      • 您可以使用预先训练的单词向量初始化并使用渐变下降模型训练
    2. 更新: 单热矢量不包含任何信息。您可以认为单热矢量是词汇表中该矢量的索引。 例如,Dog => [1,0,0,0,0,0]和cat => [0,1,0,0,0,0]。 one-hot vs index之间有一些不同:

      • 如果你输入一个索引列表:[0,4,5,1]到你的多层感知器,它就无法学习任何东西(我试过......)。但是如果你输入一个矩阵-hot vector [[... 1] [1 ...] [...] [...]],它学到了一些东西。但它在RAM和CPU方面代价高昂。

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

        

      “它的意思是查找表只是嵌入向量的矩阵   (已经通过word2vec或...单独训练)每个单词   词汇。而在神经网络的过程中,我们也是   可以使用嵌入层,或者我们可以参考嵌入式矢量   特定嵌入向量的查找表   一热的矢量。“

      使用“INDEX”在查找表中查找。将狗变为0,将cat变为1.单热矢量和索引包含相同的信息,但是一次性热量需要更多存储空间。此外,许多deeplearning框架接受索引作为嵌入层的输入(其中,输出是该索引中单词的向量表示。)

        

      “。我们如何获得此嵌入向量......”

      =>读纸。以下是关于Word2vecGlove的论文。向您的讲师询问更多细节,他们愿意帮助您。