Оптимизация Skip-Gram
Для качественной настройки эмбеддингов слов в модели Skip-Gram её нужно настраивать на гигантских коллекциях текстовых данных (100 миллионов слов и больше). Это связано с вычислительными трудностями, поскольку при расчёте вероятностей каждого слова приходится вычислять знаменатель следующей дроби:
равный сумме величин для всех уникальных слов языка , а их очень много!
Поэтому для ускорения настройки Skip-Gram используются специальные вычислительно эффективные методы - иерархический SoftMax либо негативное сэмплирование [1].
В модели CBOW присутствует такая же проблема и для её оптимизации используются свои усовершенствованные методики оптимизации. Здесь они не рассматриваются, т.к. на практике в основном используется Skip-Gram как более эффективная, т.к. в ней контекст вычисляется по одному слову, а не по совокупности.
Иерархический SoftMax
В методе Hierarchical SoftMax строится бинарное дерево, каждому листу которого ставится в соответствие уникальное слово языка. Таким образом, в дереве будет листов, а если его строить сбалансированным (так, что расстояние до каждого листа одно и то же), то его глубина будет .
Ниже приведён пример такого дерева:
Вместо выходных эмбеддингов каждого слова вычисляются выходные эмбеддинги для каждого внутреннего узла бинарного дерева.
Пусть нам нужно посчитать вероятность . Эту вероятность можно посчитать не за , а за , осуществляя спуск по бинарному дереву от корня до предсказываемого слова .
Вероятность из каждого узла перейти в левого и правого потомка задаётся как
где - сигмоидная функция.
а целевая вероятность считается как произведение этих вероятностей при спуске от корня до слова .
После настройки Skip-Gram этим методом в конечном итоге используются входные эмбеддинги слов , поскольку выходные эмбеддинги соответствуют не словам, а узлам дерева.
Метод Hierarchical SoftMax можно дополнительно ускорить, строя не сбалансированное дерево, а несбалансированное дерево Хаффмана, которое более частым словам будет назначать более короткие пути на дереве от корня до соответствующего листа.
Негативное сэмплирование
Метод негативного сэмплирования (negative sampling) представляет собой альтернативный подход к настройке Skip-Gram модели. В нём для известного слова