Что такое сверточная нейронная сеть и почему она важна?
Сверточные нейронные сети (также известные какConvNetsилиCNN)ДаНейронные сетиОдин из них оказался очень эффективным в таких областях, как распознавание изображений и классификация. Помимо обеспечения зрения для роботов и беспилотных автомобилей, сверточные нейронные сети могут успешно распознавать лица, объекты и дорожные знаки.
Рисунок 1
какРисунок 1показано, сверточная нейронная сеть способна распознать сцену изображения и предоставить соответствующий заголовок («футболист играет в футбол»),фигура 2Это пример использования сверточных нейронных сетей для идентификации повседневных предметов, людей и животных. Недавно сверточные нейронные сети также сыграли большую роль в некоторых задачах обработки естественного языка, таких как классификация предложений.
фигура 2
Таким образом, сверточные нейронные сети сегодня являются важным инструментом для большинства специалистов по машинному обучению. Однако понимание сверточных нейронных сетей и начало экспериментов с ними может быть болезненным процессом. Основная цель этой статьи — понять, как сверточные нейронные сети обрабатывают изображения.
Для тех, кто плохо знаком с нейронными сетями, я рекомендую всем сначала прочитать этоКраткое руководство по многослойным персептронам, а затем продолжайте читать эту статью, пока не поймете, как это работает. Многослойные персептроны в этой статье называются «полностью связанными слоями».
Каркас LeNet (1990-е)
LeNet была одной из первых сверточных нейронных сетей, продвинувших область глубокого обучения. Эта новаторская работа Яна Лекуна была названа в честь нескольких успешных итераций с 1988 года.LeNet5. В то время платформа LeNet в основном использовалась для задач распознавания символов, таких как чтение почтовых индексов, чисел и т. д.
Далее мы получим интуитивное представление о том, как платформа LeNet учится распознавать изображения. В последние годы было предложено несколько новых фреймворков, основанных на улучшениях LeNet, но их основные идеи ничем не отличаются от LeNet.Если вы хорошо понимаете LeNet, понять эти новые фреймворки относительно легко.
Рисунок 3: Простая сверточная нейронная сеть
рисунок3Сверточные нейронные сети в CNN по структуре аналогичны оригинальной LeNet и классифицируют входные изображения на четыре класса: собака, кошка, лодка или птица (исходная LeNet в основном использовалась для задач распознавания символов). Как видно из рисунка выше, при получении на вход изображений кораблей нейронная сеть правильно присвоила судам из четырех категорий наивысшее значение вероятности (0,94). Сумма всех вероятностей в выходном слое должна быть равна 1 (поясняется позже).
рисунок3 В сверточной нейронной сети есть четыре основных операции:
- свертка
- Нелинейное преобразование (ReLU)
- Объединение или подвыборка
- Классификация (полностью связанный слой)
Эти операции являются фундаментальными строительными блоками всех сверточных нейронных сетей, поэтому понимание того, как они работают, является важным шагом в понимании сверточных нейронных сетей. Ниже мы постараемся разобраться в каждой операции интуитивно.
Изображение представляет собой матрицу значений пикселей
По сути, каждое изображение может быть представлено в виде матрицы значений пикселей.
Рис. 4. Каждое изображение представляет собой пиксельную матрицу.
ряд(канал) — это традиционный термин, относящийся к определенному компоненту изображения. Изображение, сделанное стандартной цифровой камерой, имеет три канала — красный, зеленый и синий — и вы можете думать о них как о трех 2D-матрицах (по одной для каждого цвета), наложенных друг на друга, каждая со значениями пикселей от 0 до 255.
иоттенки серогоИзображение имеет только один канал. В научно-популярных целях в этой статье мы рассматриваем только изображения в градациях серого, то есть двумерную матрицу, представляющую изображение. Значение каждого пикселя в матрице находится в диапазоне от 0 до 255 — 0 для черного и 255 для белого.
свертка
Сверточные нейронные сети получили свое название отОперация «Свертка». В сверточных нейронных сетях основной целью свертки является извлечение признаков из входного изображения. Используя маленькие квадраты во входных данных для изучения особенностей изображения, свертка сохраняет пространственные отношения между пикселями. Мы не будем здесь рассматривать математический вывод свертки, а попытаемся понять, как она работает с изображениями.
Как упоминалось ранее, каждое изображение можно рассматривать как матрицу значений пикселей. Рассмотрим изображение размером 5 × 5 со значениями пикселей только 0 и 1 (обратите внимание, что для изображений в градациях серого значения пикселей варьируются от 0 до 255, зеленая матрица ниже — это частный случай значений пикселей только 0 и 1):
Также рассмотрим другую матрицу 3×3, как показано на следующем рисунке:
Процесс вычисления свертки приведенного выше изображения 5 x 5 и матрицы 3 x 3 выглядит следующим образом.рисунок5Анимация в шоу:
Рисунок 5: Операция свертки. Выходная матрица называется «сверточные признаки» или «карты признаков».
Давайте уделим немного времени, чтобы понять, как выполняются приведенные выше расчеты. Переместите оранжевую матрицу по исходному изображению (зеленому) со скоростью 1 пиксель за раз (также называемой «шагом»), для каждой позиции вычислите произведение относительных элементов двух матриц и сложите их, выведите целое число и как элемент конечной выходной матрицы (розовый). Обратите внимание, что матрица 3 × 3 «видит» только часть входного изображения за шаг.
В терминологии сверточных нейронных сетей эта матрица 3×3 называется «фильтр" или "ядро" или "детектор признаков", матрица, полученная путем перемещения фильтра по изображению и вычисления скалярного произведения, называется "сверточный признак" или "карта активации" или "карта объектов". Важно отметить, что фильтр действует как детектор признаков исходного входного изображения.
Из приведенной выше анимации очевидно, что для одного и того же входного изображения разные матрицы фильтров приведут к разным картам признаков. Например, рассмотрим следующее входное изображение:
В таблице ниже мы можем увидеть эффект свертки изображения выше под разными фильтрами. Как показано на рисунке, различные операции, такие как обнаружение краев, повышение резкости и размытие, можно выполнять, просто изменяя значение матрицы фильтра перед операцией свертки.8] — это означает, что разные фильтры могут обнаруживать разные особенности изображения, такие как края, кривые и т. д. Дополнительные примеры этого можно найти наздесьможно найти в Разделе 8.2.4.
Еще один хороший способ понять операцию свертки можно обратиться к следующемурисунок6анимация в:
Рисунок 6: Операция свертки
Фильтр (красная рамка) перемещается (операция свертки) на входном изображении для создания карты объектов. На том же изображении свертка другого фильтра (зеленая рамка) дает разные карты признаков, как показано. Важно отметить, что операция свертки захватывает локальные зависимости в исходном изображении. Также обратите внимание, как эти два разных фильтра получают разные карты признаков из одного и того же исходного изображения. Помните, что приведенное выше изображение и два фильтра — это просто числовые матрицы.
По сути, сверточная нейронная сеть обучается сама во время обучения.учитьсяЗначения этих фильтров (хотя нам еще нужно указать такие параметры, как количество фильтров, размер, сетевой фрейм и т. д. перед процессом обучения). Чем больше у нас фильтров и чем больше характеристик изображения мы извлекаем, тем лучше наша сеть будет распознавать новые изображения.
Размер карты признаков (сверточных признаков) определяется тремя параметрами, которые нам необходимо решить перед выполнением шага свертки [4]контроль:
- глубина:Глубина соответствует количеству фильтров, которые мы используем для операции свертки. существуетрисунок7В показанной сети мы сворачиваем исходное изображение лодки с тремя разными фильтрами, в результате чего получаются три разные карты объектов. Эти три карты объектов можно рассматривать как сложенные 2D-матрицы, поэтому «глубина» карт объектов равна 3.
Рисунок 7
- шаг:Шаг — это количество пикселей, на которое мы перемещаем матрицу фильтра один раз по входной матрице. Когда шаг равен 1, мы перемещаем фильтр на 1 пиксель за раз. Когда шаг равен 2, фильтр перемещается на 2 пикселя за раз. Чем больше шаг, тем меньше результирующая карта признаков.
- Нулевое заполнение:Иногда удобно заполнить границы входной матрицы нулями, чтобы можно было применить фильтр к граничным элементам матрицы входного изображения. Приятное свойство заполнения нулями заключается в том, что оно позволяет нам контролировать размер карты объектов. Добавление нулевого заполнения также известно какширокая извилина, без заполнения нулями дляузкая извилина. Это в [14] понятно объяснено.
Введение в нелинейные части (ReLU)
как указано вышерисунок3Как показано, после каждой свертки выполняется еще одна операция, называемая ReLU. Полное название ReLU — Rectified Linear Units, что является нелинейной операцией. Его вывод показан на следующем рисунке:
Рисунок 8: Функция ReLU
ReLU является поэлементной операцией (применяется к каждому пикселю) и заменяет все отрицательные значения пикселей в карте признаков нулями. Цель ReLU — ввести нелинейность в сверточные нейронные сети, потому что в реальной жизни большинство данных, которые мы хотим изучить с помощью нейронных сетей, являются нелинейными (свертка — это линейная операция — поэлементное матричное умножение и сложение, поэтому мы надеемся решить нелинейные задачи путем введения нелинейных функций, таких как ReLU).
отрисунок9Работу ReLU можно ясно понять. Он показывает применение ReLU крисунок6Результат, полученный из карты объектов в формате . Карта выходных объектов здесь также называется «исправленной» картой объектов.
Рисунок 9: Работа ReLU
Другие нелинейные функции, такие какtanhилиsigmoidТакже можно использовать вместо ReLU, но в большинстве случаев ReLU работает лучше.
объединение
Пространственное объединение (также известное как субдискретизация или субдискретизация) уменьшает размерность каждой карты объектов и сохраняет наиболее важную информацию. Существует несколько различных способов пространственного объединения: максимальное, среднее, сумма и т. д.
В случае максимального объединения мы определяем пространственную окрестность (например, окно 2 × 2) и берем элемент, чья измененная карта признаков является наибольшей в этом окне. Конечно, мы также можем взять среднее значение всех элементов в окне (среднее объединение) или сумму всех элементов. На практике максимальное объединение работает лучше.
рисунок10Показан пример применения операции максимального объединения на выпрямленной карте объектов (полученной после операции свертки + ReLU) через окно 2 × 2.
Рисунок 10: Максимальное объединение
Мы перемещаем окно 2 x 2 на 2 ячейки (также называемое «шагом») и берем максимальное значение в каждой области. какрисунок10Как показано, это уменьшает размер карты объектов.
существуетрисунок11В показанной сети операция объединения применяется к каждой карте объектов отдельно (таким образом, мы получаем три выходные карты из трех входных карт).
Рисунок 11: Применение пула на исправленной карте объектов
рисунок12продемонстрировали нашурисунок9Модифицированная карта признаков, полученная после применения операции ReLU, применяется к эффекту объединения.
Рисунок 12: Объединение
Роль объединения заключается в постепенном уменьшении пространственного размера входных данных [4]. В частности, есть четыре пункта:
- Сделайте ввод (размер функции) меньше и более управляемым
- Сократите количество параметров и операций в сети, чтобы вы могли контролироватьпереоснащение [4]
- Сделайте сеть более устойчивой к небольшим преобразованиям, искажениям и переводам входного изображения (небольшие искажения входного изображения не изменят объединенный вывод — поскольку мы берем максимальное/среднее значение окрестности).
- Вы можете получить изображения с почти постоянным масштабом (точный термин «эквивариантный»). Это очень полезно, так как мы можем обнаруживать объекты независимо от того, где они находятся на картинке (см. [подробнее]18]и[19]).
Уже…
Рисунок 13
До сих пор мы видели, как работают свертка, ReLU и объединение. Это основные строительные блоки сверточных нейронных сетей, и это важно понимать. какрисунок13Как показано, у нас есть два промежуточных слоя, состоящих из свертки, ReLU и Pooling — второй сверточный слой выполняет свертку на выходе первого слоя с использованием шести фильтров, в результате чего получается шесть карт признаков. Затем ReLU применяется к этим шести картам объектов соответственно. Затем мы выполняем операцию максимального объединения на каждой из шести измененных карт объектов.
Роли этих двух промежуточных слоев заключаются в том, чтобы извлекать полезные признаки из изображений, вводить в сеть нелинейные факторы и в то же время уменьшать размерность признаков и делать их эквивариантными по масштабу и переводу.18].
Выход второго слоя пула является входом полносвязного слоя, который мы обсудим в следующем разделе.
полносвязный слой
Полносвязный слой — это традиционный многослойный персептрон, который использует функцию активации softmax в выходном слое (также можно использовать другие классификаторы, такие как SVM, но в этой статье используется только softmax). Термин «полностью связанный» означает, что каждый нейрон в предыдущем слое связан с каждым нейроном в следующем слое. Если вы мало знаете о многослойных персептронах, я рекомендую вам прочитатьэта статья.
Выходные данные сверточных слоев и слоев объединения представляют высокоуровневые функции входного изображения. Цель полносвязного слоя — использовать эти функции на основе обучающего набора данных для классификации входного изображения по разным классам. Например, задача классификации изображений, которую мы хотим выполнить, имеет четыре возможных выхода, таких какрисунок14(обратите внимание, что на рисунке 14 не показаны соединения между узлами в полносвязном слое)
Рисунок 14: Полносвязный слой — каждый узел соединен с другими узлами в соседних слоях
Помимо классификации, добавление полносвязных слоев также является (обычно) более простым способом изучения нелинейных комбинаций этих функций. Большинство признаков, полученных сверточным и объединяющим слоями, также могут хорошо работать для классификации, но комбинация этих признаков может быть лучше.11].
Сумма выходных вероятностей полносвязных слоев равна 1. Это связано с тем, что мы используем функцию активации softmax в выходном слое полносвязного слоя. Функция Softmax принимает в качестве входных данных любой вектор действительных чисел и сжимает его в вектор значений от 0 до 1, сумма которых равна 1.
Начало работы — обучение с обратным распространением
Как упоминалось выше, слой свертки + пула используется для извлечения признаков из входного изображения, а полносвязный слой используется в качестве классификатора.
Обратите внимание, что врисунок15, поскольку входным изображением является лодка, целевая вероятность равна 1 для класса лодки и 0 для остальных трех классов.
- входное изображение = лодка
- целевой вектор = [0, 0, 1, 0]
Рисунок 15: Обучение сверточной нейронной сети
Общий процесс обучения сверточной сети резюмируется следующим образом:
- Шаг 1: Инициализируйте все фильтры и параметры/веса со случайными значениями
- Шаг 2: Нейронная сеть принимает обучающее изображение в качестве входных данных, проходит этап прямого распространения (свертка, ReLU и операции объединения для прямого распространения в полностью связанных слоях) и получает выходную вероятность для каждого класса.
- Предположим, что выходная вероятность приведенного выше изображения лодки равна [0,2, 0,4, 0,1, 0,3].
- Поскольку веса присваиваются первой обучающей выборке случайным образом, выходные вероятности также являются случайными.
- Шаг 3: Рассчитайте общую ошибку выходного слоя (сумма по всем 4 классам).
- общая ошибка=∑ ½(целевая вероятность – выходная вероятность)²
- Шаг 4: Рассчитайте ошибку всех весов в сети, используя обратное распространениеградиенти использоватьградиентный спускОбновите все значения/веса фильтров и значения параметров, чтобы свести к минимуму ошибку вывода.
- Веса корректируются в соответствии с их вкладом в общую ошибку.
- Когда то же изображение вводится снова, выходная вероятность может стать [0,1,0,1,0,7,0,1], что ближе к целевому вектору [0,0,1,0].
- Это означает, что в сети естьнаучилсяКак правильно классифицировать конкретное изображение, настраивая его веса/фильтры и уменьшая ошибку вывода.
- Такие параметры, как количество фильтров, размер, структура сети и т. д., фиксируются до шага 1 и не будут меняться во время обучения — обновляются только матрицы фильтров и веса соединений.
- Шаг 5: Повторите шаги 2-4 для всех изображений в тренировочном наборе.
Выполнив описанные выше шаги, вы можететренироватьсяВне сверточной нейронной сети — это фактически означает, что все веса и параметры в сверточной нейронной сети были оптимизированы для правильной классификации изображений в обучающем наборе.
Когда мы передаем новое (невидимое) изображение в сверточную нейронную сеть, сеть выполняет шаг прямого распространения и выводит вероятности для каждого класса (для новых изображений веса, используемые для расчета выходных вероятностей, являются теми, которые были оптимизированы ранее, и способен полностью правильно классифицировать обучающую выборку). Если наш обучающий набор достаточно велик, нейронная сеть будет хорошо обобщать (надеюсь) и назначать новые изображения правильным классам.
Примечание 1:Чтобы предоставить вам интуитивно понятный процесс обучения, описанные выше шаги были значительно упрощены, а процесс математического вывода был проигнорирован. Для математического вывода и полного понимания сверточных нейронных сетей см.4] и [12].
Примечание2:В приведенном выше примере мы использовали два чередующихся набора слоев свертки и объединения. Обратите внимание, однако, что эти операции могут повторяться несколько раз в сверточной нейронной сети. На самом деле, некоторые из лучших сверточных нейронных сетей на сегодняшний день содержат десятки слоев свертки и объединения! Кроме того, объединение слоев после каждого сверточного слоя не требуется. снизурисунок16Из вышеизложенного видно, что мы можем последовательно выполнять несколько операций свертки + ReLU перед выполнением операции объединения. Также обратите внимание, как представлен каждый слой сверточной нейронной сети на рисунке 16.
Рисунок 16
Визуализация сверточных нейронных сетей
В целом, чем больше шагов свертки, тем более сложные функции нейронная сеть может научиться распознавать. Например, при классификации изображений сверточная нейронная сеть может научиться обнаруживать края необработанных пикселей в первом слое, затем использовать эти края во втором слое для обнаружения простых форм, а затем использовать эти формы в более сложных слоях для обнаружения высокоточных изображений. черты уровня, например, форма лица [14].рисунок17демонстрирует процесс - эти функции используютсяСверточные сети глубокого убежденияДля обучения это изображение просто для демонстрации идеи (это всего лишь пример: на самом деле объекты, идентифицированные сверточным фильтром, могут не иметь большого смысла для человека).
Рисунок 17: Функции обучения сверточной сети Deep Belief
Адам Харли создал набор рукописных цифр на основе MNIST.13] Визуализация обученных сверточных нейронных сетей. Я очень рекомендую всемиспользуй эточтобы понять рабочие детали сверточных нейронных сетей.
Мы можем увидеть конкретные детали работы нейронной сети для входного числа «8» на рисунке ниже. Пожалуйста, обрати внимание,рисунок18Операции ReLU не показаны отдельно в файлах .
Рисунок 18: Визуализация обучения сверточной нейронной сети на основе рукописных цифр
Входное изображение содержит 1024 пикселя (изображение 32 × 32), а первый сверточный слой (сверточный слой 1) формируется путем свертки входного изображения с шестью различными фильтрами 5 × 5 (шаг 1). Как показано, шесть различных фильтров используются для получения карт признаков шестой глубины.
За сверточным слоем 1 следует слой объединения 1, который выполняет максимальное объединение 2 × 2 (с шагом 2) на каждой из шести карт объектов в сверточном слое 1. Наведите указатель мыши на любой пиксель объединяющего слоя и обратите внимание, что он исходит из действия сетки 2 x 2 в предыдущем сверточном слое (например,рисунок19показано). Обратите внимание, что пиксель с наибольшим значением (самый яркий) в сетке 2 x 2 сопоставляется с объединяющим слоем.
Рисунок 19: Визуализация операций объединения
За слоем объединения 1 следуют шестнадцать сверточных фильтров 5 × 5 (шаг 1), которые выполняют операции свертки. Затем следует уровень объединения 2, который выполняет максимальное объединение 2 × 2 (с шагом 2). Роль этих двух слоев та же, что и выше.
Затем есть три полносвязных (FC) слоя:
- В первом слое FC 120 нейронов.
- Во втором слое FC 100 нейронов.
- 10 нейронов в третьем слое FC соответствуют 10 цифрам, также называемым выходным слоем.
Обратите внимание, что врисунок20, каждый из 10 узлов выходного слоя подключен ко всем 100 узлам во втором полносвязном слое (отсюда и название полностью связанный).
Также обратите внимание, почему единственным ярким узлом в выходном слое является «8» — это означает, что нейронная сеть правильно классифицировала наши рукописные цифры (более яркий узел означает, что у него более высокий результат, т. е. 8 имеет наибольшую вероятность).
Рисунок 20: Визуализация полностью подключенного слоя
3D версия этой системы визуализацииздесь.
Другие фреймворки для сверточных нейронных сетей
Сверточные нейронные сети появились в начале 1990-х годов. Мы уже обсуждали LeNet, одну из первых сверточных нейронных сетей. Некоторые другие влиятельные структуры нейронных сетей перечислены ниже [3] [4].
- LeNet (20век 90годы):В этой статье подробно.
- 20век90возраст до2012год:С конца 1990-х до начала 2010-х сверточные нейронные сети находились в инкубационном периоде. По мере увеличения объема данных и вычислительной мощности задачи, которые могут решать сверточные нейронные сети, становятся все более и более интересными.
- AlexNet(2012 г.)– В 2012 году Алексей Крижевский (и другие) опубликовалAlexNet, которая представляет собой улучшенную версию LeNet по глубине и широте и выиграла с огромным отрывом в 2012 году. Крупномасштабная программа визуального распознавания ImageNet (ILSVRC). Это крупный прорыв, основанный на предыдущих методах, и широкое использование CNN в настоящее время связано с AlexNet.
- ZF Net(2013)— Победители ILSVRC 2013 года от Convolutional Networks Мэтью Зейлера и Роба Фергуса. Это называетсяZFNet(сокращение от Zeiler и Fergus Net). Он улучшает AlexNet, настраивая гиперпараметры сетевой инфраструктуры.
- GoogLeNet(2014)- Победителем ILSVRC 2014 года стал GoogleСегеди и др.сверточная сеть. Его основной вклад — разработка начального модуля, значительно сокращающего количество параметров в сети (4М по сравнению с 60М для AlexNet).
- VGGNet(2014)– Назван финалист ILSVRC 2014 года.VGGNetсеть из. Его основной вклад заключается в демонстрации того, что глубина сети (количество слоев) является ключевым фактором, влияющим на производительность.
- ResNets(2015)- Разработано Kaiming He (и другими)остаточная сетьБыл победителем ILSVRC 2015 года. ResNets, безусловно, являются самыми продвинутыми моделями сверточных нейронных сетей и являются выбором по умолчанию для всех, кто использует сверточные нейронные сети на практике (по состоянию на май 2016 года).
- DenseNet(2016год8Луна)- В недавно опубликованном Хуанг Гао и др. Каждый слой плотно связанной сверточной сети напрямую связан с другими слоями с прямой связью. DenseNet продемонстрировал значительное улучшение по сравнению с предыдущими современными платформами в пяти конкурирующих задачах тестирования распознавания объектов. Конкретную реализацию см.этот URL.
в заключении
В этой статье я попытался простыми словами объяснить основные концепции сверточных нейронных сетей, упрощая/пропуская некоторые детали, но я надеюсь, что эта статья дала вам интуитивное понимание того, как это работает.
Эта статья была первоначально вдохновлена Денни Бритцем.Понимать использование сверточных нейронных сетей в обработке естественного языка.«Вдохновленные этой статьей (рекомендуется к прочтению), многие объяснения в статье основаны на этой статье. Для более глубокого понимания некоторых из этих концепций я рекомендую вам прочитатьКурс сверточных нейронных сетей Стэнфордского университетаизПримечанияи другие замечательные ресурсы, упомянутые в ссылках ниже. Если вы столкнулись с какими-либо вопросами/предложениями относительно понимания вышеизложенных понятий, пожалуйста, не стесняйтесь оставлять комментарии ниже.
Все изображения и анимации, использованные в этой статье, принадлежат их авторам и перечислены ниже.
Ссылаться на
- karpathy/neuraltalk2: Efficient Image Captioning code in Torch, Examples
- Шаоцин Рен и др., «Быстрее R-CNN: на пути к обнаружению объектов в реальном времени с помощью региональных сетей», 2015 г.,arXiv:1506.01497
- Neural Network Architectures, Блог Эудженио Кулурселло
- CS231n Convolutional Neural Networks for Visual Recognition, Stanford
- Clarifai/Technology
- Machine Learning is Fun! Part 3: Deep Learning and Convolutional Neural Networks
- Feature extraction using convolution, Stanford
- Wikipedia article on Kernel (image processing)
- Deep Learning Methods for Vision, CVPR 2012 Tutorial
- Neural Networks by Rob Fergus, Machine Learning Summer School 2015
- What do the fully connected layers do in CNNs?
- Convolutional Neural Networks, Andrew Gibiansky
- В. Харли, «Интерактивная визуализация связи узлов сверточных нейронных сетей», в ISVC, стр. 867–877, 2015 г. (link). Demo
- Understanding Convolutional Neural Networks for NLP
- Backpropagation in Convolutional Neural Networks
- Руководство для начинающих по пониманию сверточных нейронных сетей
- Винсент Дюмулен и др., «Руководство по сверточной арифметике для глубокого обучения», 2015 г.,arXiv:1603.07285
- What is the difference between deep learning and usual machine learning?
- How is a convolutional neural network able to learn invariant features?
- A Taxonomy of Deep Convolutional Neural Nets for Computer Vision
- Хонглак Ли и др., «Сверточные сети глубокого убеждения для масштабируемого неконтролируемого обучения иерархическим представлениям» (link)