Мне любопытно, как градиенты распространяются обратно через нейронную сеть с помощью модулей ResNet / пропуска соединений. Я видел пару вопросов о ResNet (например, Нейронная сеть с пропускаемыми соединениями ), но этот вопрос специально задает о обратном распространении градиентов во время обучения.
Основная архитектура здесь:
Я прочитал эту статью, Изучение остаточных сетей для распознавания изображений , и в Разделе 2 они рассказывают о том, как одна из целей ResNet состоит в том, чтобы обеспечить более короткий / более четкий путь для градиента для обратного распространения к базовому слою.
Может кто-нибудь объяснить, как градиент течет через этот тип сети? Я не совсем понимаю, как операция добавления и отсутствие параметризованного слоя после добавления обеспечивает лучшее распространение градиента. Имеет ли это какое-то отношение к тому, как градиент не изменяется при прохождении через оператор добавления и как-то перераспределяется без умножения?
Кроме того, я могу понять, как облегчается проблема исчезающего градиента, если градиент не должен течь через весовые слои, но если нет градиентного потока через веса, то как они обновляются после обратного прохода?
the gradient doesn't need to flow through the weight layers
, не могли бы вы объяснить это?Ответы:
Add отправляет градиент обратно одинаково на оба входа. Вы можете убедиться в этом, запустив следующее в tenorflow:
Выход:
Итак, градиент будет:
Изменить: возникает вопрос: «что такое операция в точке, где соединение шоссе и блок нейронной сети снова соединяются вместе, внизу рисунка 2?»
Там ответ: они суммируются. Вы можете увидеть это из формулы на рисунке 2:
Это говорит о том, что:
Изменить 2:
Переписываем несколько разными словами:
Остаточные блоки изменяют градиенты, текущие в обратном направлении, но нет функций «сдавливания» или «активации», через которые проходят градиенты. Функции «раздавливания» / «активации» - вот что вызывает проблему разрыва / исчезновения градиента, поэтому, удаляя их из самой шины, мы значительно смягчаем эту проблему.
Редактировать 3: Лично я представляю реснет в моей голове, как на следующей диаграмме. Он топологически идентичен рисунку 2, но, возможно, более четко показывает, как шина протекает прямо через сеть, в то время как остаточные блоки просто отбирают значения из нее и добавляют / удаляют некоторый маленький вектор по отношению к шине:
источник