Перевод как кодирование и декодирование
Если вы хоть раз использовали “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]. Пунктирными стрелками от одного шага к следующему обозначены рекуррентные связи в скрытом слое. Получая по одному слову за раз, сеть формирует представление английского предложения, кодируя его активациями скрытых ячеек.
На последнем шаге времени сеть-кодер получает особый символ END, и активации скрытых ячеек становятся кодом предложения. Итоговые активации скрытых ячеек кодера даются в качестве входных сигналов второй сети, сети-декодеру, которая генерирует перевод предложения. Сеть-декодер, схема которой показана в нижней части рис. 38, представляет собой еще одну рекуррентную нейронную сеть, но выдает на выходе числа, соответствующие словам, формирующим переведенное предложение, – и каждое из них также поступает в сеть на следующем шаге[257].
Обратите внимание, что во французском предложении семь слов, а в английском – шесть. Теоретически система кодер-декодер может переводить предложения любой длины в предложения любой другой длины[258]. Однако при работе со слишком длинными предложениями сеть-кодер в итоге теряет полезную информацию, то есть “забывает” значимые ранние фрагменты предложения на более поздних шагах. Например, прочтите предложение:
My mother said that the cat that flew with her sister to Hawaii the year before you started at that new high school is now living with my cousin.
[Мама сказала, что кошка, улетевшая с ее сестрой на Гавайи за год до того, как ты перешла в новую школу, теперь живет у моей двоюродной сестры.]
Кто живет у моей двоюродной сестры? Ответ зависит от того, как глаголы is и living переводятся на некоторые языки. Люди неплохо справляются с пониманием таких витиеватых предложений, но рекуррентные нейронные сети часто теряют их нить. Путаница происходит, когда сеть пытается закодировать целое предложение одним набором активаций скрытых единиц.
В конце 1990-х годов исследовательская группа из Швейцарии предложила решение: отдельные единицы рекуррентной нейронной сети должны иметь более сложную структуру со специальными весами, определяющими, какую информацию следует передать на следующий шаг, а какую можно “забыть”. Такие сложные единицы стали называться ячейками “долгой краткосрочной памяти” (LSTM)[259]. Это название сбивает с толку, но суть в том, что эти ячейки позволяют сохранять больший объем “краткосрочной” памяти в ходе обработки предложения. Специальные веса определяются методом обратного распространения ошибки, как и обычные веса в традиционной нейронной сети. На рис. 38 кодер и декодер изображены в виде абстрактных белых прямоугольников, но в реальности такие сети могут состоять из единиц LSTM.
Автоматический машинный перевод в эпоху глубокого обучения – это триумф больших данных и высоких вычислительных скоростей. Чтобы создать пару кодер-декодер для перевода, скажем, с английского на французский, сети обучают на более чем 30 миллионах пар предложений, переведенных людьми. Глубокие рекуррентные нейронные сети, состоящие из ячеек LSTM и обученные на больших наборах данных, стали основой современных систем обработки естественного языка – не только сетей кодер-декодер, используемых “Google Переводчиком”, но и программ для распознавания речи и анализа тональности текста, а также, как мы увидим далее, вопросно-ответных систем. Чтобы улучшить показатели работы этих систем, специалисты часто прибегают к ряду хитростей – например, вводят исходное предложение в прямом и обратном порядке – и используют механизмы для анализа различных фрагментов предложения на разных шагах времени[260].
Оценка машинного перевода
В 2016 году, запустив нейронный машинный перевод в “Google Переводчике”, компания Google заявила, что новый подход “сокращает разрыв между человеческим и машинным переводом”[261]. В стремлении угнаться за Google крупные технологические компании создали свои онлайн-программы машинного перевода, также основанные на архитектуре кодер-декодер, описанной выше. Эти компании и писавшие о них отраслевые издания с энтузиазмом рекламировали такие услуги по переводу. В журнале Technology Review, издаваемом в MIT, отмечалось, что “новый сервис Google осуществляет переводы с одного языка на другой почти столь же хорошо, как человек”[262]. Компания Microsoft в пресс-релизе объявила, что ее сервис перевода новостей с китайского на английский язык “равноценен человеческому”[263]. В IBM подчеркнули, что “IBM Watson теперь свободно говорит на девяти языках (и это не предел)”[264]. Руководитель направления переводов Facebook публично заявил: “Мы полагаем, что нейронные сети усваивают основополагающую семантическую структуру языка”[265]. Исполнительный директор компании DeepL, специализирующейся на переводах, похвастался: “Наши нейронные сети [машинного перевода] достигли поразительного уровня понимания”[266].
Отчасти такие заявления подпитываются стремлением технологических компаний продавать различные ИИ-сервисы бизнесу, ведь переводы с языка на язык имеют высокие перспективы прибыли. “Google Переводчик” и подобные сайты предлагают бесплатный перевод небольших фрагментов текста, но компании, желающие перевести большой объем документов или обеспечить перевод своих сайтов для клиентов, могут найти множество платных сервисов машинного перевода, основанных на архитектуре кодер-декодер.
В какой степени мы можем верить утверждениям, что машины усваивают “семантическую структуру” языка или что машинный перевод стремительно приближается к человеческому уровню точности? Чтобы ответить на этот вопрос, давайте внимательнее изучим фактические результаты, на которых основаны эти заявления. В частности, давайте выясним, как эти компании изменяют качество машинного и человеческого перевода. Оценка качества перевода – нетривиальная задача. Один и тот же текст может быть верно переведен целым рядом способов (и еще бóльшим количеством способов он может быть переведен неверно). Поскольку задача на перевод определенного текста не предполагает единственного верного ответа, сложно разработать автоматический метод расчета точности системы.
Утверждения о достижении “человеческого уровня” и “сокращении разрыва между машинами и людьми” в машинном переводе основаны на двух методах оценки результатов перевода. Первый метод автоматизирован и предполагает применение компьютерной программы, которая сравнивает машинный перевод с человеческим и выдает оценку. Второй метод предполагает “ручную” оценку перевода двуязычными людьми. В рамках первого метода почти всегда используется программа BLEU (Bilingual Evaluation Understudy – Ассистент двуязычной оценки)[267]. Для оценки качества машинного перевода перевода BLEU, по сути, считает количество совпадений – между словами и фразами разной длины, – сравнивая переведенное машиной предложение с одним или несколькими “образцовыми” (то есть “верным”) переводами того же предложения, выполненными человеком. Хотя оценки BLEU часто совпадают с человеческими суждениями о качестве перевода, она склонна завышать оценку плохих переводов. Несколько специалистов по машинному переводу сказали мне, что BLEU несовершенна и используется лишь потому, что никто пока не предложил автоматизированный метод, который в целом работал бы лучше.
С учетом несовершенства BLEU “золотым стандартом” оценки системы машинного перевода остается “ручная” оценка сделанных системой переводов двуязычными людьми. Те же самые судьи могут также выставлять оценки работам профессиональных переводчиков, чтобы сравнивать их с оценками машинных переводов. Однако и у этого, эталонного, подхода тоже есть свои недостатки: людям, разумеется, нужно платить за работу, и они – в отличие от компьютеров – устают после оценки нескольких десятков предложений. Таким образом, если у вас нет возможности нанять целую армию двуязычных оценщиков, имеющих в своем распоряжении большое количество времени, вам под силу лишь ограниченная оценка переводов.
Специалисты по машинному переводу из Google и Microsoft осуществляли эталонную (хоть и ограниченную) оценку качества переводов, нанимая небольшие группы двуязычных людей[268]. Каждому оценщику давали набор предложений на языке оригинала и набор соответствующих предложений на языке перевода. Переводы создавались как системой нейронного машинного перевода, так и профессиональными переводчиками. В оценке Google использовалось около пятисот предложений из новостей и статей “Википедии” на нескольких языках. Определив среднее арифметическое оценок, проставленных каждым оценщиком, а затем среднее арифметическое оценок, проставленных всеми оценщиками, исследователи Google обнаружили, что средняя оценка их системы нейронного машинного перевода была близка к оценке предложений, переведенных людьми (хоть и оставалась ниже). Такие результаты наблюдались во всех языковых парах, проходивших оценку.
В Microsoft подобный метод средних использовали для оценки перевода новостей с китайского на английский язык. Оценки переводов, выполненных системой нейронного машинного перевода Microsoft, были очень близки к оценкам человеческих переводов (и иногда даже превосходили их). Во всех случаях оценщики ставили переводам, сделанным при помощи системы нейронного машинного перевода, более высокие оценки, чем переводам, выполненным с использованием более ранних методов машинного перевода.
Иными словами, появление глубокого обучения улучшило машинный перевод. Но можем ли мы интерпретировать эти результаты таким образом, чтобы оправдать заявление, что машинный перевод теперь близок к “человеческому уровню”? На мой взгляд, это утверждение необоснованно по нескольким причинам. Прежде всего, вычисление средних оценок может вводить в заблуждение. Представьте ситуацию, в которой большинство переведенных предложений получило оценку “великолепно”, в то время как многим была присвоена оценка “ужасно”. Их средней оценкой станет “довольно хорошо”. Однако вы, вероятно, предпочтете более надежную систему перевода, которая всегда “довольно хороша” и никогда не бывает “ужасна”.
Кроме того, утверждения, что эти переводческие системы близки к “человеческому уровню” или “равноценны человеку”, всецело основаны на оценке переводов отдельных, изолированных предложений, а не более длинных фрагментов текста. В более длинных фрагментах текста предложения могут в значительной степени зависеть друг от друга, но их взаимосвязи можно упустить, если переводить их по отдельности. Я не видела ни одного формального исследования по оценке машинного перевода длинных фрагментов текста, однако, ориентируясь на собственный опыт, могу сказать, что качество перевода, скажем, “Google Переводчика” существенно снижается при переводе целых абзацев, а не отдельных предложений.
Наконец, во всех оценках использовались предложения, взятые из новостей и со страниц “Википедии”, которые обычно написаны таким образом, чтобы избежать двусмысленности и не допустить использования идиом, в то время как идиоматический язык может вызывать у систем машинного перевода серьезные затруднения.
Трудности перевода
Помните историю о ресторане, которую я рассказала в начале предыдущей главы? Я написала ее не для того, чтобы тестировать переводческие системы, но она хорошо иллюстрирует трудности, которые вызывает у систем машинного перевода разговорный, идиоматический и потенциально неоднозначный язык.
С помощью “Google Переводчика” я перевела историю о ресторане с английского на французский, итальянский и китайский языки. Получившиеся переводы (без оригинала) я отправила двуязычным друзьям, владеющим английским языком и языками перевода, и попросила их перевести перевод Google обратно на английский, чтобы понять, что именно человек, говорящий на языке перевода, может узнать из текста, переведенного на этот язык. Результатами моего эксперимента вы можете насладиться ниже. (Выполненные “Google Переводчиком” переводы, с которыми работали мои друзья, приводятся в примечаниях в конце книги.)
Оригинал:
A man went into a restaurant and ordered a hamburger, cooked rare. When it arrived, it was burned to a crisp. The waitress stopped by the man’s table. “Is the burger okay?” she asked. “Oh, it’s just great”, the man said, pushing back his chair and storming out of the restaurant without paying. The waitress yelled after him, “Hey, what about the bill?” She shrugged her shoulders, muttering under her breath, “Why is he so bent out of shape?”
Мужчина вошел в ресторан и заказал гамбургер “с кровью”. Когда ему принесли заказ, гамбургер оказался пережарен до хруста. К столику гостя подошла официантка. “Вам нравится бургер?” – спросила она. “О, он просто великолепен”, – ответил мужчина, отодвинул стул и гневно зашагал прочь, не оплатив счет. Официантка крикнула ему вслед: “Эй, а кто платить будет?” Она пожала плечами и буркнула себе под нос: “И что он так раскипятился?”
Обратный перевод с Google-французского, выполненный человеком:
Мужчина вошел в ресторан и заказал гамбургер, прожаренный нечасто. Когда он пришел, он обжегся на хрустящем. Перед столиком мужчины остановилась официантка. “С гамбургером все в порядке?” – спросила она. “О, он чудесен”, – ответил мужчина, отодвигая стул и выходя из ресторана, не заплатив. Официантка крикнула ему вслед: “Слушай, что там с законопроектом?” Она пожала плечами, бормоча во вдох: “Почему его так перекосило?”[269]
Обратный перевод с Google-итальянского, выполненный человеком:
Мужчина пошел в ресторан и заказал бургер, прожаренный редко. Когда его принесли, он был сожжен для миндального грильяжа. Официантка остановилась рядом со столиком мужчины. “Вам нравится бургер?” – спросила она. “О, он просто невероятен”, – ответил мужчина, отодвинул стул и покинул ресторан, не заплатив. Официантка крикнула ему вслед: “Эй, а платить кто будет?” Она пожала плечами и тихим голосом пробормотала: “Почему он такой изогнутый?”[270]
Обратный перевод с Google-китайского, выполненный человеком:
Мужчина вошел в ресторан и заказал редкий гамбургер. Когда он добрался до места назначения, он был прожарен слишком сильно. Официантка остановилась возле столика мужчины. “Хороший гамбургер?” – спросила она. “О, он великолепен”, – ответил мужчина, отодвинул стул в сторону и поспешил к выходу из ресторана, не заплатив. Официантка крикнула: “Эй, а платить кто будет?” Она пожала плечами и прошептала: “Почему он был такой сутулый?”[271]
Читать эти переводы – все равно что слушать знакомое музыкальное произведение в исполнении талантливого, но склонного к ошибкам пианиста. В целом, история узнаваема, но досадным образом исковеркана: короткие отрезки мелодии звучат прекрасно, но их постоянно прерывают режущие слух фальшивые ноты.
Можно видеть, что “Google Переводчик” порой выбирает неверное значение при переводе многозначных слов, таких как rare (“с кровью”, редкий и др.) и bill (счет, акт, билль и др.) – в переводе на французский они превратились в “нечасто” и “законопроект”. Это происходит, потому что программа не обращает внимания на контекст, формируемый предыдущими словами и предложениями. Такие идиомы, как burned to a crisp (пережарен до хруста) и bent out of shape (раскипятился, вышел из себя), переводятся странным образом: похоже, программа не умеет находить соответствующие идиомы в языке перевода или понимать их истинное значение. В то время как основной костяк истории сохраняется, во всех переводах оказываются утраченными некоторые важные тонкости, включая гнев мужчины, выраженный фразой storming out of the restaurant (гневно зашагал прочь из ресторана), и неудовольствие официантки, показанное выражением muttering under her breath (буркнула себе под нос). Не говоря уж о том, что верная грамматика порой пропадает без следа.
Я не придираюсь конкретно к “Google Переводчику” – я попробовала несколько других сервисов онлайн-перевода и получила схожие результаты. Это неудивительно, поскольку все подобные системы используют практически идентичную архитектуру кодер-декодер. Также важно отметить, что полученные переводы относятся к конкретному моменту развития переводческих систем, которые постоянно совершенствуются, в связи с чем некоторые переводческие ошибки из моих примеров могут оказаться исправленными к тому времени, когда вы прочтете эти строки. Однако я полагаю, что машинный перевод еще долго не достигнет уровня человеческого – а если и достигнет, то лишь в частных случаях.
Основное препятствие в том, что системы машинного перевода, как и системы распознавания речи, выполняют свою задачу, не понимая обрабатываемый текст[272]. В сфере перевода, как и в сфере распознавания речи, остается вопрос: какая степень понимания необходима машинам, чтобы они смогли добиться человеческих результатов? Дуглас Хофштадтер утверждает: “Перевод – это гораздо более сложная задача, чем поиск соответствий в словаре и перестановка слов… Перевод предполагает наличие ментальной модели мира, о котором идет речь”[273]. Например, человеческий перевод истории о ресторане предполагает наличие ментальной модели, в рамках которой в ситуации, когда человек выбегает из ресторана, не заплатив, официантка с большей вероятностью кричит ему вслед об оплате счета, чем о “законопроекте”. Словам Хофштадтера вторит недавняя статья исследователей ИИ Эрнеста Дэвиса и Гэри Маркуса: “Машинный перевод… часто сталкивается с проблемами неоднозначности, разрешить которые невозможно, не добившись истинного понимания текста – и не пустив в ход знания о реальном мире”[274].
Может ли сеть кодер-декодер усвоить необходимые ментальные модели и знания о реальном мире, просто получив более крупный обучающий набор данных и большее количество сетевых уровней, или необходимо нечто фундаментально иное? В ИИ-сообществе этот вопрос по-прежнему остается открытым и вызывает горячие споры. Пока я просто скажу, что нейронный машинный перевод может быть впечатляюще эффективным и полезным для различных целей, но без постредактирования квалифицированными специалистами этот перевод остается совершенно ненадежным. Если вы используете машинный перевод – а я его использую, – не принимайте результаты за чистую монету. Когда я обратилась к “Google Переводчику”, чтобы перевести фразу take it with a grain of salt (“не принимать за чистую монету”, буквально – “принимать с крупицей соли”) с английского языка на китайский, а затем обратно на английский, он сказал мне bring a salt bar (“принести соленый батончик”). Может, лучше так и поступить.
Перевод изображений в предложения
Вот безумная идея: может ли система вроде пары нейронных сетей, построенных на основе архитектуры кодер-декодер, не только переводить тексты с одного языка на другой, но и переводить изображения в тексты? Для этого одну сеть нужно использовать для кодирования изображения, а другую – для “перевода” изображения в предложение, описывающее содержание изображения. В конце концов, разве создание подписи к изображению нельзя назвать другим типом “перевода” – перевода с “языка” изображения на язык подписи?
Рис. 39. Схема автоматизированной системы подписи изображений, разработанной в Google
Как выясняется, эта идея не такая уж безумная. В 2015 году две группы исследователей – одна из Google, другая из Стэнфордского университета – независимо друг от друга опубликовали очень схожие статьи на эту тему в рамках одной конференции по компьютерному зрению[275]. Я опишу систему Show and Tell (“Покажи и назови”), разработанную в Google, потому что ее концепция несколько проще.
На рис. 39 показана схема работы системы Show and Tell[276]. Она напоминает схему системы кодер-декодер с рис. 38, но здесь входным сигналом служит изображение, а не предложение. Изображение загружается не в сеть кодирования, а в глубокую сверточную нейронную сеть. Эта сеть подобна тем, которые я описала в главе 4, но не выдает классификации объектов: активации ее последнего уровня становятся входными сигналами для сети-декодера. Сеть-декодер “декодирует” эти активации и выдает предложение. Чтобы закодировать изображение, авторы использовали сверточную нейронную сеть, обученную классификации изображений на огромной базе ImageNet, описанной в главе 5. Задача состояла в том, чтобы научить сеть-декодер выдавать подходящую подпись для входного изображения.
Как эта система учится генерировать осмысленные подписи? Как вы помните, обучающие данные для машинного перевода текстов состоят из пар предложений, в которых первое предложение пары написано на языке оригинала, а второе представляет собой перевод этого предложения, выполненный человеком. В случае с подписями к изображениям каждый пример состоит из изображения, в паре к которому идет подпись. Изображения были скачаны из таких хранилищ, как Flickr.com, а подписи к ним – созданы людьми, а именно сотрудниками краудсорсинговой платформы Amazon Mechanical Turk, которых компания Google наняла для проведения этого исследования. Поскольку подписывать изображения можно по-разному, каждое изображение подписывали пять разных людей. Таким образом, каждое изображение включалось в базу данных пять раз, каждый раз в паре с новой подписью. На рис. 40 показано одно из тренировочных изображений и подписи, которые сделали к нему сотрудники Amazon Mechanical Turk.
Рис. 40. Образец тренировочного изображения с подписями, сделанными сотрудниками Amazon Mechanical Turk
Сеть-декодер Show and Tell обучалась примерно на 80 тысячах пар изображение-подпись. На рис. 41 приводится несколько примеров подписей, которые обученная система Show and Tell сгенерировала для тестовых изображений, то есть для изображений, не входивших в тренировочный набор.
Как тут не восхититься и, пожалуй, даже не изумиться, что машина может получать изображения в форме необработанных пикселей и выдавать такие точные подписи! Я испытала именно такие чувства, впервые прочитав о полученных результатах в The New York Times. Автор статьи, журналист Джон Маркофф, начал свою заметку осторожно: “Две группы ученых, работавшие независимо друг от друга, создали программу искусственного интеллекта, способную распознавать и описывать содержание фотографий и видео с гораздо большей точностью, чем когда-либо ранее, порой даже имитируя человеческий уровень понимания”[277].
Рис. 41. Четыре (правильные) подписи, автоматически сгенерированные системой Show and Tell (Google)
Другие не стали проявлять такую сдержанность. “Теперь ИИ Google может подписывать изображения почти так же хорошо, как люди”, – объявил один новостной сайт[278]. Используя подобные методы, другие компании быстро занялись генерацией автоматизированных подписей к изображениям и сделали собственные заявления. “Исследователи Microsoft идут в авангарде разработки технологии, которая сможет автоматически распознавать объекты на картинке, интерпретировать происходящее и создавать точную подпись к изображению”, – утверждалось в блоге Microsoft[279]. В Microsoft даже создали онлайн-демо системы, получившей название CaptionBot. На сайте CaptionBot говорится: “Я понимаю содержание любой фотографии и стараюсь описать ее не хуже человека”[280]. Такие компании, как Google, Microsoft и Facebook, начали обсуждать, как можно было бы использовать технологию автоматизации описания изображений для незрячих и слабовидящих людей.
Рис. 42. “Не совсем точные” подписи, сгенерированные системой Show and Tell (Google) и программой CaptionBot (Microsoft)
Но не стоит бежать впереди паровоза. Автоматическая генерация подписей порой впадает в те же крайности, что и машинный перевод. Когда система работает хорошо, как на рис. 41, кажется, что в дело вмешивается магия. Однако, совершая ошибки, она может выдавать как слегка неточные, так и совершенно несуразные подписи. На рис. 42 показано несколько примеров ошибочных подписей. Возможно, они заставят вас рассмеяться, но, если вы человек незрячий и не видите фотографию, вам будет сложно определить, хорошая вам попалась подпись или плохая.
Хотя CaptionBot, созданный в Microsoft, говорит, что “понимает содержание любой фотографии”, на самом деле все наоборот. Даже выдавая верные подписи, эти системы не понимают фотографии в том смысле, в котором их понимают люди. Когда я загрузила в CaptionBot фотографию “военнослужащая с собакой в аэропорту” из главы 4, система выдала подпись “мужчина держит собаку”. Близко. Правда, это не “мужчина”. И все же эта подпись упускает все интересные особенности снимка, не учитывая, как он обращается к нам, к нашему опыту, чувствам и знаниям о мире. Иными словами, она упускает смысл фотографии.
Я уверена, что такие системы будут совершенствоваться, по мере того как исследователи будут расширять базы данных и разрабатывать новые алгоритмы. Однако, на мой взгляд, полное отсутствие понимания в сетях генерации подписей неизбежно означает, что эти системы останутся ненадежными, как и системы машинного перевода. В одних случаях они будут работать очень хорошо, а в других – с треском проваливаться. Более того, даже когда они будут выдавать в целом верные результаты, часто они не смогут ухватывать суть изображения, если запечатленная на нем ситуация богата смыслом.
Пока еще системы обработки естественного языка, которые классифицируют эмоциональную окраску предложений, переводят документы и описывают фотографии, далеки от человеческого уровня. Тем не менее они полезны для решения многих практических задач, а потому приносят большие прибыли разработчикам. Однако исследователи обработки естественного языка мечтают о создании машины, которая сможет свободно и гибко взаимодействовать с пользователями в реальном времени – в частности, разговаривать с ними и отвечать на их вопросы. В следующей главе мы узнаем о трудностях, возникающих при создании систем ИИ, работающих со всеми нашими запросами.