2017-07-03 63 views
1

我需要问几个关于单词嵌入的问题.....可能是基本的。 1.当我们将例如king [0 0 0 1 0]这个单词的单热矢量转换成一个嵌入矢量时,E = [0.2,0.4,0.2,0.2] ....对每个索引是否有任何重要性在结果词向量?例如E [1],它是0.2 ....具体来说E [1]定义了什么(尽管我知道它基本上是向另一个空间的转换)....或者单词向量共同定义上下文但不是单独地... 2 。与原始单向量矢量相比,单词向量的维数(减少或增加)如何比较重要3.如何根据嵌入层定义查找表? 4.查找表是一种随机生成的表,或者它已经在数据中相对于数据实例分别进行了训练,我们稍后在神经网络操作中使用它? 5-是否有任何方法可视化隐藏层中的嵌入式矢量(就像我们在基于图像的神经网络处理中所做的那样)? 在此先感谢Word嵌入,LookupTable,Word嵌入可视化

回答

0

1:嵌入向量中的每个元素(或一组元素)都有一些含义,但对于人类来说大多是未知的。根据你使用的算法,单词嵌入向量可能有不同的含义,但通常是有用的。 例如,Glove,相似的单词'青蛙','蟾蜍'在向量空间中彼此靠近。国王 - 男人导致向量类似于女王。

  1. 将词汇转换为索引。例如,你有一个词汇列表: [狗,猫,老鼠,饲料,玩,与] 然后,句子:狗玩猫=> 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]]

  • 任一个或两者
    • 可以随机初始化矢量嵌入,并用梯度下降
    • 训练它
    • 你可以采用预训练词向量,并保持它固定(即:只读,不变)。 你可以在模型中训练你的单词矢量并在另一个模型中使用它。我们可以在线下载预训词汇矢量。例如常见的抓取(840B令牌,2.2M词汇,套管,300D载体,2.03 GB下载):glove.840B.300d.zip上Glove
    • 你可以用预训练字矢量INIT和通过梯度下降
    • 与火车模型
  • 更新: 一热载体不包含任何信息。你可以认为一个热门矢量是词汇表中那个矢量的索引。 例如,Dog => [1,0,0,0,0,0]并且cat => [0,1,0,0,0,0]。有一热之间有一些不同的VS指标:

    • ,如果你输入的索引列表:[0,4,5,1]到您的多层感知,它不能学到什么东西(我试过了。但是如果你输入一个热点向量[[... 1] [1 ...] [...]]的矩阵,它会学到一些东西。但是在内存和CPU方面它的成本很高。

    • 一热费大量的内存来存储零。因此,如果你没有一个,我建议随机初始化嵌入矩阵。存储数据集作为索引,使用索引查找嵌入矢量

    “其意思是查找表,不过是为了每一个嵌入式矢量 (已经通过word2vec seperately培训或...)的矩阵而在 的词汇中,而在神经网络的过程中,我们 可以使用嵌入层,或者我们可以在 查找表中查找该特定嵌入向量的嵌入向量,而不是针对特定的 单向向量。

    使用“INDEX”在查找表中查找。把狗变成0,猫变成1.单向热矢量和索引包含相同的信息,但是一个热点需要更多的内存来存储。此外,很多深度学习框架的接受指数作为输入到埋层(其中,输出是一个向量代表在该指数的一句话。)

    “我们如何得到这个嵌入载体......”

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

    +1

    Thanx为这个详细解释....关于你的答案我需要仍然清楚。 1-因此我们不应该在意密集或嵌入矢量中的值(正如你提到的狗的矢量[0.1,0.1,0],在这里单独的“0.1”donesnt显示除了所有其他指数值之外的任何值)。我们如何从word2vec或其他人(隐藏层上的训练权重?因为我们无法微调单热矢量的值)获得每个单热矢量的嵌入矢量,或者? –

    +1

    2-它的意思是查找表只是词汇表中每个单词的嵌入矢量矩阵(已经单独通过word2vec或...进行训练)。而在神经网络的过程中,我们可以使用嵌入层,或者我们可以在查找表中针对特定的嵌入向量针对特定的热点向量来引用嵌入向量。 –