«Не тот смысл, который мы понимаем как люди»: как найти общий язык с нейросетью

О том, как компьютер «представляет» для себя смыслы слов и текстов, как нейросеть может выучить новый язык без прямых переводов на уже известные ей, чем похожи принципы работы чат-ботов и электронных переводчиков и почему нейросети не вытеснят с работы живых людей, Indicator.Ru поговорил с компьютерным лингвистом Сергеем Шаровым. Беседа состоялась на 24-й Международной конференции «Диалог», которая была посвящена компьютерной лингвистике и интеллектуальным технологиям.

— Чем в наши дни занимается компьютерная лингвистика?

— Компьютерная лингвистика занимается всем. Основная среда человеческого общения — это язык. И в этой среде можно автоматизировать довольно большое количество функций, сейчас выполняемых человеком. Первый пример в контексте «Диалога» — это преподавание языка. Если мы преподаем иностранный язык, мы должны знать довольно много об этом языке. Знать, какие слова и конструкции являются наиболее частотными. Одно из перспективных направлений в этой области — чат-боты, с которыми человек, который пока стесняется говорить на этом языке с людьми, мог бы практиковаться. Эти чат-боты могут основаны и на печатном интерфейсе, и на голосовом интерфейсе. И это только один пример.

Также компьютерная лингвистика может заниматься извлечением информации из текста, потому что текстов сейчас вокруг нас очень много. И можно использовать технологию обработки естественного языка, чтобы нужную информацию извлекать.

Машинный перевод — это тоже важная часть компьютерной лингвистики, но и он тоже может делаться в разных контекстах. Например, мы не знаем китайского и хотим зарезервировать номер в гостинице. В таком случае наша цель — получить информацию о том, что на сайте написано. Другая задача, если вы переводчик, и вам нужно перевести документацию. В первом случае вам нужно быть уверенным, что нет ошибок содержательных, а языковые ошибки мы игнорируем. В случае поддержки деятельности переводчика, даже если есть какие-то неправильности смысловые, переводчик их найдет и поправит. Но желательно, чтобы текст был более гладкий, с правильными конструкциями.

Еще один пример — это автоматическая оценка работы студентов. В частности, одна из тем (у меня этим аспирант занимается) – это оценка работы студентов-переводчиков. Их задача — перевод текста на экзамене. С помощью тех же самых технологий обработки естественного языка можно предсказать, хорошего качества перевод у них получается перевод или нет. Тот же самый подход можно применить для оценки качества машинного перевода.

Еще одна тема, когда имеются тестовые задания не с ответами «да» или «нет», а когда студент должен дать объяснение, например, при решении задачи по физике. И при оценивании надо не просто определить, что объяснение правильное, но и понять, соответствует ли оно тому, что спрашивается.

Это примеры тех технологий компьютерной лингвистики, которые могут быть использованы буквально завтра.

— В чем особенности компьютерной лингвистики, имеющей дело с русским языком?

— Конечно, у каждого языка есть особенности. И если что-то хорошо работает на английском языке, нет никаких гарантий, что оно будет так же хорошо работать и на других языках. С другой стороны, все языки следуют некоторой логике, и в этом смысле во всех языках есть похожие явления. Например, в языке может не быть различия между глаголом и прилагательным. Но это неважно, поскольку в любом языке есть возможность говорить о действиях и есть возможность говорить о качествах. Это означает, что какие-то базовые принципы и для описания языка, и для использования в компьютерной лингвистике абсолютно одинаковы.

В современной компьютерной лингвистике все упирается в использование больших объемов данных. Если у нас есть знания о том, как то или иное явление в языке выражается на больших объемах данных, мы можем построить модель. Самое главное, чтобы у нас был тренировочный корпус. Есть тренировочный корпус — мы можем построить модель любого языка. Но для каждого языка она будет в чем-то ущербна. Одна из особенностей русского языка, если мы сравниваем с большинством языков Западной Европы, это огромное количество форм. У нас есть существительное, у которого есть множественное число, единственное число и много разных падежей. Для прилагательных ситуация еще хуже: они согласуются с существительными и еще и по родам изменяются. Большее количество форм означает, что нам требуется большее количество данных, потому что мы должны представить то же самое слово в разных формах. В результате это создает дополнительную сложность. Но принципиальных различий здесь нет, и мы всегда можем построить успешную модель и для русского языка тоже.

Еще одна тема, которая довольно близка тому, что я делаю, — это использование родственных языков. Как я уже сказал, нужно большое количество данных для построения модели, и для русского языка эти данные есть. Для того же белорусского языка у нас существенно меньше данных. В более широком пространстве славянских языков также существенно меньше данных для польского. И, хотя сходство между польским и русским меньше, наверное, мы можем использовать некоторые методы компьютерной лингвистики, чтобы сделать более качественную модель переносом соответствующих данных из русского языка.

— Это как когда человек учит второй иностранный язык, ему проще учить родственный, в котором грамматические формы и лексика похожи, так и нейросети «знание» похожих языков помогает выучить новый?

— Да! Да, но нет. Почему человек лучше изучает язык, если он родственен тому языку, который он знает? Многие люди, про которых говорят, что они полиглоты, работают в рамках большого количества родственных языков. Ведь, скажем, французский, итальянский, испанский, португальский, если сравнивать их с китайским, — это в некотором смысле диалекты одного и того же языка. Почему их проще изучать в группе? Потому что в них есть какие-то регулярные особенности, которые делают языки похожими. Это могут быть похожие элементы в морфологии, в лексике тоже. Если имеются регулярные соответствия между языками, нам проще интерпретировать, что представляет собой та или иная форма или конструкция в новом для нас языке.

Это одна сторона. Другая состоит в том, что с компьютером это не работает автоматически. Мы должны строить модели, чтобы искать соответствия между языками. Если мы просто тренируем нашу систему на французском и надеемся, что она и на итальянском будет хорошо работать, чаще всего это оказывается не так. Мы должны найти тот алгоритм, который позволяет нам обнаружить регулярности между французским и итальянским, и после этого мы получим хорошую модель для итальянского. Ну, или в случае со славянскими языками, для польского или белорусского на основе русского.

— Вы говорили об использовании параллельных корпусов текстов, в то время когда у нейросети для обучения есть текст на одном языке и его перевод на другой. В прошлом году вышло сразу две публикации (1 и 2) о том, что нейросети теперь могут выучить новый язык, даже когда тексты в примерах совершенно разные. Как это делается и как это возможно?

— Это возможно, но история гораздо глубже, чем использование нейросетей. Это как раз та область, в которой я работаю. Я организую конференцию по сравнимым корпусам. Сравнимый корпус — это набор текстов на одном языке и набор текстов на другом, которые не являются переводами друг друга. Я участвую в организации этой конференции десять лет, и эта тема существовала еще раньше, даже раньше, чем появились нейросети. С одной стороны, главный принцип довольно прост, с другой стороны, его трудно реализовать.

Возьмем такой пример, как извлечение словарей. У нас имеется набор текстов на английском языке и на русском языке, и у нас имеется знание, что английский глагол «drink» соответствует русскому глаголу «пить». Если у нас нет какого-то словаря напитков, мы можем сказать, что у нас довольно часто слово «drink» сочетается со словом «wine», а слово «пить» сочетается со словом «вино». В данном случае мы не можем сказать точно, как соответствуют «wine» и «вино», ведь пить можно любой из множества напитков. Однако вино бывает красное и белое, в английском это будет «red» и «white». Если мы комбинируем информацию, что «drink» и «wine» встречаются с примерно той же частотой, что «пить» и «вино», а «red wine» и «white wine» — с той же частотой, что и «белое вино» и «красное вино», то из этих данных можно вывести довольно надежный словарь. И такие методы начали использоваться еще с 90-х годов.

Принцип использования нейронных сетей для поиска переводов похож. Я показал на простом примере, как это работает при подсчете частоты словосочетаний. Нейронные сети более эффективны для предсказания словосочетаний, и в этом причина, почему они сейчас популярны. Мы можем строить лучшие модели с помощью нейросетей и искать соответствия между языками даже без параллельного корпуса текстов. Самое главное здесь – поиск регулярностей. Если мы можем найти какое-то описание, которое делает регулярности между каким-то количеством слов и конструкций одного языка и конструкций одного языка и другого языка, мы можем получить более быструю и более точную модель перевода и без параллельных текстов с переводами.

— Я читала, что при работе с несовпадающими текстами нейросети используют некий «промежуточный» язык. Что это и как это работает?

— Все-таки на данном этапе это не язык. Как исходная идея, мысль о промежуточном языке появилась в 50–60-е годы, очень часто это называют словом «интерлингва». Это некое представление, которое абстрагируется от случайных элементов того, что имеется в английском, русском, немецком языке. Сначала мы переводим наш текст на этот абстрактный язык-интерлингву, и после этого мы можем уже этот текст в интерлингве породить на английском, русском, французском и других языках. На практике этот подход никогда не работал. Именно потому, что интерлингва — слишком сложное представление.

Для обработки естественного языка с помощью нейронных сетей, для поиска переводческих эквивалентов, мы получаем статистику регулярностей, которая покрывает одновременно несколько разных языков. Я привел пример с вином – на немецком у нас будет такая же структура «Wein» и «trinken», там тоже есть «Rotwein» «Weißwein», и с некоторой долей вероятности можно построить регулярное соответствие во всех языках. Это математическая модель, а не язык в чистом виде. Но за счет того, что у нас есть сеть соответствий, и она работает между английским и русским, английским и немецким и между немецким и русским одновременно, все элементы этой сети помогают друг другу, показывая, что регулярно соотносится между языками с точки зрения перевода.

В результате после того, как мы выкатили наш корпус из питья вина и красного и белого вина на трех языках, мы получим общую модель регулярности. Если у нас даже не было никогда корпуса, который переводил бы с немецкого на русский, эта модель часто будет предсказывать переводы за счет полученных регулярностей. Один из видов этой регулярности называется эмбеддинг (векторное представление слов для обработки естественного языка, — прим. Indicator.Ru). Это геометрическая модель, в которой вектора слов, похожих по смыслу, близки между собой. Если мы породили эти эмбеддинги, мы можем найти и способы соответствия между ними в разных языках. Узнав соответствия между английским и немецким и между русским и английским, мы можем построить модель соответствия между немецким и русским.

— Похожим образом работают чат-боты, когда отвечают на вопросы? Они ищут регулярности и соответствия?

— Я уже начал говорить, что вся обработка языка может быть сведена к поиску регулярностей. Чат-боты тоже начались намного раньше, чем появились нейронные сети. Первые чат-боты появились в шестидесятых, и они были основаны на правилах. С правилами все было просто. Классический пример — это ELIZA, такая программа, с которой можно беседовать, и она отвечает как псевдопсихотерапевт. Если человек говорит, что его что-то пугает, она перестраивает фразу и спрашивает: «А почему вас это пугает?» В существующих системах с машинным обучением ситуация почти такая же, за исключением того, что мы не видим правил в чистом виде. В них снова происходит поиск регулярных соответствий.

Один из классических примеров чат-бота — поиск ответов на вопросы. Например, на сайте авиакомпании человек может спросить, как ему поменять дату вылета в его билете. Имеется довольно большой набор вопросов, которые могут задать, и набор правильных ответов на эти вопросы, которые раньше давал человек. После этого нейросеть ищет регулярности. Потенциальных вопросов очень много, и одни и те же вопросы могут быть выражены разными словами и синтаксическими конструкциями. Что нам нужно сделать? Во-первых, с помощью эмбеддинга понять, какие слова и конструкции похожи по смыслу и как из набора конструкций, которые есть, мы можем построить представление, которое абстрагируется от использования конкретных слов и конкретных конструкций к тому, что представляет собой смысл этого вопроса.

Это не тот смысл, который мы понимаем как люди. Мы можем концепты даты и вылета нарисовать кружочками и соединить их, но у нейросети снова будет модель регулярностей. Например, есть некое регулярное соответствие между словами «дата» и «вылет». Вместе они образуют некую конструкцию «дата вылета». И мы находим точку в большом многомерном пространстве, которой соответствует это запрос. И похожие запросы находятся примерно рядом, в этом же пространстве. С другой стороны, есть пространство эмбеддинга с некими идеальными ответами, которые записаны в базе данных. И мы тренируем систему, чтобы она находила соответствия между этими точками в пространстве. Это один способ того, как работают чат-боты.

Другой способ похож на использование машинного перевода. То есть мы должны перевести вопрос в ответ. Мы можем представить себе, что это та же самая задача, что и у программы ELIZA. Мы должны напечатать некий ответ, который возможен в ситуации этого запроса.

Нейронные сети очень хороши в предсказании того, что может быть напечатано, в предсказании того, каким будет следующее слово. Как если вы начнете что-то вбивать в строку поиска в Google или «Яндекс», то будут появляться подсказки. С помощью нейронных сетей это делается более эффективно, чем более традиционными методами, которые использовались десять лет назад.

Здесь мы разбиваем связь: мы печатаем вопрос, а система начинает предсказывать ответ. Это довольно эффективно, но мы в некотором роде теряем смысл. Представление о том, что такое «дата вылета», отсутствует в этой системе. Она всего лишь предсказывает, что если человек начал печатать «дата вылета», то правильный ответ будет в какой-то точке пространства эмбеддингов.

— То есть нейросеть не понимает смысла того, что говорят, просто предсказывает вероятности?

— Если снова использовать геометрическое представление, для любого текста она находит некую точку. И от этой точки нейросеть находит регулярные связи с ответом. И этот ответ удивительным образом часто оказывается правильным. Мы со всем согласны и готовы использовать нейросеть дальше, если только она не делает ошибки слишком часто.

И здесь проблема заключается в том, что, если она делает ошибки редко, мы начинаем ей верить. И в какой-то момент она делает катастрофическую ошибку, которую человек сделать не может. Например, есть предложение со смыслом «открыть окно», а она может сгенерировать перевод «закрой дверь». Человек может неверно интерпретировать какие-то вещи, может ошибиться, но, если у него есть эти два смысла, он их не перепутает. Нейросеть, у которой есть две вещи (дверь и окно), используемых в похожем контексте, может сгенерировать и такой вариант. И мы этому будем продолжать верить, думая, что так и было написано.

— Раньше, до нейронных сетей, для поиска или машинного перевода использовались статистические методы. А сейчас и «Яндекс», и Google переходят на нейронные сети. В чем основная эволюция между этими подходами?

— Это некий эволюционный процесс. Если кратко сформулировать, различие появилось так. Раньше велся подсчет, использовались вероятности. У нас была вероятность того, что слово «пить» сочетается со словом «вино». Мы считали довольно большую базу таких предсказаний и после этого получали некие результаты. То есть эта модель была похожа на таблицу, где записано, сколько раз встретилось что-то с чем-то. Новая модель тоже основывается на вероятностях, но она действует более тонко, делая предсказания.

Вместо того чтобы сказать, что вероятность «пить» с «вино» — это 0,3, а «пить» с «водка» — 0,4, нейронная сеть делает предсказания. Она забыла уже о том, что у нас было «вино», «чай», «кофе». Она делает предсказания о том, что возможно в данной ситуации, на основе геометрической модели с точками в очень многомерном пространстве (сотен размерностей), где «пить что-либо» находится примерно в этой области. Внутри этой области можно выделить подобласти, где чай и кофе будут ближе друг к другу, чем к вину. В предыдущей статистической модели, напротив, «чай», «вино» и «кофе» у нас были бы отдельными объектами, совершенно независимыми, которые было невозможно перепутать.

И если мы берем слово в контексте, например, речь о том, что мы сейчас в кафе и что-то заказали, то нейросеть сделает предположение, что этот эмбеддинг будет где-то в районе «пить чай/кофе». И этот район будет внутри области «пить напитки».

— И последний вопрос. Каким вы видите будущее компьютерной лингвистики? Сейчас переводчики (а иногда и новостные журналисты) любят переживать, что компьютеры заберут у них работу. Может ли это произойти? И если да, то через какое время?

— Промышленная революция привела к появлению пароходов, паровозов, автомобилей, самолетов. И мы сейчас можем передвигаться с огромной скоростью. Если самолет способен летать значительно быстрее, чем мы могли ходить сами, это не значит, что мы исчезли с лица Земли. Мы используем самолет, чтобы перемещаться из точки А в точку Б. Ровно таким же образом я с трудом себе представляю, что информационная революция, которая происходит сейчас, полностью отменит участие людей. Один из примеров — работа с переводчиками. Если раньше нужно было держать большое количество информации в памяти, то сейчас эта информация может быть извлечена довольно легко из существующих словарей, баз данных. Но те словари, которые автоматически подсказывают переводчику, не отменяют работы переводчика. Более того, с помощью новых технологий мы можем пополнять эти словари новой информацией более эффективно.

Сейчас компьютеры делают больше и больше работы за переводчика, но есть два момента. В-первых, компьютеры работают как плагиаторы. Существующие системы нейронного машинного перевода основываются на большом количестве уже переведенных текстов. Если нет текстов, переведенных людьми, компьютеры сделать нормальное предсказание не могут. Хотя бы для этого переводчики нужны. Во-вторых, возможно, для перевода того же количества текстов нужно будет меньше переводчиков в чистом виде. Но теперь нужно будет породить больше текстов. Например, раньше сайт гостиницы, как правило, оставался на местном языке, в крайнем случае переводился на английский язык. Если же у нас имеется поддержка работы переводчика с помощью систем машинного перевода, то можно породить версии сайта на всех языках, и переводчики-люди начинают переводить тексты, которые никогда раньше не переводились, потому что это было слишком дорого. Также переводчики должны будут редактировать результат машинного перевода.

Еще один вид работы для переводчиков будущего — поддержка систем машинного перевода. Чтобы система машинного перевода нормально работала, нужно кормить ее данными правильно, оценивать то, что получается из этой системы, и именно человеческий переводчик будет идеальным для проведения такой оценки.

Я не вижу причин, по которым человек полностью бы оказался нерелевантен. Человек — это то, что порождает эту коммуникацию. И мы стремимся контролировать то, что происходит. Физическое уничтожение человека, конечно, возможно, но если мы верим в лучшее, верим, что армии роботов не начнут уничтожать человечество, то человек останется источником всех новых технологий.

Пожалуйста, оцените статью:
Ваша оценка: None Средняя: 4.8 (4 votes)
Источник(и):

indicator.ru