Что такое параметр null_word в gensim Word2Vec?

Объект Word2Vec в gensim имеет параметр null_word, который не объясняется в документации.

class gensim.models.word2vec.Word2Vec (предложения = None, size = 100, alpha = 0.025, window = 5, min_count = 5, max_vocab_size = None, sample = 0.001, seed = 1, worker = 3, min_alpha = 0,0001, sg = 0, hs = 0, negative = 5, cbow_mean = 1, hashfxn =, iter = 5, null_word = 0, trim_rule = None, sorted_vocab = 1, batch_words = 10000)

Для чего используется параметр null_word?

Проверка кода на https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/word2vec.py#L680, в нем говорится:

    if self.null_word:
        # create null pseudo-word for padding when using concatenative L1 (run-of-words)
        # this word is only ever input – never predicted – so count, huffman-point, etc doesn't matter
        word, v = '\0', Vocab(count=1, sample_int=0)
        v.index = len(self.wv.vocab)
        self.wv.index2word.append(word)
        self.wv.vocab[word] = v

Что такое конкатенативный L1?


person Nat Gillin    schedule 22.02.2017    source источник


Ответы (1)


null_word используется только при использовании PV-DM в режиме конкатенации - параметры dm=1, dm_concat=1 при инициализации модели.

В этом нестандартном режиме, вектор doctag и векторы соседних слов в window позициях целевого слова объединяются в очень широкий входной слой, а не при более типичном усреднении.

Такие модели намного крупнее и медленнее других режимов. В случае целевых слов в начале или в конце примера текста может не хватить соседних слов для создания этого входного слоя, но модель требует значений для этих слотов. Таким образом, null_word по сути используется как отступ.

Хотя в оригинальной статье Paragraph Vectors упоминалось об использовании этого режима в некоторых из своих экспериментов, этого режима недостаточно для воспроизведения их результатов. (Никто из моих знакомых не смог воспроизвести эти результаты, и другие комментарии одного из авторов подразумевают, что в исходной статье есть какие-то ошибки или упущения в процессе.)

Кроме того, я не нашел случаев, когда этот режим дает явное преимущество, чтобы оправдать добавленное время / память. (Для демонстрации каких-либо преимуществ могут потребоваться очень большие наборы данных или очень долгое время обучения.)

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

person gojomo    schedule 22.02.2017