Нейросети и глубокое обучение: онлайн-учебник, глава 6, ч.2: недавний прогресс в распознавании изображений
Содержание
- Глава 1: использование нейросетей для распознавания рукописных цифр
- Глава 2: как работает алгоритм обратного распространения
- Глава 3:
- Глава 4: визуальное доказательство того, что нейросети способны вычислить любую функцию
- Глава 5: почему глубокие нейросети так сложно обучать?
- Глава 6:
- Послесловие: существует ли простой алгоритм для создания интеллекта?
В 1998 году, когда появилась база MNIST, требовались недели для обучения самых передовых компьютеров, достигавших гораздо худших результатов, чем сегодняшние, на получение которых при помощи GPU уходит менее часа. Поэтому MNIST уже не является задачей, раздвигающей границы возможностей технологий; скорость обучения говорит о том, что эта задача хорошо подходит для изучения данной технологии. Тем временем, исследования идут дальше, и в современной работе изучаются гораздо более сложные для решения задачи. В данном разделе я кратко опишу некоторые примеры текущей работы, связанной с распознаванием изображений при помощи нейросетей.
Этот раздел отличается от остальной части книги. В книге я фокусировался на предположительно долгоживущих идеях – обратном распространении, регуляризации, свёрточных сетях. Я пытался избегать результатов, считающихся модными на момент написания, чья долговременная ценность представлялась сомнительной. В науке подобные результаты чаще всего оказываются однодневками, быстро исчезают и не оказывают долговременного влияния. Учитывая это, скептик сказал бы: «Разумеется, недавний прогресс в распознавании изображений можно считать примером такой однодневки? Через два-три года всё поменяется. Так что эти результаты наверняка будут интересны небольшому числу специалистов, конкурирующих на переднем плане? К чему вообще их обсуждать?»
Такой скептик будет прав в том, что мелкие детали недавних работ постепенно утеряют воспринимаемую важность. Однако за последние несколько лет произошли невероятные улучшения в деле решения особенно сложных задач распознавания изображений при помощи глубоких нейросетей (ГНС). Представьте себе историка науки, пишущего материал о компьютерном зрении в 2100 году. Они определят 2011-2015 годы (и, вероятно, несколько лет после этого) как период значимых прорывов, ведомых глубокими свёрточными сетями (ГСС). Это не значит, что ГСН всё ещё будут использоваться в 2100 году, не говоря уже о таких деталях, как исключение, ReLU и прочее. Но это всё равно означает наличие в истории идей важного перехода в текущий момент. Это похоже на наблюдение за открытием атома, за изобретением антибиотиков: изобретение и открытие исторического масштаба. Поэтому, не вдаваясь в детали, стоит получить какое-то представление об интересных открытиях, совершаемых сегодня.
Работа 2012 LRMD
Позвольте мне начать с работы 2012 года, за авторством группы исследователей из Стэнфорда и Google. Я буду называть её LRMD, по первым буквам фамилий первых четырёх авторов. В LRMD использовали НС для классификации изображений из базы ImageNet, что является очень сложной задачей распознавания образов. Используемые ими данные из 2011 ImageNet включали 16 млн полноцветных изображений, разделённых на 20 000 категорий. Изображения были скачаны из интернета и классифицированы работниками сервиса Amazon's Mechanical Turk. Вот некоторые из них:
Они принадлежат к категориям, соответственно: калёвка, коричневый грибок корней, пастеризованное молоко, аскариды. Если вам хочется поупражняться, рекомендую вам посетить список ручных инструментов от ImagNet, где делаются различия между калёвками, торцовыми рубанками, рубанками для снятия фасок и десятками других видов рубанков, не говоря уже о других категориях. Не знаю, как вы, но я не могу с уверенностью различить все эти инструменты. Это, очевидно, куда как более сложная задача, чем MNIST! Сеть LRMD получила приличный результат в 15,8% точности распознавания изображений из ImageNet. Это может не казаться таким впечатляющим результатом, однако это было огромным улучшением по сравнению с предыдущим результатом в 9,3%. Такой скачок говорит о том, что НС могут предложить эффективный подход к очень сложным задачам распознавания изображений, таким, как ImageNet.
Работа 2012 KSH
За работой LRMD в 2012 году последовала работа Крижевского, Суцкевера и Хинтона (KSH). KSH обучали и проверяли ГСС при помощи ограниченного подмножества данных ImagNet. Это подмножество задано популярным соревнованием по машинному обучению — ImageNet Large-Scale Visual Recognition Challenge (ILSVRC). Использование такого подмножества дало им удобный способ сравнения их подхода с другими лидирующими техниками. В наборе ILSVRC-2012 содержится порядка 1,2 млн изображений из 1000 категорий. Проверочный и подтверждающий наборы содержат 150 000 и 50 000 изображений соответственно, из тех же 1000 категорий.
Одна из трудностей соревнования ILSVRC заключается в том, что на многих изображениях из ImageNet содержится несколько объектов. Допустим, на изображении лабрадор-ретривер бежит за футбольным мячом. Т.н. «правильная» классификация от ILSVRC может соответствовать метке «лабрадор-ретривер». Нужно ли отбирать очки у алгоритма, если он пометить изображение, как футбольный мяч? Из-за такой многозначности работу алгоритма считали правильной, если классификация от ImageNet находилась среди 5 наиболее вероятных догадок алгоритма по поводу содержания картинки. По этому критерию из 5 лучших, ГСС от KSH достигла точности в 84,7%, гораздо лучше предыдущего соперника, достигшего точности в 73,8%. При использовании более строгой метрики, когда метка должна точно совпадать с прописанной, точность KSH достигла 63,3%.
Стоит кратко описать сеть KSH, поскольку она вдохновила столько последовавших за ней работ. Она также, как мы увидим, тесно связана с сетями, которые мы обучали в этой главе, хотя и является более сложной. KSH использовала ГСС, обучавшуюся на двух GPU. Они использовали два GPU, поскольку у их конкретной карты (NVIDIA GeForce GTX 580) не было достаточно памяти для хранения всей сети целиком. Поэтому они разбили сеть на две части.
У сети KSH 7 слоёв скрытых нейронов. Первые пять скрытых слоёв свёрточные (некоторые используют макс-пулинг), а следующие 2 – полносвязные. Выходной softmax слой состоит из 1000 нейронов, соответствующих 1000 классов изображений. Вот набросок сети, взятый из работы KSH. Детали описаны ниже. Отметьте, что многие слои разбиты на 2 части, соответствующие двум GPU.
Во входном слое 3х224х224 нейрона, обозначающих значения RGB для изображения размером 224х224. Вспомните, что в ImageNet содержатся изображения различного разрешения. Это представляет проблему, поскольку входной слой сети обычно имеет фиксированный размер. KSH справились с этим, масштабируя каждую картинку так, чтобы у её короткой стороны была длина 256 пикселей. Потом они вырезают область 256х256 пикселей из середины изменённого изображения. Наконец, KSH извлекают случайные куски изображения размером 224х224 (и их горизонтальные отражения) из изображений размером 256х256. Это случайное вырезание – способ расширения обучающих данных с целью уменьшения переобучения. Особенно это помогает обучать такую большую сеть, как у KSH. И, наконец, эти изображения 224х224 используются в качестве входных для сети. В большинстве случаев вырезанное изображение содержит главный объект из первоначальной картинки.
Переходим к скрытым слоям сети KSH. Первый скрытый слой – свёрточный, с шагом макс-пулинга. Он использует локальные рецептивные поля размером 11х11, и шаг в 4 пикселя. В сумме получается 96 карт признаков. Карты признаков разбиты на две группы по 48 штук, при этом первые 48 карт находятся на одном GPU, а вторые – на другом. Макс-пулинг в этом и последующих слоях проводится участками размера 3х3, но участки пулинга могут накладываться, и находятся на расстоянии всего в 2 пикселя друг от друга.
Второй скрытый слой тоже свёрточный, с макс-пулингом. Он использует локальные рецептивные поля 5х5, и в нём 256 карт признаков, разбитых по 128 штук для каждого из GPU. Карты признаков используют только 48 входящих каналов, а не все 96 выходов из предыдущего слоя, как обычно. Это потому, что любая карта признаков получает на вход информацию с того GPU, на котором она хранится. В этом смысле сеть отходит от свёрточной архитектуры, описанной нами ранее в этой главе, хотя, очевидно, основная идея остаётся той же.
Третий, четвёртый и пятый слои свёрточные, но без макс-пулинга. Их параметры: (3) 384 карты признаков, локальные рецептивные поля 3х3, 256 входящих каналов; (4) 384 карты признаков, локальные рецептивные поля 3х3, 192 входящих канала; (5) 256 карт признаков, локальные рецептивные поля 3х3, 192 входящих канала. На третьем слое происходит обмен данными между GPU (как показано на картинке), чтобы карты признаков могли использовать все 256 входящих каналов.
Шестой и седьмой скрытые слои полносвязные, по 4096 нейронов.
Выходной слой – софтмакс, состоит из 1000 единиц.
Сеть KSH пользуется преимуществами многих техник. Вместо использования сигмоиды или гиперболического тангенса в качестве функции активации, она использует ReLU, значительно ускоряющие обучения. В сети KSH содержится порядка 60 млн обучаемых параметров, и поэтому она, даже при большом наборе обучающих данных, подвержена переобучению. Чтобы справиться с этим, авторы расширили обучающий набор при помощи случайной обрезки картинок, как описано выше. Далее они использовали вариант L2-регуляризации и исключение. Сеть обучалась при помощи стохастического градиентного спуска на основе импульса и с мини-пакетами.
Это краткий обзор многих ключевых идей работы KSH. Некоторые детали я опустил, их ищите в статье самостоятельно. Также можете посмотреть на проект Алекса Крижевского cuda-convnet (и его последователей), содержащий код, реализующий многие из описанных идей. Разработана и версия этой сети на основе Theano. В коде можно узнать идеи, сходные с теми, что мы разработали в этой главе, хотя использование нескольких GPU усложняет дело. В фреймворке Caffe есть своя версия сети KSH, для подробностей смотрите их "зоопарк моделей".
Соревнование 2014 ILSVRC
С 2012 года прогресс идёт довольно быстро. Возьмём соревнование 2014 ILSVRC. Как и в 2012 году, участникам нужно было обучать сети на 1,2 млн изображений из 1000 категорий, и критерием качества было попадание одного из 5 вероятных предсказаний в правильную категорию. Выигравшая команда, состоящая в основном из сотрудников Google, использовала ГСС с 22 слоями нейронов. Они назвали свою сеть GoogLeNet, в честь LeNet-5. По критерию попадания пяти лучших вариантов GoogLeNet достигла показателя в 93,33% точности, что серьёзно улучшило результат победителя 2013 года (Clarifai, с 88,3%) и победителя 2012 года (KSH, с 84,7%).
Насколько точность GoogLeNet в 93,33% хороша? В 2014 году команда исследователей написала обзорную работу соревнования ILSVRC. Одним из рассматриваемых вопросов было то, насколько хорошо смогут справиться с задачей люди. Для эксперимента они создали систему, позволяющую людям классифицировать изображения с ILSVRC. Как поясняет один из авторов работы, Андрей Карпаты, в информативной записи в своём блоге, было очень трудно довести эффективность работы людей до показателей GoogLeNet:
Задача разметки изображений пятью категориями из 1000 возможных быстро стала чрезвычайно сложной, даже для тех из моих друзей в лаборатории, что уже некоторое время работали с ILSVRC и её категориями. Сначала мы хотели отправить задачу в Amazon Mechanical Turk. Потом мы решили попробовать нанять студентов за деньги. Потому я организовал разметочную вечеринку среди экспертов в своей лаборатории. После этого я разработал изменённый интерфейс, использовавший предсказания GoogLeNet для уменьшения количества категорий с 1000 до 100. И всё равно задача была сложной – люди пропускали категории, выдавая ошибки порядка 13-15%. В итоге я понял, что для того, чтобы хотя бы приблизиться к результату GoogLeNet, наиболее эффективным подходом будет мне самому сесть и пройти через невозможно долгий процесс обучения и последующий процесс тщательной разметки. Сначала разметка шла со скоростью порядка 1 штуки в минуту, но со временем ускорялась. Некоторые изображения было легко распознать, иные же (допустим, определённые породы собак, виды птиц или обезьян) требовали нескольких минут концентрации. Я очень хорошо наловчился различать породы собак. На основе моей выборки изображений получились следующие результаты: GoogLeNet ошибалась в 6,8% случаев; мой процент ошибок составил 5,1%, что было примерно на 1,7% лучше.
Иначе говоря, эксперт, работавший очень тщательно, лишь приложив серьёзные усилия, смог ненамного опередить ГНС. Карпаты сообщает, что второй эксперт, обученный на меньшем количестве изображений, сумел уменьшить ошибку лишь до 12% при выборе до 5 меток на изображение, что гораздо меньше показателей GoogLeNet.
Потрясающие результаты. А с момента появления этой работы несколько команд сообщали о разработке систем, чей уровень ошибок при выборе 5 лучших меток был даже меньше, чем 5,1%. Иногда в СМИ эти достижения освещались, как появление систем, способных распознавать изображения лучше людей. И хотя в целом результаты поражают, существует много нюансов, из-за которых нельзя считать, что у этих систем компьютерное зрение работает лучше, чем у человека. Во многих смыслах соревнование ILSVRC является очень ограниченной задачей – результаты поиска изображений в открытой сети не обязательно будут соответствовать тому, что встретится программе в практической задаче. И, естественно, критерий «одна из пяти лучших меток» достаточно искусственный. Нам ещё предстоит долгий путь к решению задачи распознавания изображений, не говоря уже о более общей задаче компьютерного зрения. Но всё же очень здорово смотреть, какого большого прогресса удалось достичь в решении такой сложной задачи всего за несколько лет.
Другие задачи
Я сконцентрировался на ImageNet, однако существует достаточно много других проектов, использующих НС для распознавания изображений. Позвольте кратко описать несколько интересных результатов, полученных за последнее время, просто чтобы составить представление о современных работах.
Один вдохновляющий практический набор результатов получила команда из Google, применившая ГСС к задаче распознавания адресных табличек в Google Street View. В их работе они сообщают о том, как обнаружили и автоматически распознали почти 100 млн адресных табличек с точностью, сравнимой с работой человека. И их система работает быстро: она смогла расшифровать данные со всех изображений Google Street View во Франции меньше, чем за час! Они пишут: «Получение этого нового набора данных значительно увеличило качество геокодирования Google Maps в нескольких странах, особенно там, где не было других источников геокодирования». Далее они делают и более общее заявление: «Мы считаем, что, благодаря этой модели, мы решили задачу оптического распознавания коротких последовательностей способом, применимым во многих практических приложениях».
Возможно, я создал у вас впечатление парада победных и вдохновляющих результатов. Конечно, самые интересные отчёты касаются фундаментальных вещей, нам пока непонятных. К примеру, в работе 2013 года было показано, что у НС имеются, по сути, слепые пятна. Посмотрите на изображения ниже. Слева – изображение из ImageNet, которое сеть исследователей классифицировала правильно. Справа – немного изменённое изображение (в середине показаны различия), которое сеть уже не смогла правильно распознать. И авторы обнаружили, что подобные «состязательные» изменения можно подобрать для любого изображения из базы, а не только для избранных.
Неприятный результат. В работе использовалась сеть на основе того же кода, что и сеть KSH – то есть, именно такая сеть, которую всё больше используют. И хотя такие НС вычисляют, в принципе, непрерывные функции, подобные результаты говорят о том, что они, вероятно, вычисляют почти дискретные функции. Что хуже, они оказываются дискретными таким образом, что нарушают наше интуитивное представление о разумном поведении. Это проблема. Кроме того, пока не очень ясно, что именно приводит к дискретности, в чём заключается проблема: в функции потерь? В том, какие функции активации использовать? В архитектуре сети? В чём-то другом? Мы не знаем.
Но эти результаты не настолько уж плохи, как кажется. Хотя подобные состязательные изменения довольно распространены, их вряд ли получится встретить на практике. Как указано в работе:
Существование состязательных негативов противоречит способности сети достигать высоких показателей обобщаемости. Ведь если бы сеть умела хорошо обобщать, как бы её можно было обмануть такими состязательными негативами, неотличимыми от обычных примеров? Объяснение заключается в том, что набор состязательных негативов имеет чрезвычайно малую вероятность, и потому не наблюдается (или почти не наблюдается) в обучающем наборе данных, однако он обладает большой плотностью (примерно как рациональные числа), и потому его можно найти практически для любого случая.
Тем не менее, неприятно, что мы так плохо понимаем работу НС, что этот результат был обнаружен совсем недавно. Конечно, главным преимуществом таких результатов будет то, что они стимулировали появление последующих работ по этой теме. В недавней работе 2014 года показано, что для обученной сети возможно создать изображения, которые для человека будут выглядеть, как белый шум, а сеть будет классифицировать их в известные категории с большой долей уверенности. Это ещё одна демонстрация того, что нам ещё многое предстоит понять в работе НС и в их использовании для распознавания изображений.
Но, несмотря на наличие подобных результатов, общая картина вдохновляет. Мы наблюдаем быстрый прогресс в выполнении чрезвычайно сложных тестов, типа ImageNet. Мы также наблюдаем быстрый прогресс в решении задач из реального мира, типа распознавания табличек с адресами в StreetView. Но, несмотря на вдохновение, недостаточно лишь наблюдать за улучшениями в выполнении тестов на скорость или даже задач реального мира. Существуют фундаментальные явления, суть которых мы до сих пор понимаем плохо, к примеру, существование состязательных изображений. И пока такие фундаментальные проблемы ещё открываются (не говоря уже о том, чтобы решать их), преждевременно было бы говорить о приближении к решению задачи распознавания изображений. Но в то же время такие проблемы являются прекрасными стимулами к дальнейшей работе.
Другие подходы к глубоким нейросетям
В данной книге мы сфокусировались на одной задаче: классификации цифр MNIST. Отличная задача, заставившая нас понять множество эффективных идей: стохастический градиентный спуск, обратное распространение, свёрточные сети, регуляризация, и т.д. Однако это также довольно узкая задача. Почитав литературу по нейросетям, вы встретитесь со множеством идей, которые мы не обсуждали: рекуррентные НС, машины Больцмана, генеративные модели, перенос обучения, обучение с подкреплением, и так далее, и тому подобное! Нейросети – обширная область. Однако многие важные идеи являются вариациями тех идей, которые мы уже обсудили, и их довольно легко понять. В данном разделе я приоткрою завесу над этими необъятными просторами. Их обсуждение будет не подробным и не всеобъемлющим – это бы чрезвычайно раздуло книгу. Оно будет импрессионистским, попыткой показать концептуальное богатство этой области, и связать некоторые понятия с теми, что мы уже видели. В тексте я дам несколько ссылок на другие источники, как на материалы для дальнейшего обучения. Конечно, многие из них скоро будут вытеснены другими, и вам, возможно, захочется поискать более свежую литературу. Тем не менее, я считаю, что многие базовые идеи останутся интересными ещё продолжительное время.
Рекуррентные нейросети (РНС)
В сетях с прямым распространением, которые мы использовали, существует один вход, полностью определяющий активацию всех нейронов в последующих слоях. Это очень статичная картина: всё в сети фиксировано, и имеет замороженный, кристаллический характер. Но, допустим, мы разрешим элементам сети меняться динамически. К примеру, поведение скрытых нейронов может определяться не только активациями в предыдущих слоях, но и активациями, случившимися ранее во времени. Активацию нейрона может частично определять его же более ранняя активация. В сетях с прямым распространениям такого однозначно не происходит. Или, возможно, активации скрытых и выходных нейронов будут определяться не только текущими входными данными в сеть, но и предыдущими.
Нейросети с такого типа поведением, меняющимся во времени, известны, как рекуррентные нейросети, или РНС. Существует множество способов математически формализовать неформальное описание предыдущего параграфа. Вы можете получить представление о них, почитав статью в Википедии. На момент написания книги в англоязычной версии статьи описано не менее 13 разных моделей [на момент перевода в 2019 году уже 18 / прим. перев.]. Но, если отставить в сторону математические детали, то общая идея РНС состоит в наличии динамических изменений в сети, происходящих со временем. И, что неудивительно, они особенно полезны для анализа данных или процессов, меняющихся со временем. Такие данные и процессы естественным образом появляются в таких задачах, как анализ речи или естественного языка.
Один из текущих способов использования РНС – более тесное объединение нейросетей с традиционными способами представления алгоритмов, с такими концепциями, как машина Тьюринга и обычные языки программирования. В работе от 2014 года была разработана РНС, способная принять на вход побуквенное описание очень простой программы на python, и предсказать результат её работы. Неформально говоря, сеть учится «понимать» определённые программы на python. Вторая работа от 2014 года использовала РНС как отправную точку для разработки «нейромашины Тьюринга» (НМТ). Это универсальный компьютер, всю структуру которого можно обучить при помощи градиентного спуска. Они обучили свой НМТ строить алгоритмы для нескольких простых задач, типа сортировки или копирования.
Это, конечно, очень простые, игрушечные модели. Обучение выполнению программы на python вида print(398345+42598) не делает нейросеть полноценным интерпретатором языка! Неясно, насколько сильнее получится развить эти идеи. И всё же результаты оказываются довольно интересными. Исторически нейросети хорошо справлялись с задачами распознавания закономерностей, на которых спотыкались обычные алгоритмические подходы. И наоборот, обычные алгоритмические подходы хорошо справляются с решением задач, сложных для НС. Сегодня никто не пытается реализовать веб-сервер или базу данных на базе НС! Было бы здорово разработать объединённые модели, интегрирующие сильные стороны как НС, так и традиционных алгоритмических подходах. РНС, и идеи, вдохновлённые ими, могут помочь нам сделать это.
В последние годы РНС использовали и для решения множества других задач. Они были особенно полезными в распознавании речи. Подходы на основе РНС ставят рекорды по качеству распознавания фонем. Их также использовали для разработки улучшенных моделей используемого людьми языка речи. Улучшенные модели языка помогают распознавать неоднозначности в речи, звучащие похожим образом. Хорошая модель языка сможет сказать нам, что фраза «вперёд к бесконечности» куда как более вероятна, чем фраза «вперёд без конечности», хотя они и звучат похожим образом. РНС использовали для получения рекордных достижений на определённых языковых тестах.
Эта работа является частью более обширного использования НС всех видов, не только РНС, для решения задачи распознавания речи. К примеру, подход на основе ГНС показал прекрасные результаты в распознавании непрерывной речи с большим словарём. Ещё одна система на основе ГНС реализована в ОС Android от Google.
Я немного рассказал о том, на что способны РНС, но не объяснил, как они работают. Возможно, вы не удивитесь, узнав, что многие идеи из мира сетей с прямым распространением можно использовать и в РНС. В частности, мы можем обучить РНС, модифицировав в лоб градиентный спуск и обратное распространение. Также пригодятся и многие другие идеи, используемые в сетях прямого распространения, от техник регуляризации до свёрток и функций активации и стоимости. Также многие идеи, разработанные нами в рамках книги, можно адаптировать для использования в РНС.
Модули долгой краткосрочной памяти (ДКП)
Одна из проблем РНС в том, что ранние модели было очень сложно обучать, сложнее, чем даже ГНС. Причина содержалась в проблем нестабильного градиента, которую мы обсуждали в главе 5. Вспомним, что обычным проявлением этой проблемы было то, что градиент всё время уменьшается при распространении через слои в обратную сторону. Это чрезвычайно замедляет обучение ранних слоёв. В РНС эта проблема становится ещё хуже, поскольку градиенты распространяются не только в обратную сторону по слоям, но и в обратную сторону по времени. Если сеть работает довольно долго, градиент может стать чрезвычайно нестабильным и на его основе будет очень тяжело обучаться. К счастью, в РНС можно включить идею, известную, как модули долгой краткосрочной памяти (ДКП). Впервые этим модули представили Хохрейтер и Шмидгубер в 1997 году, специально для того, чтобы помочь решить проблему нестабильного градиента. ДКП облегчают получение хороших результатов при обучении РНС, и многие недавние работы (включая и те, на которые я уже проставил ссылки) используют ДКП или сходные идеи.
Глубокие сети доверия, генеративные модели и машины Больцмана
В наши дни интерес к глубокому обучению получил второе дыхание в 2006 году, после выхода работ (1, 2), объяснявших, как обучать особый вид НС под названием глубокая сеть доверия (ГСД). ГСД несколько лет влияли на область исследований, но потом их популярность пошла на спад, а модными стали уже сети прямого распространения и рекуррентные НС. Несмотря на это, некоторые свойства ГСД делают их весьма интересными.
Во-первых, ГСД являются примером генеративной модели. В сети прямого распространения мы задаём входные активации, и они определяют активации нейронов признаков дальше по сети. Генеративную модель можно использовать сходным образом, однако в неё можно задать значения нейронов, а затем запустить сеть «в обратную сторону», генерируя значения входных активаций. Более конкретно, ГСД, обученная на изображениях рукописных цифр, сама может генерировать изображения, похожие на рукописные цифры (потенциально, и после определённых действий). Иначе говоря, ГСД в некотором смысле может учиться писать. В этом смысле генеративные модели похожи на мозг человека: они не только могут читать цифры, но и писать их. Известное высказывание Джеффри Хинтона гласит, что для распознавания форм сначала нужно научиться генерировать изображения.
Во-вторых, они способны на обучение без учителя и почти без учителя. К примеру, при обучении на изображения ГСД могут научиться признакам, полезным для понимания и других изображений, даже если на обучающих изображениях не было никаких меток. Способность к обучению без учителя чрезвычайно интересна как с фундаментальной научной точки зрения, так и с практической – если её можно будет заставить достаточно хорошо работать.
Учитывая все эти привлекательные моменты ГСД как моделей для глубокого обучения, почему же их популярность пошла на спад? Частично из-за того, что другие модели, например, прямого распространения и рекуррентные сети, достигли потрясающих результатов, в частности, прорывов в областях распознавания изображений и речи. Неудивительно, что эти модели удостоились такого внимания, и весьма заслуженного. Однако из этого следует неприятный вывод. Рынок идей часто работает по схеме «победитель получает всё», и практически всё внимание уходит на то, что сейчас в данной области наиболее модно. Людям может оказаться чрезвычайно сложно работать над непопулярными в настоящее время идеями, даже если очевидно, что те могут представлять долгосрочный интерес. Моё личное мнение – ГСД и другие генеративные модели заслуживают большего внимания, чем получают. Не удивлюсь, если ГСД или сходная модель когда-нибудь обгонит сегодняшние популярные модели. Почитайте эту статью для введения в область ГСД. Также может оказаться полезной вот эта статья. Она не совсем про ГСД, но в ней есть много полезного по поводу ограниченных машин Больцмана, ключевого компонента ГСД.
Другие идеи
Что ещё происходит в области НС и ГО? Огромное количество интересной работы. Среди активных областей исследования – использование НС для обработки естественного языка, машинного перевода, и более неожиданных применений, к примеру, музыкальной информатики. Существует и множество других областей. Во многих случаях после прочтения данной книги вы сможете понимать недавние работы, хотя, конечно, вам может потребоваться заполнить какие-то пробелы в знаниях.
Закончу этот раздел упоминанием особенно интересной работы. Она комбинирует глубокие свёрточные сети с техникой под названием «обучение с подкреплением», чтобы учиться играть в видеоигры (и ещё одна статья об этом). Идея в том, чтобы использовать свёрточную сеть для упрощения пиксельных данных с игрового экрана, превратить его в более простой набор признаков, которые затем можно использовать для принятия решений о дальнейшем действии: «идти влево», «идти вправо», «стрелять», и т.п. Особенно интересно то, что одна сеть довольно неплохо обучилась играть в семь различных классических видеоигр, опередив экспертов в трёх из них. Это, конечно, похоже на трюк, и работа активно рекламировалась, под заголовком «Игра в игры Atari при помощи обучения с подкреплением». Однако за поверхностным лоском стоит рассмотреть тот факт, что система берёт сырые пиксельные данные – ей даже неизвестны правила игры – и на их основе обучается принимать решения хорошего качества в нескольких очень различных и очень конкурентных ситуациях, в каждой из которых имеется свой сложный набор правил. Довольно неплохо.
Будущее нейросетей
Интерфейсы на основе намерений пользователя
В старой шутке нетерпеливый профессор говорит запутавшемуся студенту: «Не слушайте мои слова, слушайте, что я имею в виду». Исторически компьютеры часто не понимали, подобно запутавшемуся студенту, что имеет в виду пользователь. Однако ситуация меняется. Я всё ещё помню, как впервые удивился, когда я с ошибкой написал запрос в Google, а поисковик сказал мне в ответ «Возможно, вы имели в виду [правильный запрос]?» Директор Google Ларри Пейдж однажды описал идеальный поисковик, как систему, понимающую, что именно означают ваши запросы, и дающий вам именно то, что вы хотите.
Такова идея интерфейса на основе намерений пользователя. В ней вместо того, чтобы реагировать на буквальные запросы пользователя, поисковик будет использовать МО, чтобы, взяв туманный запрос пользователя, понять точно, что он означает, и действовать на основе этого.
Идею интерфейса на основе намерений пользователя можно применять и более широко, чем просто в поиске. В следующие несколько десятилетий тысячи компаний будут создавать продукты, в которых МО будет использоваться для интерфейсов пользователя, спокойно относящихся к неточным действиям пользователей, и угадывающих их истинные намерения. Мы уже видим ранние примеры подобных интерфейсов на основе намерений: Apple Siri; Wolfram Alpha; IBM Watson; системы, автоматически размечающие фото и видео, и прочее.
Большая часть из них провалится. Разработка интерфейсов – штука сложная, и подозреваю, что вместо вдохновляющих интерфейсов многие компании создадут на основе МО безжизненные интерфейсы. Лучшее МО в мире не поможет вам, если ваш интерфейс – отстой. Однако часть продуктов ждёт успех. Со временем это приведёт к серьёзному изменению наших взаимоотношений с компьютерами. Не так давно, — допустим, ещё в 2005, — пользователи считали само собой разумеющимся, что для взаимодействия с компьютерами требуется высокая точность. Буквальность работы компьютера послужила распространению идеи о том, что компьютеры – очень буквальны; единственная забытая точка с запятой могла совершенно поменять природу взаимодействия с компьютером. Но я полагаю, что в следующие несколько десятилетий мы разработаем несколько успешных интерфейсов на основе намерений пользователя, и это кардинально изменит наши ожидания при работе с компьютерами.
Машинное обучение, наука о данных и непорочный круг инноваций
Конечно, МО используется не только для создания интерфейсов на основе намерений пользователя. Ещё одно интересное применение МО – наука о данных, где оно используется для поиска «известных неизвестных», скрытых в полученных данных. Это уже модная тема, о которой написано много статей, поэтому я не будут долго на неё распространяться. Хочу упомянуть одно последствие этой моды, которое не часто отмечают: в дальней перспективе возможно, что крупнейшим прорывом в МО будет не какой-то один концептуальный прорыв. Крупнейшим прорывом будет то, что исследования в области МО станут приносить доход, посредством применения в науке од данных и других областях. Если компания может инвестировать доллар в исследования МО и получить доллар и десять центов выручки довольно быстро, тогда в область МО будут вливать много денег. Иначе говоря, МО – это двигатель, движущий нас к появлению нескольких крупных рынков и областей роста технологий. В итоге появятся большие команды людей-экспертов в данной области, у которых будет доступ к невероятным ресурсам. Это продвинет МО ещё дальше, создаст ещё больше рынков и возможностей, что и будет непорочным кругом инноваций.
Роль нейросетей и глубокого обучения
Я описывал МО общими словами, как способ создания новых возможностей для развития технологий. Какова же будет конкретная роль НС и ГО во всём этом?
Для ответа на вопрос полезно обратиться к истории. В 1980-х наблюдалось активное радостное оживление и оптимизм, связанный с нейросетями, особенно после популяризации обратного распространения. Но оживление спало, и в 1990-х эстафетную палочку МО передали другим технологиям, к примеру, методу опорных векторов. Сегодня НС снова на коне, устанавливают всяческие рекорды, и обгоняют многих соперников в различных проблемах. Но кто гарантирует, что завтра не будет разработан новый подход, который снова затмит собою НС? Или, возможно, прогресс в области НС начнёт буксовать, и ничто не придёт им на смену?
Поэтому гораздо проще размышлять о будущем МО в целом, чем конкретно о НС. Часть проблемы в том, что мы очень плохо понимаем НС. Почему НС так хорошо умеют обобщать информацию? Каким образом они так хорошо избегают переобучения, учитывая огромное количество параметров? Почему стохастический градиентный спуск так хорошо работает? Насколько хорошо сработают НС при масштабировании наборов данных? К примеру, если мы расширим базу ImageNet в 10 раз, от этого эффективность работы НС улучшится больше или меньше, чем эффективность других технологий МО? Всё это простые, фундаментальные вопросы. И пока что мы очень плохо понимаем ответы на эти вопросы. В связи с этим сложно сказать, какую роль НС сыграют в будущем МО.
Сделаю одно предсказание: думаю, что ГО никуда не денется. Возможность изучать иерархии концепций, строить разные слои абстракций, судя по всему, фундаментальны для познавания мира. Это не значит, что сети ГО завтрашнего дня не будут радикально отличаться от сегодняшних. Мы можем столкнуться с серьёзными изменениями составляющих их частей, архитектур или алгоритмов обучения. Эти изменения могут оказаться достаточно драматичными для того, чтобы мы перестали считать получившиеся системы нейросетями. Однако они всё равно будут заниматься ГО.
Приведут ли НС и ГО в скором времени к появлению искусственного интеллекта?
В данной книге мы концентрировались на использовании НС в решении конкретных задач, например, классификации изображений. Давайте расширим наши запросы: что насчёт думающих компьютеров общего назначения? Могут ли НС и ГО помочь нам решить задачу создания ИИ общего назначения? А если так, учитывая большую скорость прогресса в области ГО, увидим ли мы появление ИИ в ближайшее время?
Для подробного ответа на такой вопрос потребовалась бы отдельная книга. Вместо этого позвольте мне предложить вам одно наблюдение, основанное на законе Конвея:
Организации, проектирующие системы, ограничены дизайном, копирующим структуру коммуникаций в этой организации.
То есть, к примеру, закон Конвея утверждает, что схема самолёта Boeing 747 будет отражать расширенную структуру компании Boeing и её подрядчиков в то время, когда разрабатывалась модель 747. Или другой, простой и конкретный пример: рассмотрим компанию, разрабатывающую сложное ПО. Если управляющая панель ПО должна быть связана с алгоритмом МО, то разработчик панели должен общаться с экспертом компании по МО. Закон Конвея просто формализует это наблюдение.
Впервые услышав закон Конвея, многие люди говорят либо «Ну разве это не банальная очевидность?», либо «Разве это так?». Начну с замечания о его неверности. Давайте подумаем: как наличие у компании Boeing бухгалтерии отражается в схеме модели 747? Что насчёт департамента уборки? А кормления сотрудников? Ответ состоит в том, что эти части организации, скорее всего, не появляются нигде в схеме 747-го явным образом. Поэтому нужно понимать, что закон Конвея относится лишь к тем частям организации, которые непосредственно заняты проектированием и инженерной разработкой.
Что насчёт замечания о банальности и очевидности? Возможно, это и так, но я так не считаю, поскольку организации часто работают, отвергая закон Конвея. Команды, разрабатывающие новые продукты, часто раздуваются из-за чрезмерного количества сотрудников, или, наоборот, им не хватает человека с критически важными знаниями. Вспомните обо всех продуктах с бесполезными и усложняющими их особенностями. Или вспомните о продуктах с очевидными недостатками – к примеру, с ужасным интерфейсом пользователя. В обоих классах программ проблемы часто возникают из-за несоответствия команды, необходимой для выпуска хорошего продукта, и той командой, которая реально собралась. Закон Конвея, возможно, и очевиден, но это не значит, что люди не могут его регулярно игнорировать.
Закон Конвея применим к разработке и созданию систем в случаях, когда мы с самого начала представляем себе, из каких составных частей будет состоять продукт, и как их сделать. Его нельзя применять напрямую к разработке ИИ, поскольку ИИ такой задачей (пока) не является: мы не знаем, из каких частей он состоит. Мы даже не уверены, какие базовые вопросы можно задавать. Иначе говоря, в данный момент ИИ является больше проблемой науки, чем инженеров. Представьте, что вам нужно начать разработку 747-го, ничего не зная о реактивных двигателях или принципах аэродинамики. Вы бы не знали, каких экспертов надо нанимать в свою организацию. Как написал Вернер фон Браун, «базовые исследования – это то, чем я занят, когда я не знаю, чем я занят». Есть ли вариант закона Конвея, применимый к задачам, которые больше относятся к науке, чем к инженерам?
Чтобы найти ответ на этот вопрос, вспомним историю медицины. В ранние дни медицина была областью практиков, таких, как Гален или Гиппократ, изучавших всё тело человека. Но с ростом объёма наших знаний приходилось специализироваться. Мы открыли множество глубоких идей – вспомним микробную теорию болезней, или понимание принципа работы антител, или того, что сердце, лёгкие, вены и артерии формируют сердечно-сосудистую систему. Такие глубокие идеи сформировали фундамент для более узких дисциплин, таких, как эпидемиология, иммунология, и скопление пересекающихся областей, касающихся сердечно-сосудистой системы. Вот так структура нашего знания сформировала социальную структуры медицины. Особенно заметно это в случае с иммунологией: идея о существовании иммунной системы, достойной отдельного изучения, была весьма нетривиальной. Так что у нас есть целая область медицины – со специалистами, конференциями, наградами, и так далее – организованная вокруг чего-то не просто невидимого, а, возможно, даже не являющегося чем-то отдельным.
Такое развитие событий часто повторялось во многих установившихся научных дисциплинах: не только в медицине, но и в физике, математике, химии, и других. Области рождаются монолитными, имея в запасе лишь несколько глубоких идей. Первые эксперты способны охватить их все. Но с течением времени монолитность меняется. Мы открываем множество новых глубоких идей, и их становится слишком много для того, чтобы кто-то сумел по-настоящему овладеть ими всеми. В итоге социальная структура области реорганизуется и делится, концентрируясь вокруг этих идей. Вместо монолита у нас возникают поля, делящиеся на поля, делящиеся на поля,- сложная, рекурсивная социальная структура, ссылающаяся сама на себя, чья организация отражает связи между самыми глубокими идеями. Вот так структура наших знаний формирует социальную организацию науки. Однако эта социальная форма в свою очередь ограничивает и помогает определить то, что мы можем обнаружить. Это и есть научный аналог закона Конвея.
Но какое отношение всё это имеет к глубокому обучению или ИИ?
Ну, с ранних дней разработки ИИ идут споры о том, что всё пойдёт либо «не слишком сложно, благодаря имеющемуся у нас сверхоружию», либо «сверхоружия будет недостаточно». Глубокое обучение – последний из примеров сверхоружия, который использовался в виденных мною спорах. В ранних версиях таких споров использовалась логика, или Prolog, или экспертные системы, или какая-то ещё технология, которая тогда была самой мощной. Проблема таких споров в том, что они не дают вам возможности сказать точно, насколько мощным будет любой из кандидатов на сверхоружие. Конечно, мы только что целую главу потратили на рассмотрение свидетельств того, что ГО может решать чрезвычайно сложные задачи. Оно определённо выглядит очень интересно и многообещающе. Но так было и с такими системами, как Prolog, или Eurisko, или с экспертными системами. Поэтому лишь тот факт, что набор идей выглядит многообещающе, ничего особенного не означает. Откуда нам знать, что ГО на самом деле отличается от этих ранних идей? Есть ли способ измерить, насколько мощным и многообещающим является набор идей? Из закона Конвея следует, что в качестве грубой и эвристической метрики мы можем использовать сложность социальной структуры, связанной с этими идеями.
Поэтому у нас возникает два вопроса. Во-первых, насколько мощным является набор идей, связанный с ГО, согласно этой метрике социальной сложности? Во-вторых, насколько мощная теория нам нужна, чтобы создать ИИ общего назначения?
По первому вопросу: когда мы сегодня смотрим на ГО, это поле выглядит интересным и быстро развивающимся, но относительно монолитным. В нём есть несколько глубоких идей, и проводится несколько основных конференций, причем некоторые из них сильно пересекаются. Работа за работой используют один и тот же набор идей: стохастический градиентный спуск (или его близкий аналог) для оптимизации функции стоимости. Прекрасно, что эти идеи настолько успешны. Что чего мы пока не наблюдаем, так это большого количества хорошо развитых более мелких областей, каждая из которых исследовала бы свой набор глубоких идей, что двигало бы ГО во многих направлениях. Поэтому, согласно метрике социальной сложности, глубокое обучение, простите за каламбур, пока остаётся весьма неглубокой областью исследований. Один человек всё ещё способен овладеть большинством глубоких идей из этой области.
По второму вопросу: насколько сложный и мощный набор идей понадобится для создания ИИ? Естественно, ответом будет: никто точно не знает. Но в послесловии к книге я изучил некоторые из существующих свидетельств по этому вопросу. Я заключил, что даже по оптимистичным оценкам, для создания ИИ потребуется много, очень много глубоких идей. По закону Конвея, для того, чтобы дойти до этой точки, мы должны увидеть появление множества взаимосвязанных дисциплин, со сложной и неожиданной структурой, отражающей структуру наших глубочайших идей. Мы пока не наблюдаем такой сложной социальной структуры при использовании НС и ГО. Поэтому, я считаю, что мы, по крайней мере, находимся в нескольких десятилетиях от использования ГО для разработки ИИ общего назначения.
Я много сил потратил на создание умозрительного аргумента, который, возможно, кажется довольно очевидным, и не ведёт к определённому заключению. Это наверняка разочарует любящих определённость людей. В онлайне я встречаю множество людей, во всеуслышание объявляющих о своих очень определённых и уверенных мнениях по поводу ИИ, часто базирующихся на шатких аргументах и несуществующих свидетельствах. Я могу честно сказать: думаю, что пока ещё судить рано. Как в старом анекдоте: если спросить учёного, сколько нам ещё нужно ждать какого-либо открытия, и он скажет «10 лет» (или больше), то на самом деле он имеет в виду «понятия не имею». До появления ИИ, как и в случае с контролируемым ядерным синтезом и некоторыми другими технологиями, уже более 60 лет остаётся «10 лет». С другой стороны, что у нас точно есть в области ГО – так это эффективная технология, пределы возможностей которой мы пока не обнаружили, и множество открытых фундаментальных задач. И это открывает потрясающие творческие возможности.