Что такое deep learning и почему о нем все говорят? Инженерный взгляд на вещи

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

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

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

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

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

Обычно операции с вершинами гораздо сложнее, чем в описанном выше примере. Зачастую они определяются небольшими программами, называемыми коделетами (кодовыми именами). Графическая абстракция привлекательна, поскольку не делает предположений о структуре вычислений и разбивает вычисления на компоненты, которые процессор IPU может использовать для работы.

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

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


Граф полного цикла обучения AlexNet в прямом и обратном направлении

Графический компилятор Poplar превратил описание AlexNet в вычислительный граф из 18,7 миллиона вершин и 115,8 миллиона ребер. Четко видимая кластеризация – результат прочной связи между процессами в каждом слое сети с более легкой связью между уровнями.

Другой пример – простая сеть с полной связью, прошедшая обучение на MNIST – простом наборе данных для компьютерного зрения, своего рода «Hello, world» в машинном обучении. Простая сеть для изучения этого набора данных помогает понять графы, которыми управляют приложения Poplar. Интегрируя библиотеки графов с такими средами, как TensorFlow, компания представляет один из простых путей для использования IPU в приложениях машинного обучения.

После того, как с помощью компилятора построился граф, его нужно выполнить. Это возможно с помощью движка Graph Engine. На примере ResNet-50 демонстрируется его работа.


Граф ResNet-50

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

Движок создает и управляет исполнением модели машинного обучения, используя граф, созданный компилятором. После развертывания Graph Engine контролирует и реагирует на IPU или устройства, используемые приложениями.

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

Почему глубоким сетям нужно так много памяти?

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

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

Хотя мы еще не имеем полного представления о человеческом мозге и о том, как он работает, в целом понятно, что нет большого отдельного хранилища памяти. Считается, что функция долговременной и кратковременной памяти в человеческом мозге встроена в структуру нейронов+синапсов. Даже простые организмы вроде червей с нейронной структурой мозга, состоящей из чуть более 300 нейронов, в какой-то степени функцией памяти.

Построение памяти в обычных процессорах – это один из способов обойти проблему узких мест памяти, открыв огромную пропускную способность при гораздо меньшем энергопотреблении. Тем не менее, память на кристалле – дорогая штука, которая не рассчитана на действительно большие объемы памяти, которые подключены к центральным и графическим процессорам, в настоящее время используемым для подготовки и развертывания глубинных нейронных сетей.

Поэтому полезно посмотреть на то, как память сегодня используется в центральных процессорах и системах глубокого обучения на графических ускорителях, и спросить себя: почему для них необходимы такие большие устройства хранения памяти, когда головной мозг человека отлично работает без них?

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

Например, 50-слойная сеть ResNet имеет около 26 миллионов весовых параметров и вычисляет 16 миллионов активаций в прямом направлении. Если вы используете 32-битное число с плавающей запятой для хранения каждого веса и активации, то для этого потребуется около 168Мб пространства. Используя более низкое значение точности для хранения этих весов и активаций, мы могли бы вдвое или даже вчетверо снизить это требование для хранения.

Серьезная проблема с памятью возникает из-за того, что графические процессоры полагаются на данные, представляемые в виде плотных векторов. Поэтому они могут использовать одиночный поток команд (SIMD) для достижения высокой плотности вычислений. Центральный процессор использует аналогичные векторные блоки для высокопроизводительных вычислений.

В графических процессорах ширина синапса составляет 1024 бит, так что они используют 32-битные данные с плавающей запятой, поэтому часто разбивают их на параллельно работающие mini-batch из 32 образцов для создания векторов данных по 1024 бит. Этот подход к организации векторного параллелизма увеличивает число активаций в 32 раза и потребность в локальном хранилище емкостью более 2 ГБ.

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

Дополнительная память также требуется для хранения входных данных, временных значений и инструкций программы. Измерение использования памяти при обучении ResNet-50 на высокопроизводительном графическом процессоре показало, что ей требуется более 7,5 ГБ локальной DRAM.

Возможно, кто-то решит, что более низкая точность вычислений может сократить необходимый объем памяти, но это не так. При переключении значений данных до половинной точности для весов и активаций вы заполните только половину векторной ширины SIMD, потратив половину имеющихся вычислительных ресурсов. Чтобы компенсировать это, когда вы переключаетесь с полной точности до половины точности на графическом процессоре, тогда придется удвоить размер mini-batch, чтобы вызвать достаточный параллелизм данных для использования всех доступных вычислений. Таким образом, переход на более низкую точность весов и активаций на графическом процессоре все еще требует более 7,5ГБ динамической памяти со свободным доступом.

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

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

Второй подход особенно эффективен, когда вся нейронная сеть может быть проанализированна на этапе компиляции, чтобы создать фиксированную выделенную память, так как издержки на управление памятью сокращаются почти до нуля. Выяснилось, что комбинация этих методов позволяет сократить использование памяти нейронной сетью в два-три раза.
Третий значительный подход был недавно обнаружен командой Baidu Deep Speech. Они применили различные методы экономии памяти, чтобы получить 16-кратное сокращение потребления памяти функциями активации, что позволило им обучать сети со 100 слоями. Ранее при том же объеме памяти они могли обучать сети с девятью слоями.

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

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

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

— Лаборатория молодая: в нашей команде пока только пять человек, работы — непаханое поле, но мы серьезно настроены. Основным направлением выбрали разработку и исследование диалоговых систем — онлайн-консультанты, помощники, которые компетентно отвечают на все вопросы пользователя. У многих компаний и сейчас есть такие сервисы, однако либо они плохо работают, постоянно выдавая ошибки, либо по ту сторону монитора сидит живой человек, который не может быть в сети 24/7, к тому же ему надо платить. Мы хотим разработать алгоритм, который позволит создавать роботов, способных к полноценной беседе. Такой робот сможет за считанные минуты купить вам билет на самолет или проконсультировать по любому насущному вопросу. Сейчас такого уровня систем не существует.

Нейронные сети и искусственный интеллект

Идея нейронных сетей родилась в середине XX века в США вместе с появлением первых ЭВМ. Нейрофизиологи, изучавшие теоретические аспекты работы мозга, полагали, что организация работы компьютера по образу и подобию работы человеческого мозга позволит уже в ближайшем будущем создать первый искусственный интеллект.

Отличие искусственного интеллекта от всех алгоритмов прошлого поколения заключается в том, что обученная нейронная сеть действует не по заданному пути, а самостоятельно ищет способы наиболее эффективного достижения цели. Работа одиночного компьютерного «нейрона» выглядит так: для обучения на вход программы подаются объекты, принадлежащие двум типам — А и Б — и несущие в себе какое-то числовое значение. Программа, исходя из данных в обучающей выборке, понимает, какие диапазоны этого значения соответствуют объектам А, а какие — Б, и впоследствии может отличать их самостоятельно. В реальных задачах система должна различать множество типов, у каждого из которых, в свою очередь, могут быть десятки свойств. Для их решения необходима более сложная структура из слоев нейронов, серьезные вычислительные мощности и большое количество обучающих тестов. XXI век стал началом эры, в которой эти технологии уже могут применяться для решения ежедневных задач.

Михаил Бурцев, заведующий лабораторией:

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

Диалоги сотрудников лаборатории с нейронной сетью

Команда: сегодня и завтра

Лаборатория сотрудничает с крупными исследовательскими центрами на базе НИЯУ МИФИ и Курчатовского института. В ее деятельности также принимают участие и иностранные специалисты в области машинного обучения и нейроинформатики, например Сергей Плис из The Mind Research Network. Помимо этого, регулярно проводятся мероприятия, нацеленные на популяризацию деятельности лаборатории и поиск молодых талантов. Победа в хакатоне или успешное прохождение курсов дают неплохие шансы попасть в лабораторию.

Валентин Малых, сотрудник лаборатории:

— Мой путь в лабораторию был весьма непростым. Еще года четыре назад я практически не касался темы машинного обучения. Потом занялся компьютерной лингвистикой, и понеслось... Несколько раз менял работу: попробовал себя в робототехнике, занимался разработкой программного обеспечения, связанного с компьютерным зрением, там как раз и познакомился с машинным обучением, и мне захотелось заниматься серьезными исследованиями.
За все время работы успел съездить на несколько хакатонов, которые организовывала лаборатория — пожалуй, самое интересное, что произошло со мной за тот период. После пришел к ребятам и сказал, что хочу у них работать. Меня взяли.

Философия DeepHack

Хакатоны, несмотря на свое название, никак не связаны со взломом программного обеспечения (англ. hack — взламывать). Это командные соревнования по программированию, в которых участники в течение нескольких дней, а иногда и недель, бьются над решением какой-то одной конкретной задачи. Тема хакатона объявляется заранее, обычно участвуют несколько сотен человек. Такие мероприятия организуют не только институты, но и крупные компании, которые ищут талантливых специалистов. На базе Физтеха лаборатория нейронных сетей и глубокого обучения организовала уже два хакатона — участники в течение недели слушали лекции о вопросно-ответных и диалоговых системах и писали код.

Владислав Беляев, сотрудник лаборатории:

— В этом и в прошлом году мы устраивали хакатоны по машинному обучению. Заявок было очень много, причем не только из России и СНГ, но и из Европы, из Штатов. Во время хакатона читали лекции ученые из Оксфорда и Стэнфорда, Google DeepMind и OpenAI , ну и российские коллеги, конечно. Сейчас мы готовим курс по нейронным сетям, расскажем все с самого начала и до конца: от биологической концепции и основных моделях в программировании до собственно прикладного применения и конкретной реализации.

Свободное время

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

Михаил Бурцев, заведующий лабораторией:

— Работать приходится много — кажется, я уже не помню, что такое свободное время. Без шуток, времени отдохнуть практически не находится: за последние полгода мы разок смогли выбраться на шашлыки компанией. Хотя в каком-то смысле и работа может быть отдыхом. На хакатонах и семинарах появляется возможность пообщаться в менее формальной обстановке с коллегами и завести новые знакомства. Традиций совместного времяпрепровождения после работы мы пока завести не успели — слишком молоды. Летом планируем выбраться на природу всей лабораторией, снять коттедж и две недели решать самые тяжелые и интересные задачи вместе — устроим свой личный мини-хакатон. Посмотрим, насколько такой подход может быть эффективным. Возможно, это и станет нашей первой доброй традицией.

Трудоустройство

Лаборатория будет расширяться и уже сейчас ищет новых сотрудников. Самый простой способ получить место — пройти двухмесячную стажировку , на которую отбирают по итогам собеседования. Необходимым условием прохождения собеседования является выполнение части задач курса Deep Learning . Во время стажировки есть возможность поучаствовать в выполнении оплачиваемых заказных проектов. Финансирование лаборатории пока не налажено, однако, по словам сотрудников лаборатории, в ближайшее время эта проблема будет решена. «Попасть к нам сейчас — значит получить шанс стать «отцом-основателем» лаборатории в самом перспективном направлении информационных технологий», — говорит Михаил Бурцев.

Изображения и фотографии предоставила лаборатория нейронных сетей и глубокого обучения МФТИ. Фотограф: Евгений Пелевин.

Грядущая революция умных роботов предсказывалась каждые десять лет начиная с 1950-х годов. Тем не менее, она так и не произошла. Прогресс в области искусственного интеллекта происходил неуверенно, порою скучно, неся многим энтузиастам разочарование. Видимые успехи - компьютер Deep Blue, созданный в середине 1990-х IBM и обыгравший в 1997 году Гарри Каспарова в шахматы, или появление в конце 1990-х электронного переводчика - были скорее результатом «грубых» расчетов, чем переносом механизмов человеческого восприятия на процессы компьютерных вычислений.

Однако история разочарований и провалов теперь резко меняется. Всего десять лет назад алгоритмы компьютерного зрения и распознавания предметов могли идентифицировать шар или параллелепипед на простом фоне. Теперь они могут различать человеческие лица так же хорошо, как это могут делать люди, даже на сложном, естественном фоне. Полгода назад Google выпустил приложение для смартфонов, способное переводить текст с более чем 20-ти иностранных языков, считывая слова с фотографий, дорожных знаков или рукописного текста!

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

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

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

Замечательным примером использования нейронных сетей с глубинным обучением является распознавание одинаковых объектов, сфотографированных под разными углами или в разных позах (если речь идет о человеке или о животном). Алгоритмы, использующие попиксельное сканирование, «думают» что перед ними два разных изображения, тогда как «умные» нейронные сети «понимают», что перед ними тот же самый объект. И наоборот - изображения двух собак разных пород, сфотографированных в одинаковой позе, прежними алгоритмами могли восприниматься как фотографии одной и той же собаки. Нейронные сети с глубинным обучением могут выявить такие детали изображений, которые помогут им различить животных.

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

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

Распознавание объектов с помощью глубокого обучения

Возможно, вы уже видели этот знаменитый комикс xkcd . Шутка в том, что любой 3-летний ребенок может распознать фотографию птицы, но заставить это сделать компьютер заняло у самых лучших компьютерных специалистов более 50 лет.В последние несколько лет мы наконец-то нашли хороший подход к распознаванию объектов с использованием глубоких сверточных нейронных сетей . Это звучит как куча выдуманных слов из фантастического романа Уильяма Гибсона, но все станет понятным, когда мы разберем их по очереди.Итак, давайте же сделаем это – напишем программу, распознающую птиц!

Начнем с простого

Прежде чем научиться распознавать изображения птиц, давайте узнаем, как распознать что-то гораздо более простое – рукописную цифру «8».

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

Что такое нейронная сеть?

Как известно, понятие нейронной сети (НС) пришло из биологии и представляет собой несколько упрощенную модель строения человеческого мозга. Но не будем углубляться в естественнонаучные дебри – проще всего представить нейрон (в том числе, искусственный) как некий черный ящик с множеством входных отверстий и одним выходным.

Математически, искусственный нейрон осуществляет преобразование вектора входных сигналов (воздействий) X в вектор выходных сигналов Y при помощи функции, называемой функцией активации. В рамках соединения (искусственной нейронной сети — ИНС) функционируют три вида нейронов: входные (принимающие информацию из внешнего мира – значения интересующих нас переменных), выходные (возвращающие искомые переменные – к примеру, прогнозы, или управляющие сигналы), а также промежуточные – нейроны, выполняющие некие внутренние («скрытые») функции. Классическая ИНС, таким образом, состоит из трех или более слоев нейронов, причем на втором и последующих слоях («скрытых» и выходном) каждый из элементов соединен со всеми элементами предыдущего слоя.

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

Обучение нейронной сети

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

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

В общем случае, обучение ИНС заключается в следующем:

  1. входные нейроны принимают переменные («стимулы») из внешней среды;
  2. в соответствии с полученной информацией изменяются свободные параметры НС (работают промежуточные слои нейронов);
  3. в результате изменений в структуре НС сеть «реагирует» на информацию уже иным образом.

Таков общий алгоритм обучения нейронной сети (вспомним собаку Павлова – да-да, внутренний механизм образования условного рефлекса именно таков – и тут же забудем: все же наш контекст предполагает оперирование техническими понятиями и примерами).

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

Глубокое обучение

Понятие глубокого обучения (deep learning ) относится к другой классификации и обозначает подход к обучению так называемых глубоких структур, к которым можно отнести многоуровневые нейронные сети. Простой пример из области распознавания образов: необходимо научить машину выделять все более абстрактные признаки в терминах других абстрактных признаков, то есть определить зависимость между выражением всего лица, глаз и рта и, в конечном итоге, скопления цветных пикселов математически. Таким образом, в глубокой нейронной сети за каждый уровень признаков отвечает свой слой; понятно, что для обучения такой «махины» необходим соответствующий опыт исследователей и уровень аппаратного обеспечения. Условия сложились в пользу глубокого обучения НС только к 2006 году – и спустя восемь лет можно говорить о революции, которую произвел этот подход в машинном обучении.

Итак, прежде всего, в контексте нашей статьи стоит заметить следующее: глубокое обучение в большинстве случае не контролируется человеком. То есть этот подход подразумевает обучение нейронной сети без учителя. Это и есть главное преимущество «глубокого» подхода: машинное обучение с учителем, особенно в случае глубоких структур, требует колоссальных временных – и трудовых – затрат. Глубокое же обучение – подход, моделирующий человеческое абстрактное мышление (или, по крайней мере, представляет собой попытку приблизиться к нему), а не использующий его.

Идея, как водится, прекрасная, но на пути подхода встают вполне естественные проблемы – прежде всего, коренящиеся в его претензии на универсальность. На самом деле, если на поприще распознавания образов подходы deep learning добились ощутимых успехов, то с той же обработкой естественного языка возникает пока гораздо больше вопросов, чем находится ответов. Очевидно, что в ближайшие n лет вряд ли удастся создать «искусственного Леонардо Да Винчи» или даже – хотя бы! — «искусственного homo sapiens ».

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

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