Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
Во-вторых, рассмотренные нами виды векторов чрезвычайно разрежены. Это значит, что при обучении синаптические веса первого слоя будут изменяться достаточно редко, что не слишком хорошо будет сказываться на сходимости модели. Человек при анализе текста вооружён пониманием семантики слов, выработанным в процессе многолетнего обращения с естественным языком. Мы знаем о том, что некоторые слова близки по смыслу или вовсе являются полными синонимами, мы понимаем метафоры, выстраиваем ассоциативные ряды. Для нейронной сети, получающей на вход one-hot-векторы или мешок слов, разница между «пьяницей» и «алкоголиком» ровно такая же, как и между «бузиной» и «дядькой». Все отношения между словами наша сеть будет пытаться вывести на основе «изучения» обучающей выборки, которая чаще всего будет на много порядков меньше по объёму, чем весь тот корпус текстов, на котором человек обычно формирует
Не поможет тут и посимвольное представление слов, поскольку буквенное написание слов нередко слабо связано с их смыслом. Например, в написании слов «курица», «петух» и «цыплёнок» ничто не намекает нам на то, что речь идёт о представителях одного и того же биологического вида. Точно так же слова «золото» и «долото», хотя и различаются всего одним символом, со смысловой точки зрения имеют мало чего общего.
Мешки слов и n– грамм могут быть усовершенствованы ещё несколькими способами. Например, в случае мешка слов можно использовать группировку, считая все синонимы за одно слово. Впрочем, существенного выигрыша такой подход обычно не даёт — всё-таки полные синонимы в естественном языке встречаются не так уж часто. Другой подход основан на использовании хеш-функций, которые фактически выполняют случайную группировку слов (использование хеш-функций в сочетании с мешком n– грамм называют алгоритмом шинглов — от англ. shingles — чешуйки). Это позволяет уменьшить размерность, но ценой потери семантической информации, ведь в одну группу могут попасть слова, замена которых в тексте может существенно исказить его смысл. В общем, все эти классические методы не позволили достичь значительного прогресса в области обработки естественного языка. Было ясно, что необходимо найти им какую-то более совершенную альтернативу…
6.3.3.2 Языковые модели и работа Бенджио
Под [статистическими] языковыми моделями обычно понимают модели, предназначенные для поиска приближений совместного распределения вероятностей для последовательностей слов (или символов) естественного языка. Проще говоря, языковая модель обычно способна ответить на вопрос, какова вероятность встретить в некотором тексте на естественном языке определённую последовательность символов (или слов). Например, какова вероятность в случайно взятой книге после слов «как хороши, как свежи были» встретить, например, слова «розы», «штампы» или, скажем, «фтагн». Мы уже встречались с языковыми моделями в разделе, посвящённом распознаванию речи. Задача определения вероятности следующего слова в последовательности слов ничем существенно не отличается от задачи определения того факта, что некоторое предложение является ругательным. В обоих случаях мы имеем дело с задачей классификации, только в случае с ругательствами у нас всего два класса («ругательства» и «не ругательства»), а в случае предсказания следующего слова число классов равно размеру используемого словаря.
В начале 2000-х гг. стандартный подход к моделированию языка был основан на n– граммах. Например, мы можем подсчитать, сколько раз в обучающем корпусе встречались триграммы «свежи были розы», «свежи были штампы», «свежи были фтагн» и так далее для каждого слова-кандидата. Теперь в качестве прогноза вероятности слова «розы» вслед за словами «свежи были» мы можем использовать отношение числа вхождений в обучающий корпус триграммы «свежи были розы» к суммарному числу вхождений в него триграмм, начинающихся на «свежи были». Однако у этого подхода есть несколько серьёзных недостатков.
Во-первых, какую длину n– граммы выбрать? При уменьшении n предсказательная сила модели быстро падает. Действительно, в нашем корпусе (конечно, если он включал в себя соответствующую цитату из Мятлева, вынесенную Тургеневым в название одного из своих стихотворений в прозе) слова «как хороши, как свежи были» в большинстве случаев продолжались именно «розами». Чего не скажешь об одиночном слове «были». После «были» нередко встречается «на», «в» и так далее, причём куда чаще, чем «розы». С другой стороны, при увеличении n наша выборка n– грамм быстро становится нерепрезентативной. Мы всё чаще попадаем в ситуацию, когда число n– грамм, совпадающих с текущим контекстом (т. е. с предшествующими словами, которые мы стремимся продолжить), крайне мало, а иногда и вовсе равно 0. И что вообще значит, что слова «свежи
Во-вторых, с увеличением n быстро растут требования к объёму используемой памяти. Действительно, в какой-то момент размер оперативной памяти для хранения статистики n– грамм становится недостаточным. Конечно, эту статистику можно пересчитывать на лету, но для этого потребуется в момент расчёта вероятностей заново анализировать весь обучающий корпус, что чаще всего неприемлемо из-за ограничений по времени. Поэтому в начале 2000-х гг. обычно использовались модели, в которых самыми длинными были триграммы.
В-третьих, n– граммные модели ничего не знают о похожести слов и вообще об их семантике. Например, если в обучающем корпусе встречается фраза «Петя щёлкнул Васю по», продолжением которой является слово «лбу», то это никак не поможет модели понять, что последовательность «Вася щёлкнул Петю по» также с большой вероятностью будет продолжена тем же самым словом. Для модели «Вася» и «Петя» — это не имена мальчиков, а просто два разных слова. Несложно заметить, что трудности n– граммных моделей аналогичны трудностям моделей, использующих в качестве текстовых представлений мешки слов и one-hot-векторы.
Эти недостатки n– граммных моделей не нашли удовлетворительного решения.
Требовался новый подход, и в 2003 г. свет увидела важная работа Йошуа Бенджио и его коллег под названием «Нейронная вероятностная языковая модель» (A Neural Probabilistic Language Model) [2109] . Изложенная в ней идея заключалась в том, чтобы вместо one-hot-векторов использовать векторы признаков [feature vectors], обладающие меньшей размерностью и представляющие собой наборы вещественных параметров (своих для каждого слова), значения которых можно было бы получить в процессе обучения модели. Бенджио экспериментировал с векторами размерностью 30, 60 и 100 при размере словаря около 16 000–18 000 слов (в зависимости от корпуса). В зависимости от настроек сеть Бенджио принимала на вход соединение (конкатенацию) векторов, соответствующих трём, четырём или пяти предыдущим словам (т. е. при размерности вектора признаков, равной 100, и длине контекста, равной 4, на вход сети подавалось 4 x 100 = 400 вещественных чисел), и представляла собой полносвязный перцептрон — в большинстве экспериментов с одним промежуточным слоем, в котором могло быть 50 или 100 нейронов.
2109
Bengio Y., Ducharme R., Vincent P., Jauvin C. (2003). A Neural Probabilistic Language Model / Journal of Machine Learning Research, Vol. 3 (2003), pp. 1137—1155 // http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
Реализацию идеи Бенджио можно представить как добавление ко входу сети нескольких идентичных нейронных сетей (по одной для каждого из слов контекста). Каждая из этих сетей состоит из двух слоёв нейронов и преобразовывает one-hot-векторы, соответствующие словам, в векторы признаков. Все нейроны её первого слоя (получающего на вход one-hot-векторы) связаны со всеми нейронами второго слоя (выходы которого и составляют векторы признаков). Такое соединение часто называют проекцией [projection].
Число параметров такой сети равно произведению числа слов в словаре и размерности вектора признаков. Таким образом, при 16 000 слов в словаре и размерности вектора признаков 100 число параметров будет равно 16 000 x 100 = 1 600 000. Поскольку сети, применяемые к каждому из слов, идентичны (т. е. содержат копии одного и того же набора весов), увеличение длины контекста никак не влияет на число параметров модели. Если бы вместо такого набора сетей мы использовали полносвязный слой, то число параметров в нём было бы при длине контекста 4 равно (4 x 16 000) x (4 x 100), то есть в 16 раз больше, чем в модели Бенджио.