Сверточная нейронная сеть - Convolutional neural network

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

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

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

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

Определение

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

Архитектура

Сравнение свертки, объединения и плотных слоев LeNet и AlexNet

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

Сверточные слои

В CNN входом является тензор с формой: (количество входов) x (высота входа) x (ширина входа) x (входные каналы ). После прохождения через сверточный слой изображение абстрагируется до карты объектов, также называемой картой активации, с формой: (количество входов) x (высота карты объектов) x (ширина карты объектов) x ( каналы карты объектов ).

Сверточные слои сворачивают входные данные и передают результат следующему слою. Это похоже на реакцию нейрона зрительной коры на определенный стимул. Каждый сверточный нейрон обрабатывает данные только для своего рецептивного поля . Хотя полностью подключенные нейронные сети с прямой связью могут использоваться для изучения функций и классификации данных, эта архитектура обычно непрактична для больших входных данных, таких как изображения с высоким разрешением. Это потребует очень большого количества нейронов даже в неглубокой архитектуре из-за большого входного размера изображений, где каждый пиксель является соответствующей входной функцией. Например, полностью связанный слой для (маленького) изображения размером 100 x 100 имеет 10 000 весов для каждого нейрона во втором слое. Вместо этого свертка уменьшает количество свободных параметров, позволяя сети быть глубже. Например, независимо от размера изображения, использование мозаичной области 5 x 5, каждая с одинаковыми общими весами, требует только 25 обучаемых параметров. Использование регуляризованных весов по меньшему количеству параметров позволяет избежать проблем с исчезающими градиентами и взрывных градиентов, которые наблюдаются при обратном распространении в традиционных нейронных сетях. Кроме того, сверточные нейронные сети идеально подходят для данных с топологией в виде сетки (например, изображений), поскольку пространственные отношения между отдельными функциями учитываются во время свертки и / или объединения.

Объединение слоев

Сверточные сети могут включать в себя локальные и / или глобальные уровни объединения вместе с традиционными сверточными уровнями. Слои объединения уменьшают размеры данных за счет объединения выходных сигналов кластеров нейронов на одном уровне в один нейрон на следующем уровне. Локальный пул объединяет небольшие кластеры, обычно используются такие размеры листов, как 2 x 2. Глобальный пул действует на все нейроны карты функций. Существует два наиболее распространенных типа пула: максимальный и средний. Максимальный пул использует максимальное значение каждого локального кластера нейронов в карте функций, в то время как средний пул принимает среднее значение.

Полностью связанные слои

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

Рецептивное поле

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

Вес

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

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

История

CNN часто сравнивают с тем, как мозг обрабатывает зрение в живых организмах .

Рецептивные поля в зрительной коре

Работа Хьюбела и Визеля в 1950-х и 1960-х годах показала, что зрительная кора кошки содержит нейроны, которые индивидуально реагируют на небольшие области поля зрения . При условии, что глаза неподвижны, область зрительного пространства, в которой зрительные стимулы влияют на возбуждение отдельного нейрона, называется его рецептивным полем . Соседние клетки имеют похожие и перекрывающиеся рецептивные поля. Размер и расположение рецептивного поля систематически меняются в коре головного мозга, чтобы сформировать полную карту зрительного пространства. Кора в каждом полушарии представляет собой контрлатеральное поле зрения .

В их статье 1968 года были определены два основных типа зрительных клеток мозга:

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

Хьюбел и Визель также предложили каскадную модель этих двух типов ячеек для использования в задачах распознавания образов.

Неокогнитрон, происхождение архитектуры CNN

« Неокогнитрон » был представлен Кунихико Фукусимой в 1980 году. Он был вдохновлен вышеупомянутой работой Хьюбела и Визеля. Неокогнитрон представил два основных типа слоев в CNN: сверточные слои и слои с пониженной дискретизацией. Сверточный слой содержит блоки, рецептивные поля которых покрывают участок предыдущего слоя. Весовой вектор (набор адаптивных параметров) такого блока часто называют фильтром. Юниты могут разделять фильтры. Слои с понижающей дискретизацией содержат блоки, рецептивные поля которых покрывают участки предыдущих сверточных слоев. Такой юнит обычно вычисляет среднее значение активаций юнитов в своем патче. Эта понижающая дискретизация помогает правильно классифицировать объекты в визуальных сценах, даже когда объекты сдвинуты.

В варианте неокогнитрона, называемом крецептрон, вместо использования пространственного усреднения Фукусимы J. Weng et al. представил метод, называемый max-pooling, где модуль понижающей дискретизации вычисляет максимум активаций модулей в своем патче. Max-pooling часто используется в современных CNN.

На протяжении десятилетий было предложено несколько алгоритмов контролируемого и неконтролируемого обучения для тренировки веса неокогнитрона. Однако сегодня архитектура CNN обычно обучается через обратное распространение .

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

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

Нейронные сети с временной задержкой

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

TDNN - это сверточные сети, которые разделяют веса во временном измерении. Они позволяют обрабатывать речевые сигналы независимо от времени. В 1990 году Хэмпшир и Вайбел представили вариант, который выполняет двумерную свертку. Поскольку эти TDNN оперировали спектрограммами, полученная система распознавания фонем была инвариантной как к сдвигам во времени, так и по частоте. Это вдохновило на неизменность перевода при обработке изображений с помощью CNN. Распределение выходов нейронов может охватывать синхронизированные этапы.

TDNN теперь обеспечивают наилучшую производительность при распознавании речи на большом расстоянии.

Максимальное объединение

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

Распознавание изображений с помощью CNN, обученных методом градиентного спуска

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

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

Этот подход стал основой современного компьютерного зрения .

LeNet-5

LeNet-5, новаторская 7-уровневая сверточная сеть, разработанная LeCun et al. В 1998 году эта классификация цифр применялась несколькими банками для распознавания рукописных цифр на чеках ( британский английский : чеки ), оцифрованных в изображениях 32x32 пикселей. Способность обрабатывать изображения с более высоким разрешением требует все большего и большего количества слоев сверточных нейронных сетей, поэтому этот метод ограничен доступностью вычислительных ресурсов.

Сдвиг-инвариантная нейронная сеть

Точно так же нейронная сеть, инвариантная к сдвигу, была предложена W. Zhang et al. для распознавания символов изображения в 1988 году. Архитектура и алгоритм обучения были изменены в 1991 году и применялись для обработки медицинских изображений и автоматического обнаружения рака груди на маммограммах .

В 1988 году была предложена другая конструкция на основе свертки для применения для разложения свернутых одномерных электромиографических сигналов посредством дек-свертки. Этот дизайн был изменен в 1989 году на другие конструкции, основанные на деконволюции.

Пирамида нейронной абстракции

Пирамида нейронной абстракции
Пирамида нейронной абстракции

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

Реализации GPU

Хотя CNN были изобретены в 1980-х, их прорыв в 2000-х потребовал быстрой реализации на графических процессорах (GPU).

В 2004 году К.С. О и К. Юнг показали, что стандартные нейронные сети могут быть значительно ускорены на графических процессорах. Их реализация была в 20 раз быстрее, чем аналогичная реализация на CPU . В 2005 году в другом документе также подчеркивалась ценность GPGPU для машинного обучения .

Первая реализация CNN на GPU была описана в 2006 году K. Chellapilla et al. Их реализация была в 4 раза быстрее, чем аналогичная реализация на CPU. В последующих работах также использовались графические процессоры, первоначально для других типов нейронных сетей (отличных от CNN), особенно нейронных сетей без учителя.

В 2010 году Дэн Чиресан и др. в IDSIA показали, что даже глубокие стандартные нейронные сети со многими уровнями можно быстро обучить на графическом процессоре путем обучения с учителем с помощью старого метода, известного как обратное распространение . Их сеть превзошла предыдущие методы машинного обучения в тесте рукописных цифр MNIST . В 2011 году они распространили этот подход с использованием графических процессоров на CNN, достигнув коэффициента ускорения 60 с впечатляющими результатами. В 2011 году они использовали такие CNN на графическом процессоре, чтобы выиграть конкурс распознавания изображений, в котором они впервые достигли сверхчеловеческой производительности. С 15 мая 2011 г. по 30 сентября 2012 г. их CNN выиграли не менее четырех имиджевых конкурсов. В 2012 году они также значительно улучшили лучшую производительность в литературе для нескольких баз данных изображений , включая базу данных MNIST , базу данных NORB, набор данных HWDB1.0 (китайские иероглифы) и набор данных CIFAR10 (набор данных из 60000 изображений 32x32 с маркировкой RGB ). .

Впоследствии аналогичный CNN на базе GPU Алекса Крижевского и др. победила в конкурсе ImageNet Large Scale Visual Recognition Challenge 2012. Очень глубокая CNN с более чем 100 слоями от Microsoft выиграла конкурс ImageNet 2015.

Реализации Intel Xeon Phi

По сравнению с обучением CNN с использованием графических процессоров сопроцессору Intel Xeon Phi уделялось не так много внимания . Заметным развитием является метод распараллеливания для обучения сверточных нейронных сетей на Intel Xeon Phi, названный Controlled Hogwild с произвольным порядком синхронизации (CHAOS). CHAOS использует параллелизм как на уровне потоков, так и на уровне SIMD, который доступен в Intel Xeon Phi.

Отличительные черты

В прошлом для распознавания изображений использовались традиционные модели многослойного персептрона (MLP). Однако полная связь между узлами вызвала проклятие размерности и была трудноразрешима в вычислительном отношении с изображениями с более высоким разрешением. Изображение размером 1000 × 1000 пикселей с цветовыми каналами RGB имеет 3 миллиона весов, что слишком велико для эффективной обработки в масштабе с полной связью.

Слои CNN расположены в 3-х измерениях

Например, в CIFAR-10 изображения имеют размер только 32 × 32 × 3 (32 в ширину, 32 в высоту, 3 цветовых канала), поэтому один полностью связанный нейрон в первом скрытом слое обычной нейронной сети будет иметь 32 * 32 * 3 = 3072 веса. Однако изображение размером 200 × 200 приведет к появлению нейронов с весами 200 * 200 * 3 = 120 000.

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

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

  • 3D-объемы нейронов. Слои CNN имеют нейроны, расположенные в трех измерениях : ширине, высоте и глубине. Где каждый нейрон внутри сверточного слоя связан только с небольшой областью слоя перед ним, называемой рецептивным полем. Различные типы слоев, как локально, так и полностью связанные, складываются в стек, чтобы сформировать архитектуру CNN.
  • Локальная связность: следуя концепции рецептивных полей, CNN используют пространственную локальность, обеспечивая локальный паттерн связности между нейронами соседних слоев. Таким образом, архитектура гарантирует, что изученные « фильтры » производят самый сильный отклик на пространственно локальный входной шаблон. Наложение множества таких слоев приводит к нелинейным фильтрам, которые становятся все более глобальными (т. Е. Реагирующими на большую область пиксельного пространства), так что сеть сначала создает представления небольших частей входных данных, а затем из них собирает представления более крупных областей.
  • Общие веса: в CNN каждый фильтр реплицируется по всему визуальному полю. Эти реплицированные единицы имеют одинаковую параметризацию (вектор веса и смещение) и образуют карту характеристик. Это означает, что все нейроны в данном сверточном слое реагируют на одну и ту же функцию в пределах своего конкретного поля ответа. Репликация единиц таким образом позволяет результирующей карте активации быть эквивариантной при сдвигах местоположения входных функций в поле зрения, то есть они предоставляют трансляционную эквивалентность - при условии, что уровень имеет шаг, равный единице.
  • Объединение: в слоях объединения CNN карты характеристик делятся на прямоугольные подобласти, и функции в каждом прямоугольнике независимо подвергаются понижающей дискретизации до одного значения, обычно с использованием их среднего или максимального значения. В дополнение к уменьшению размеров карт признаков, операция объединения предоставляет некоторую степень локальной трансляционной инвариантности для содержащихся в них признаков, позволяя CNN быть более устойчивой к вариациям в их положениях.

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

Строительные блоки

Архитектура CNN сформирована стеком отдельных слоев, которые преобразуют входной объем в выходной объем (например, удерживая оценки класса) с помощью дифференцируемой функции. Обычно используются несколько различных типов слоев. Это более подробно обсуждается ниже.

Нейроны сверточного слоя (синий), связанные со своим рецептивным полем (красный)

Сверточный слой

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

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

Локальная связь

Типичная архитектура CNN

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

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

Пространственное расположение

Три гиперпараметра управляют размером выходного объема сверточного слоя: глубина, шаг и размер отступа.

  • Глубина объема выходного контролирует количество нейронов в слое , которые подключаются к одной и той же области объема ввода. Эти нейроны учатся активироваться для различных функций входных данных. Например, если первый сверточный слой принимает необработанное изображение в качестве входных данных, то разные нейроны по измерению глубины могут активироваться в присутствии различных ориентированных краев или пятен цвета.
  • Stride контролирует, как распределяются столбцы глубины по ширине и высоте. Если шаг равен 1, мы перемещаем фильтры по одному пикселю за раз. Это приводит к сильному перекрытию принимающих полей между столбцами и к большим объемам вывода. Для любого целого числашаг S означает, что фильтр транслирует S единиц за раз на выходе. На практикевстречается редко. Больший шаг означает меньшее перекрытие рецептивных полей и меньшие пространственные размеры выходного объема.
  • Иногда удобно дополнять вход нулями (или другими значениями, такими как среднее значение области) на границе входного объема. Размер этого отступа - третий гиперпараметр. Padding обеспечивает контроль пространственного размера выходного тома. В частности, иногда желательно точно сохранить пространственный размер входного объема, это обычно называется «одинаковым» заполнением.

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

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

Совместное использование параметров

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

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

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

Уровень объединения

Максимальное объединение с фильтром 2x2 и шагом = 2

Еще одна важная концепция CNN - объединение, которое является формой нелинейной понижающей выборки . Есть несколько нелинейных функций для реализации пула, где максимальный пул является наиболее распространенным. Он разбивает входное изображение на набор прямоугольников и для каждой такой подобласти выводит максимум.

Интуитивно понятно, что точное расположение объекта менее важно, чем его приблизительное расположение относительно других объектов. Это идея использования пула в сверточных нейронных сетях. Уровень объединения служит для постепенного уменьшения пространственного размера представления, уменьшения количества параметров, объема памяти и объема вычислений в сети, а, следовательно, также для контроля переобучения . Это называется понижающей дискретизацией. Обычно в архитектуре CNN периодически вставляют уровень объединения между последовательными сверточными уровнями (за каждым из них обычно следует функция активации, такая как уровень ReLU ). Хотя уровни объединения вносят вклад в локальную инвариантность трансляции, они не обеспечивают глобальную инвариантность трансляции в CNN, если не используется форма глобального пула. Слой объединения обычно работает независимо на каждой глубине или срезе ввода и изменяет его размер в пространстве. Очень распространенная форма максимального объединения - это слой с фильтрами размером 2 × 2, применяемый с шагом 2, который субдискретизирует каждый срез глубины во входных данных на 2 как по ширине, так и по высоте, отбрасывая 75% активаций:

В этом случае каждая максимальная операция превышает 4 числа. Размер глубины остается неизменным (это верно и для других форм объединения).

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

Из-за эффектов быстрого пространственного уменьшения размера представления в последнее время наблюдается тенденция к использованию меньших фильтров или полного отказа от слоев объединения.

Пулы RoI до размера 2x2. В этом примере предложение региона (входной параметр) имеет размер 7x5.

« Область интересов » объединения (также известный как Roi объединения) представляет собой вариант макс объединения, в котором выходной размер фиксируется и входной прямоугольник является параметром.

Пул - важный компонент сверточных нейронных сетей для обнаружения объектов на основе архитектуры Fast R-CNN.

Слой ReLU

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

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

Полностью связанный слой

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

Слой потерь

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

Функция потерь Softmax используется для прогнозирования одного класса из K взаимоисключающих классов. Сигмоидная кросс-энтропийная потеря используется для предсказания K независимых значений вероятности в . Евклидовы потери используются для регрессии к меткам с действительной стоимостью .

Гиперпараметры

Гиперпараметры - это различные настройки, которые используются для управления процессом обучения. CNN используют больше гиперпараметров, чем стандартный многослойный персептрон (MLP).

Размер ядра

Ядро - это количество пикселей, обрабатываемых вместе. Обычно это выражается в размерах ядра, например 2x2 или 3x3.

Обивка

Заполнение - это добавление (обычно) нулевых пикселей на границах изображения. Это сделано для того, чтобы граничные пиксели не были недооценены (потеряны) на выходе, потому что они обычно участвовали бы только в одном экземпляре воспринимающего поля. Заполнение обычно устанавливается на размер ядра -1. Таким образом, ядро ​​3x3 получит 2-пиксельную площадку со всех сторон изображения.

Шаг

Шаг - это количество пикселей, на которое окно анализа перемещается на каждой итерации. Шаг 2 означает, что каждое ядро ​​смещено на 2 пикселя от своего предшественника.

Количество фильтров

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

Количество карт функций напрямую влияет на емкость и зависит от количества доступных примеров и сложности задачи.

Размер фильтра

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

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

Тип и размер пула

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

Большие входные объемы могут потребовать объединения 4 × 4 на нижних уровнях. Большее объединение уменьшает размер сигнала и может привести к неприемлемой потере информации . Часто лучше всего работают неперекрывающиеся окна объединения.

Расширение

Расширение подразумевает игнорирование пикселей в ядре. Это потенциально сокращает объем обработки / памяти без значительных потерь сигнала. Расширение 2 в ядре 3x3 расширяет ядро ​​до 7x7, при этом обрабатывая 9 (равномерно расположенных) пикселей. Соответственно, расширение 4 расширяет ядро ​​до 15x15.

Эквивалентность перевода

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

Оценка

Точность окончательной модели на основе части набора данных в самом начале, часто называемой тестовым набором. В других случаях применяются такие методы, как k- кратная перекрестная проверка . Другие стратегии включают использование конформного предсказания .

Методы регуляризации

Регуляризация - это процесс введения дополнительной информации для решения некорректно поставленной проблемы или предотвращения переобучения . CNN используют различные типы регуляризации.

Эмпирический

Выбывать

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

На этапах обучения обычно составляет 0,5; для входных узлов он обычно намного выше, потому что информация напрямую теряется, когда входные узлы игнорируются.

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

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

DropConnect

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

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

Стохастический пул

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

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

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

Искусственные данные

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

Явный

Ранняя остановка

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

Количество параметров

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

Снижение веса

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

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

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

Ограничения максимальной нормы

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

Иерархические системы координат

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

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

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

Приложения

Распознавание изображений

CNN часто используются в системах распознавания изображений . В 2012 году в базе данных MNIST было зарегистрировано 0,23% ошибок . В другой статье об использовании CNN для классификации изображений сообщается, что процесс обучения был «на удивление быстрым»; в той же статье лучшие опубликованные результаты по состоянию на 2011 год были достигнуты в базе данных MNIST и базе данных NORB. Впоследствии аналогичный CNN под названием AlexNet выиграл конкурс ImageNet Large Scale Visual Recognition Challenge 2012.

Применительно к распознаванию лиц CNN значительно снизили количество ошибок. В другой статье сообщается о 97,6% -ном уровне распознавания «5600 неподвижных изображений более 10 предметов». CNN использовались для объективной оценки качества видео после ручного обучения; полученная система имела очень низкую среднеквадратичную ошибку .

ImageNet Крупномасштабного Визуальное распознавание Вызов является эталоном в классификации объектов и обнаружении, с миллионами изображений и сотнями классов объектов. В ILSVRC 2014, крупномасштабной задаче визуального распознавания, почти каждая высокопоставленная команда использовала CNN в качестве своей базовой структуры. Победитель GoogLeNet (основа DeepDream ) увеличил среднюю точность обнаружения объектов до 0,439329 и уменьшил ошибку классификации до 0,06656, что является лучшим результатом на сегодняшний день. В его сети применено более 30 слоев. Производительность сверточных нейронных сетей в тестах ImageNet была близка к показателям людей. Лучшие алгоритмы по-прежнему борются с небольшими или тонкими объектами, такими как маленький муравей на стебле цветка или человек, держащий перо в руке. У них также есть проблемы с изображениями, которые были искажены фильтрами, что становится все более распространенным явлением в современных цифровых камерах. Напротив, такие изображения редко беспокоят людей. Однако у людей обычно возникают проблемы с другими проблемами. Например, они не умеют классифицировать объекты по мелкозернистым категориям, таким как конкретная порода собак или вид птиц, тогда как сверточные нейронные сети справляются с этим.

В 2015 году многослойная CNN продемонстрировала способность обнаруживать лица под разными углами, в том числе перевернутыми, даже когда они частично закрыты, с конкурентоспособной производительностью. Сеть была обучена на базе данных из 200 000 изображений, которые включали лица под разными углами и ориентациями, и еще 20 миллионов изображений без лиц. Они использовали пакеты из 128 изображений за 50 000 итераций.

Видеоанализ

По сравнению с доменами данных изображений, относительно мало работы по применению CNN для классификации видео. Видео сложнее изображений, поскольку имеет другое (временное) измерение. Однако были исследованы некоторые расширения CNN в видеодомене. Один из подходов - рассматривать пространство и время как эквивалентные измерения входных данных и выполнять свертки как во времени, так и в пространстве. Другой способ - объединить функции двух сверточных нейронных сетей, одну для пространственного, а другую для временного потока. Рекуррентные блоки долговременной краткосрочной памяти (LSTM) обычно включаются после CNN для учета межкадровых или межклиповых зависимостей. Были введены схемы неконтролируемого обучения для обучения пространственно-временным функциям, основанные на сверточных ограниченных машинах Больцмана и независимом подпространственном анализе.

Обработка естественного языка

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

Обнаружение аномалий

CNN с одномерными свертками использовалась для временных рядов в частотной области (спектральный остаток) неконтролируемой моделью для обнаружения аномалий во временной области.

Открытие лекарств

CNN использовались при открытии лекарств . Прогнозирование взаимодействия между молекулами и биологическими белками может определить потенциальные методы лечения. В 2015 году Atomwise представила AtomNet, первую нейронную сеть с глубоким обучением для рационального дизайна лекарств на основе структуры . Система обучается непосредственно на трехмерных представлениях химических взаимодействий. Подобно тому, как сети распознавания изображений учатся составлять более мелкие пространственно близкие элементы в более крупные и сложные структуры, AtomNet обнаруживает химические свойства, такие как ароматичность , sp 3 -углероды и водородные связи . Впоследствии AtomNet использовалась для прогнозирования новых биомолекул- кандидатов для лечения множества заболеваний, в первую очередь лечения вируса Эбола и рассеянного склероза .

Оценка риска для здоровья и открытие биомаркеров старения

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

Игра в шашки

CNN использовались в игре в шашки . С 1999 по 2001 год Фогель и Челлапилла опубликовали статьи, показывающие, как сверточная нейронная сеть может научиться играть в шашки с помощью коэволюции. В процессе обучения не использовались предшествующие человеческие профессиональные игры, а скорее был сосредоточен на минимальном наборе информации, содержащейся на шахматной доске: расположение и тип фигур, а также разница в количестве фигур между двумя сторонами. В конечном итоге программа ( Blondie24 ) была протестирована в 165 играх с игроками и заняла наивысшее место в 0,4%. Он также выиграл у программы Chinook на ее "экспертном" уровне игры.

Идти

CNN использовались в компьютерном Go . В декабре 2014 года Кларк и Сторки опубликовали статью, показывающую, что CNN, обученная путем обучения с учителем из базы данных профессиональных игр человека, может превзойти GNU Go и выиграть в некоторых играх против поиска по дереву Монте-Карло Fuego 1.1 за гораздо меньшее время, чем у Fuego. играть. Позже было объявлено, что большая 12-слойная сверточная нейронная сеть правильно предсказала профессиональный ход в 55% позиций, что сравнимо с точностью игрока-человека с 6 данами . Когда обученная сверточная сеть использовалась непосредственно для игры в игры Go без какого-либо поиска, она превосходила традиционную поисковую программу GNU Go в 97% игр и соответствовала производительности программы поиска по дереву Монте-Карло Fuego, моделирующей десять тысяч воспроизведений (около миллион позиций) за ход.

AlphaGo использовала несколько CNN для выбора ходов («политическая сеть») и оценки позиций («ценностная сеть»), управляющих MCTS , первой, кто победил лучшего игрока-человека того времени.

Прогнозирование временных рядов

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

Культурное наследие и 3D-наборы данных

По мере того как археологические находки, такие как глиняные таблички с клинописью , все чаще приобретаются с помощью 3D-сканеров , становятся доступными первые эталонные наборы данных, такие как HeiCuBeDa, предоставляющие почти 2.000 нормализованных 2D- и 3D-наборов данных, подготовленных с помощью GigaMesh Software Framework . Таким образом, измерения на основе кривизны используются в сочетании с геометрическими нейронными сетями (ГНС), например, для классификации по периоду тех глиняных табличек, которые являются одними из самых старых документов в истории человечества.

Тонкая настройка

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

Интерпретируемые человеческие объяснения

Сквозное обучение и прогнозирование - обычная практика в компьютерном зрении . Однако для критических систем, таких как беспилотные автомобили , требуются интерпретируемые человеком объяснения . Благодаря недавним достижениям в визуальной значимости , пространственном и временном внимании , наиболее критические пространственные области / временные моменты могут быть визуализированы, чтобы оправдать прогнозы CNN.

Связанные архитектуры

Глубокие Q-сети

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

Предварительные результаты были представлены в 2014 году, а в феврале 2015 года - сопроводительный документ. В исследовании описывалось приложение к играм Atari 2600 . Ему предшествовали другие модели глубокого обучения с подкреплением.

Сети глубоких убеждений

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

Известные библиотеки

  • Caffe : библиотека сверточных нейронных сетей. Создано Berkeley Vision and Learning Center (BVLC). Он поддерживает как CPU, так и GPU. Разработан на C ++ и имеет оболочки Python и MATLAB .
  • Deeplearning4j : глубокое обучение на Java и Scala на Spark с поддержкой нескольких графических процессоров . Универсальная библиотека глубокого обучения для производственного стека JVM, работающая на механизме научных вычислений C ++. Позволяет создавать собственные слои. Интегрируется с Hadoop и Kafka.
  • Dlib : набор инструментов для создания реальных приложений машинного обучения и анализа данных на C ++.
  • Microsoft Cognitive Toolkit : набор инструментов для глубокого обучения, написанный Microsoft, с несколькими уникальными функциями, повышающими масштабируемость на нескольких узлах. Он поддерживает полноценные интерфейсы для обучения на C ++ и Python, а также с дополнительной поддержкой вывода моделей на C # и Java.
  • TensorFlow : Apache 2.0 -licensed Theano типа библиотеки с поддержкой CPU, GPU, собственной компании Google блок обработки Тензор (ТПУ) и мобильных устройств.
  • Theano : эталонная библиотека глубокого обучения для Python с API, в значительной степени совместимая с популярной библиотекой NumPy . Позволяет пользователю писать символьные математические выражения, а затем автоматически генерировать их производные, избавляя пользователя от необходимости кодировать градиенты или обратное распространение. Эти символьные выражения автоматически компилируются в код CUDA для быстрой реализации на GPU .
  • Torch : среда научных вычислений с широкой поддержкой алгоритмов машинного обучения, написанная на C и Lua . Главный автор - Ронан Коллобер, и сейчас он используется в Facebook AI Research и Twitter.

Известные API

  • Keras : API высокого уровня, написанный на Python для сверточных нейронных сетей TensorFlow и Theano .

Смотрите также

Примечания

использованная литература

внешние ссылки