классическая сеть
Классические сети включают LeNet, AlexNet и VGG.
LeNet: 1998, Градиентное обучение применительно к распознаванию документов.
Для распознавания рукописных цифр видно, что базовая структура сверточной нейронной сети уже существует, свертка, активация, объединение и полное соединение, эти основные компоненты завершены.
Однако после 1998 года глубокое исследование не имело большого прорыва. Было тихо в 2012 году, а рождается Alexnet, а глубокое исследование будет повторно привлечено к достопримечательностям всех и открыть золотой век глубокого обучения.
Почему 2012? Одно это данные, раньше не было крупномасштабных данных для достаточного обучения, и оно применяется к более широкому кругу задач, а теперь есть ImageNet, второе это расчет, прежние аппаратные условия были ограничены, и масштабное обучение не удалось провести, но теперь есть производительность Добавление мощного графического процессора; третье, что AlexNet сам по себе очень хорош, закладывая хороший фундамент для последующей сети, так что все вдруг обнаружили, что можно еще играть как это!
AlexNet: 2012, Классификация ImageNet с глубокими свёрточными нейронными сетями
Коэффициент ошибок ImageNet Top5: 16,4% по сравнению с 28,2% для лучшего метода без глубокого обучения два года назад.
Общая структура AlexNet похожа на LeNet, но значительно улучшена:
Он состоит из пяти слоев свертки и трех слоев полного соединения.Входное изображение трехканальное размером 224x224.Размер сети намного больше, чем у LeNet.Функция активации ReLU использует Dropout, который можно использовать как обычный термин для предотвращения чрезмерной подгонки и повышения надежности модели Хорошие методы обучения, включая увеличение данных, стратегии скорости обучения, снижение веса и т. д.
В AlexNet используется видеокарта GTX 580 с 3 ГБ видеопамяти (уж старая), одной видеокарты мало, поэтому как показано на рисунке выше, модель разделена на две части и размещена на двух видеокартах для параллельных вычислений. Хотя это делается только тогда, когда ресурсы одной видеокарты ограничены, многие из следующих сетей развивают эту идею дальнейшей группировки сверток (хотя и с разными мотивами).
VGG: 2014, Очень глубокие сверточные сети для крупномасштабного распознавания изображений.
После AlexNet еще одна сеть, которая значительно улучшилась, — это VGG, а частота ошибок Top5 в ImageNet снизилась до 7,3%.
Главное улучшение: глубже, глубже! Количество сетевых слоев увеличено с 8 слоев AlexNet до 16 и 19 слоев.Более глубокая сеть означает более мощные сетевые возможности, а также означает более мощную вычислительную мощность.К счастью, аппаратное обеспечение быстро развивается, а вычислительная мощность видеокарт также быстрый рост, что способствует быстрому развитию глубокого обучения.
При этом используются только ядра свертки 3x3, потому что два рецептивных поля 3x3 эквивалентны 5x5, а количество параметров меньше, и последующие сети в основном следуют этой парадигме.
ГугЛеНет и Реснет
Укладка свертки послойно, VGG является мастером, но после этого трудно идти дальше.Если вы продолжите просто увеличивать количество слоев сети, вы столкнетесь с проблемами.Более глубокие сети сложнее обучать и количество параметров также увеличивается.
Inception v1 (GoogLeNet): 2015, Углубляясь в извилины
Коэффициент ошибок ImageNet Top5 6,7%
GoogLeNet расширяет сетевые возможности в другом измерении.Каждая единица имеет много уровней параллельных вычислений, что делает сеть шире.Основные единицы следующие:
Общая структура сети показана ниже, включая несколько начальных модулей выше и добавление двух вспомогательных ветвей классификации в дополнение к градиентам для лучшего обучения:
Благодаря горизонтальному расположению сети можно использовать неглубокую сеть для получения хороших возможностей модели, а также можно выполнять многофункциональное слияние, которое легче обучать.Кроме того, чтобы уменьшить объем вычислений, свертка 1x1 используется для уменьшения первого измерения функционального канала. Стекирование модулей Inception называется сетью Inception, а GoogLeNet — это пример хорошо спроектированной сети Inception (Inception v1) с хорошей производительностью, то есть GoogLeNet — это своего рода сеть Inception v1.
Однако проблема, заключающаяся в том, что сеть слишком глубока для хорошего обучения, не была решена, пока ResNet не предложила остаточное соединение.
ResNet: 2016, Глубокое остаточное обучение для распознавания изображений
Коэффициент ошибок ImageNet Top5 3,57%
ResNet решает эту проблему, вводя ярлык:
При введении прямого соединения необходимо было изучить полное отображение реконструкции, а создать вывод с нуля непросто.После введения прямого соединения необходимо изучить только разницу между выводом и исходным вводом. , Гораздо проще изменить абсолютное количество на относительное количество, поэтому это называется остаточной сетью. Кроме того, путем введения остаточного отображения идентичности, которое эквивалентно градиентному высокоскоростному каналу, его можно легко обучить, чтобы избежать проблемы исчезновения градиента, поэтому можно получить очень глубокую сеть.Количество слоев сети составляет от От 22 слоев GoogLeNet до 152 слоев ResNet.
Структура сети ResNet-34 следующая:
Если LeNet, AlexNet и VGG заложили основу классической нейронной сети, то Inception и ResNet продемонстрировали новую парадигму нейронной сети v4, Inception-ResNet v1 и v2, а также ResNeXt, DenseNet и Xception жанра ResNet.
Жанр начала
Жанр Inception, ядром которого является модуль Inception, имеет различные варианты, в том числе от Inception v2 до v4 и Inception-ResNet v1 и v2.
Inception v2 (BN-Inception): 2015, Пакетная нормализация: ускорение обучения глубокой сети за счет уменьшения внутреннего ковариатного сдвига
Коэффициент ошибок ImageNet Top5: 4,8%
(PS: Начало, разделенное в соответствии с серией из четырех статей в третью бумагу, аналогично сетью, называемую созданию V2 V2 V3, но разделить в соответствии с названием IV бумаги, Bn-inception называется v2, где используя первые четыре документации, создание V2 означает Bn-inception)
Основная причина - увеличение пакетной нормализации. Раньше нейронная сеть полагалась на хорошую инициализацию, и если сеть была слишком глубокой, градиент рассеивался. Обе эти проблемы были вызваны неоптимальным распределением активаций в середине сети. Поскольку нам нужен идеальный дистрибутив, просто вручную преобразуйте его в идеальный дистрибутив. Поэтому к выходным данным каждого слоя добавляется преобразование нормализации, а среднее значение каждого признака каждой обучающей партии вычитается и делится на стандартное отклонение, чтобы получить выходное распределение среднего значения 0 и стандартного отклонения 1. После обучения градиент не легко рассеивается.
Inception v3: 2015, Переосмысление исходной архитектуры для компьютерного зрения
Коэффициент ошибок ImageNet Top5: 3,5%
Свертка дополнительно разлагается, 5x5 заменяется двумя свертками 3x3, 7x7 заменяется тремя свертками 3x3, а ядро свертки 3x3 может быть дополнительно заменено комбинацией ядер свертки 1x3 и ядер свертки 3x1, чтобы еще больше уменьшить объем вычислений:
Общая структура сети выглядит следующим образом:
Inception v4, Inception-ResNet v1 и v2: 2016, Inception-v4, Inception-ResNet и влияние остаточных соединений на обучение
Коэффициент ошибок ImageNet Top5: 3,08%
От Inception v1 до v3 вы можете увидеть очевидные следы искусственного дизайна.Расположение различных ядер свертки и структура сети очень особенная.Я не знаю, зачем это расположение необходимо. Автор сказал, что из-за ограничений аппаратного и программного обеспечения в прошлом было слишком много исторических обременений, а теперь с TensorFlow (волна рекламы в газете) сеть может быть реализована по идеальному дизайну, поэтому Стандартный дизайн Inception был разработан для сети v4, похожей на Inception v3, но без многих особых несогласованных дизайнов.
В то же время успех ResNet также показывает эффективность остаточного соединения, поэтому остаточное соединение было введено для модуля Inception, и были получены Inception-ResNet v1 и Inception-ResNet-v2. Начала v4. Остаточная структура начального модуля выглядит следующим образом:
Жанр ResNet
Жанр ResNet — еще одна основная ветвь, включающая, среди прочих, WRN, DenseNet, ResNeXt и Xception.
DenseNet: 2016, Плотно связанные сверточные сети
Densenet принимает остаточное соединение с Extreme. Выход каждого слоя напрямую подключен ко всем последующим слоям, которые могут лучше использовать функции. Каждый слой относительно мелко, предохранит все особенности из всех предыдущих слоев, и легко тренироваться. Недостатком является то, что использование памяти больше, а расчет обратной обработки немного сложнее. Структура сети выглядит следующим образом:
Resnext: 2017, агрегированные остаточные преобразования для глубоких нейронных сетей
Коэффициент ошибок ImageNet Top5: 3,03%
Inception учится у ResNet, чтобы получить Inception-ResNet, а ResNet учится у Inception, чтобы получать ResNeXt.Для каждой базовой единицы каждой ResNet разверните по горизонтали, разделите входные данные на несколько групп и используйте одно и то же преобразование для выполнения свертки:
Выше ResNet слева и ResNeXt справа.Разбивая вход на канал и выполняя групповую свертку, каждое ядро свертки не нужно расширять на все каналы, и можно получить больше и более легкие ядра свертки, а объем Связь между ядрами продукта уменьшается, и можно получить более высокую точность при том же объеме вычислений.
Xception: 2016, Xception: глубокое обучение с глубокими разделимыми свертками
Xception доводит идею групповой свертки до крайности, и каждый канал разбивается на группу отдельно. Используя свертку с разделением по глубине, как показано на рисунке ниже, J входных каналов, каждый канал свернут с отдельным ядром пространственной свертки (например, 3x3), J ядер свертки получают J выходных каналов, а затем используют K. Ядро свертки выполняет 1x1 обычный свертка на J выходных каналах, полученных на предыдущем шаге, для получения K конечных выходов:
Представление основано на предположении, что пространственная свертка в горизонтальном и вертикальном направлениях (например, свертка 3x3 на первом этапе) и свертка канала в направлении глубины (например, свертка 1x1 на втором этапе) могут быть полностью независимыми. , что уменьшает разницу. Связь между операциями может эффективно использовать вычислительную мощность. Эксперименты показывают, что при том же объеме вычислений точность значительно повышается. (Тем не менее, базовая поддержка групповой свертки сейчас недостаточно хороша, а фактическая скорость не так хороша, как теоретический расчет, и базовая библиотека нуждается в лучшей поддержке)
мобильный
В дополнение к основным школам ResNet и Inception, которые продолжают стремиться к более высокой точности, мобильные приложения также являются основным направлением, таким как SqueezeNet, MobileNet v1 и v2, ShuffleNet и т. д.
MobileNet v1: 2017, MobileNets: эффективные сверточные нейронные сети для приложений мобильного зрения
Подобно Xception, свертка с разделением по глубине используется для уменьшения объема вычислений, а сеть, подходящая для мобильных терминалов, предназначена для достижения хорошего баланса между производительностью и эффективностью.
MobileNet v2: 2018, Инвертированные остатки и линейные узкие места: мобильные сети для классификации, обнаружения и сегментации
Используется ReLU6 (то есть результат вывода ReLU обрезается, так что максимальное выходное значение равно 6) для адаптации к мобильным устройствам для лучшего квантования, а затем предлагаются новые инвертированные остатки и линейное узкое место. середина базовой структуры.Свертка, одно ядро свертки на канал, уменьшает объем вычислений, количество каналов в середине больше, чем на двух концах (ResNet похож на воронку, MobileNet v2 похож на лист ивы), и ReLU окончательного вывода полностью удален. Конкретная базовая структура показана в правой части рисунка ниже:
ShuffleNet: 2017, ShuffleNet: чрезвычайно эффективная сверточная нейронная сеть для мобильных устройств.
Xception проделал хорошую работу, но 1x1 требует слишком много времени, чтобы стать узким местом вычислений, тогда группировка менее затратна в вычислительном отношении, но группировка, информация между группами изолирована, затем перетасовка, форсирование потока информации. Конкретная структура сети показана в левой части рисунка выше. Перетасовка каналов заключается в перестановке каналов и назначении вывода каждой группы сверток различным группам следующей свертки:
На приведенном выше рисунке a без перетасовки, и эффект очень плохой, а b и c эквивалентны с перетасовкой. ShuffleNet может достичь той же точности, что и AlexNet, и на практике работает в 13 раз быстрее (теоретически в 18 раз).
SENet
В дополнение к проверенным сетям, представленным выше, существует множество новых сетей, таких как NASNet, SENet, MSDNet и другие. Среди них модуль сжатия-возбуждения SENet выполняет глобальное усреднение по каждому каналу U для получения дескриптора канала (Squeeze) после того, как обычная свертка (однослойная свертка или составная свертка) получает выход U из входа X. Затем используйте два уровня FC, чтобы получить значение веса каждого канала, и перевзвешивайте U по каналам, чтобы получить окончательный результат (возбуждение).Этот процесс называется повторной калибровкой признаков.Вводя повторное взвешивание внимания, недопустимые признаки могут быть подавлены и эффективные функции могут быть улучшены.Вес существующей сети может быть легко объединен с существующей сетью для повышения производительности существующей сети, и объем вычислений не увеличится слишком сильно.
Модуль SE — это очень общий модуль, который можно хорошо интегрировать в существующую сеть и улучшить существующий эффект.
Суммировать
Наконец, сводная таблица Top5 показателей точности в ImageNet показана на рисунке ниже.Можно видеть, что уровень ошибок классификации в ImageNet снижается из года в год и ниже, чем уровень ошибок, связанных с человеческим фактором (5,1%).