Латентная семантическая модель
Как латентная семантическая модель поможет улучшить системы машинного перевода? Что такое обучение по слаборазмеченным данным? Как обучение по слаборазмеченным данным используется при анализе Big Data? На эти и другие вопросы кандидат физико-математических наук Дмитрий Ветров.
В 2013 году инженеры корпорации Google опубликовали ряд статей по новой модели для решения достаточно хорошо изученной задачи — прогнозирования слова по его контексту в тексте. Задача хорошо изучена, для нее существует ряд стандартных методов, но публикация инженеров Google отличалась двумя особенностями. Во-первых, для решения подобной задачи они использовали глубинные нейронные сети, и, во-вторых, в качестве обучающей информации они использовали огромный корпус текстов, сопоставимый с объемом англоязычной Википедии.
В принципе, задачу им удалось решить, они получили сопоставимые с лучшими на сегодняшний день методами результаты, но наиболее интересным оказалось следующее. В процессе обучения глубинной нейронной сети каждое слово естественного языка переводилось в вектор, в некоторое семантическое пространство, каждому слову соответствовал вектор из 250 переменных. Опять же, само по себе это не новость, подобные модели существовали ранее, новостью оказались некоторые свойства, которые получило это пространствовнутренних представлений слов естественного языка, не зря его начинают называть семантическим пространством.
Оказалось, что алгебраические операции в этом пространстве соответствуют логическим операциям над смыслами слов.
Я попробую пояснить на примере. Допустим, рассмотрим представление слова «Путин» и вычтем из него представление слова «Россия». «Вычтем» в данном случае понимается в простейшем школьном арифметическом смысле. То есть из 250-мерного вектора, отвечающего представлению слова «Путин», мы вычитаем такой же 250-мерный вектор, отвечающий за слово «Россия» покомпонентно, и к разности добавим 250-мерное представление слова «Америка». Получим некоторую новую точку в 250-мерном пространстве. Если мы рассмотрим ближайшую к ней точку, которая отвечает какому-то из слов естественного языка, не удивительно уже предугадать, что ближайшей окажется точка, отвечающая за слово «Обама». То есть «Путин — Россия + Америка = Обама». И таких примеров были построены тысячи: «Париж — Франция + Италия = Рим» и многие-многие другие.
На самом деле этот результат, хотя он был получен в качестве некого побочного эффекта, сам по себе крайне примечателен. По сути, это означает, что компьютер перестает воспринимать слова как некоторые абстракции и начинает видеть в каждом слове естественного языка какой-то смысл, где под смыслом мы понимаем некоторый набор свойств, которыми данное слово обладает. Соответственно, часть свойств можно забрать, прибавить какие-то новые свойства и получить новое слово.
Результат крайне занятный, сейчас в этом направлении ведутся активные исследования. И, в частности, одну из модификаций такой модели решили разработать мы в нашей исследовательской группе. А именно, модель инженеров Google имела один серьезный недостаток, она предполагала, что каждому слову соответствует одна точка в семантическом пространстве. Для задачи прогнозирования слова по контексту этого в принципе было достаточно, но если рассмотреть эту точку в семантическом пространстве, представить, что она отвечает какому-то смыслу, возникает естественная идея моделировать точками в семантическом пространстве не слова, а их смыслы. Все мы хорошо знаем, что существует большое количество слов, у которых есть много различных смыслов, омонимы, а также слова, у которых есть разные подсмыслы в зависимости от того или иного контекста. Мы попробовали построить такую расширенную модель и назвали ее латентной семантической моделью. В нее заложено, что каждому слову может отвечать несколько точек в семантическом пространстве, конкретная точка выбирается в зависимости от конкретного контекста для каждого конкретного вхождения данного слова.
Результаты оказались достаточно забавными. Например, для английского слова bank существует два ярко выраженных смысла: bank как побережье, синоним слова shore, побережье реки, побережье моря, и bank как собственно банк. Тем не менее, когда мы запустили нашу латентную семантическую модель на достаточно большом корпусе текстов в режиме автоопределения количества смыслов для каждого слова, то компьютер неожиданно для нас нашел пять смыслов у слова bank. Первый смысл предсказуемо был bank как побережье, четыре остальных смысла отвечали слову bank как банк, но на самом деле они были немножко различными. Один смысл отвечал банку как зданию. Типичный контекст: «За банком повернете направо». Другой смысл слова банк отвечал банку как месту работы: «Вчера я уволился из банка». Третий смысл слова банк отвечал банку как месту, которое выдает деньги или которое принимает вклады: «Наш банк повысил проценты по кредитам» или «Я храню свои деньги в банке». Наконец, четвертый смысл слова банк отвечал финансовому институту как элементу финансовой системы государства. Типичный контекст: «Банки отказались инвестировать в биотехнологии».
Согласитесь, что, хотя все эти четыре смысла имеют отношение к банку как финансовому институту, но все-таки это четыре немножко разных смысла. Банк как здание, банк как организация, которая инвестирует в промышленность, — это все-таки немножко разные банки.
Удивительно, что никто компьютер этому не обучал, компьютер нашел такие подсмыслы автоматически.
Соответственно, мы возлагаем большие надежды на эту модель и предполагаем в дальнейшем ее использовать для улучшения существующих систем машинного перевода. Потому что любой лингвист, любой переводчик прекрасно знает, что невозможно переводить текст, не понимая его смысла. Это один из недостатков современных систем компьютерного перевода. Мы надеемся, что частично этот недостаток удастся снять за счет такой латентной семантической модели, потому что в ней компьютер уже понимает смысл слова и может различать среди многозначных слов, какой же конкретно смысл в данном конкретном контексте имелся в виду.
Вообще следует сказать, что эта наша латентная семантическая модель является примером нового тренда, появившегося в машинном обучении, так называемого обучения по слаборазмеченным данным. Если традиционное машинное обучение предполагало поиск зависимости между наблюдаемыми дискретными компонентами, предполагалось, что для этого у нас есть обучающая выборка, совокупность объектов, каждый объект описывается вектором переменных, часть переменных считается наблюдаемой и мы его легко можем измерить для любого объекта, а часть переменных скрытая и нам известны значения в этих скрытых переменных только для ограниченного количества объектов. Те объекты, для которых значения скрытых переменных известны, формируют обучающую выборку, анализируя которую, мы пытаемся построить алгоритм прогнозирования, который для произвольных объектов по их наблюдаемым компонентам что-то сможет сказать о скрытых компонентах этих объектов. Это классическая постановка машинного обучения.
Последние результаты, полученные в основном с помощью глубинных нейронных сетей, показывают, что можно значительно улучшить качество алгоритмов прогнозирования, если переходить к анализу больших и сверхбольших обучающих выборок. Да вот беда, для большой выборки крайне сложно получить ее так называемую полную разметку, то есть когда у нас объектов достаточно много, крайне трудозатратно для них всех измерить значения скрытых переменных. В то же время оказывается, что на практике для многих задач мы можем набрать достаточно большое количество объектов, для которых мы не знаем точное значение скрытой переменной, но знаем подмножество ее возможных значений, как правило, не очень большое. Вопрос: можем ли мы использовать такую выборку объектов, для которых наблюдаемые компоненты известны, а для скрытых компонент известно подмножество возможных значений? Можно ли использовать такую выборку в качестве обучающей и запустить классический алгоритм машинного обучения?
Такая задача получила название задача по слаборазмеченным данным, потому что объекты, у которых вместо точного значения известно допустимое множество значений скрытых переменных, называются слаборазмеченными. И оказалось, что для слаборазмеченных данных, в принципе, с использованием современных байесовских моделей можно обобщить стандартный алгоритм машинного обучения и сделать их применимыми к ситуации, когда данные являются не полностью размеченными.
Соответственно, если мы теперь вспомним латентную семантическую модель, то увидим, что эта задача как раз является типичным примером задачи со слабой разметкой в отличие от задачи прогнозирования слова по контексту, где у нас в качестве обучающей выборки мог быть любой текст. Под объектом в данном случае понимается просто позиция слова в тексте, наблюдаемая переменная, это контекст данного слова, а скрытая переменная — это само слово, которое мы пытаемся по контексту спрогнозировать, и в обучающей выборке нам скрытый компонент известен для любой позиции в тексте.
Теперь нашей скрытой компонентой является смысл слова, и как раз смысл слова нам в корпусе текстов неизвестен.
Но для каждой позиции в тексте мы в обучающей выборке, то есть в том корпусе текстов, который нам исходно дан, наблюдаем конкретное вхождение слова и знаем, что каждое конкретное слово может иметь один из некоторого небольшого количества смыслов. Тем самым скрытая переменная у нас жестко ограничена, то есть для каждого объекта возможное значение скрытой компоненты ограничено. Но конкретное значение скрытой компоненты мы не знаем. Поэтому эту задачу можно рассматривать как задачу обучения по слаборазмеченным данным и применить байесовский подход, который позволяет обобщить стандартные методы машинного обучения. И на самом деле, таких задач достаточно много и сейчас они получают очень большое распространение, особенно когда речь заходит об анализе больших данных или то, что по-английски называется Big Data.
Полный текст статьи читайте на Postnauka.ru