После понимания базовой архитектуры глубоких сверточных нейронных сетей в этой главе в основном представлены некоторые важные компоненты (или модули) сверточных нейронных сетей (данные), чтобы изучить его представление функций и выполнить последнюю задачу.
1. «Сквозное» мышление
Важной идеей глубокого обучения является «сквозной» метод обучения, который является типом репрезентативного обучения. Это один из наиболее важных аспектов глубокого обучения, который отличает его от других алгоритмов машинного обучения. Все другие алгоритмы машинного обучения, такие как выбор признаков, классификатор, ансамблевое обучение и т. д., предполагают, что образец представления признаков задан, и разрабатывают специальное машинное обучение на основе этого алгоритма. До эпохи глубокого обучения для представления образцов в основном использовались созданные вручную признаки, но «умных женщин трудно приготовить без риса».На самом деле, плюсы и минусы искусственных признаков часто в значительной степени определяют конечную точность задачи. . Это породило особую отрасль машинного обучения, называемую проектированием признаков. Разработка признаков — очень важное и критическое звено перед эрой глубокого обучения в промышленных приложениях интеллектуального анализа данных и приложений компьютерного зрения.
Особенно в области компьютерного зрения, до глубокого обучения, представление объектов, таких как изображения и видео, можно описать как «сотня цветов расцветает и сотня школ мысли спорит». Просто возьмем в качестве примера представление изображения, которое можно разделить на глобальные дескрипторы признаков (глобальные) и локальные признаки из области представления.
(локальное представление), а одних только локальных дескрипторов признаков десятки, типа SIFT, PCA-SIFT, SURF, HOG, steerable filter... При этом разные локальные дескрипторы хороши для разных задач. для обнаружения краев, а некоторые подходят для распознавания текстур, что затрудняет выбор подходящих дескрипторов признаков в практических приложениях. В связи с этим некоторые исследователи даже опубликовали экспериментальный обзор «Оценка эффективности локального дескриптора» в TPAMI, ведущем международном журнале в смежных областях, чтобы систематически понять роль различных дескрипторов локальных признаков, который на данный момент получил почти 8000 цитирований. После популяризации глубокого обучения искусственные функции постепенно были заменены представлениями функций, которые «изучаются» путем обучения представлению в соответствии с автоматическими требованиями задач.
Что еще более важно, в прошлом для решения проблемы искусственного интеллекта (взяв в качестве примера распознавание изображений) ее часто разбивали на несколько этапов, таких как предварительная обработка, извлечение и выбор признаков, а также разработка классификатора с помощью метода «разделяй и властвуй». Мотивация метода «разделяй и властвуй» состоит в том, чтобы разложить исходную проблему распознавания изображений на несколько небольших подзадач, которые являются простыми, контролируемыми и понятными. Однако при пошаговом решении подзадач, хотя оптимальное решение подзадачи может быть получено, оптимальное решение подзадачи не означает, что можно получить окончательное решение глобальной задачи. В связи с этим глубокое обучение предоставляет нам еще одну парадигму (парадигму), «сквозной» метод обучения, Весь процесс обучения не разделяет искусственные подзадачи, а полностью отдается модели глубокого обучения непосредственно учиться у оригинала Сопоставление ввода с желаемым результатом. По сравнению со стратегией «разделяй и властвуй» сквозной метод обучения имеет преимущество синергии и с большей вероятностью позволит получить глобальное оптимальное решение.
Для глубокой модели входные данные представляют собой исходную форму выборки без какой-либо искусственной обработки, за которой следует множество операционных слоев, наложенных на входной слой. Эти операционные уровни можно рассматривать как сложную функцию fcnn в целом.Функция окончательной потери состоит из потери данных и потери регуляризации параметров модели.Обучение глубокой модели определяется окончательной потерей.Обновите параметры и выполните обратное распространение ошибок на уровни сети. Процесс обучения модели можно просто абстрагировать как прямую «подгонку» исходных данных к конечной цели, и эти компоненты в середине играют роль сопоставления исходных данных с признаками (обучение признаков), а затем их сопоставления. к пробным меткам (т. е. к целевой задаче, такой как классификация). Давайте рассмотрим основные компоненты, из которых состоит f cnn.
Как показано на рисунке 2.1:
2. Определение сетевых символов
Как и в предыдущей главе, здесь мы используем трехмерный тензор xlе RHl×Втl×Дlпредставляет вход l-го слоя сверточной нейронной сети с использованием троек (il,jl,dl)
чтобы указать, что тензор соответствует i-муlряд, j-йlколонка, дlэлемент в позиции канала, где 0 ≤ il < Hl, 0 ≤ jl < Wl, 0 ≤ дl < Dl. Однако, как правило, в инженерной практике из-за стратегии мини-пакетного обучения на вход l-го слоя сети обычно подается четырехмерный тензор, т. е. xlе RHl×Втl×Дl×Н, где N — количество проб в каждой партии мини-партии.
В качестве примера возьмем N = 1, xlПосле работы l-го слоя можно получить xl+1, для удобства написания последующих глав, это сокращено до y как выход, соответствующий l-му слою, то есть y = xl+1е RHl+1×Втl+1×Дl+1. Как показано на рисунке 2.2.
3. Сверточный слой
Сверточный слой является базовой операцией в сверточной нейронной сети, и даже полносвязный слой, который играет классификационную роль в конце сети, заменяется операцией свертки при инженерной реализации.
1. Что такое свертка?
Операция свертки на самом деле представляет собой метод операции в аналитической математике, который обычно включает только дискретную свертку в сверточных нейронных сетях. Ниже Д.lСлучай = 1 используется в качестве примера для введения операции свертки двумерной сцены. Предполагая, что входное изображение (входные данные) представляет собой матрицу 5 × 5 в правой части рисунка 2.3, соответствующее ему ядро свертки (также называемое параметром свертки, сверткой или сверткой) представляет собой матрицу 3 × 3. При этом предполагается, что каждый раз, когда в процессе операции свертки выполняется свертка, ядро свертки перемещается на одну позицию пикселя, то есть шаг свертки равен 1.
Первая операция свертки начинается с пикселя изображения (0, 0), а параметры в ядре свертки побитно умножаются на соответствующие пиксели изображения и накапливаются в результате операции свертки, то есть 1×1+2 ×0+3 ×1+6×0+ 7 × 1 + 8 × 0 + 9 × 1 + 8 × 0 + 7 × 1 = 1 + 3 + 7 + 9 + 7 = 27, как показано на рис. 2.4а. Точно так же, когда размер шага равен 1, как показано на рис. 2.4b–рис. 2.4d, ядро свертки выполняет операцию свертки над входным изображением слева направо и сверху вниз в соответствии с размером шага, и конечный результат равен 3. × 3 сверточных объекта, и результат будет использоваться в качестве входных данных для операции следующего слоя.
Точно так же, если входной тензор сверточного слоя l в трехмерном случае равен xlе RHl×Втl×Дl, ядром свертки этого слоя является flе RВ×Ш×Гl. В случае трехмерного ввода операция свертки на самом деле просто расширяет двумерную свертку на все каналы в соответствующей позиции (т.е. Dl), в конечном итоге все HWD, обработанные одной сверткой, будутlэлементы
Сумма является результатом свертки в этой позиции. Как показано на рисунке 2.5.
Далее, если что-то вроде flТакое ядро свертки с D может быть получено в той же позиции
Выход свертки размером 1 × 1 × 1 × D, а D — первый слой, в котором l + 1 xl + D каналов.l+1. Формализованная операция свертки может быть выражена в виде уравнения 2.1 ниже:
Среди них (яl+1, jl+1) — координата положения результата свертки, которая удовлетворяет следующей формуле:
Следует отметить, что f в уравнении 2.1i,j,dl,dЕго можно рассматривать как изученный вес, и можно обнаружить, что вес одинаков для всех входных данных в разных позициях, что является функцией «распределения веса» сверточного слоя. Кроме того, обычно в yil+1,jl+1,dДобавьте термин смещения к bd. Скорость обучения стохастического градиентного спуска может быть установлена отдельно для весов и условий смещения этого слоя, когда ошибка распространяется обратно. Конечно, в соответствии с потребностями реальной проблемы элемент смещения определенного слоя также может быть установлен на полный или скорость обучения может быть установлена на 0, чтобы играть роль фиксации смещения или веса слой. Кроме того, в операциях свертки есть два важных гиперпараметра: размер фильтра и шаг. Соответствующие настройки гиперпараметров могут обеспечить желаемый прирост производительности конечной модели.
2. Роль операции свертки
Видно, что свертка является локальной операцией, и локальная информация изображения получается путем воздействия на локальную область изображения с определенным размером ядра свертки. В этом разделе используются три ядра краевой свертки (также называемые фильтрами), чтобы проиллюстрировать роль операций свертки в сверточных нейронных сетях. Как показано на рисунке 2.6, мы применяем к исходному изображению общий краевой фильтр, горизонтальный краевой фильтр и вертикальный краевой фильтр соответственно Эти три фильтра (ядра свертки) представляют собой ядро свертки 3 × 3 K в формулеe, Кhи Кv:
Только представьте, если в исходном пикселе изображения (x, y) может быть край объекта, то его окружение (x−1, y), (x+1, y), (x, y − 1), (x , y + 1) Значение пикселя в точке (x, y) должно значительно отличаться. В это время, если применяется общий краевой фильтр Ke, который может устранить область изображения с небольшой разницей в значениях окружающих пикселей и сохранить область значительной разницы, чтобы можно было обнаружить информацию о краях объекта. Точно так же, как Кhи Кv3Фильтры горизонтального и вертикального краев могут сохранять информацию о горизонтальном и вертикальном крае соответственно.
Фактически, параметры ядра свертки в сверточной сети изучаются посредством обучения сети.В дополнение к аналогичным горизонтальным и вертикальным краевым фильтрам также можно изучить краевые фильтры под любым углом. Конечно, не только это, фильтры (ядра свертки), обнаруживающие цвета, формы, текстуры и многие другие базовые паттерны, могут быть включены в достаточно сложную глубокую свёрточную нейронную сеть. Путем «комбинирования» этих фильтров (ядер свертки) и последующих сетевых операций базовые и общие шаблоны постепенно абстрагируются в «концептуальные» представления с семантикой высокого уровня, которые соответствуют конкретным категориям выборки. После того, как «слепой коснется слона», соответствующие результаты будут интегрированы.
В-четвертых, слой слияния
В этом разделе обсуждается случай, когда операция l-го уровня является объединением. Обычно используемыми операциями объединения являются среднее объединение и максимальное объединение.Следует отметить, что, в отличие от операции сверточного слоя, слой объединения не содержит параметров, которые необходимо изучить. При его использовании вам нужно только указать гиперпараметры, такие как тип слияния (средний или максимальный и т. д.), размер ядра операции слияния (размер ядра) и размер шага операции слияния (шаг).
1. Что такое слияние?
Следуя обозначениям предыдущего раздела, конфлюэнтное ядро l-го слоя можно обозначить как plе RВ×Шl×Дl. Средняя (максимальная) сходимость При каждой операции в качестве результата сходимости берется среднее (максимальное значение) всех значений в зоне охвата конфлюэнтного ядра, т.е.:
где 0 ≤ яl+1 < Hl+1, 0 ≤ jl+1 < Wl+1, 0 ≤ d l+1 = Dl.
В дополнение к двум наиболее часто используемым операциям объединения, описанным выше, стохастическое объединение находится где-то посередине. Операция случайной сходимости очень проста, нужно только случайным образом выбрать элементы во входных данных в соответствии с определенным значением вероятности, и она не всегда принимает максимальный элемент, как максимальная сходимость. Для случайной сходимости активации с большими значениями элементов имеют большую вероятность быть выбранными, и наоборот. Можно сказать, что в глобальном смысле случайная сходимость аналогична средней сходимости, в локальном смысле она подчиняется критерию максимальной сходимости.
На рис. 2.7 показан пример операции слияния максимального размера 2 × 2 с шагом 1.
2. Роль операции слияния
В примере на рисунке выше можно обнаружить, что результат операции слияния меньше, чем его вход.На самом деле операция слияния на самом деле является операцией «понижающей выборки». Сходимость, с другой стороны, также рассматривается как операция «свертки» с использованием p-нормы (p-нормы) в качестве нелинейного отображения, в частности, наиболее распространенного максимального схождения при приближении p к положительной бесконечности.
Введение слоя конвергенции заключается в выполнении уменьшения размерности (понижения дискретизации) и извлечении объектов визуального ввода, имитирующих зрительную систему человека.
слон. В прошлой работе сверточных нейронных сетей исследователи обычно считали, что слой конвергенции выполняет следующие три функции:
-
Инвариант признаков. Операция слияния заставляет модель больше фокусироваться на наличии определенных функций, а не на конкретном расположении функций. Его можно рассматривать как сильный априор, так что изучение признаков содержит определенную степень свободы и может допускать небольшие смещения признаков.
-
Сокращение характеристик. Из-за эффекта понижающей дискретизации операции слияния элемент в результате слияния соответствует подобласти исходных входных данных, поэтому слияние эквивалентно уменьшению пространственного измерения в пространственном диапазоне, так что модель может извлекать более широкий набор функций. В то же время входной размер следующего слоя уменьшается, тем самым уменьшая объем вычислений и количество параметров.
-
В определенной степени предотвращается переоснащение, что более удобно для оптимизации.
Однако операция слияния не является необходимым компонентом или операцией сверточной нейронной сети. Недавно исследователи из Фрайбургского университета, известного немецкого университета, предложили использовать специальную операцию свертки (т. е. пошаговый сверточный слой) для замены слоя свертки для достижения понижения дискретизации, а затем построить операцию свертки.Результаты экспериментов показывают, что это модифицированная сеть может достигать или даже превосходить точность классификации традиционных сверточных нейронных сетей (сверточные слои сливаются и чередуются слои).
5. Функция активации
Уровень функции активации также известен как уровень отображения нелинейности.Как следует из названия, введение функции активации должно повысить выразительность (т.е. нелинейность) всей сети. В противном случае наложение нескольких слоев линейных операций по-прежнему может играть только роль линейного отображения и не может образовывать сложные функции. При практическом использовании на выбор предлагается до дюжины функций активации. В этом разделе в качестве примеров используются функция активации сигмовидного типа и функция ReLU, чтобы представить некоторые основные понятия и проблемы, связанные с функциями активации.
Интуитивно функции активации имитируют свойства биологических нейронов: принимают набор входных сигналов и производят выходные. В неврологии биологические нейроны обычно имеют порог, когда кумулятивный эффект входного сигнала, полученного нейроном, превышает порог, нейрон активируется и находится в возбужденном состоянии, в противном случае он находится в тормозном состоянии. В искусственной нейронной сети, поскольку сигмовидная функция может имитировать этот биологический процесс, она занимала очень важное место в историческом процессе развития нейронной сети.
Сигмовидная функция также называется логистической функцией:
Его функциональная форма показана на рис. 2.8а. Хорошо видно, что после действия сигмовидной функции диапазон значений выходного ответа сжимается до [0, 1], а 0 соответствует «состоянию торможения» биологических нейронов, что как раз соответствует « возбужденное состояние». Однако более глубокое наблюдение также может обнаружить, что на обоих концах сигмовидной функции, независимо от того, насколько велико (или мало) значение больше (или меньше -5), оно будет сжато до (или 0). Это создает серьезную проблему — «эффект насыщения» градиента. По сравнению с картой градиента функции сигмовидного типа (рис. 2.8б) градиент части больше 5 (или меньше -5) близок к 0, что вызовет ошибку в области, где производная в процессе обратного распространения ошибки будет сложно или даже невозможно передать на передний уровень, что в свою очередь делает всю сеть неспособной к обучению (производная от 0 не сможет обновить параметры сети). Кроме того, особое внимание следует уделить инициализации параметров, чтобы избежать того, что параметры инициализации напрямую переносят выходной диапазон в эту область: возможная ситуация заключается в том, что, когда параметры инициализации слишком велики, будет непосредственно вызван эффект насыщения градиента и обучение не может быть выполнено.
Чтобы избежать эффекта насыщения градиента, Наир и Хинтон в 2010 году ввели в нейронную сеть Rectified Linear Unit (ReLU). Функция ReLU — одна из наиболее часто используемых функций активации в глубоких сверточных нейронных сетях. Кроме того, другие функции активации, улучшенные в соответствии с функцией ReLU, также показывают лучшую производительность.
Функция на самом деле является кусочной функцией, которая определяется как:
Как видно из рисунка 2.9, градиент функции RELU находится в X ≥ 0, а наоборот равен 0. Эффект насыщения градиента функции сигмовидного типа полностью устранил часть X ≥ 0. В то же время в эксперименте также было обнаружено, что по сравнению с функцией сигмовидного типа функция RELU способствовала сходимости случайного снижения градиента, скорость сходимости была около долгой. Именно из-за этих высококачественных особенностей функции RELU функция RELU стала первым выбором для в настоящее время инвазивных нейронных сетей и других моделей глубинного обучения (таких как рекурсивная нейронная сеть RNN и т. д.) функций активации.
6. Полностью связанный слой
Полностью связанные слои играют роль «классификатора» во всей сверточной нейронной сети. Если такие операции, как сверточный слой, слой слияния и слой функции активации, предназначены для сопоставления исходных данных с пространством признаков скрытого слоя, полностью связанный слой играет роль сопоставления представления изученных признаков с пространством меток образца. На практике полносвязный слой может быть реализован с помощью операций свертки: полносвязный слой, полностью связанный с передним слоем, может быть преобразован в свертку с ядром свертки 1 × 1, а полносвязный слой, передний слой которого представляет собой сверточный слой, который можно преобразовать в глобальную свертка с ядром свертки размером h × w, где h и w — высота и ширина выходных данных свертки предыдущего слоя соответственно. Взяв в качестве примера классическую сетевую модель VGG-16, для входного изображения 224 × 224 × 3 последний сверточный слой (со ссылкой на пул в VGG-16) может выводить тензор признаков 7 × 7 × 512. Если последний слой представляет собой полносвязный слой с 4096 нейронами, для реализации этого полностью связанного операционного процесса может использоваться глобальная свертка с ядром свертки 7 × 7 × 512 × 4096. Конкретные параметры ядра свертки следующие:
После этой операции свертки получается результат 1 × 1 × 4096. Если вам нужно снова сложить полносвязный слой с 2048 нейронами, вы можете установить операцию сверточного слоя со следующими параметрами.
7. Целевая функция
Как упоминалось ранее, полносвязный слой предназначен для сопоставления сетевых функций с пространством меток выборки для прогнозирования, а функция целевой функции используется для измерения ошибки между прогнозируемым значением и меткой реальной выборки. В современных сверточных нейронных сетях функция кросс-энтропийных потерь и l2Функция потерь является наиболее часто используемой целевой функцией в задачах классификации и задачах регрессии соответственно. При этом на выбор предлагается все больше целевых функций для разных характеристик задачи.