【问题标题】:TensorFlow cookbook skip-gram model with negative similarity具有负相似性的 TensorFlow 食谱 skip-gram 模型
【发布时间】:2018-07-20 21:14:16
【问题描述】:

我目前正在通过谷歌的TensorFlow cookbook

这是skip-gram模型的TensorFlow实现。

在第272行,作者决定对相似度矩阵(-sim[j, :])进行负乘。我有点困惑,为什么我们需要在 skip-gram 模型中对相似度矩阵进行负相乘。有任何想法吗?

for j in range(len(valid_words)):
        valid_word = word_dictionary_rev[valid_examples[j]]
        top_k = 5 # number of nearest neighbors
        **nearest = (-sim[j, :]).argsort()[1:top_k+1]**
        log_str = "Nearest to {}:".format(valid_word)
        for k in range(top_k):
            close_word = word_dictionary_rev[nearest[k]]
            score = sim[j,nearest[k]]
            log_str = "%s %s," % (log_str, close_word)
        print(log_str)

【问题讨论】:

    标签: numpy tensorflow machine-learning nlp word2vec


    【解决方案1】:

    让我们一步一步看这个例子:

    • 首先,有一个 similarity 张量。它被定义为嵌入向量之间的成对余弦相似度矩阵:

      # Cosine similarity between words
      norm = tf.sqrt(tf.reduce_sum(tf.square(embeddings), 1, keep_dims=True))
      normalized_embeddings = embeddings / norm
      valid_embeddings = tf.nn.embedding_lookup(normalized_embeddings,valid_dataset)
      similarity= tf.matmul(valid_embeddings,normalized_embeddings,transpose_b=True)
      

      为所有验证词和所有字典词计算矩阵,并包含[-1,1] 之间的数字。在本例中,词汇量为 10000,验证集由 5 个单词组成,因此similarity 矩阵的形状为(5, 10000)

    • 这个矩阵被评估为一个numpy数组sim

      sim = sess.run(similarity, feed_dict=feed_dict)
      

      因此,sim.shape = (5, 10000) 也是如此。

    • 接下来,这一行:

      nearest = (-sim[j, :]).argsort()[1:top_k+1]
      

      ... 计算与当前单词jtop_k 最近 单词索引。看看numpy.argsort 方法。否定只是对in descending order 进行排序的一种麻木方式。如果没有减号,则结果将是字典中的top_k 最远 个单词,这并不表示 word2vec 学到了任何东西。

      还要注意范围是[1:top_k+1],而不是[:top_k],因为第0 个字是当前验证字本身。打印最接近“爱”的词是......“爱”是没有意义的。

      这一行的结果将是一个类似[ 73 1684 850 1912 326] 的数组,它对应于单词sex, fine, youd, trying, execution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-17
      • 1970-01-01
      • 2021-08-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      相关资源
      最近更新 更多