Марк Цукерберг создал искусственный интеллект Джарвис как из «Железного человека». Он управляет домом гендиректора Facebook, ставит ему музыку и выстреливает чистые серые футболки из специальной пушки. Мы ответили на главные вопросы об искусственном интеллекте от Цукерберга и перевели его оригинальный пост о процессе разработки Джарвиса.

Цукерберг год назад поставил цель создать искусственный интеллект

В начале каждого года Марк Цукерберг ставит себе цели на грядущие 12 месяцев. В 2010 году этой целью было выучить мандарин (диалект китайского языка), а в 2015-м — читать по две книги в месяц.

На этот год Цукерберг пообещал себе создать искусственный интеллект, как из «Железного человека». По задумке, он должен был управлять освещением, камерами и музыкой в доме.

В этот понедельник, 19 декабря, основатель Facebook заявил о завершении проекта и поделился постом, в котором описал процесс создания Джарвиса (искусственный интеллект назван в честь помощника Железного человека).

Что Джарвис умеет делать?

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

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

Как Цукерберг создавал Джарвиса?

Сам Цукерберг в своем посте разделил процесс создания Джарвис на пять больших блоков: объединенный дом, натуральный язык, распознавание лиц и объектов, бот для Facebook Messenger и распознавание речи.

Jarvis является связующим звеном между домашними системами и пользовательскими устройствами
Jarvis является связующим звеном между домашними системами и пользовательскими устройствами

Во-первых, чтобы функционировать, у Джарвиса должен быть доступ к объединенной системе устройств по всему дому (лампы освещения, камеры, бытовая техника).

Во-вторых, искусственный интеллект должен понимать натуральный язык, то есть запросы вроде «сыграй что-нибудь из Канье Уэста».

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

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

Наконец, Джарвис также должен был уметь распознавать устную речь и тоже отвечать голосом.

Пример работы Jarvis через чат-бот
Пример работы Jarvis через чат-бот

«Искусственный интеллект и ближе, и дальше, чем мы думаем»

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

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

А кто озвучивает Джарвиса? (обновлено)

Цукерберг поделился роликом, в котором показывает аспекты работы Джарвиса. Из видео также становится ясно, что искусственный интеллект озвучен актером Морганом Фриманом.

В октябре этого года Цукерберг спросил на своей странице в Facebook, кого ему стоит пригласить для озвучки Джарвиса. Люди начали рекомендовать ему Моргана Фримана, известного ученого Нила Деграсса Тайсона и, да, самого Железного человека Роберта Дауни-младшего.

Актер ответил на этот комментарий и вроде бы согласился на предложение — при условии, что гонорар получит Пол Беттани (озвучивающий Джарвиса в фильмах про Железного человека).

Впрочем, в итоге за работу взялся Фриман.

Перевод поста Цукерберга, в котором он объясняет процесс разработки Джарвиса

Моим личным вызовом на 2016 год было создать простой искусственный интеллект, который управлял бы моим домом — совсем как Джарвис в «Железном человеке».

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

За этот год я построил простой ИИ, с которым я могу разговаривать по телефону и компьютеру: он контролирует мой дом, освещение, температуру, музыку, безопасность; он узнает мои привычки и вкусы; он учит новые слова и концепты; плюс, он даже развлекает Макс [дочь Цукерберга — прим. ред]. Он использует несколько техник искусственного интеллекта, включая обработку натурального языка, распознавание речи и лиц и машинное обучение — всё это написано в Python, PHP и Objective C. В этой заметке я объясню, что я построил и чему научился в процессе.


Ролик, в котором Цукерберг демонстрирует работу Джарвиса

Начинаем: Соединяя дом

В некотором смысле, этот вызов оказался легче, чем я ожидал. На самом деле, моя цель по бегу (пробежать 365 миль в 2016 году) заняла даже больше времени. Но один аспект, который принес мне много сложностей, это процесс объединения всех различных систем в моем доме.

Перед тем, как построить ИИ, мне нужно было написать код, который бы соединил все эти системы, написанные на разных языках программирования. Мы [семья Цукерберга] используем Creston для освещения, термостата и дверей, Sonos со Spotify для музыки, Samsung для телевизора, Nest для камер и, естественно, Facebook для моей работы. В большинстве случаев мне пришлось заняться обратным инжинирингом API для этих систем, чтобы заставить их отвечать на мои команды включить свет или музыку.

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

Для того, чтобы помощники вроде Джарвиса могли управлять всем в наших домах, нам нужно больше подключенных [к интернету] устройств, а индустрии необходимо разработать общие API и стандарты для того, чтобы устройства могли друг с другом разговаривать.

Естественный язык

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

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

Понимание контекста важно для любого ИИ. Например, когда я говорю своему [ИИ, Джарвису] включить кондиционер в «моем офисе», это означает совершенно иное, нежели когда Присцилла [жена Цукерберга] просит его о том же самом. Сколько различных проблем всплыло из-за этого! Или, например, если вы просите его приглушить свет или сыграть песню, не уточняя определенную комнату, ему нужно знать, где вы находитесь — иначе в музыка зазвучит в комнате Макс именно в тот момент, когда она спит. Упс.

Музыка — более интересная и сложная плоскость для естественного языка, потому что существует слишком много артистов, песен и альбомов, и простой поиск по ключевым словам не срабатывает. Свет можно только включить или выключить, а когда вы говорите «сыграй X», даже самые маленькие вариации могут означать совершенно разные вещи. Возьмите к примеру несколько запросов, связанных с Адель: «сыграй someone like you», «сыграй кого-либо вроде Адель», «сыграй Адель» [игра слов на английском, в оригинале запросы выглядят так: «play someone like you», «play someone like adele», «play some adele»]. Они звучат похоже, но каждый из них относится к разным категориям запросов. Первый просит сыграть определенную песню, второй рекомендует артиста, а третий создает плейлист из лучших песен Адель. Сквозь систему позитивных и негативных отзывов, я научил свой ИИ видеть эти отличия.

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

Распознавание объектов и лиц

Примерно одна треть головного мозга посвящена зрению, и у ИИ есть множество проблем, связанных с пониманием того, что происходит на фото или видео. Эти проблемы включает в себя отслеживание (например, проснулась ли Макс и ползает ли она по своей кроватке?), распознавание объектом (это Бист или ковер в той комнате?) и распознавание лиц (кто стоит перед дверь?).

Распознавание лиц — особенно сложная версия распознавания объектов, потому что большинство людей выглядят относительно похоже (компьютеру легче отличить друг от друга два произвольных объекта, например, сэндвич и дом). Но Facebook очень хорош в распознавании лиц, чтобы отмечать друзей в ваших фотографиях. Та же самая технология подходит для того, чтобы ИИ мог определить, кто из ваших друзей стоит у дверей вашего дома.

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

Такой тип визуальной системы у ИИ очень подходит для определенного числа вещей: например, он знает, когда Макс просыпается, и начинает играть ей музыку или урок языка мандарин [китайский диалект], или решает проблему контекста, зная в какой комнате мы находимся и точно отвечая на открытые запросы вроде «включи свет». Как и большинство аспектов этого ИИ, зрение является полезным, когда оно информирует более широкую модель мира, объединяя другие способности — например, зная ваших друзей и открывая им дверь по их прибытии. Чем больше контекста у системы, тем умнее она становится.

Чат-бот в Messenger

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

Я начал с создания чат-бота для [Facebook] Messenger для связи с Джарвис, потому что это гораздо легче, чем создать отдельное приложение. У Messenger очень простой фреймворк для создания ботов, который автоматически делает множество вещей за вас — включая работу и на iOS, и на Android, поддержку текста, изображений и аудио, доставку уведомлений и многое другое. Подробнее о фреймворке для ботов вы можете узнать на сайте messenger.com/platform.

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

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

Это предпочтение текстовой коммуникации вместо голосовой — паттерн, который мы также видим в Messenger или WhatsApp, где объем текстовых сообщений растет гораздо быстрее объема голосовых. Значит, будущие ИИ продукты не могут полагаться лишь на голос [как это делает, например, Amazon Echo] и им стоит иметь интерфейс для личных переписок. Я всегда был оптимистичен насчет ИИ-ботов, но мой опыт с Джарвисом сделал меня еще более уверенным в том, что в будущем мы будем общаться с ботами вроде Джарвиса.

Голос и распознавание речи

Несмотря на мое мнение о том, что текст будет более важным при связи с будущими ИИ, я все равно считаю, что голос тоже играет не менее важную роль. Самое главное преимущество голоса — он быстрее. Вам не нужно доставать телефон, открывать приложение и начинать печатать — вам нужно лишь говорить.

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

Эта идея схожа с видением Amazon, которая реализует его со своим голосовым помощником Echo, но на своем опыте я обнаружил, что мне крайне часто хочется обратиться к Джарвису вне дома. Потому иметь телефон в качестве основного интерфейса вместо специально домашнего девайса — критически важно.

Я разработал первую версию приложения Джарвиса на iOS, и планирую сделать версию для Android в ближайшее время. Я не делал приложений для iOS с 2012 года, и одним из моих главных наблюдений стало то, что инструменты, которые мы создали в Facebook для разработки подобных программ, очень впечатляют в качестве распознавания речи.

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

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

В случае с Джарвисом, он предназначен для распознавания речи с близкого расстояния, в отличие от [Amazon] Echo, с которым вы можете говорить из другого конца комнаты. Эти системы более специализированы, чем мы думаем, и это значит, что мы далеки от обобщенных систем [ИИ].

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

Я научил его небольшим веселым играм вроде той, где я или Присцилла спрашиваем его, кого мы должны пощекотать следующим, а он произвольным образом отвечает «Макс» или «Бист». Ради смеха я также добавил несколько классических строчек вроде «Прости, Присцилла. Я боюсь, что не смогу этого сделать» [отсылка на искусственный интеллект HAL-9000 из фильма Стэнли Кубрика «Космическая одиссея 2001 года»].

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

Среда разработки Facebook [или немного рекламы от Цукерберга— прим. ред]

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

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

Опенсорсные пакеты Nuclide, которые мы построили для работы с гитхабовским Atom, делают разработку гораздо легче. Среда разработки Buck, которую мы создали для работы над большими проектами, тоже сэкономила мне много времени. Наш опенсорсный искусственный интеллект FastText, который классифицирует текст, тоже стоит посмотреть одним глазом, если вы заинтересованы в разработке ИИ — да и вообще, покопайтесь в гитхабовском репозитории Facebook Research.

Одна из наших ценностей — двигаться быстро. Это значит, что вы должны прийти сюда [в компанию Facebook] и построить приложение быстрее, чем где-либо еще. Вы должны прийти сюда и уметь пользоваться нашей инфраструктурой и инструментами для ИИ, для разработки вещей, на которые вы бы потратили гораздо больше времени при работе в одиночку. Создание внутренних инструментов, которые делают [программную] инженерию более эффективной, важно для любой технологической компании, и мы очень серьезно подходим к этому вопросу. Так что я призываю вас тоже пользоваться нашими инструментами, это никому не помешает.

Следующие шаги

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

В ближайшем будущем моими следующими шагами будет построить приложение для Android, настроить голосовые терминалы Джарвиса в большем числе комнат по дому и соединить больше техники. Я бы хотел, чтобы Джарвис управлял моим Big Green Egg [керамический гриль] и помогал мне в готовке, но это потребует более продвинутых модификаций, нежели оборудование пушки для футболок.

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

Наконец, было бы интересно найти способы сделать [Джарвиса] доступным для всего мира. Я думал о том, чтобы сделать его код опенсорсным, но сейчас он слишком сильно подвязан к моему собственному дому, его технике и настройкам сети. Если я когда-либо разработаю более абстрактную оболочку, возможно, я её выпущу. Или, конечно, сделаю основой для разработки совершенно нового продукта.

Выводы

Разработка Джарвиса была интересным интеллектуальным испытанием, благодаря которому я пополнил опыт работы с инструментами ИИ в сферах, которые важны для нашего будущего.

Ранее я предсказывал, что в течение 5-10 лет у нас появятся ИИ системы, которые станут более точны в каждом из наших чувств — зрении, слухе, обонянии и т.д., включая вещи вроде языка. Удивительно, насколько мощными уже стали эти инструменты, и этот год лишь убедил меня в этом предсказании.

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

Для примера: я потратил около 100 часов на разработку Джарвиса в этом году, и у меня получилась довольно хорошая система, которая понимает меня и делает множество вещей. Но даже если бы я потратил еще 1000 часов, я, скорее всего, не смог бы создать систему, которая самостоятельно обучается новым функциям — для этого нужен фундаментальный прорыв в области ИИ.

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

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