Важность нормализации местного ответа в CNN

41

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

С http://caffe.berkeleyvision.org/tutorial/layers.html#data-layers :

«Уровень нормализации локального отклика выполняет своего рода« боковое торможение »путем нормализации по локальным входным областям. В режиме ACROSS_CHANNELS локальные области распространяются по соседним каналам, но не имеют пространственного экстента (т. Е. Имеют форму local_size x 1 x 1) В режиме WITHIN_CHANNEL локальные области расширяются пространственно, но находятся в отдельных каналах (т. Е. Имеют форму 1 x local_size x local_size). Каждое входное значение делится на (1+ (α / n) ∑ix2i) β, где n это размер каждой локальной области, а сумма берется по области с центром в этом значении (при необходимости добавляется нулевое заполнение). "

Редактировать:

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

PIR
источник

Ответы:

20

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

Слой нормализации

Многие типы слоев нормализации были предложены для использования в архитектурах ConvNet, иногда с намерением реализовать схемы ингибирования, наблюдаемые в биологическом мозге. Однако в последнее время эти слои перестали пользоваться популярностью, поскольку на практике их вклад был минимальным, если он вообще имел место. Для различных типов нормализации, см. Обсуждение в API библиотеки cuda-convnet Алекса Крижевского.

PIR
источник
20

Действительно, кажется, нет хорошего объяснения в одном месте. Лучше всего прочитать статьи, откуда они берутся:

Оригинальная статья AlexNet объясняет немного в Разделе 3.3:

  • Крижевский, Суцкевер и Хинтон, Классификация ImageNet с глубокими сверточными нейронными сетями, NIPS 2012. pdf

Точный способ сделать это был предложен в (но не так много дополнительной информации здесь):

  • Кевин Джарретт, Корай Кавуккуоглу, Марк Аурелио Ранзато и Янн ЛеКун, Какая лучшая многоступенчатая архитектура для распознавания объектов ?, ICCV 2009. pdf

Это было вдохновлено вычислительной неврологией:

  • С. Лю и Э. Симончелли. Нелинейное представление изображения с использованием делительной нормализации. CVPR 2008. pdf . Эта статья углубляется в математику и соответствует ответу seanv507.
  • [24] Н. Пинто, Д. Д. Кокс и Д. Дж. ДиКарло. Почему реальное распознавание визуальных объектов трудно? PLoS Компьютерная биология, 2008.
Джаспер Уйлингс
источник
15

Вот мой предложенный ответ, хотя я не претендую на знание. При выполнении градиентного спуска на линейной модели поверхность ошибки является квадратичной, причем кривизна определяется как , где XИксИксTИкс - ваш ввод. Теперь идеальная поверхность ошибки или градиентного спуска имеет одинаковую кривизну во всех направлениях (в противном случае размер шага слишком мал в одних направлениях и слишком велик в других). При нормализации ваших входов путем изменения масштаба входных значений до нуля, дисперсия 1 помогает и быстро: теперь все направления вдоль каждого измерения имеют одинаковую кривизну, которая, в свою очередь, ограничивает кривизну в других направлениях.

Оптимальным решением будет сферизация / отбеливание входов для каждого нейрона, однако это слишком дорого в вычислительном отношении. LCN может быть оправдано как приблизительное отбеливание, исходя из предположения о высокой степени корреляции между соседними пикселями (или каналами). Поэтому я бы сказал, что выгода в том, что поверхность ошибки более благоприятна для SGD ... Отдельная скорость обучения работает хорошо через входные размеры (каждого нейрона)

seanv507
источник
2
Пакетная нормализация: ускорение обучения в глубокой сети за счет уменьшения внутреннего смещения ковариат. Сергей Иоффе, Кристиан Сегеди, arxiv.org/abs/1502.03167 делают (тщательно спроектированный) масштабирование входов нейрона и достигают значительных ускорений, используя более высокие скорости обучения.
seanv507
Вы можете отредактировать эту информацию в своем ответе, используя кнопку редактирования под текстом ответа.
Sycorax сообщает, что восстановит Монику
10

В этом ответе я хотел бы суммировать вклады других авторов и предоставить единственное место для объяснения техники LRN (или контрастной нормализации) для тех, кто просто хочет узнать, что это такое и как оно работает.

Мотивация: « Этот тип нормализации ответа (LRN) реализует форму латерального торможения, основанного на типе, обнаруженном в реальных нейронах, создавая конкуренцию за большую активность среди выходов нейронов, вычисленных с использованием разных ядер. ' AlexNet 3,3

Другими словами, LRN позволяет уменьшить ответы, которые являются одинаково большими для окрестности, и сделать большую активацию более выраженной в окрестности, то есть создать более высокий контраст на карте активации. prateekvjoshi.com заявляет, что это особенно полезно с неограниченными функциями активации как RELU.

Исходная формула: для каждой конкретной позиции (x, y) и ядра i, которое соответствует одному выходному сигналу «пиксель», мы применяем «фильтр», который включает информацию о выходных данных других n ядер, примененных к той же позиции. Эта регуляризация применяется до активации функции. Эта регуляризация действительно зависит от порядка ядер, что, насколько мне известно, просто неудачное совпадение.

LRN

На практике (см. Caffe ) можно использовать 2 подхода:

  1. WITHIN_CHANNEL. Нормализовать по локальной окрестности одного канала (соответствует одному сверточному фильтру). Другими словами, разделите отклик одного канала одного пикселя в соответствии с выходными значениями того же нейрона для соседних пикселей.
  2. ACROSS_CHANNELS. Для одного пикселя нормализуют значения каждого канала в соответствии со значениями всех каналов для одного и того же пикселя.

Фактическое использование LRN использовалось чаще во времена ранних преобразований, таких как LeNet-5. Текущая реализация GoogLeNet (Inception) в Caffe часто использует LRN в связи с методами объединения, но, похоже, это делается только ради его использования. Ни в оригинальной Inception / GoogLeNet ( здесь ), ни в любой из следующих версий нигде не упоминается LRN. Кроме того, реализация TensorFlow сетей Inception (предоставленных и обновленных группой первоначальных авторов) не использует LRN, несмотря на то, что он доступен.

Заключение Применение LRN вместе с уровнем пула не повлияет на производительность сети, если допустимы значения гиперпараметров. Несмотря на это, я не знаю ни одного недавнего обоснования для применения LRN / контрастной нормализации в нейронной сети.

y.selivonchyk
источник
Я также добавил бы, что LRN является своего рода «конкурентной нормализацией», согласно странице 374 в Жероне, Орельен. Практическое машинное обучение с Scikit-Learn и TensorFlow: концепции, инструменты и методы для построения интеллектуальных систем. "O'Reilly Media, Inc.", 2017 . (Я упоминаю об этом, потому что Хинтон только называет это «конкурентной нормализацией» в лекции. Сверточные сети для распознавания объектов в его курсе Coursera.
Орен Мильман,
7

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

src- https://code.google.com/p/cuda-convnet/wiki/LayerParams#Local_response_normalization_layer_(same_map)

vivkul
источник
0

я

Иксязнак равноИкся(К+(αΣJИксJ2))β

К,α,βрκзнак равно0αзнак равно1βзнак равно12 .

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

Yзнак равноИкс-μσ2+εγ+β

μσ2ε>0γ,βр

Ответ таков: нормализация локального отклика больше не важна, потому что у нас есть кое-что, что работает лучше и заменило LRN: нормализация партии.

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

Мартин Тома
источник
Я думаю, что это не правильно. LRN применяется к выводу ядра, а не к вводу (хотя Alexnet использует нормализацию ввода, но это отдельно).
Шиталь Шах