Ян Лекун — французский ученый, профессор, глава Лаборатории искусственного интеллекта Facebook. Он применяет нейросети в распознавании символов и компьютерном зрении. Ученый уверен, что в будущем машины займутся самообучением с помощью наблюдения за миром, как это делают дети. Мы записали выступление Яна Лекуна на саммите Machine Can See 2018 в Москве, — о том, как создать прогностические модели мира, и почему машины до сих пор не научились рассуждать.
Сверточные сети и репрезентация событий
История глубинного обучения — это история обучения с учителем (supervised learning — «Хайтек»). Она началась с модели сравнительного распознавания образов, которая появилась в 50–60-х гг. Ее принцип работы сводится к поиску ассоциаций между выходными данными и входными, благодаря обучению машины на тысячах или миллионах примеров.
С помощью глубокого обучения мы генерируем изображения и переводим языки. Мы ассоциируем слова с речью, переводим речь в слова, переводим изображения в категории, портреты — в имена, для распознавания лиц, мы создаем подписи к фотографиям.
Одно из основных ограничений обучения с учителем — это требование большого количества примеров. Машинное обучение отличает от остальных подходов то, что вместо необходимости выделения признаков вы создаете целую систему — каскад или граф определенных операторов. Затем вы обучаете их в процессе. Это не работало, пока у нас не появились мощные машины и подходящие наборы данных для обучения.
Обобщение сверточных сетей для входящих данных — это представление в виде функции на графе. В действительности сверточные сети (специальная архитектура искусственных нейронных сетей, предложенная Яном Лекуном в 1988 году для распознавания изображений — «Хайтек») были вдохновлены биологией, так же как самолеты — птицами.
Основная идея — использование сверточной сети позволяет системе достаточно эффективно обучиться репрезентации событий. Мы использовали сверточные сети не только для распознавания отдельного объекта, но и для сложного объекта или их совокупности. У нас есть способ научить сеть находить сложный объект на изображении, распознать объекты и имплицитно сегментировать их. Система спонтанно отделяет друг от друга объекты или объекты на заднем плане.
От игрушечных роботов к беспилотным автомобилям
Моим первым проектом с нейронными сетями в 2002–03 гг. был игрушечный робот с самоуправлением при помощи небольшой дорожки видеоконтроля. Идея очень проста: вы берете сверточную сеть, подаете на нее изображения от двух камер, направленных вперед. Изначально роботом управляет человек, а затем сеть обучается. Она предсказывает поведение водителя на основе этой пары изображений. Примерно после 12 минут обучения система управляет собой. Этот небольшой проект финансировался компанией DARPA.
В основе более крупного проекта — LAGR — лежало использование сверточной сети для семантической сегментации. По сути, это маркирование каждого пикселя на изображении категорией объекта, к которому он принадлежит. В случае LAGR есть только три категории: проходимая категория (traversable category, обозначающая места на изображении, где робот может пройти — «Хайтек»), красная категория, обозначающая препятствия, и фиолетовая категория, которая приводит к препятствиям. Мы сканировали при помощи сверточной сети все изображение и отмечали каждый пиксель как доступный или как препятствие.
Автоматически собирать данные для обучения без необходимости ручного обозначения можно благодаря системе стереовидения. У робота есть несколько камер, поэтому мы можем с помощью триангуляции и стереореконструкции узнать, принадлежит ли пиксель объекту, который торчит над землей или находится на ней. Если взять проходимость (traversability — «Хайтек»), полученную с помощью семантической сегментизации, и поместить ее на карту с роботом в центре, то робот спланирует траекторию для достижения цели. Карта более точна вблизи робота, чем вдали от него.
Наша система со сверточной сетью дала компаниям MobilEye и NVIDIA идею использовать технологию семантической сегментизации для беспилотных автомобилей. Мы построили нашу систему в 2009–10 гг. Впервые она была опубликована на конференции ICML в 2011 году. Мы реализовали сверточную сеть на FPGA (field-programmable gate array, программируемая пользователем вентильная матрица — «Хайтек»), которая является видом чипа. Он помогает с настройкой компьютера с помощью ПО путем активации переключателей. Мы запустили алгоритм на 20-ти кадрах в секунду, с рекордной на то время точностью.
Уже в 2015 году некоторые модели Tesla использовали систему MobilEye. Это система компьютерного зрения, использующая сверточные сети, чтобы избегать препятствий и держать автомобиль на дороге во время дождя.
Facebook предсказывает хэштеги по фотографиям
За последние 2 года обучение очень глубокой сети, где каждый слой обучен в небольшой степени и немного изменяет репрезентацию, стало возможным. Мы наблюдаем увеличение количества слоев, которые используются системами. В частности, с появлением архитектуры в стиле ResNet, где используются соединения, перепрыгивающие через периоды слоев (skipping connections — «Хайтек»). Они позволяют системе грамотно деградировать, если один из слоев умирает.
В Facebook обучили сверточную сеть предсказывать не метки, а хэштеги. Исследовательская группа ProVision во главе с Манохаром Палури взяла 3,5 млрд изображений из Instagram, чтобы обучить сеть. Хэштеги очень ненадежные фрагменты информации, люди помечают ими всевозможные вещи. Они взяли несколько тысяч самых распространенных хэштегов и обучили сверточную сеть предсказывать хэштег. Затем они убрали последний слой и переобучили классификатор на топе репрезентаций, обученных по этому методу с помощью ImageNet. Это дает самую высокую точность — 84%, что является рекордом. Есть огромное преимущество в использовании большого количества данных с очень слабыми метками для обучения хороших репрезентаций.
В Facebook Рос Гиршик и его коллеги из Беркли научили сеть не только определять людей, но и индивидуально отмечать контур каждого предмета. Речь идет о Mask R-CNN (Mask Region Based Convolution Neural Network — «Хайтек»). Применяя эту сеть к изображению, они извлекали плотные признаки (dense features — «Хайтек»), а затем при помощи нескольких верхних слоев, можно не только распознать объекты, но и нарисовать ограничительные прямоугольники, контуры для каждого объекта. Даже предметы на заднем плане — все сегментировано. Это «святой грааль» компьютерного зрения, который теперь можно достичь.
Сегодня сверточную сеть можно запустить на мобильных устройствах. В последние годы проведена большая работа над оптимизацией применения сверточной сети на менее мощных компьютерах. На них она обучается при помощи графических процессоров. Например, человеческая поза и объекты определяются при помощи Mask R-CNN в реальном времени на смартфоне. Сеть использует фреймворк Caffe2Go, который является быстрым и эффективным бэкендом.
DensePose — концептуально простая и обширная сверточная сеть, определяющая в реальном времени позу множества человеческих тел на изображении. Делает это она при помощи единственного графического процессора. DensePose — разработка исследовательской группы из Парижа во главе с Яссонасом Коккиносом и Натальей Неверовой.
«Лучше обучить одну сеть для множества задач, чем много сетей каждой задачи»
Различные ветви компьютерного зрения объединяются вокруг использования глубокого обучения. В частности, сравнительное распознавание образов, распознавание почерка, распознавание речи, перевод языков объединяются вокруг использования сверточных сетей или других видов сетей, вроде рекуррентных нейросетей, attention based networks, реляционных сетей и др.
Facebook использует для перевода языков сверточную нейросеть, похожую по архитектуре на используемую в компьютерном зрении. Это очень интересный феномен — мы видим конвергенцию всех этих методов. Мы обучаем сети и одновременно выполняем различные задачи. Переключение между различными задачами повысит производительность для каждой из них, обучая сеть для чего-либо еще. Это называется передачей обучения (transfer learning — «Хайтек»). Лучше обучить одну сеть делать несколько вещей, чем много специализированных сетей для каждой задачи.
Техники, разработанные для компьютерного зрения, можно адаптировать к таким областям как биология, геномика, химия, социальные сети и др. Изображение как функция дает значение пикселей на обычном уровне пикселей. Но если получить данные в виде графа, например, 3d-сетка человеческого тела или молекула, нельзя просто применить сверточные сети. Существуют различные техники для этого. В частности, о них говорят Алекс и Майкл Бронштейн. Они рассматривают различные техники применения нейронных сетей и сверточных сетей для нестандартных данных в виде графа.
«Мы не можем обучать машины так же эффективно, как люди учат сами себя»
Системы используют обучение с подкреплением, играя против самих себя, и показывают удивительные результаты. Системы уже играют в DOOM, обучение игре в StarCraft пока находится в процессе, еще недостаточно хорошо работает. Системы играют в го и шахматы. Даже побеждают людей с большим преимуществом. Но это требует слишком много испытаний.
Чтобы машина научилась играть в игры Atari на уровне человека, потребуется около 50 млн кадров, примерно 230 часов игры. Человек достигает такой производительности всего лишь через несколько минут. Мы можем обучать машины, но мы не можем это делать так же эффективно как люди или животные учат себя сами. Если вы хотите обучить автомобили самоуправлению, системе придется сорваться со скалы 50 тысяч раз, прежде чем она поймет, как этого не делать
«ПО 2.0 — многообещающая концепция»
Если у нейронных сетей будет архитектура, подобная компьютерной, и они смогут выполнять простые манипуляции. Глубокое обучение хорошо справляется с восприятием, но не с логическим мышлением. Facebook и Deepmind несколько лет назад проводили работу над приращением нейросетей за счет памяти. С помощью сетей памяти (memory networks — «Хайтек»), обучающих нейронных машин, дифференцируемых нейронных компьютеров и др. Программа, созданная Facebook, отвечает на сложные вопросы об объектах на изображении. Например, есть ли на нем матовый куб, того же размера, что и красный металлический объект.
Дифференцируемое программирование — это, когда процесс в фоновом режиме определяет, как дифференцировать выходные данные программы при помощи спектра настраиваемых параметров. Архитектура нейронной сети не прописывается. Вопрос пропускается через LSTM (Long short-term memory, разновидность архитектуры рекуррентных нейронных сетей — «Хайтек»), рекуррентная сеть представляет вопрос в виде вектора, который репрезентирует смысл предложения. Затем этот вектор проходит еще через одну LSTM, которая генерирует описание вычислительного графа операторов, способного ответить на вопрос. После создания графа, запускается несколько слоев сверточной сети, пропускаются результаты через этот граф, а затем с помощью классификатора получается градиент обратного распространения для всей системы.
ПО 2.0 — многообещающая концепция, согласно которой идея дифференцируемого программирования приведет к новому способу написания программного обеспечения. В нем программа, которую вы пишете, не предопределена полностью. Она представляет собой последовательность операций, не детерминированных окончательно. Вы завершаете программу, обучая ее на нескольких примерах, для получения правильного ответа. Но это не позволит получить нам ИИ, пока мы не поймём, как достичь обучения без учителя (unsupervised learning).
Здравый смысл и машины
Ключевая задача научить машины обучению на основе наблюдения за миром. Эмануэль Дюпо из Парижа провел эксперимент, чтобы понять: на каком этапе дети обучаются определенным концепциям. Например, отделению анимированных объектов от неанимированных, пониманию того, что объекты могут быть стабильными, а могут падать, что есть гравитация, инерция и др. Так и машинам нужна возможность накапливать фоновые знания о мире, чтобы у них появился «здравый смысл».
Здравый смысл — это способность заполнять пробелы. И самоконтролируемое обучение даст это машинам. В самоконтролируемом обучении машину просят предсказать все на основании всего остального. Предсказать будущее исходя из прошлого, предсказать прошлое исходя из настоящего, предсказать левую сторону лица исходя из правой. И поскольку вы просите машину предсказывать большее количество вещей, она будет учить больше вещей и узнавать больше закономерностей.
Мы хотим построить автономные системы ИИ, прогнозирующие, что произойдет в мире. Очень полезно иметь возможность заранее предсказывать последствия своих действий. Это позволяет нам обучаться без опасности. К примеру, при обучении беспилотного автомобиля самоуправлению. Он прогнозирует, что будет, если сорваться со скалы. Произойдет нечто плохое. Для этого ему необходимы прогностические модели мира, фиксирующие мировые закономерности — это решающее достижение в ИИ.
Адам Лерер, Сэм Гросс и Роб Фергус из Facebook 3 года назад провели эксперимент по прогнозированию простой интуитивной физики. Проблема с использованием стандартного обучения с учителем для обучения такой системы состоит в том, что она дает расплывчатые прогнозы. Нам необходим предиктор (прогностическая функция со скрытой переменной — «Хайтек»). На основании глубокого обучения значения этой скрытой переменной предиктор предсказывает различные прогнозы, которые относятся к определенному набору, обозначенному красной лентой. Cost функция (функция затрат — «Хайтек») говорит предиктору, находится ли прогноз на красной ленте или вне ее. Вторая нейросеть говорит нам: находимся ли мы на этой красной ленте или нет, и как модифицировать прогноз, чтобы он приблизился к красной ленте. В этом заключается идея состязательного обучения (adversarial training — «Хайтек»).
Nvidia обучили одну из состязательных сетей генерировать изображения поддельных знаменитостей с высоким разрешением. Изображения 1000×1000 пикселей, очень реалистичные и хорошие, со всеми деталями. И это искусственно созданные лица несуществующих людей, несуществующих знаменитостей. Очень впечатляюще.
Прогностические модели обучают видеопрогнозам — сверточная сеть определяет, что именно произойдет на видео, посмотрев несколько кадров. Если использовать состязательное обучение, получаются очень хорошие прогнозы. Это важно, например, при вождении автомобиля. Вы хотели бы знать, будет ли автомобиль спереди продолжать поворот налево, или будет ли пешеход идти дальше. Прогноз в таком вопросе имеет решающее значение.
Редакция «Хайтек» благодарит саммит Machine Can See, организованный VisionLabs при поддержке «Сбербанк» и Sistema_VC, за помощь в подготовке материала.