Шрифт:
Интервал:
Закладка:
Первый из них получил название «мешок слов» (bag of words). Мешок слов по сути представляет собой вектор, являющийся суммой прямых унитарных кодов, соответствующих словам предложения. То есть каждый компонент мешка — это число, равное числу вхождений соответствующего слова в текст (такой вариант мешка слов называют мультиномиальной моделью; иногда поступают ещё проще: если слово встречается в тексте хотя бы один раз, то соответствующая компонента вектора устанавливается равной 1 — такой вариант мешка слов называют моделью Бернулли[2108]). Для фразы «Дар напрасный, дар случайный, жизнь, зачем ты мне дана?» наш мешок будет выглядеть следующим образом:
Последовательность one-hot-векторов выглядела бы для той же фразы следующим образом:
Таким образом, в нашем случае мешок слов содержит в девять раз меньше компонентов, чем последовательность one-hot-векторов, и, что не менее важно, его размер всегда будет фиксированным — равным размеру выбранного словаря. А значит, для его обработки можно использовать нерекуррентную нейронную сеть. К сожалению, платой за это стала полная потеря информации о порядке слов в тексте, который в ряде случаев существенно меняет смысл сказанного. Например, «На собрании было десять человек» и «На собрании было человек десять», «Эта книга трудна даже для него» и «Даже эта книга трудна для него», «Я не люблю» и «Не я люблю» и так далее. Несколько снизить остроту этой проблемы можно путём добавления в словарь некоторых биграмм, например пар «частица + слово» и «предлог + слово». В конце концов, можно соорудить мешок биграмм или триграмм, но это резко увеличит размерность вектора, поэтому на практике обычно ограничиваются лишь отдельными n-граммами, добавленными в словарь. Таким образом, альтернативой мешку слов является мешок триграмм.
Как one-hot-векторы, так и мешки слов и n-грамм обладают рядом существенных недостатков, из-за которых успехи моделей, основанных на подобных представлениях текста, были весьма скромными.
Во-первых, размерность данных, даже в случае мешка слов, всё ещё довольно велика. При словаре в миллион слов нейронная сеть, принимающая на вход мешок слов, будет иметь примерно столько же нейронов во входном слое, сколько нейронная сеть, получающая на вход цветное изображение размером 640 × 480 точек, что было явно за пределами нейросетевых технологий начала нулевых годов. При этом если изображения содержат регулярные пространственные структуры, позволяющие применять для их обработки свёрточные сети, то в случае мешка слов или one-hot-векторов ничего подобного не наблюдается, и значит, нам придётся использовать модель с гораздо большим числом параметров. Сокращение размера словаря также не может существенно помочь, поскольку нередко как раз менее частотные слова вносят значительный смыслоразличительный вклад. Например, какое-нибудь заковыристое ругательство легко превратит предложение в оскорбительную тираду.
Во-вторых, рассмотренные нами виды векторов чрезвычайно разрежены. Это значит, что при обучении синаптические веса первого слоя будут изменяться достаточно редко, что не слишком хорошо будет сказываться на сходимости модели. Человек при анализе текста вооружён пониманием семантики слов, выработанным в процессе многолетнего обращения с естественным языком. Мы знаем о том, что некоторые слова близки по смыслу или вовсе являются полными синонимами, мы понимаем метафоры, выстраиваем ассоциативные ряды. Для нейронной сети, получающей на вход one-hot-векторы или мешок слов, разница между «пьяницей» и «алкоголиком» ровно такая же, как и между «бузиной» и «дядькой». Все отношения между словами наша сеть будет пытаться вывести на основе «изучения» обучающей выборки, которая чаще всего будет на много порядков меньше по объёму, чем весь тот корпус текстов, на котором человек обычно формирует понимание естественного языка.
Не поможет тут и посимвольное представление слов, поскольку буквенное написание слов нередко слабо связано с их смыслом. Например, в написании слов «курица», «петух» и «цыплёнок» ничто не намекает нам на то, что речь идёт о представителях одного и того же биологического вида. Точно так же слова «золото» и «долото», хотя и различаются всего одним символом, со смысловой точки зрения имеют мало чего общего.
Мешки слов и n-грамм могут быть усовершенствованы ещё несколькими способами. Например, в случае мешка слов можно использовать группировку, считая все синонимы за одно слово. Впрочем, существенного выигрыша такой подход обычно не даёт — всё-таки полные синонимы в естественном языке встречаются не так уж часто. Другой подход основан на использовании хеш-функций, которые фактически выполняют случайную группировку слов (использование хеш-функций в сочетании с мешком n-грамм называют алгоритмом шинглов — от англ. shingles — чешуйки). Это позволяет уменьшить размерность, но ценой потери семантической информации, ведь в одну группу могут попасть слова, замена которых в тексте может существенно исказить его смысл. В общем, все эти классические методы не позволили достичь значительного прогресса в области обработки естественного языка. Было ясно, что необходимо найти им какую-то более совершенную альтернативу…
6.3.3.2 Языковые модели и работа Бенджио
Под [статистическими] языковыми моделями обычно понимают модели, предназначенные для поиска приближений совместного распределения вероятностей для последовательностей слов (или символов) естественного языка. Проще говоря, языковая модель обычно способна ответить на вопрос, какова вероятность встретить в некотором тексте на естественном языке определённую последовательность символов (или слов).