Почему в gensim doc2vec почти все сходства косинусов положительны между векторами слова или документа?

Я вычислил сходства документов, используя Doc2Vec.docvecs.simility() в gensim. Теперь я бы ожидал, что сходства косинусов будут лежать в диапазоне [0.0, 1.0], если gensim использовал абсолютное значение косинуса в качестве метрики подобия, или примерно половина из них будет отрицательной, если это не так.

Однако я вижу, что некоторые сходства отрицательны, но они очень редки - менее 1% парных сходств в моем наборе из 30000 документов.

Почему почти все сходства положительные?

1 ответ

Решение

В Word2Vec/Doc2Vec нет внутренней гарантии того, что сгенерированный набор векторов будет симметрично распределен вокруг начальной точки. Они могут быть непропорционально в некоторых направлениях, что даст результаты, которые вы видели.

В нескольких тестах, которые я только что сделал на наборе данных размером с игрушку ('lee corpus'), используемом в комплекте gensim docs/notebooks/doc2vec-lee.ipynb В тетради, проверяющей косинус-сходство всех документов с первым документом, смутно кажется, что:

  1. используя иерархический софтмакс вместо отрицательной выборки (hs=1, negative=0) дает баланс между>0,0 и <0,0 косинусными сходствами, который ближе (но еще не совсем) к половине и половине
  2. используя меньшее количество отрицательных образцов (таких как negative=1) дает более сбалансированный набор результатов; используя большее число (например, negative=10) дает относительно больше>0,0 косинус-сходств

Хотя это и не является окончательным, это мягко наводит на мысль, что на расположение векторов может влиять negative параметр. В частности, типичные параметры отрицательной выборки, такие как значения по умолчанию negative=5Подлые слова будут больше тренироваться как нецелевые, чем как положительные. Это может подтолкнуть преобладание окончательных координат в одном направлении. (Для большей уверенности в этой идее потребуется больше испытаний больших наборов данных и режимов и больший анализ того, как настройка модели может повлиять на конечные положения векторов).

Если по какой-то причине вы хотели более сбалансированное расположение векторов, вы можете подумать о преобразовании их позиций после обучения.

В пространстве word2vec есть интересная недавняя статья "Все, кроме верха: простая и эффективная постобработка для представлений слов", в которой найденные наборы обученных слов-векторов не обязательно имеют среднее значение 0- они в среднем в одном направлении от происхождения. Кроме того, в этой статье сообщается, что вычитание общего среднего значения (для "повторного центрирования" набора), а также удаление нескольких других доминирующих направлений может улучшить полезность векторов для определенных задач.

Интуитивно, я подозреваю, что это преобразование "все, кроме верха" может послужить увеличению различающего "контраста" в результирующих векторах.

Подобный процесс может принести аналогичные преимущества для векторов документов - и, вероятно, сделает полный набор косинус-сходств с любым вектором документов более сбалансированным между значениями>0,0 и <0,0.

Другие вопросы по тегам