Охота на электроовец. Большая книга искусственного интеллекта
Шрифт:
Слой, образуемый описанными выше сетями, добавленными ко входу сети Бенджио, в наши дни носит название «слой словарного вложения» [word embedding layer], впрочем, специалисты по машинному обучению называют его обычно «словарным эмбеддингом» или попросту «эмбеддингом» (также термином «эмбеддинг» или «векторы эмбеддинга» часто обозначаются и сами встраиваемые векторы).
Несложно углядеть здесь аналогию со слоем свёртки в свёрточных нейронных сетях — в нём каждая из операций свёртки также осуществляется при помощи одного и того же набора весов.
Бенджио не был первым исследователем, предложившим использовать векторные представления слов естественного языка. Почти за полвека до него этот подход начал применяться для решения задач в области поиска информации и тематического моделирования, например в рамках так называемого латентно-семантического анализа (Latent semantic analysis, LSA) — метода обработки информации на естественном языке, анализирующего взаимосвязь между библиотекой документов и встречающимися в них терминами. Различные идеи по решению задач в области обработки текстов на естественном языке, в том числе для построения языковых моделей, выдвигались в 1980-е и 1990-е гг. многими ведущими коннекционистскими исследователями, в том числе Шмидхубером, Элманом и Хинтоном. Но в работе Бенджио и его коллег идея словарных эмбеддингов приобрела именно ту форму, в которой она стала основой первой революции в NLP в начале 2010-х гг. Интересно, что разработанная авторами исследования модель стала также одним из первых примеров сетей с перепрыгивающими связями: в одном из рассмотренных вариантов была архитектура с набором связей, напрямую соединяющих слой векторов признаков с выходом сети.
Впрочем, для осуществления решительного прорыва понадобилось ещё десятилетие исследований. Дело в том, что в модели Бенджио векторы признаков выучивались моделью одновременно с остальными слоями сети, из-за чего
2110
Francis W. N., Kucera H. (1979). Brown corpus manual. Manual of information to accompany a standard corpus of present-day edited American English, for use with digital computers // http://korpus.uib.no/icame/brown/bcm.html
2111
Wikipedia contributors. (2021, August 2). Size of Wikipedia. In Wikipedia, The Free Encyclopedia. Retrieved 08:00, August 2, 2021, from https://en.wikipedia.org/wiki/Wikipedia:Size_of_Wikipedia
2112
Marcus M. P., Santorini B., Marcinkiewicz M. A. (1993). Building a Large Annotated Corpus of English: The Penn Treebank / Computational Linguistics, Vol. 19, Iss. 2 // https://aclanthology.org/J93-2004/
2113
BNC Consortium (2007). The British National Corpus, XML Edition. Oxford Text Archive // http://hdl.handle.net/20.500.12024/2554
2114
Burnard L. (2007). Reference Guide for the British National Corpus (XML Edition) // http://www.natcorp.ox.ac.uk/XMLedition/URG/
2115
BNC Consortium (2001). The British National Corpus, version 2 (BNC World) // http://www.natcorp.ox.ac.uk/
2116
Burnard L. (2000). The British National Corpus Users Reference Guide // http://www.natcorp.ox.ac.uk/docs/userManual/
Интересно, что команда Бенджио использовала случайную инициализацию векторов признаков на старте обучения сети. Авторы работы предположили, что инициализация, основанная на некоторых априорных знаниях о языке, может улучшить результаты. Эта мысль несколько раз повторяется в тексте статьи, причём приводятся даже конкретные идеи по поводу возможных источников такой информации (например, данные из базы WordNet, грамматические признаки и т. д.). Однако авторы работы не пробовали использовать значения векторов, полученные в эксперименте с корпусом Брауна, как стартовые значения для эксперимента с корпусом APNews, то есть идея создания универсальных словарных эмбеддингов для решения широкого спектра задач в области обработки естественного языка на тот момент ещё не овладела умами исследователей.
6.3.3.3 Революция word2vec
Во второй половине 2000-х — начале 2010-х гг. под влиянием работ Бенджио и его коллег был опубликован ряд работ, в которых авторы предлагали различные системы построения универсальных словарных эмбеддингов для решения задач машинного обучения с частичным привлечением учителя [semi-supervised learning] в области обработки естественного языка.
Идея о том, что семантическую информацию о слове можно получить без привлечения учителя, на основе анализа больших неразмеченных наборов текстов, берёт своё начало ещё в XX в. На заре 1950-х гг. благодаря усилиям американского лингвиста Зеллига Харриса, уже упоминавшегося нами в качестве одного из учителей Хомского, приобрела популярность так называемая дистрибутивная гипотеза, которая сегодня обычно формулируется следующим образом: лингвистические единицы, встречающиеся в сходных контекстах, имеют близкие значения. Проще говоря, слова, которые используются и встречаются в одинаковых контекстах, как правило, имеют близкие значения [2117] . В общем, Харрис, как можно заметить, вовсе не был активным противником корпусной лингвистики [2118] , в отличие от Хомского, который считал её пустой тратой времени [2119] . Фактически гипотеза Харриса стала развитием идеи, высказанной в афористичной форме другим лингвистом — англичанином Джоном Фёрсом: «Слово характеризуется компанией, в которой оно встречается» [a word is characterized by the company it keeps] [2120] . В общем, в отношении слов, как и в отношении людей, в какой-то мере верна поговорка: «Скажи мне, кто твои друзья, и я скажу, кто ты». Возможно, Фёрс и не был первым мыслителем, высказавшим эту идею. Ещё в 1930-е гг. сходные суждения высказывал австрийский философ и логик Людвиг Витгенштейн [2121] . Задолго до появления нейронных сетей лингвисты применяли метод дистрибутивного анализа, изучая распределения слов и символов в текстах, и даже (с середины XX в.) описывали семантику слов в виде контекстных векторов, в которых тому или иному смысловому признаку приписывались некоторые численные оценки. Возникла и развивалась целая область лингвистики, получившая название «дистрибутивная семантика». Её предметом стал анализ семантики элементов языка на основании их распределения в больших массивах лингвистических данных. Появление вычислительной техники, а затем и больших корпусов оцифрованных текстов вывело дистрибутивную семантику на новый уровень — позволило производить эксперименты и проверять гипотезы без использования трудоёмких ручных операций. Исследователями дистрибутивной семантики был разработан ряд инструментов, предназначенных для анализа больших корпусов текстов. Наиболее популярным из них стал Sketch Engine. Эта система была разработана компанией Lexical Computing Limited, созданной в результате сотрудничества лингвиста Адама Килгарриффа и Павла Рыхлого — специалиста в области информатики из Центра обработки естественного языка в Университете Масарика (Masaryk University). Sketch Engine позволяет среди прочего автоматически находить слова со сходной статистикой контекстов (формировать так называемый дистрибутивный тезаурус) [2122] . Корпусными лингвистами были разработаны различные метрики для
2117
Harris Z. (1954). Distributional structure / Word, Vol. 10, Iss. 23, pp. 146—162 // https://doi.org/10.1080/00437956.1954.11659520
2118
* Корпусная лингвистика — раздел языкознания, занимающийся разработкой, созданием и использованием текстовых корпусов.
2119
Wallis S. (2016). Why Chomsky was Wrong About Corpus Linguistics / corp.ling.stats: statistics for corpus linguists, November 2, 2016 // https://corplingstats.wordpress.com/2016/11/02/why-chomsky-was-wrong/
2120
Firth J. R. (1957). A synopsis of linguistic theory 1930-1955 // https://books.google.ru/books?id=T8LDtgAACAAJ
2121
Maruyama Y. (2019). Quantum Physics and Cognitive Science from a Wittgensteinian Perspective: Bohr’s Classicism, Chomsky’s Universalism, and Bell’s Contextualism / Wuppuluri S., da Costa N. (2019). WITTGENSTEINIAN (adj.). The Frontiers Collection. Springer, Cham // https://doi.org/10.1007/978-3-030-27569-3_20
2122
Kilgarriff A., Baisa V., Busta J., Jakubicek M., Kovar V., Michelfeit J., Rychly P., Suchomel V. (2014). The Sketch Engine: ten years on / Lexicography, Vol. 1, Iss. 1, pp. 7–36 // https://doi.org/10.1007/s40607-014-0009-9
2123
* Диахрония (от греч. ??? — через, сквозь и ?????? — время) — рассмотрение исторического развития языковых явлений и языковой системы как предмета лингвистического исследования. Противопоставляется синхронии (от греч. ??? — совместно и ?????? — время) — рассмотрение состояния языка как установившейся системы в определённый момент времени.
Дело оставалось за малым — придумать такой алгоритм, который мог бы проанализировать контексты, в которых каждое слово встречается в огромном текстовом корпусе, и построить для каждого слова некий семантический вектор, который содержал бы в себе всю необходимую смысловую информацию. Опираясь на такое представление, модели машинного обучения (например, нейронные сети) могли бы эффективно решать различные задачи, требующие понимания естественного языка.
В начале XXI в. был опубликован ряд работ, посвящённых попыткам создания подобного алгоритма.
Среди них можно отметить статьи [2124] , [2125] Андрия Мниха — ещё одного аспиранта Джеффри Хинтона, Ронана Коллоберта и Джейсона Уэстона [2126] , а также соавторов Бенджио — Джозефа Туриана и Льва-Арье Ратинова [2127] . Однако решительный прорыв удалось совершить только в 2013 г., когда группа исследователей из компании Google под руководством Томаша Миколова опубликовала работу под названием «Эффективное вычисление представлений слов в векторном пространстве» (Efficient Estimation of Word Representations in Vector Space) [2128] . В конце того же года свет увидела вторая статья за авторством Миколова и его коллег под названием «Распределённые представления слов и фраз и их композиционность» (Distributed Representations of Words and Phrases and their Compositionality) [2129] , развивающая первое исследование и раскрывающая ряд новых деталей.
2124
Mnih A., Hinton G. E. (2009). A scalable hierarchical distributed language model / Advances in neural information processing systems, Vol. 21, pp. 1081—1088 // https://papers.nips.cc/paper/3583-a-scalable-hierarchical-distributed-language-model
2125
Mnih A., Teh Y. W. (2012). A fast and simple algorithm for training neural probabilistic language models // Proceedings of the 29th International Coference on International Conference on Machine Learning, pp. 419—426 // https://arxiv.org/abs/1206.6426
2126
Collobert R., Weston J. (2008). A unified architecture for natural language processing: deep neural networks with multitask learning / Proceedings of the 25th international conference on Machine learning, pp. 160—167 // https://doi.org/10.1145/1390156.1390177
2127
Turian J., Ratinov L., Bengio Y. (2010). Word representations: a simple and general method for semi-supervised learning / Proceedings of the 48th Annual Meeting of the Association for Computational Linguistics, pp. 384—394 // https://dl.acm.org/doi/10.5555/1858681.1858721
2128
Mikolov T., Chen K., Corrado G., Dean J. (2013). Efficient Estimation of Word Representations in Vector Space / International Conference on Learning Representations (ICLR-2013) // https://arxiv.org/abs/1301.3781
2129
Mikolov T., Sutskever I., Chen K., Corrado G., Dean J. (2013). Distributed Representations of Words and Phrases and their Compositionality / Proceedings of the 26th International Conference on Neural Information Processing Systems, Vol. 2, pp. 3111—3119 // https://papers.nips.cc/paper/5021-distributed-representations-of-words-and-phrases-and-their-compositionality.pdf
Помимо статей, была опубликована утилита для построения векторных представлений слов (word2vec, от word to vector — слово в вектор), а также сами наборы векторов для слов английского языка. На основе анализа поданного на вход большого текстового корпуса word2vec рассчитывает вектор признаков для каждого слова, встречающегося в корпусе, и создаёт на выходе словарь, включающий сами слова и наборы координат соответствующих им векторов.
«Под капотом» word2vec можно обнаружить сразу две нейросетевые модели, получившие названия «непрерывный мешок слов» (Continuous Bag of Words, CBOW) и «скипграмма» (Skip-gram). Обе эти модели являются прямыми наследницами модели Бенджио, поскольку получены из неё путём нескольких принципиальных доработок.
За прошедшее со времени исследований Бенджио и его коллег десятилетие появилась возможность обучать более «тяжёлые» модели с большим числом параметров. Создатели word2vec смогли увеличить длину контекста до десяти слов, а также использовать от 500 до 1000 нейронов в промежуточном (скрытом) слое сети. Однако этот прогресс был достигнут не только благодаря использованию нового поколения оборудования, но и ввиду применения методов для уменьшения количества параметров в выходном слое сети. Дело в том, что количество нейронов в выходном слое сети Бенджио равно количеству слов в словаре, и даже при сравнительно небольшом размере словаря, как это было в оригинальной работе Бенджио и его коллег, это становится проблемой. Ведь уже при словаре в 16 000 слов и 100 нейронах в скрытом слое мы получим 1,6 млн параметров, а что будет, если задействовать не игрушечный, а соответствующий реальному многообразию слов естественного языка словарь? Для реальных задач в области обработки естественного языка могут потребоваться словари в сотни тысяч или даже миллионы слов. В работе Миколова и его коллег использовался словарь размером в миллион слов, что при тысяче нейронов скрытого слоя даёт миллиард параметров на выходе сети. При размерности вектора признаков, равной 200, и длине контекста в десять слов общее число параметров сети будет равно 200 x 10 (входной слой) + 200 x 10 x 1000 (промежуточный слой) + 1000 x 1 000 000 (последний слой) = 1 002 002 000 — миллиарду с хвостиком. Как видно из этого расчёта, наибольшая часть параметров приходится на последний слой сети.
Миколов и его коллеги придумали, как можно уменьшить количество параметров в выходном слое сети, для чего ими было предложено два альтернативных метода: отрицательное семплирование [negative sampling] и иерархический softmax [hierarchical softmax].
Рассмотрим их подробнее.
Традиционно выходной слой нейронных сетей, используемых в задачах классификации с более чем двумя классами, применяет функцию softmax для нормализации выходных значений. Поскольку каждое выходное значение мы интерпретируем как вероятность принадлежности объекта одному из классов, то сумма выходных значений сети должна быть равна единице. Функция softmax является обобщением логистической функции для многомерного случая и рассчитывается по следующей нехитрой формуле: