Обработка естественных языков
393
ложение вероятностей. Объем вычислений, пропорциональный |
𝕍
| (и
количеству
скрытых слоев
n
h
), можно сократить до величины, пропорциональной log|
𝕍
|. В ра-
ботах Bengio (2002) и Morin and Bengio (2005) эта идея факторизации применена
в контексте нейронных языковых моделей.
Иерархию можно представлять себе как построение категорий слов, затем катего-
рий категорий слов и т. д. Вложенные категории образуют дерево, в листьях которо-
го находятся слова. Глубина сбалансированного дерева равна
O
(log|
𝕍
|). Вероятность
выбора слова равна произведению вероятностей выбора ветви на всем пути, ведущем
от корня к этому слову. На рис. 12.4 приведен простой пример. В работе Mnih and
Hinton (2009) описано также, как использовать несколько путей для идентификации
одного слова, чтобы лучше смоделировать слова, имеющие несколько значений. Тог-
да вычисление вероятности слова сводится к суммированию по всем ведущим к нему
путям.
Для предсказания
условных вероятностей, необходимых в каждом узле дерева,
мы обычно используем модель логистической регрессии в
узлах и подаем на вход
всех моделей один и тот же контекст
C
. Поскольку правильный выход уже указан
в обучаю щем наборе, для обучения моделей логистической регрессии можно приме-
нить обучение с учителем. Обычно при этом используется стандартная перекрестная
энтропия в качестве функции потерь, что соответствует максимизации логарифмиче-
ского правдоподобия правильной последовательности решений.
Поскольку выходное логарифмическое правдоподобие можно вычислить эффек-
тивно (объем вычислений пропорционален log|
𝕍
|, а не |
𝕍
|), то и градиенты тоже вы-
числяются эффективно. И это относится не только к градиентам по выходным пара-
метрам, но и к градиентам по активациям скрытых слоев.
Возможно, хотя на практике так обычно не поступают, оптимизировать структуру
дерева, чтобы уменьшить ожидаемый объем вычислений. Методы теории информа-
ции говорят, как построить оптимальный двоичный код, если известны относитель-
ные частоты слов. Для этого мы могли бы структурировать дерево так, чтобы число
бит, ассоциированных со словом, было приблизительно
равно логарифму частоты
этого слова. На практике, однако, такая
экономия редко стоит усилий, потому что
вычисление выходных вероятностей – это лишь часть
общего объема вычислений
в нейронной языковой модели. Предположим, к примеру, что имеется
l
полносвязных
скрытых слоев ширины
n
h
. Обозначим
n
b
взвешенное среднее числа бит, необходимых
для идентификации слова, в котором вес слова равен его частоте. В нашем случае чис-
ло операций, выполняемых для вычисления скрытых активаций, растет как
O
(
ln
h
2
),
а объем вычислений выхода – как O(
n
h
n
b
). Если
n
b
≤
ln
h
, то для сокращения объема
вычислений лучше уменьшать
n
h
, а не
n
b
. На
самом деле
n
b
часто мало. Поскольку
размер словаря редко превышает миллион слов, а log
2
(10
6
)
≈
20, можно уменьшить
n
b
примерно до 20, тогда как
n
h
обычно гораздо больше – порядка 10
3
и более. Вместо
того чтобы тщательно оптимизировать дерево с коэффициентом ветвления 2, мы мо-
жем определить дерево глубины 2 с коэффициентом ветвления
√
_
|
𝕍
|. Такое дерево со-
ответствует определению множества взаимно исключающих классов слов. Простой
подход, основанный на дереве глубины 2, сохраняет большую часть вычислительных
преимуществ иерархической стратегии.
Остается открытым один вопрос – как лучше всего определить классы слов, или
как определить иерархию слов вообще. В ранних работах использовались существую-
щие иерархии (Morin and Bengio, 2005), однако иерархию тоже можно обучить, в иде-