Во всех реализованных мной тензорных реализациях Word2Vec присутствует смещение в функции softmax с отрицательной выборкой, в том числе на официальном веб-сайте tenorflow
https://www.tensorflow.org/tutorials/word2vec#vector-representations-of-words
loss = tf.reduce_mean(
tf.nn.nce_loss(weights=nce_weights,
biases=nce_biases,
labels=train_labels,
inputs=embed,
num_sampled=num_sampled,
num_classes=vocabulary_size))
Это изБесплатный курс глубокого обучения Google https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb
loss = tf.reduce_mean(
tf.nn.sampled_softmax_loss(weights=softmax_weights, biases=softmax_biases, inputs=embed,
labels=train_labels, num_sampled=num_sampled, num_classes=vocabulary_size))
Однако, как в лекциях Эндрю Нг и Ричарда Сочера, они не учитывают предвзятость в своих отрицательных максимумах выборки.
Даже там, где возникла эта идея, Миколов утверждает, что:
смещения не используются в нейронной сети, так как не наблюдалось значительного улучшения производительности - после бритвы Оккама решениетак просто, как должно быть.
Миколов, Т .: Статистические языковые модели на основе нейронных сетей, с.29 http://www.fit.vutbr.cz/~imikolov/rnnlm/thesis.pdf
Итак, почему официальные реализации тензорного потока имеют смещение, и почему нет возможности не включать смещение в функцию sampled_softmax_loss?