Что такое ResNets? Что такое DenseNets? Почему популярны эти архитектуры? В этом блоге я познакомлю вас с этими архитектурами в глубоких сверточных нейронных сетях, известных как DCNN, и объясню, почему они важны.

Фон

Первоначальная мысль о том, что точность увеличивается по мере того, как сеть становится глубже, не обязательно верна - по мере того, как сеть становится глубже, возникают некоторые проблемы с производительностью и точностью. Одна из самых больших проблем - это проблема исчезающего градиента: DCNN обучает модель, вычисляя производные параметров по функции потерь при обучении. Однако градиенты функции потерь приближаются к нулю по мере того, как в нейронные сети добавляются новые слои. Следовательно, влияние функции потерь на функции активации уменьшается, что затрудняет обучение сети. Некоторые методы нормализации могут решить эту проблему, но только на средних уровнях, а не на крупномасштабных.

Архитектуры DenseNets и ResNets пытаются решить эту проблему, и, на мой взгляд, они являются прорывом с точки зрения производительности при использовании архитектур DCNN.

Остаточная сеть - ResNets

Первая архитектура, остаточная сетевая модель, известная как ResNets (Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun, 2016), пытается справиться с этой проблемой. Исследователи внесли в сеть остаточные связи [рисунок 1]. Остаточные соединения, известные также как ярлыки соединений, представляют собой просто соединения между выходными данными слоя t и гипотезой слоя t + 2. Вместо того, чтобы изучать функции, на которые не ссылаются, модель использует остаточные функции обучения с входными данными опорного слоя. Функция гипотез изменяется с H (X) = F (X) на H (X) = F (X) + X. Это означает, что строительный блок определяется как y = F {x, {Wᵢ}} + x. Мы определяем x и y как входные и выходные векторы рассматриваемых слоев. Функция F {x, {Wᵢ}} представляет остаточное отображение, которое необходимо изучить.

В ходе исследования было проведено несколько экспериментов. В одном эксперименте сравнивается простая сеть, сеть без быстрых соединений и остаточная сеть. Модели были обучены на нескольких известных наборах данных с разным количеством слоев. В результате в простой сети по мере увеличения количества уровней увеличивается и частота ошибок, в то время как в ResNets по мере увеличения количества уровней частота ошибок уменьшается [рисунок 2].

В другом эксперименте сравнивается множество методов, которые могут иметь разные типы слоев. Модели были обучены на нескольких известных наборах данных. В результате ResNets со слоями 110 получили наименьшую ошибку!

Это был огромный шаг в мире DCNN, потому что глубина других ведущих архитектур была вдвое меньше и по-прежнему имела хорошую точность. Более того, на основе этой архитектуры исследователи заняли 1-е место по нескольким направлениям в соревнованиях ILSVRC & COCO 2015: обнаружение ImageNet, локализация ImageNet, обнаружение COCO и сегментация COCO.

Плотно связанные сверточные сети - DenseNets

Вторая архитектура - это сверточные сети с плотными связями, известная как DenseNets (Хуанг, Г., Лю, З., Вайнбергер, К. К., ван дер Маатен, Л., 2017). Исследователи пытаются решить несколько проблем, включая проблему исчезающего градиента.

DenseNets - это семейство с несколькими архитектурами. Базовая архитектура представляет собой новое соединение между уровнями [рисунок 3]. Каждый слой связан со всеми передними слоями. Следовательно, сеть L-уровней имеет [L (L + 1)] / 2 прямых соединений. Это означает, что слой iₜₕ Xi получает в качестве входных данных карты характеристик всех предыдущих слоев: Xi = Hi ([X₀, X₁ ,,,, Xᵢ₋₁]) . Где Hi - составная функция, которая управляет 3 алгоритмами: Batch-Normalization, ReLU и 3 * 3 Convolution (я не буду объяснять эти алгоритмы в этом посте, но я рекомендую вам поискать, если вам интересно !).

Еще одна проблема, с которой пытается справиться DenseNets, - это существенное уменьшение количества параметров. В других известных архитектурах количество параметров существенно больше, поскольку каждый уровень имеет свои собственные веса. DenseNets адресует новую информацию, которая добавляется в сеть, и сохраняет информацию. Слои очень узкие, добавляя лишь небольшой набор карт характеристик к «коллективным знаниям» сети и сохраняя оставшиеся карты характеристик неизменными. Так как они это делают?

Другие архитектуры не ограничивают количество функций, которые получает каждый слой. Однако в DenseNets Hi создает k карт объектов, когда слой iₜₕ имеет k₀ + kᵢ₋₁ объектов. k₀ - количество каналов на входе. Каждый слой добавляет к этому состоянию k собственных карт объектов, когда максимальное значение равно 12. Это ограничение сужает слой. В конце последнего плотного блока выполняется объединение глобального среднего значения, а затем присоединяется классификатор softmax.

Следующая архитектура - DenseNets-B (Слои-узкие места). Основная цель - уменьшить сложность и размер модели. Для достижения этой цели был добавлен новый этап перед работой Привет. На этом этапе используются 3 алгоритма: пакетная нормализация, ReLU и свертка 1 * 1. Сеть была разделена на несколько плотных блоков, называемых переходными слоями. 1 * 1 Свертка с последующим средним объединением 2 * 2 используется в качестве переходных слоев между двумя соседними плотными блоками [рисунок 4].

Другая архитектура - DenseNets-C. Цель здесь - улучшить компактность модели. Они делают это за счет уменьшения количества карт объектов на переходных слоях. Как они это делают? Если блок содержит карту объектов m, переходный слой генерирует ⌊θ m ⌋, 0 ‹θ‹ 1 выходную карту объектов, где θ - коэффициент сжатия. Когда θ = 1, количество карт объектов на переходных слоях остается неизменным. DenseNets с θ ‹1, называется DenseNets-C.

Когда используются как узкие, так и переходные слои с θ ‹1, архитектура называется DenseNets-BC.

Эксперименты, представленные в этом исследовании, эмпирически демонстрируют эффективность DenseNets на нескольких тестовых наборах данных и сравниваются с другими известными архитектурами, особенно с ResNets и его вариантами. Архитектуры DenseNet-C и DenseNet-BC определены с θ = 0,5.

Основной эксперимент был обучен как базовыми DenseNets, так и DenseNets-BC с разной глубиной L и скоростью роста k на разных наборах данных. Они сравнивают эти архитектуры с разными моделями, включая методы ResNets. Результаты [таблица 1] показывают, что разные типы сетей DenseNets имеют наименьшую частоту ошибок.

В другом эксперименте они сравнивают эффективность параметров всех вариантов архитектур DenseNets и ResNets. Результаты показали, что DenseNet-BC неизменно является наиболее эффективным параметром варианта DenseNets. Кроме того, для достижения такого же уровня точности DenseNet-BC требует только около трети параметров по сравнению с ResNets.

В заключение, вот некоторые из преимуществ этого семейства архитектур:

  1. Устраните проблему исчезающего градиента - количество слоев с хорошей точностью выросло до 250.
  2. Поощряйте повторное использование функций - одни и те же функции подключаются к другим блокам и используются повторно [рисунок 3]
  3. Существенно сократите количество параметров - ограничив количество карт функций до 12.

Надеюсь, вам понравилось и вы узнали! Если вы видите ошибку, которую заметили, или что-то, чем хотите поделиться со мной, оставьте комментарий ниже!

📝 Прочтите этот рассказ позже в Журнале.

👩‍💻 Просыпайтесь каждое воскресное утро и слушайте самые интересные истории недели в области технологий, которые ждут вас в вашем почтовом ящике. Прочтите информационный бюллетень« Примечательно в технологиях .