Я очень опаздываю к игре, но я хотел опубликовать, чтобы отразить некоторые текущие события в сверточных нейронных сетях относительно пропуска соединений .
Команда Microsoft Research недавно выиграла конкурс ImageNet 2015 и выпустила технический отчет Deep Residual Learning для распознавания изображений, в котором описаны некоторые их основные идеи.
Один из их основных вкладов - это концепция глубоких остаточных слоев . Эти глубокие остаточные слои используют пропускаемые соединения . Используя эти глубокие остаточные слои, они смогли обучить 152-слойную сетку для ImageNet 2015. Они даже обучили 1000+ слойную сетку для CIFAR-10.
Проблема, которая их мотивировала, заключается в следующем:
Когда более глубокие сети могут начать сходиться, возникает проблема ухудшения : с увеличением глубины сети точность насыщается (что может быть неудивительно), а затем быстро ухудшается. Неожиданно такая деградация не вызвана переоснащением , и добавление большего количества слоев в достаточно глубокую модель приводит к более высокой ошибке обучения ...
Идея состоит в том, что если вы возьмете "мелкую" сеть и просто разместите несколько слоев для создания более глубокой сети, производительность более глубокой сети должна быть как минимум такой же хорошей, как и у мелкой сети, так как более глубокая сеть может выучить точную мелкую сеть. сеть, устанавливая новые уложенные слои на идентичные слои (в действительности мы знаем, что это, вероятно, очень маловероятно, чтобы это произошло без использования архитектурных априоров или современных методов оптимизации). Они заметили, что это не так, и что ошибка тренировки иногда усугубляется, когда они укладывают больше слоев поверх более мелкой модели.
Таким образом, это побудило их использовать пропущенные соединения и использовать так называемые глубокие остаточные уровни, чтобы позволить их сети изучать отклонения от уровня идентичности, отсюда и термин остаточный , остаточный здесь, относящийся к отличиям от идентичности.
Они реализуют пропущенные соединения следующим образом:
F( х ) : = Н ( х ) - хF( х ) + х = Н ( х )F( х )H (х)
Таким образом, использование глубоких остаточных слоев через пропускаемые соединения позволяет их глубоким сетям изучать приблизительные идентичные слои, если это действительно то, что является оптимальным или локально оптимальным. Действительно они утверждают, что их остаточные слои:
Мы показываем экспериментами (рис. 7), что изученные остаточные функции в целом имеют небольшие отклики
Что касается того, почему именно это работает, у них нет точного ответа. Маловероятно, что уровни идентичности являются оптимальными, но они полагают, что использование этих остаточных уровней помогает предопределить проблему и что легче изучить новую функцию, учитывая эталонную / базовую линию сравнения для сопоставления идентификаторов, чем одну "с нуля" без использования базовой линии личности. Кто знает. Но я подумал, что это будет хорошим ответом на твой вопрос.
Кстати, задним числом: ответ Сашкелло еще лучше, не так ли?
Теоретически, пропускаемые соединения не должны улучшать производительность сети. Но, поскольку сложные сети трудно обучить и их легко перегрузить, может быть очень полезно явно добавить это как термин линейной регрессии, когда вы знаете, что ваши данные имеют сильный линейный компонент. Это намекает на модель в правильном направлении ... Кроме того, это более интерпретируемо, поскольку она представляет вашу модель как линейные + возмущения, распуская немного структуры позади сети, которая обычно рассматривается просто как черный ящик.
источник
Мой старый инструментарий нейронной сети (в настоящее время я в основном использую машины с ядром) использовал регуляризацию L1 для удаления избыточных весов и скрытых единиц, а также имел соединения пропускаемого уровня. Преимущество этого состоит в том, что, если проблема является по существу линейной, скрытые единицы, как правило, сокращаются, и у вас остается линейная модель, которая ясно говорит вам, что проблема является линейной.
Как предполагает sashkello (+1), MLP являются универсальными аппроксиматорами, поэтому пропускаемые соединения не улучшат результаты в пределе бесконечных данных и бесконечном количестве скрытых единиц (но когда мы когда-нибудь приблизимся к этому пределу?). Реальным преимуществом является то, что это облегчает оценку хороших значений для весов, если сетевая архитектура хорошо соответствует проблеме, и вы можете использовать меньшую сеть и получить лучшую производительность обобщения.
Однако, как и в случае с большинством вопросов, связанных с нейронной сетью, обычно единственный способ выяснить, будет ли он полезным или вредным для определенного набора данных, - это попробовать и посмотреть (используя надежную процедуру оценки производительности).
источник
По епископу 5.1. Сетевые функции прямой связи. Одним из способов обобщения сетевой архитектуры является включение соединений пропускаемого уровня, каждое из которых связано с соответствующим адаптивным параметром. Например, в двухслойной (двухуровневой) сети они будут напрямую переходить от входов к выходам. В принципе, сеть с сигмоидальными скрытыми единицами может всегда имитировать пропускаемые соединения слоя (для ограниченных входных значений), используя достаточно малый вес первого слоя, который в своем рабочем диапазоне скрытый юнит эффективно линейный, а затем компенсирует с большим значение веса от скрытой единицы до выхода.
На практике, однако, может быть выгодным явное включение соединений пропускаемого уровня.
источник