Идиот или гений? Как работает и на что способен искусственный интеллект

Издательство Corpus представляет книгу Мелани Митчелл «Идиот или гений? Как работает и на что способен искусственный интеллект» (перевод Заура Мамедьярова).

За 65 лет, прошедших после Дартмутского семинара, который положил начало разработке искусственного интеллекта, в этой области совершено множество прорывов, однако до создания машины с «человеческим» интеллектом по‑прежнему далеко. Сегодня ИИ распознает изображения и переводит речь, управляет беспилотными автомобилями, обыгрывает человека в шахматы и го, но пока не способен переносить навыки на новые задачи, может перепутать соль с дорожной разметкой, а автобус — со страусом. Мелани Митчелл, одна из ведущих ученых-информатиков, знакомит читателя с историей развития ИИ и принципами его работы, рассказывает о главных проблемах его применения и перспективах создания ИИ «человеческого уровня».

Предлагаем прочитать начало одной из глав книги.

 

В компании слов

Пора рассказать вам одну историю.

Ресторан

Мужчина вошел в ресторан и заказал гамбургер «с кровью». Когда ему принесли заказ, гамбургер оказался пережарен до хруста. К столику гостя подошла официантка. «Вам нравится бургер?» — спросила она. «О, он просто великолепен», — ответил мужчина, отодвинул стул и гневно зашагал прочь, не оплатив счет. Официантка крикнула ему вслед: «Эй, а кто платить будет?» Она пожала плечами и буркнула себе под нос: «И что он так раскипятился?»

Теперь позвольте мне задать вам вопрос: съел ли мужчина гамбургер?

Полагаю, вы уверены в ответе, хотя напрямую в истории об этом не говорится. Нам, людям, легко читать между строк. В конце концов, понимание языка — включая недосказанности — фундаментальный компонент человеческого разума. Неслучайно Алан Тьюринг сделал знаменитую «имитационную игру» состязанием в генерации и понимании языка.

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

Тонкости языка

Допустим, мы хотим создать программу, которая может прочитать фрагмент текста и ответить на вопросы о нем. Сегодня вопросно-ответные системы — одно из основных направлений исследований в сфере ОЕЯ, потому что люди хотят общаться с компьютерами при помощи естественного языка (вспомните Siri, Alexa, Google Now и других «виртуальных помощников»). Однако, чтобы отвечать на вопросы о таком тексте, как история о ресторане, программе потребуются продвинутые лингвистические навыки и основательные знания об устройстве мира.

Съел ли мужчина гамбургер? Чтобы с уверенностью ответить на этот вопрос, гипотетической программе нужно знать, что гамбургеры входят в категорию «пища», а пищу можно есть. Программа должна понимать, что если человек заходит в ресторан и заказывает гамбургер, то обычно он планирует его съесть. Кроме того, ей следует знать, что после подачи заказа в ресторане гамбургер становится доступен для еды и что если человек заказывает гамбургер «с кровью», то ему, скорее всего, не захочется есть «пережаренный» гамбургер. Программа должна понимать, что в словах «он просто великолепен» кроется сарказм, «он» здесь означает «бургер», а «бургер», в свою очередь, служит синонимом «гамбургера». Программе нужно догадаться, что человек, который «зашагал прочь» из ресторана, не заплатив, вряд ли съел заказанное блюдо.

Сложно представить все фоновые знания, которые необходимы программе, чтобы уверенно отвечать на вопросы об истории. Оставил ли мужчина чаевые официантке? Программе нужно знать о традиции давать чаевые в ресторанах с целью вознаградить официантов за хорошее обслуживание. Почему официантка спросила: «А платить кто будет?»?

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

Представляя, какие знания нужны гипотетической программе, я вспоминаю о своих попытках ответить на бесчисленные вопросы, которые задавали мне дети, когда были совсем маленькими. Однажды, когда моему сыну было четыре года, я взяла его с собой в банк. Он задал мне простой вопрос: «Что такое банк?» Мой ответ породил, казалось, бесконечный каскад вопросов «почему?» и «зачем?». «Зачем людям деньги?», «Почему люди хотят, чтобы у них было много денег?», «Почему они не могут хранить деньги дома?», «Почему нельзя печатать собственные деньги?» Всё это хорошие вопросы, но ответить на них, не объясняя множество вещей, незнакомых четырехлетнему ребенку, весьма нелегко.

С машинами дело обстоит еще хуже. Слушая историю о ресторане, ребенок уже имеет представление о таких понятиях, как «человек», «стол» и «гамбургер». У детей есть зачатки здравого смысла: так, они понимают, что, выходя из ресторана, мужчина перестает быть внутри ресторана, хотя столы и стулья, вероятно, остаются на месте. А когда гамбургер «приносят», его, вероятно, приносит официантка (а не загадочные «они»). Современные машины не умеют оперировать детализированными, взаимосвязанными понятиями и здравым смыслом, к которому при понимании языка прибегает даже четырехлетний ребенок.

В таком случае не стоит удивляться, что использование и понимание естественного языка относится к одной из самых сложных задач, стоящих перед ИИ. Язык по природе своей неоднозначен: он сильно зависит от контекста и задействует огромный объем фоновых знаний, имеющихся у взаимодействующих сторон. Как и в других сферах ИИ, в первые несколько десятилетий исследователи ОЕЯ уделяли основное внимание символическим подходам на основе правил, то есть разрабатывали программы и прописывали грамматические и лингвистические правила, которые необходимо было применять к входным предложениям. Такие методы работали не слишком хорошо — судя по всему, набор четко определенных правил не может учесть все тонкости языка. В 1990‑х годах подходы к ОЕЯ на основе правил уступили место более успешным статистическим подходам, в рамках которых огромные наборы данных используются для тренировки алгоритмов машинного обучения.

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

Распознавание речи и последние 10 %

Автоматическое распознавание речи — транскрибирование устной речи в текст в реальном времени — стало первым крупным успехом глубокого обучения в ОЕЯ, и можно даже сказать, что на текущий момент это самый серьезный успех ИИ в любой области. В 2012 году, когда глубокое обучение производило революцию в компьютерном зрении, исследовательские группы из Университета Торонто, Microsoft, Google и IBM опубликовали знаковую статью о распознавании речи. Эти группы разрабатывали глубокие нейронные сети для различных аспектов распознавания речи: распознавания фонем по акустическим сигналам, предсказания слов на основе комбинаций фонем, предсказания фраз на основе комбинаций слов и так далее. По словам специалиста по распознаванию речи из Google, применение глубоких сетей привело к «самому значительному прогрессу за 20 лет исследования речи».

В тот же год появилась созданная на основе глубокой сети новая система распознавания речи, которая сначала стала доступна пользователям Android, а через два года — пользователям iPhone. Один из инженеров Apple при этом отметил: «В этой сфере произошел такой значительный скачок [производительности], что тесты пришлось повторять, чтобы убедиться, что никто не потерял десятичную запятую».

Если вы пользовались технологией распознавания речи до и после 2012 года, то наверняка заметили ее резкое улучшение. Распознавание речи, которое до 2012 года часто оборачивалось огромным разочарованием и лишь изредка приносило умеренную пользу, вдруг стало демонстрировать почти идеальные результаты в определенных обстоятельствах. Теперь я могу диктовать тексты и письма приложению для распознавания речи, установленному на моем телефоне: всего несколько минут назад я прочитала телефону историю о ресторане на обычной для себя скорости, и он верно транскрибировал каждое слово.

Меня поражает, что системы распознавания речи добиваются этого, не понимая смысла транскрибируемых слов. Хотя система распознавания речи моего телефона может транскрибировать каждое слово истории о ресторане, я гарантирую вам, что она не понимает ни саму историю, ни что‑либо еще. Многие специалисты по ИИ, включая меня, ранее полагали, что распознавание речи в рамках ИИ не добьется таких прекрасных результатов, пока не научится понимать язык. Мы оказались неправы.

При этом автоматическое распознавание речи — вопреки некоторым сообщениям прессы — еще не вышло на «человеческий уровень». Фоновый шум по‑прежнему существенно снижает точность работы систем: в движущемся автомобиле они гораздо менее эффективны, чем в тихой комнате. Кроме того, эти системы периодически спотыкаются о необычные слова и фразы, тем самым наглядно демонстрируя, что не понимают транскрибируемую речь. Например, я сказала: Mousse is my favorite dessert («Мусс — мой любимый десерт»), — но мой телефон (на Android) записал: Moose is my favorite dessert («Лось — мой любимый десерт»). Я сказала: The bareheaded man needed a hat («Мужчине с непокрытой головой нужна была шапка»), — но телефон записал: The bear headed man needed a hat («Мужчине с головой медведя нужна была шапка»). Нетрудно найти предложения, которые приведут систему в замешательство. Но при распознавании обиходной речи в тихой среде точность подобных систем, на мой взгляд, составляет примерно 90–95 % от человеческой. Шум и другие осложнения значительно ухудшают показатели.

Как известно, в любом сложном инженерном проекте действует правило: на первые 90 % проекта уходит 10 % времени, а на последние 10 % — 90 % времени. Думаю, в некотором виде это правило применимо ко многим областям ИИ (привет, беспилотные автомобили!) и оправдает себя также в сфере распознавания речи. Последние 10 % — это не только работа с шумом, непривычными акцентами и незнакомыми словами, но и решение проблемы неоднозначности и контекстуальности языка, которая осложняет интерпретацию речи. Что нужно, чтобы справиться с этими последними 10 %, которые не желают поддаваться исследователям? Больше данных? Больше сетевых слоев? Или же, осмелюсь спросить, эти последние 10 % потребуют истинного понимания речи говорящего? Я склоняюсь к последнему, хотя и знаю, что уже ошибалась раньше.

Системы распознавания речи довольно сложны: чтобы пройти путь от звуковых волн к предложениям, нужно провести несколько этапов обработки данных. В современных передовых системах распознавания речи используется несколько различных компонентов, включая ряд глубоких нейронных сетей. Другие задачи ОЕЯ, например, перевод текстов или создание вопросно-ответных систем, на первый взгляд кажутся проще: входные и выходные сигналы в них состоят из слов. И всё же в этих сферах основанный на данных метод глубокого обучения не привел к такому прогрессу, как в распознавании речи. Почему? Чтобы ответить на этот вопрос, давайте рассмотрим несколько примеров применения глубокого обучения к важным задачам ОЕЯ.

Классификация тональности

В первую очередь обратим внимание на область, называемую классификацией тональности текста. Прочтите несколько коротких отзывов на фильм «Индиана Джонс и храм судьбы»:

«Сюжет тяжел, и очень не хватает юмора».

«На мой вкус, немного мрачновато».

«Кажется, продюсеры старались сделать фильм как можно более тревожным и жутким».

«Развитие персонажей и юмор в «Храме судьбы» весьма посредственны».

«Тон странноват, и многие шутки меня не зацепили».

«Ни шарма, ни остроумия, в отличие от других фильмов серии».

Понравился ли фильм авторам отзывов?

Использование машин для ответа на такой вопрос сулит большие деньги. Система ИИ, способная точно распознать эмоциональную окраску предложения (или абзаца) — положительную, отрицательную или любую другую, — принесет огромные прибыли компаниям, которые хотят анализировать отзывы клиентов о своих продуктах, находить новых потенциальных покупателей, автоматизировать рекомендации («людям, которым понравился X, также понравится Y») и наладить таргетирование онлайн-рекламы. Данные о предпочтениях человека в кино, литературе и других сферах на удивление полезны для прогнозирования покупок этого человека (и это даже пугает). Более того, на основе этой информации можно прогнозировать и другие аспекты жизни человека, например, его поведение на выборах и реакцию на определенные типы новостей и политической рекламы. Также были попытки (порой успешные) с помощью «анализа эмоций», скажем, твитов, связанных с экономикой, прогнозировать цены акций и исход выборов.

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

Некоторые ранние системы ОЕЯ искали отдельные слова или короткие последовательности слов, которые считали индикаторами тональности всего текста. Например, можно предположить, что такие слова, как «лишенный», «мрачный», «странный», «тяжелый», «тревожный», «жуткий» и «посредственный», и такие словосочетания, как «не зацепили» и «ни шарма, ни остроумия», говорят о негативной тональности отзывов. В некоторых случаях это действительно так, но часто те же самые слова можно найти в позитивных рецензиях. Вот несколько примеров:

«Несмотря на тяжелую тему, в фильме достаточно юмора, который не позволяет ему стать слишком мрачным».

«Не понимаю, что тревожного и жуткого люди находят в этом фильме».

«Когда вышел этот великолепный фильм, я был слишком молод — и тогда он меня не зацепил».

«Не посмотрев этот фильм, вы многого лишитесь!»

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

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

Рекуррентные нейронные сети

Для обработки предложения или абзаца необходимы нейронные сети особого типа, непохожие на описанные в предыдущих главах. Так, в главе 4 мы анализировали работу сверточной нейронной сети, которая классифицировала изображения по категориям «собака» и «кошка». Ее входным сигналом была насыщенность пикселей на изображении фиксированного размера (изображения большего и меньшего размера подвергались масштабированию). Предложения, напротив, состоят из последовательностей слов, а их длина не фиксирована. Таким образом, нам нужно найти способ, которым нейронная сеть сможет обрабатывать предложения переменной длины.

Применение нейронных сетей для решения задач, в которых фигурируют упорядоченные последовательности, такие как предложения, началось в 1980‑х годах, когда были созданы рекуррентные нейронные сети (РНС), само собой, навеянные представлениями о том, как последовательности интерпретируются человеческим мозгом. Представьте, что вас попросили прочитать отзыв a little too dark to my taste («на мой взгляд, немного мрачновато») и определить его тональность — позитивную или негативную. Вы читаете предложение слева направо, по одному слову. Читая его, вы начинаете формировать свое впечатление о его тональности, и это впечатление получает подтверждение, когда вы дочитываете предложение до конца. К этому моменту у вас в мозге складывается репрезентация предложения в форме активаций нейронов, и она позволяет вам с уверенностью сказать, позитивный перед вами отзыв или негативный.

 

Рис. 32. A — схема традиционной нейронной сети; B — схема рекуррентной нейронной сети, где уровни активации скрытых ячеек в конкретный момент времени учитываются также в следующий момент

Структура рекуррентной нейронной сети следует такому последовательному чтению предложений и формированию их репрезентаций в форме активации нейронов. На рис. 32 сравниваются структуры традиционной и рекуррентной нейронной сети. Для простоты в каждой сети только две ячейки (белые круги) в скрытом слое и одна ячейка в выходном слое. В обеих сетях входной сигнал имеет связи со скрытыми ячейками, а каждая скрытая ячейка имеет связь с выходной ячейкой (сплошные стрелки). Ключевое отличие РНС в том, что у ее скрытых ячеек есть дополнительные «рекуррентные» связи: каждая из скрытых ячеек имеет связь с самой собой и другой скрытой ячейкой (пунктирные стрелки). Как это работает? В отличие от традиционной нейронной сети, РНС функционирует в соответствии с последовательностью моментов времени. В каждый момент времени РНС получает входной сигнал и вычисляет активацию своих скрытых и выходных ячеек, как и традиционная нейронная сеть. Но в РНС уровень активации каждой скрытой ячейки вычисляется не только на основе входного сигнала, но и на основе уровней активации скрытых ячеек в предыдущий момент времени. (В первый момент времени эти рекуррентные значения равняются 0.) Это дает сети способ интерпретировать слова, которые она «читает» сейчас, вспоминая контекст «прочитанного» ранее.

 

Рис. 33. Работа рекуррентной нейронной сети с рис. 32 на последовательности восьми моментов времени

Чтобы понять, как работает РНС, лучше всего представить функционирование сети во времени, как на рис. 33, который показывает РНС с рис. 32 в каждый из восьми последовательных моментов времени. Ради простоты я показала все рекуррентные связи в скрытом слое единственной пунктирной стрелкой от одного шага времени к другому. В каждый момент времени уровни активации скрытых ячеек представляют собой составленный сетью код того фрагмента предложения, который она увидела к этому моменту. Продолжая обрабатывать слова, сеть совершенствует этот код. За последним словом в предложении следует специальный символ END, который, подобно точке, сообщает сети, что предложение закончилось. Обратите внимание, что это люди добавляют символ END в конец каждого предложения, перед тем как давать текст сети.

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

Поскольку сеть перестает кодировать предложение, только встречая символ END, система теоретически может кодировать предложения любой длины в последовательность чисел — уровней активации скрытых ячеек — фиксированной длины. По очевидным причинам такие сети часто называют кодерами[1].

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

[1] Кодер — отличается от более универсального термина «кодировщик». (Прим. науч. ред.)