gensim Word2Vec - как применить стохастический градиентный спуск?

Насколько я понимаю, пакетный (ванильный) градиентный спуск обновляет один параметр для всех данных обучения. Стохастический градиентный спуск (SGD) позволяет обновлять параметр для каждой обучающей выборки, помогая модели быстрее сходиться за счет значительных колебаний потери функции.

введите здесь описание изображения

Пакетный (ванильный) градиентный спуск устанавливает batch_size=corpus_size.

SGD устанавливает batch_size=1.

И мини-пакетные наборы градиентного спуска batch_size=k, в которых k обычно 32, 64, 128 ...

Как gensim применяет SGD или мини-пакетный градиентный спуск? Кажется, что batch_words эквивалент batch_size, но я хочу быть уверенным.

Эквивалентно ли установка batch_words=1 в модели gensim применению SGD?


person Eric Kim    schedule 02.05.2019    source источник


Ответы (1)


Нет, batch_words в gensim относится к размеру рабочих блоков, отправленных рабочим потокам.

Класс gensim Word2Vec обновляет параметры модели после каждого обучающего микро-примера (context)->(target-word) (где context может быть одним словом, как в skip-грамме, или средним значением нескольких слов, как в CBOW).

Например, вы можете просмотреть эту оптимизированную w2v_fast_sentence_sg_neg() функцию cython для skip-gram с отрицательной выборкой, глубоко в Word2Vec учебном цикле:

Технологии / gensim / blob / 460dc1cb9921817f71b40b412e11a6d413926472 / gensim / models / word2vec_inner.pyx # L159

Обратите внимание, что он учитывает ровно одно целевое слово (word_index параметр) и одно контекстное слово (word2_index) и обновляет как векторы-слова (также известные как «слой проекции» syn0), так и веса модели, скрытые для вывода (syn1neg). прежде, чем он может быть вызван снова с последующей единственной парой (context)->(target-word).

person gojomo    schedule 02.05.2019
comment
Хорошо, тогда мой следующий вопрос: как применить SGD или мини-пакетный градиент размера k с моделями gensim? - person Eric Kim; 03.05.2019
comment
Я почти уверен, что подход gensim Word2Vec (тщательно смоделированный по образцу оригинального Mikolov / Google word2vec.c) уже можно было бы справедливо описать как SGD. Но у него нет какой-либо опции мини-партии с настраиваемым размером: вам придется написать это самостоятельно. - person gojomo; 03.05.2019