Все реализации тензорного потока Word2Vec, которые я видел, имеют уклон в функцию softmax отрицательной выборки, в том числе на официальном сайте тензорного потока.
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))
Однако, как из лекций Эндрю Нг, так и Ричарда Сочера, они не включают предвзятость в свои softmax отрицательных выборок.
Даже там, где возникла эта идея, Миколов утверждает, что:
смещения в нейросети не используются, так как существенного улучшения производительности не наблюдалось — следуя бритве Оккама, решение настолько простое, насколько оно должно быть.
Миколов Т.: Статистические языковые модели на основе нейронных сетей, с. 29 http://www.fit.vutbr.cz/~imikolov/rnnlm/thesis.pdf
Так почему же в официальных реализациях тензорного потока есть смещение, и почему, похоже, нет возможности не включать смещение в функцию sampled_softmax_loss?