Энциклопедия мобильной связи

Введение в глубинное обучение. Новая теория раскрывает тайну работы нейронных сетей

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

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

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

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

Очевидно, глубинное обучение еще далеко от совершенства, но оно уже близко к тому, чтобы приносить коммерческую пользу. Например, эти самоуправляемые машины. Известные компании вроде Google, Tesla и Uber уже пробуют внедрить автономные автомобили на улицы города.

Ford предсказывает значительное увеличение доли беспилотных транспортных средств уже к 2021 году. Правительство США также успело разработать для них свод правил безопасности.

Что такое глубинное обучение?

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

Внешний круг – это искусственный интеллект в целом (например, компьютеры). Чуть дальше – машинное обучение, а совсем в центре – глубинное обучение и искусственные нейросети.

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

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

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

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

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

Если рассматривать машинное обучение как ответвление или вариант работы искусственного интеллекта, то глубинное обучение – это специализированный тип такого ответвления.

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

Методы глубинного обучения

Методы глубинного обучения делятся на два основных типа:

  • Обучение с учителем
  • Обучение без учителя

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

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

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

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

Важность глубинного обучения

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

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

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

Что особенно занимательно – написание общей нейросети для двух абсолютно разных языков не потребовало особенного труда: «Так исторически сложилось, что люди видели Китайский и Английский, как два совершенно разных языка, поэтому и подход к каждому из них требовался различный», — говорит начальник исследовательского центра Baidu, Andrew Ng. «Алгоритмы обучения сейчас настолько обобщены, что вы можете просто обучаться».

Google использует глубинное обучение для управления энергией в дата-центрах компании. Они смогли сократить затраты ресурсов для охлаждения на 40%. Это около 15% повышения эффективности энергопотребления и миллионы долларов экономии.

Микросервисы глубинного изучения

Вот краткий обзор сервисов, связанных с глубинным обучением.

Illustration Tagger. Дополненный Illustration2Vec, этот сервис позволяет отмечать изображения с рейтингом «защищенный», «сомнительный», «опасный», «копирайт» или «общий» для того, чтобы заранее понять содержание картинки.

  • Дополнение для Theano от Google
  • Редактируется на Python и Numpy
  • Зачастую применяется для решения определенного спектра проблем
  • Не общего назначения. Основной упор на машинное зрение
  • Редактируется на C++
  • Есть интерфейс на Python

Онлайн-курсы по глубинному обучению

Google и Udacity объединились для создания бесплатного курса по глубинному обучению , части Курса Машинного Обучения Udacity. Эту программу ведут опытные разработчики, желающие развить такую область, как машинное обучение и, в частности, глубинное обучение.

Другой популярный вариант – курс машинного обучения от Andrew Ng при поддержке Coursera и Стенфорда.

  1. Машинное обучение – Стенфорд от Andrew Ng на Coursera (2010-2014)
  2. Машинное обучение – Caltech от Yaser Abu-Mostafa (2012-2014)
  3. Машинное обучение – Carnegie Mellon от Tom Mitchell (Весна 2011)
  4. Нейросети для машинного обучения – Geoffrey Hinton на Coursera (2012)
  5. Класс по нейросетям – Hugo Larochelle из Université de Sherbrooke (2013

Книги по глубинному обучению

В то время как ресурсы из предыдущей секции опираются на довольно обширную базу знаний, книга «Grokking Deep Learning», наоборот, рассчитана на новичков. Как говорят авторы: «Если вы закончили 11 классов и примерно понимаете, как писать на Python, мы научим вас глубинному обучению».

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

  1. «Глубинное обучение» от Yoshua Bengio, Ian Goodfellow и Aaron Courville (2015)
  2. «Нейросети и глубинное обучение» от Michael Nielsen (2014)
  3. «Глубинное обучение» от Microsoft Research (2013)
  4. «Туториалы по глубинному обучению» от лаборатории LISA, Университета Монреаля (2015)
  5. «neuraltalk» от Andrej Karpathy
  6. «Введение в генетические алгоритмы»
  7. «Современный подход к искусственному интеллекту»
  8. «Обзор на глубинное обучение и нейросети»

Видеоролики и лекции

Deep Learning Simplified – чудесный YouTube-канал. Вот их первое видео:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Что такое deep learning?

Впервые об успехах глубокого обучения (deep learning) стало слышно в 2012 году, а через три года уже все только о нем и говорят. Так же было с интернетом в эпоху надувания инвестиционного пузыря. А поскольку в нейронные сети делаются сейчас немаленькие вложения, то смело можно говорить о новом пузыре .

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



Это разнообразие не случайно: если интернет – это просто вид связи, то глубокие нейронные сети (deep neural networks, DNN) – по сути, новый тип программ, столь же универсальный, как и традиционные компьютерные программы. Эта универсальность доказана теоретически: нейронная сеть в теории может бесконечно точно аппроксимировать любую функцию многих переменных – а еще проводить вычисления , эквивалентные вычислениям машины Тьюринга .

Сети, которые нужно учить

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

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

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

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

В отличие от традиционных компьютерных программ, нейронные сети не нужно «писать», их нужно «учить». И их можно научить тому, что бесконечно трудно (если вообще возможно) воплотить традиционной программной инженерией. Например, нейронные сети уже научились распознавать аудио и видео на уровне людей – и даже лучше них. Или наоборот, создавать аудио и видео – если у вас есть воплощенное в наученной глубокой нейронной сети понимание изображений каких-то объектов, это же понимание можно использовать и для создания изображений этих объектов. Синтез голоса, текста и изображений еще не появился на рынке, но эксперименты уже показывают успехи, раньше в этой области недостижимые . Более того, нейронные сетки могут не только анализировать данные, но и выдавать команды. Так, они научились играть в игры Atari 2600, причем во многие даже лучше человека, и их не пришлось специально для этого программировать .

Как это стало возможным только сегодня? Почему таких результатов не достигли давно, еще до появления того же интернета? Ведь рассуждения о возможностях нейронных сетей ведутся с тех же 50-х годов прошлого века!

Во-первых, стало понятно, как научить глубокие нейронные сети – какая там работает математика. Глубокая нейронная сеть – значит, с глубиной больше двух слоев. Если слоев меньше, то речь идет о мелком (shallow) обучении. Если число слоев больше десяти, то говорят об очень глубоком обучении, но пока что такое встречается редко. Раньше нейронные сети пытались учить методом проб и ошибок (он же – метод «научного тыка»), и так получалось обучать только мелкие сети. Со временем появилось понимание математики многослойных нейронных сетей, их стало возможно проектировать, пришло понимание, как создавать новые виды сетей и обеспечить их обучаемость .

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



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

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

« Нейросетьмастера»

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

Профессия тех, кто занимается нейронными сетями, даже пока не имеет названия. Если на заре интернета появилось понятие «вебмастер» (и просуществовало целых пять или шесть лет), то аналогичной «нейросетьмастер»-профессии пока нет. В области big data такие специалисты называют себя «учеными данных» (data scientists), но все-таки их работа имеет ту же инженерную природу, что и работа программистов. Инженеры измеряют, анализируют, проектируют, строят и целевые системы, и инструменты для инженерии. Программная инженерия (software engineering) отличается от компьютерной науки (computer science). С нейронными сетями то же самое: названия профессии пока нет, но уже есть инженеры, которые вам помогут их создать, обучить и использовать . По счастью, за последний год появилась развитая инфраструктура для новой профессии: университетские учебные курсы, десятки тьюториалов, книги, соревновательные и тренировочные площадки, огромное количество свободных программ. Только в русскоязычном сообществе глубокого обучения ВКонтакте сегодня

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

В отличие скалярного центрального или векторного графического процессора, 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 и может значительно уменьшить объем требуемого локального хранилища.

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

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

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

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

В июле этого года на YouTube появилась запись выступления на конференции в Берлине, которая предлагает возможный ответ. В своем докладе Нафтали Тишби , ученый и нейробиолог из Еврейского университета в Иерусалиме, представил доказательство в поддержку новой теории, объясняющей глубокое обучение. Тишби считает, что глубокие нейронные сети учатся при помощи “информационного бутылочного горлышка”, процедуры, которую он и его коллеги описали в 1999. Идея заключается в том, что нейросеть избавляется от лишних входных данных и деталей, “проталкивая” информацию через бутылочное горлышко и оставляя только самые подходящие под общее определение признаки. Компьютерные эксперименты Тишби и его студента Равида Шварца-Зив показали, как эта процедура происходит во время глубокого обучения.

Эти находки взбудоражили AI-сообщество. “Я верю, что идея о бутылочном горлышке может быть очень важной в будущем исследовании нейронных сетей”, – сказал Алекс Алеми из Google Research, который уже разработал новые методы аппроксимации для исследования теории на более крупных нейронных сетях. Бутылочное горлышко может выступать “не только как теоретический инструмент понимания работы нейронных сетей, но и как инструмент создания новых целей и структур нейронных сетей”, сказал Алеми.

Некоторые исследователи сомневаются, что эта теория полностью объясняет успех глубокого обучения, но Кайл Кранмер из университета Нью-Йорка, который использует машинное обучение для изучения столкновения частиц на Большом адронном коллайдере, говорит, что “это похоже на правду”.

Джоффри Хинтон, первопроходец в глубоком обучении, написал письмо Тишби после того, как посмотрел его выступление. “Это очень интересно. Мне нужно будет послушать его ещё десять тысяч раз, чтобы действительно понять, но в наше время редко услышишь выступление с действительно оригинальной идеей, которая может быть ответом на большую загадку”.

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

Бутылочное горлышко

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

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

Клод Шеннон, создатель теории информации, в определенном смысле запустил изучение информации в 1940-х, позволив рассматривать информацию как абстрактную категорию, нули и единицы с чисто математическим значением. Как говорит Тишби, Шеннон принял точку зрения, что “информация не имеет отношения к семантике”. Но Тишби считает, что это не так. Используя теорию информации, «вы можете строго определить “релевантность”».

Представьте, что X – сложный набор данных, как пиксели на фото собаки, а Y – простая переменная, представленная этими данными, как слово “собака”. Вы можете захватить всю «релевантную» информацию об X в Y, сжимая X настолько, насколько сможете, не теряя способности прогнозировать Y. В своей статье 1999 года Тишби и его соавторы Фернандо Перейра (сейчас работает в Google) и Уильям Биалек (сейчас работает в Пристонском университете) сформулировали это предположение как проблему математической оптимизации. Это была фундаментальная идея без практического применения.

“Я думал об этом в разном контексте последние тридцать лет”, – говорит Тишби. “Мне повезло, что глубокие нейронные сети стали такими важными.”

Глаза на лицах на людях

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

Они узнали, что изобретенные Хинтоном алгоритм под названием “сеть глубокого убеждения” работает, как ренормализация, метод, который используется в физике, чтобы получить общее представление о физической системе по её деталям. Когда Шваб и Мехта применили сеть глубокого убеждения к модели магнита в его “критической точке”, где система фрактальна в любом масштабе, они обнаружили, что сеть автоматически использовала похожую на ренормализацию методику, чтобы вычислить состояние модели. Это было удивительным признаком того, что “выделение релевантных признаков в контексте статистической физики и выделение релевантных признаков в контексте глубокого обучения не просто одинаково называются, но и являются одним и тем же”, как сказал биофизик Илья Неменман .

Проблема только заключается в том, что реальный мир не фрактален. “Естественный мир – это не уши на ушах на ушах, это глаза на лицах на людях,” – сказал Кранмер. “Поэтому я бы не сказал, что [процедура ренормализации] является причиной хорошей работы нейросетей с изображениями”. Но Тишби, который в то время проходил химиотерапию от рака поджелудочной железы, понял, что всё это можно охватить более широкой идеей. “Размышление о науке и роли моих старых идей стало важной частью моего исцеления”, – сказал он.

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

Базовый алгоритм, используемый в большинстве процедур глубокого обучения для настройки ответа нейронных связей на данные, называется “стохастическим градиентным спуском”. Каждый раз, когда сеть получает данные, сигнал каскадом поднимается через слои искусственных нейронов. Когда сигнал достигает верхнего слоя, финальный шаблон можно сравнить с корректной пометкой для изображения – 1 или 0, “собака” или “не собака”. Любые различия между этим шаблоном и правильным ответом «обратно распространяются» по слоям, как учитель, исправляющий экзамен, алгоритм усиливает или ослабляет каждое соединение, чтобы улучшить сеть для создания правильного выходного сигнала. В ходе обучения общие шаблоны в данных обучения отражаются в силе соединений, и сеть становится экспертом в правильной маркировке данных, узнавая собаку, слово или единицу.

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

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

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

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

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

Тишби говорит, что модели сетей, проанализированные Саксом и его коллегами, отличаются от стандартной архитектуры нейронных сетей, но теория информационного бутылочного горлышка объясняет их производительность лучше, чем другие методы. Вопросы о том, существует ли бутылочное горлышко в более крупных нейронных сетях, частично рассматриваются в последних экспериментах Тишби и Шварца-Зива, в которых они обучают гораздо более крупные нейронные сети с 330,000 соединениями для распознавания рукописных цифр в базе данных MNIST с 60,000 изображений, которая является известным эталоном для оценки эффективности алгоритмов глубокого обучения. Ученые увидели такую же конвергенцию сетей; они также наблюдали две отдельные фазы глубокого обучения, разделенные еще более резким переходом, чем в небольших сетях. «Теперь я полностью убежден, что это общее явление», – сказал Тишби.

Люди и машины

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

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

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

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

Однако и реальные, и искусственные нейронные сети не справляются с проблемами, в которых важна каждая деталь, а разница в минутах может испортить весь результат. Например, многие люди не могут быстро перемножить два больших числа в уме. “У нас есть большой ряд подобных проблем, логических задач, очень чувствительных к изменению одной переменной. Классификация, дискретные проблемы, криптографические проблемы. Я не думаю, что глубокое обучение когда-нибудь поможет мне взломать криптографические коды”.

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



Понравилась статья? Поделитесь с друзьями!
Была ли эта статья полезной?
Да
Нет
Спасибо, за Ваш отзыв!
Что-то пошло не так и Ваш голос не был учтен.
Спасибо. Ваше сообщение отправлено
Нашли в тексте ошибку?
Выделите её, нажмите Ctrl + Enter и мы всё исправим!