Машинное распознавание образов вошло в повседневную жизнь. Facebook распознает лица на фотографиях, Twitter блокирует порнографические снимки без участия администраторов, OneDrive обнаруживает запрещенный контент с помощью технологии PhotoDNA, а сервисы и приложения на базе API Microsoft Project Oxford одинаково легко определяют по фотографии настроение человека или породы собак.
Все эти и множество других возможностей компьютерного зрения реализованы благодаря бурно развивающемуся направлению искусственного интеллекта, которое называется «глубинное обучение». Хотя эта технология сейчас в тренде, ей всего несколько лет, и последние эксперименты, проведенные Microsoft Research, убеждают, что она прибывает в начальной стадии развития и не раскрыла большей части своих возможностей. Иначе говоря, глубинному обучению есть куда углубляться.
Революция в машинном зрении назревала на протяжении многих лет. Поворотным пунктом стал 2012 год, когда исследователи искусственного интеллекта из Университета Торонто выиграли конкурс ImageNet – состязание машин в распознавании образов. В конкурсе побеждает система, точнее других идентифицирующая любые объекты: котов, автомобили или облака. Участники победившей команды (Алекс Крижевски (Alex Krizhevsky) и профессор Джефф Хинтон (Geoff Hinton) использовали глубинные нейронные сети – технологию распознавания образов, в основе которой не жесткие алгоритмы, заложенные разработчиками, а обучение системы, основанное на последовательной идентификации огромного количества изображений.
Победа команды Торонто открыла перед глубинным обучением новые перспективы. В последующие годы все глобальные интернет-компании, включая Facebook, Google, Twitter и Microsoft, стали применять схожие технологии для построения систем машинного зрения. Скоро они справлялись с распознаванием изображений не хуже, а подчас и лучше людей. «Мы не утверждаем, что наши системы видят как люди», – говорит Питер Ли (Peter Lee), вице-президент Microsoft Research. – Но можно сказать, что для весьма специфического, узкого круга задач, мы можем научить машину видеть как человек».
Грубо говоря, нейронные сети с помощью аппаратных и программных средств имитируют паутину нейронов в человеческом мозге. Эта идея появилась еще в 80-е годы, но в 2012 г. Крижевски и Хинтон усовершенствовали ее реализацию, построив сеть, использующую ресурсы графических процессоров (видеокарт). Ведущие мировые ИТ-компании сегодня строят на этих процессорах свои системы распознавания образов, применяемые для самых разных задач: от поиска картинок в Интернете — до обеспечения безопасности.
В конечном счете победители конкурса ImageNet указали дальнейшее направление развития не только машинного зрения, но и других направлений искусственного интеллекта. Лавры первенства на последних состязаниях ImageNet достались команде исследователей из Microsoft, которые представили новую технологию – глубинные остаточные сети (deep residual network). Название мало что объясняет. Они спроектировали нейронную сеть со структурой гораздо более сложной, чем у существующих: она имеет 152 слоя математических операций, а не шесть-семь. Это означает, что в ближайшие годы такие компании, как Microsoft, используя огромные кластеры графических процессоров и других специализированных инструментов для вычислений, смогут значительно усовершенствовать не только технологию распознавания образов, но и другие области искусственного интеллекта, включая технологии распознавания голоса, которые обеспечат понимание естественной человеческой речи.
У глубинного обучения огромный потенциал развития. «Нам открылось огромное пространство для новых идей, – говорит Ли, – и мы пытаемся понять, куда двигаться дальше».
Нейронные слои
Глубинные нейронные сети состоят из слоев. Каждый слой представляет собой определенный набор математических операций или алгоритмов. Результаты действий одного слоя являются исходными для работы следующего. Например, если сеть строится для распознавания образов, каждый слой в ней выполняет свою функцию – выявление контуров, определение углов, фигур, текстур и т. д. Слои – это как раз то, что добавляет нейронным сетям новое измерение – глубину. «В сущности, чем глубже вы делаете эти сети, тем легче их обучать», – говорит Алекс Берг (Alex Berg), исследователь из Университета Северной Каролины, один из кураторов конкурса ImageNet.
Построить нейронную мегасеть чрезвычайно сложно. В настоящее время обычные нейронные сети включают шесть или семь слоев. В некоторое это число достигает двадцати или даже тридцати. Однако команде Microsoft, возглавляемой исследователем Чьан Сун (Jian Sun), удалось увеличить их число до 152. Такая сеть лучше распознает изображения, поскольку способна анализировать больше различных аспектов. «Мы можем изучить гораздо больше нюансов», – говорит Чьан.
По словам исследователей Microsoft Research и их коллег, не связанные с Microsoft, еще недавно такие сети считались нереализуемыми. Связано это было, в частности, с затуханием сигнала при прохождении от слоя к слою. По словам Ли, в Microsoft решили эту проблему, построив нейронную сеть, в которой сигнал передается только тем слоям, функции которых нужны в данном случае. «Обходя ненужные слои, вы поддерживаете мощность сигнала, – говорит Ли, – это оказывает огромное влияние на точность распознавания».
Глубинные проблемы
И тем не менее построить такую нейронную сеть чрезвычайно сложно. Выбрать конкретный набор алгоритмов, т.е. определить, что будет вычислять каждый слой и как он будет взаимодействовать с соседними слоями – задача просто эпическая. Но в Microsoft и здесь кое-что придумали: разработали специализированное ПО для автоматизированного построения таких сверхсложных сетей.
Как объясняет Чьан Сун, ученые могут представить ориентировочную конфигурацию масштабной нейронной сети, после чего система анализирует множество сходных конструкций, пока не находит лучшую. «В большинстве случаев после определенного числа проходов исследователи получают дополнительные сведения, на основании которых вносят изменения в систему, а на следующей итерации принимают новое решение, – говорит он. – Можете называть это поиском, направляемым человеком».
По словам Адама Гибсона (Adam Gibson), ведущего исследователя в Skymind, стартапе, специализирующимся на глубинном обучении, подобный подход становится все более распространенным. Он называется гиперпараметрической оптимизацией. «Можно просто взять многопроцессорный кластер, запустить сразу десяток или более моделей, посмотреть, какая работает лучше, и взять ее, – говорит Гибсон. – Можно выбрать некий начальный параметр, основываясь на опыте и интуиции, а машина укажет оптимальное решение». Не случайно Twitter приобрел компанию Whetlab, предлагающую аналогичные способы оптимизации нейронных сетей.
Ограничения аппаратных ресурсов
По словам Питера Ли и Чьана Суна, такой подход нельзя назвать очевидным решением, снимающим все проблемы. «При наличии неограниченных вычислительных ресурсов можно представить гигантскую систему «естественного отбора», в которой оптимальное решение будет результатом простого перебора среди огромного числа вариантов, – говорит Ли. – Но в мире нет вычислительных ресурсов для реализации подобного подхода… Так что пока мы опираемся на интеллект таких ученых, как Чьан».
И все же, как утверждает Ли, благодаря новым подходам и мощности специализированных центров обработки данных, оснащенных графическими процессорами, сфера применения глубинного обучения непрерывно растет. Зачастую исследователям приходится специально выделять время и вычислительные мощности только для того, чтобы проанализировать открывающиеся перспективы. «Эта работа существенно расширила сферу возможных применений нейронных сетей. В том что касается научных изысканий, возможности возросли экспоненциально», – говорит Ли. И это расширение касается не только распознавания образов, но также понимания естественных языков и множества других сфер.
Это стало одной из причин, по которым Microsoft не только увеличивает мощности своих кластеров графических процессоров, но и исследует возможности других специализированных вычислителей, включая программируемые пользователем вентильные матрицы (Field-Programmable Gate Array, FPGA) – микропроцессоры, которые могут быть оптимизированы для решения конкретных задач, в том числе глубинного обучения. «Мы также наблюдаем взрыв интереса к новым вычислительным платформам со стороны наших исследователей», – говорит Ли. И мы видим последствия этого интереса, выходящие за рамки технологий и искусственного интеллекта. Прошлым летом Intel провел переговоры о своей крупнейшей сделке – поглощении компании Altera, специализирующейся на проектировании FPGA.
Между тем Гибсон утверждает, что глубинное обучение было скорее «аппаратной проблемой». Да, нам по-прежнему нужны классные исследователи, руководящие созданием нейронных сетей, однако все чаще нахождение новых путей сводится к применению работающих «в лоб» алгоритмов на все более мощных вычислителях. Как указывает Гибсон, хотя глубинные нейронные сети работают замечательно, мы толком не понимаем, как они работают. Фокус заключатся в том, чтобы найти сложную комбинацию алгоритмов, работающую наилучшим образом. А чем больше процессоров и чем они производительнее, тем быстрее решается эта задача.
В конечном счете только компании, построившие наиболее мощные вычислительные сети, выйдут в лидеры. Тех, кто уже сегодня достиг результатов в глубинном обучении, в дальнейшем ждет еще больший успех.