Проблемы с традиционными нейронными сетями
Прежде чем говорить о сверточной нейронной сети, мы должны поговорить о некоторых проблемах, существующих в традиционной нейронной сети.Приведенное выше изображение является примером типичной традиционной нейронной сети. Представьте себе сцену, предполагая, что образец изображения, который мы хотим обучить, имеет размер 100x100 (пикселей), тогда все изображение имеет в общей сложности 10 000 пикселей, тогда при определении традиционной нейронной сети входной слой (входной слой) должен иметь 1w. нам также нужно 1w нейронов в среднем скрытом слое, тогда общее количество требуемых параметров (весов) будет достигать 100 миллионов (1w*1w), только представьте, это всего лишь картинка 100x100 требует столько параметров. больше, можно себе представить, насколько ужасен расчет всей нейронной сети. Конечно, раз весов слишком много, то и выборок для обучения должно быть достаточно, иначе будетпереоснащениеФеномен. Следовательно, мы можем знать, что традиционная нейронная сеть имеет следующие две проблемы:
- Слишком много весов, слишком много вычислений
- Слишком много весов, если нет большого количества опорных образцов, будет переобучение.
Сверточная нейронная сеть
свертка
Что такое свертка?
Прежде чем понять сверточные нейронные сети, нам нужно знать, что такое свертка. Сделайте внутренний продукт (умножьте элемент за элементом) изображения (различные данные окна данных) и матрицу фильтра (набор фиксированных весов: поскольку множественные веса каждого нейрона фиксированы, его можно рассматривать как постоянный фильтр) операция возобновления) — это так называемая операция «свертки», которая также является источником названия сверточной нейронной сети. В нестрогом смысле часть, обрамленную красным прямоугольником на рисунке ниже, можно понимать как фильтр, то есть набор нейронов с фиксированными весами. Несколько фильтров накладываются друг на друга, образуя сверточный слой.
Приведите конкретный пример. Например, на рисунке ниже левая часть рисунка — исходные входные данные, средняя часть рисунка — фильтр-фильтр, а правая часть рисунка — выходные новые двумерные данные.
Разбери картинку выше
В соответствующей позиции числа сначала умножаются, а затем складываются. =
Промежуточный фильтр фильтра и окно данных выполняют внутренний продукт, а конкретный процесс вычисления: 4x0 + 0x0 + 0x0 + 0x0 + 0x1 + 0x1 + 0x0 + 0x1 + -4x2 = -8
Свертка на изображении
В процессе вычисления, соответствующем рисунку ниже, на вход поступают данные определенного размера области (ширина*высота), а фильтр (с набором нейронов с фиксированным весом) выполняет скалярное произведение и ждет, пока не появится новое двумерное данные.
Как показано ниже:
В частности, левая часть — это входное изображение, а средняя часть — это фильтр (с набором нейронов с фиксированными весами), разные фильтры будут получать разные выходные данные, такие как цветовые оттенки и контуры. Это эквивалентно тому, что если вы хотите извлечь различные особенности изображения, используйте разные фильтры для извлечения конкретной информации, которую вы хотите об изображении: глубину цвета или контур. В одном предложении, чтобы объяснить разницу между различными фильтрами:тысяча читателей с тысячей хамуратов
Что такое сверточная нейронная сеть?
**Сверточная нейронная сеть (CNN)** — этоНейронная сеть с прямой связью, его искусственные нейроны могут реагировать на окружающие устройства в пределах определенной зоны покрытия, и он обладает отличной производительностью для крупномасштабной обработки изображений. Сверточные нейронные сети очень похожи на обычные нейронные сети тем, что обе они состоят из нейронов с обучаемыми весами и смещениями. Каждый нейрон получает некоторый ввод и выполняет некоторое вычисление скалярного произведения, а вывод - оценка каждой классификации.Здесь все еще применяются некоторые методы расчета в обычных нейронных сетях. Но вводом сверточных нейронных сетей по умолчанию является изображение, которое позволяет нам кодировать определенные свойства в структуру сети, делая нашу функцию прямой связи более эффективной и уменьшая множество параметров.
**3D объемы нейронов**
Сверточная нейронная сеть использует характеристики входного изображения для проектирования нейронов в трех измерениях: ширина, высота, глубина (обратите внимание, что эта глубина не является глубиной нейронной сети, а используется для описания нейронов). Например, размер входного изображения 32×32×3 (rgb), тогда входной нейрон также имеет размерность 32×32×3. Вот схема:
Пример применения каждого слоя сверточной нейронной сети
Что CNN должен сделать на картинке выше: по картинке неизвестно, машина это или лошадь, и что это за машина.
Давайте посмотрим на него слева направо:
левый:
- В крайнем левом углу находится слой ввода данных, который выполняет некоторую обработку данных, такую как деусреднение (центрирование всех измерений входных данных до 0, избегание чрезмерного отклонения данных и влияние на эффект обучения), нормализация (нормализация всех данных). ) в том же диапазоне), PCA/отбеливание и т.д. CNN делает только шаг «отклонения от среднего» в тренировочном наборе.
середина:
- CONV: слой сверточных вычислений, сумма линейных произведений.
- RELU: слой возбуждения, ReLU — это своего рода функция активации.
- POOL: Короче говоря, объединяющий слой, который должен брать региональное среднее или максимальное значение.
правильно:
- FC: полносвязный слой
Локальное восприятие и распределение веса в сверточных нейронных сетях (CNN)
Местное восприятие в CNN
В CNN фильтр (с набором нейронов с фиксированным весом) сворачивает локальные входные данные. После того, как вычислены все локальные данные в окне данных, окно данных непрерывно перемещается и сдвигается до тех пор, пока не будут вычислены все данные. В этом процессе есть несколько параметров:
- Глубина глубины: количество нейронов, которое определяет глубину глубины вывода. Также представляет количество фильтров.
- Размер шага: определите, сколько шагов нужно скользить к краю.
- Значение отступа нулевое заполнение: добавьте несколько кругов 0 к внешнему краю, чтобы было удобно проскальзывать в конечное положение из начального положения в единице размера шага.Говоря непрофессионалом, это так, чтобы общая длина могла быть кратным размеру шага.
Приведенный выше рисунок является типичным примером локального восприятия. Матрица в желтой части — это фильтр, глубина равна 1, размер шага равен 1, а значение заполнения равно 0. Очевидно, мы можем видеть, что каждый фильтр свернут для локального окна данных, что является так называемым механизмом локального восприятия в CNN.
Так почему же местное восприятие?
Например, фильтр подобен паре глаз: у человека ограниченный кругозор, на первый взгляд, он может видеть только часть мира. Если вы увидите весь мир одним взглядом, вы устанете, и вся информация в мире будет воспринята сразу, но ваш мозг не сможет ее воспринять. Конечно, даже при взгляде на деталь человеческий глаз отдает предпочтение информации в этой части. Например, при взгляде на красивых женщин основное внимание уделяется лицу, груди и ногам, поэтому вес этих трех входных данных относительно велик.
Разделение веса в CNN
Так что же такое распределение веса? Возьмем приведенный выше рисунок в качестве примера.Во время процесса скольжения фильтра входные данные меняются, но вес промежуточного фильтра (то есть вес каждого нейрона, подключенного к окну данных) фиксирован, так называемая CNN.Совместное использование веса (параметра)механизм.
Если использовать другую аналогию, кто-то путешествует по миру, и информация, которую он видит, меняется, но глаза, собирающие информацию, остаются прежними. Кстати, одну и ту же локальную информацию глаза разных людей воспринимают по-разному, то есть на тысячу читателей приходится тысяча Гамлетов, поэтому разные фильтры — как разные глаза, и у разных людей разные результаты обратной связи.
Объясните локальное восприятие и распределение веса с помощью движущегося изображения
Эту картинку я нашел в процессе сбора данных.Первое ощущение очень классное.Если я понимаю локальное восприятие и распределение веса,то эту картинку не сложно понять.
Думаю, у вас также возникнет вопрос, как рассчитывается выходной результат 1 на приведенном выше рисунке? Далее давайте разложим приведенную выше анимацию и подробно объясним процесс расчета.
Первый есть первый:
На самом деле процесс расчета подобен wx + b, w соответствует фильтру Filter w0, x соответствует разным окнам данных, b соответствует смещению b0, что эквивалентно умножению Filter w0 на каждое окно данных и суммированию, и, наконец, добавлению Смещение b0 получает выходной результат 1, как показано в следующем процессе:
1x0 + 1x0 + -1x0 + -1x0 + 0x0 + 1x1+-1x0 + -1x0 + 0x1
-1x0 + 0x0 + -1x0 + 0x0 + 0x1 + -1x1 + 1x0 + -1x0 + 0x2
0x0 + 1x0 + 0x0 + 1x0 + 0x2 + 1x0 + 0x0 + -1x0 + 1x0
1 (1 здесь Bias b0)
=
1
Затем фильтр Filter w0 фиксируется, окно данных перемещается на 2 шага вправо и продолжается вычисление внутреннего произведения для получения выходного результата 0
Наконец, измените фильтр на другой другой фильтр Filter w1, другое смещение Bias b1, а затем выполните свертку с крайним левым окном данных на рисунке, чтобы получить другой другой результат.
объединение
Короче говоря, объединение берет среднее или максимальное значение региона, и его цель — уменьшить карту объектов. Операция объединения независима для каждого среза глубины, и масштаб обычно равен 2 * 2. По сравнению с операцией свертки, выполняемой слоем свертки, операции, выполняемые слоем объединения, обычно включают следующее:
- Максимальный пулинг. Возьмите максимум 4 балла. Это наиболее часто используемый метод объединения.
- Средний пул. Возьмите среднее из 4 баллов.
- Гауссовский пул. Учитесь у метода размытия по Гауссу. используется нечасто.
- Обучаемый пул. Функция обучения ff принимает 4 точки на вход и по 1 точке входа и выхода. используется нечасто.
Наиболее распространенный объединяющий слой имеет масштаб 2*2, шаг 2 и понижает дискретизацию каждого среза глубины входных данных. Каждая операция MAX выполняется над четырьмя числами, как показано на следующем рисунке:
На приведенном выше рисунке показана максимальная площадь, то есть 6 — это наибольшая в матрице 2х2 в верхнем левом углу в левой части вышеприведенного рисунка, 8 — наибольшая в матрице 2х2 в верхнем правом углу, 3 — это самая большая площадь в матрице 2х2 в верхнем правом углу наибольшее в матрице 2х2 в левом нижнем углу, а 4 в матрице 2х2 в правом нижнем углу максимум, поэтому получаем результат в правой части картинки выше: 6 8 3 4. Средний пул аналогичен.-
Операция объединения сэкономитГлубина не меняется.
-
Если размер входной единицы слоя объединения не является целым числом, кратным двум, он обычно дополняется кратным 2 путем заполнения нулями, а затем объединяется.
Полносвязный слой
Полностью связанные слои и сверточные слои можно конвертировать друг в друга:
- Для любого сверточного слоя, чтобы превратить его в полносвязный слой, нужно только превратить веса в огромную матрицу, большинство из которых равны 0, за исключением некоторых конкретных блоков (из-за локального восприятия), а веса многих блоков тоже одинаковы. (из-за разделения веса).
- И наоборот, любой полносвязный слой также можно превратить в сверточный слой. Например,Полносвязный слой , размер входного слоя равен, что может быть эквивалентносверточный слой. Другими словами, мы устанавливаем размер фильтра равным размеру всего входного слоя.