Шрифт:
Интервал:
Закладка:
Если вы хоть раз использовали “Google Переводчик” или любую другую современную систему автоматического перевода, то знаете, что система за доли секунды переводит текст с одного естественного языка на другой. Еще больше впечатляет тот факт, что системы онлайн-перевода мгновенно переводят тексты пользователей со всего мира в круглосуточном режиме и обычно могут работать более чем с сотней различных языков. Несколько лет назад, когда мы всей семьей полгода жили во Франции, пока я была в академическом отпуске, я часто пользовалась “Google Переводчиком”, чтобы писать нашей строгой французской хозяйке дипломатичные письма о сложной ситуации с плесенью, которая сложилась в нашем доме. Учитывая, что мой французский далек от совершенства, “Google Переводчик” экономил мне долгие часы поиска незнакомых слов, не говоря уже о попытках понять, куда поставить диакритику, и не перепутать род существительных.
Я также использовала “Google Переводчик”, чтобы переводить не всегда понятные ответы хозяйки. Хотя машинный перевод позволял мне в общем понимать смысл ее ответов, выдаваемый системой английский текст всегда пестрил большими и маленькими ошибками. Я до сих пор содрогаюсь при мысли о том, какими безграмотными казались мои письма нашей хозяйке. В 2016 году Google запустила новую систему “нейронного машинного перевода”, которая, по утверждению компании, добилась “самого значительного на сегодняшний день повышения качества машинного перевода”[252], но такие системы по-прежнему сильно уступают умелым переводчикам.
На фоне холодной войны СССР и США задача автоматического перевода – в частности, в паре русский-английский – стала одним из первых проектов ИИ. В 1947 году математик Уоррен Уивер восторженно описал ранние подходы к решению этой задачи: “Естественно, возникает вопрос, нельзя ли считать задачу перевода задачей криптографии. Глядя на статью на русском, я говорю: «Эта статья написана по-английски, но зашифрована странными символами. Теперь я ее расшифрую»”[253]. Как обычно случается в ИИ, эта “расшифровка” оказалась гораздо сложнее, чем предполагалось изначально.
Как и другие проекты на заре ИИ, первые методы машинного перевода опирались на сложные наборы прописанных людьми правил. Если перед системой стояла цель перевести текст с языка оригинала (например, английского) на язык перевода (например, русский), ей давали синтаксические правила обоих языков, а также правила преобразования синтаксических структур. Кроме того, программисты создавали для системы словари с пословными (и простыми пофразными) соответствиями. Как и многие другие проекты символического ИИ, эти методы хорошо работали в некоторых узких случаях, но оставались довольно хрупкими и буксовали при встрече со всеми сложностями естественного языка, которые я описывала выше.
В 1990-х годах господствующее положение в отрасли занял другой метод – статистический машинный перевод. В соответствии с тенденциями ИИ того времени в основе этого метода лежало обучение на данных, а не следование прописанным людьми правилам. Огромный обучающий набор составлялся из пар предложений: первым в паре шло предложение на языке оригинала, а вторым – перевод этого предложения (выполненный человеком). Пары предложений были взяты из официальных документов билингвальных стран (например, все документы Парламента Канады составляются на английском и французском языках), стенограмм Организации Объединенных Наций, которые переводятся на шесть официальных языков ООН, и других больших корпусов исходных и переведенных документов.
Системы статистического машинного перевода 1990-х и 2000-х годов обычно вычисляли большие таблицы вероятностей, связывающие фразы в языках оригинала и перевода. Получая новое предложение, скажем, на английском – например, a man went to a restaurant, – система разделяла его на фрагменты (a man went и into a restaurant) и, ориентируясь на таблицы вероятностей, искала соответствия для этих фрагментов в языке перевода. В таких системах были дополнительные шаги, чтобы убедиться, что фрагменты дополняют друг друга в предложении, но главным двигателем перевода были вероятности, определенные при работе с обучающим набором. Хотя системы статистического машинного перевода имели весьма ограниченные представления о синтаксисе обоих языков, в целом они переводили тексты лучше, чем системы на основе правил.
“Google Переводчик” – возможно, самая широко используемая программа автоматического перевода – применял такие методы статистического машинного перевода с момента своего запуска в 2006 году до 2016-го, когда специалисты Google разработали более совершенный, по их утверждению, метод, названный нейронным машинным переводом. Вскоре после этого нейронный машинный перевод был внедрен во все современные программы машинного перевода.
На рис. 38 показано, что происходит, когда вы используете “Google Переводчик” (и другие современные программы машинного перевода). В примере предложение переводится с английского на французский[254]. Система достаточно сложна, и многое я упростила, но рисунок поможет вам составить представление о главных идеях[255].
Рис. 38. Схема пары сетей “кодер-декодер” для машинного перевода. Белыми прямоугольниками обозначены сеть-кодер и сеть-декодер, работающие пошагово. Входные слова – например, man – сначала преобразуются в контекстные векторы – например, wordvec (man), – а затем вводятся в сеть
В верхней части рис. 38 показана рекуррентная нейронная сеть (сеть-кодер), подобная описанной в предыдущей главе. Предложение на английском – a man went into a restaurant – кодируется на семи последовательных шагах. Белыми прямоугольниками я обозначила процесс кодирования предложения – чуть позже я расскажу, как выглядит сеть внутри этих прямоугольников. На этапе кодирования на каждом шаге последовательности сеть получает входной сигнал в форме контекстного вектора одного слова, как я описывала выше[256]. Пунктирными стрелками от одного шага к следующему обозначены рекуррентные связи в скрытом слое. Получая по одному слову за раз, сеть формирует представление английского предложения, кодируя его активациями скрытых ячеек.