Что такое глубокое обучение. Простыми словами о сложном: что такое нейронные сети? Глубинное обучение: геометрический вид

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как одно выступление на конференции стало сенсацией в мире искусственного интеллекта? Натали Волчоувер на сайте 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-сообществу, способствуя обмену информацией между этими сферами. Тишби верит, что его теория окажется полезной в обеих дисциплинах, даже если она принимает более общую форму в обучении людей. Теория уже позволяет понять, какие типы проблем могут решать настоящие и искусственные нейронные сети. “Это дает полную характеристику проблем, которые можно изучить”, говорит Тишби. Это «проблемы, в которых я могу стереть шум из входных данных, не нанося ущерба моей способности классифицировать. Это проблемы естественного зрения и распознавания речи. Это именно те проблемы, с которыми может справиться наш мозг».

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

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

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

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

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

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

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

Немного истории

Впервые понятие искусственных нейронных сетей (ИНС) возникло при попытке смоделировать процессы головного мозга. Первым серьезным прорывом в этой сфере можно считать создание модели нейронных сетей МакКаллока-Питтса в 1943 году. Учеными впервые была разработана модель искусственного нейрона. Ими также была предложена конструкция сети из этих элементов для выполнения логических операций. Но самое главное, учеными было доказано, что подобная сеть способна обучаться.

Следующим важным шагом стала разработка Дональдом Хеббом первого алгоритма вычисления ИНС в 1949 году, который стал основополагающем на несколько последующих десятилетий. В 1958 году Фрэнком Розенблаттом был разработан парцептрон - система, имитирующая процессы головного мозга. В свое время технология не имела аналогов и до сих пор является основополагающей в нейронных сетях. В 1986 году практически одновременно, независимо друг от друга американскими и советскими учеными был существенно доработан основополагающий метод обучения многослойного перцептрона . В 2007 году нейронные сети перенесли второе рождение. Британский информатик Джеффри Хинтоном впервые разработал алгоритм глубокого обучения многослойных нейронных сетей, который сейчас, например, используется для работы беспилотных автомобилей.

Коротко о главном

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

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

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

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

Сегодняшнее положение

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

На сегодняшний день рынок нейронных сетей огромен - это миллиарды и миллиарды долларов. Как показывает практика, большинство технологий нейросетей по всему миру мало отличаются друг от друга. Однако применение нейросетей - это очень затратное занятие, которое в большинстве случаев могут позволить себе только крупные компании. Для разработки, обучения и тестирования нейронных сетей требуются большие вычислительные мощности, очевидно, что этого в достатке имеется у крупных игроков на рынке ИТ. Среди основных компаний, ведущих разработки в этой области можно отметить подразделение Google DeepMind, подразделение Microsoft Research, компании IBM, Facebook и Baidu.

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

Почему нейросети еще далеки до человеческого мозга?

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

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

Итог

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

Для тех, кто хочет знать больше

  • Большая нейронная война: что на самом деле затевает Google
  • Как когнитивные компьютеры могут изменить наше будущее

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

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

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



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: