Классическая сеть CNN - сводка AlexNet

искусственный интеллект регулярное выражение

краткое введение

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

История развития CNN

CNN的发展历史

AlexNet

AlexNet заняла первое место в конкурсе классификации изображений ImageNet 2012 года, мгновенно увеличив количество ошибок в топ-5 более чем на десять процентов. После этого CNN вернулся на сцену истории. Сначала посмотрите на его сетевую структуру:

AlexNet网络结构
Это структурная схема, приведенная в статье, она выглядит сложной, давайте упростим ее.
AlexNet网络结构
Это раздаточный материал, данный в курсе глубокого обучения Эндрю Нг (обратите внимание, что ввод здесь да{227* 227 * 3}формат, который отличается от бумажного, но не влияет на структуру сети).

Сетевая структура AlexNet

  1. Conv_1: Сверточный слой, ввод:{227 *227 *3},использовать{96}Кусок{11 * 11 * 3}Свертка ядра с шагом{4}, длина и ширина после свертки равны{\lfloor\frac{227-11}{4}\rfloor+1 = 55}, поэтому выходной формат{55 * 55 * 96}

  2. Max-pooling: ввод как{ 55 * 55 * 96},pool:{3 * 3 }, размер шага: 2, поэтому длина и ширина после бассейна:{\lfloor\frac{55 - 3}{2}\rfloor + 1 = 27}, вывод:{27 * 27 * 96}

  3. Conv_2: сверточный слой, ввод:{27 * 27 * 96},использовать{256}Кусок{5 * 5 * 96}, размер шага{1}, прокладка такая же. Есть два вида одинаковых, которые обычно используются в Padding:

    • SAME padding:

      {outheight = \lceil\frac{float(inheight)}{float(strides[1])}\rceil}

      {outwidth =\lceil\frac{float(in_width)}{float(strides[2])}\rceil}

    • VALID padding:

      {outheight = \lceil\frac{float(inheight - filterheight)}{ float(strides[1])}\rceil + 1} {outwidth = \lceil\frac{float(inwidth - filterwidth )}{float(strides[2])}\rceil + 1}

    Итак, на данный момент Padding есть как слева, так и справа.{2}. Выходной результат:{27 * 27 *256}.

  4. Max-pooling: Введите как:{27 * 27 *256}, бассейн есть{3 * 3 }, размер шага{2}, длина:{\lfloor\frac{27 - 3}{2}\rfloor + 1 = 13}, вывод:{13 * 13 * 256}

  5. Conv_3,Conv_4,Conv_5: Оба входа и выхода{13 * 13 * 256}, размер шага{1}, ядро{3 * 3 * 256}, ОтступыSame.

  6. Max-pooling:входить{13 * 13 * 256}, бассейн:{3 * 3}, размер шага{2}Выход{6 * 6 * 256}, это,{9216}характеристическая переменная.

  7. FC: Полностью связанный слой имеет два скрытых слоя, начиная с{9216 \Rightarrow 4096 \Rightarrow 4096 \Rightarrow_{softmax}   1000}

Объяснение высокой производительности AlexNet

  1. Нелинейная функция активации:ReLU
  2. Способы предотвращения переобучения:Dropout,Data augmentation
  3. Обучение работе с большими данными: миллионыImageNetданные изображения
  4. Другое: реализация GPU,LRNИспользование слоев нормализации

ReLU

преимущество:

  1. ReLUПо сути, это кусочно-линейная модель, и прямой расчет очень прост, без необходимости таких операций, как экспоненты;
  2. ReLUЧастная производная также очень проста, градиент распространяется обратно, нет необходимости в таких операциях, как возведение в степень или деление;
  3. ReLUПроблема расхождения градиента возникает непросто.Когда функции активации Tanh и Logistic находятся на обоих концах, производная стремится к нулю, а градиент более приблизительно равен 0 после многоуровневого умножения;
  4. ReLUПравая сторона закрыта, так что многие выходы скрытого слоя равны 0, то есть сеть становится разреженной, что действует как регуляризация, аналогичная L1, которая может в определенной степени уменьшить переоснащение.

недостаток:

Левая сторона полностью закрыта, легко заставить некоторые скрытые узлы никогда не переворачиваться, поэтому они появляются позжеpReLU,random ReLUждать улучшения иReLUлегко изменит распределение данных, поэтомуReLUдобавить послеBatch NormalizationЭто также широко используемый метод улучшения.

Data Augmentation

  1. Из исходного изображения (256, 256) произвольно обрежьте несколько изображений (224, 224). [Трансформация перевода, обрезка]
  2. Отразите изображение по горизонтали. [Преобразование отражения, флип]
  3. Добавьте к изображению случайное освещение. [Освещение, преобразование цвета, дрожание цвета]

Когда AlexNet обучается, обработка по увеличению данных:

  1. Случайный урожай. Во время обучения произвольно кадрируйте изображения 256*256 до 224*224, а затем разрешите отражение по горизонтали, что эквивалентно умножению выборок на{((256-224)^2)*2=2048}.
  2. Во время теста было выполнено 5 кропов в верхнем левом, верхнем правом, нижнем левом, нижнем правом и среднем, а затем перевернуто, всего 10 кропов, а затем результаты усреднялись. Автор сказал, что без случайной обрезки большие сети в основном переобучаются (при существенном переобучении).
  3. сделать для пространства RGBPCA, а затем выполните{(0, 0.1)}Гауссово возмущение. В результате процент ошибок снизился еще на 1%.

Dropout

Объединение нескольких обучающих моделей может уменьшить ошибку теста, но в нейронных сетях обучение каждой модели занимает много времени и стоит дорого.DropoutПоместив в скрытый слойrateВероятность случайным образом устанавливает выход некоторых нейронов равным 0, и эти нейроны не участвуют ни в прямом, ни в обратном распространении. Таким образом, каждый раз при представлении входных данных нейронная сеть пробует другую структуру, но распределяет веса между всеми ними. Поскольку существование нейронов не может зависеть от других конкретных нейронов, этот метод уменьшает сложные межадаптационные отношения нейронов. Просто разделите на{\frac{1}{1-rate}}.

Local Response Normalization

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

По сути, этот слой также предназначен для предотвращения насыщения функции активации.

  1. {n=5}является сферой влияния нейрона.
  2. {k=2,\alpha=10^{-4},\beta=0.75}являются гиперпараметрами.

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