Остаточный блок
Одним из самых популярных подходов, ускоряющих и упрощающих настройку нейросетей является внесение остаточных блоков (residual block) в архитектуру нейросети.
Эта архитектура стала широко известной после работы [1], в которой остаточные блоки были успешно применены в новой архитектуре ResNet для повышения качества классификации изображений. До этой работы для классификации изображений использовались сети, содержащие 10-20 слоёв, а она позволила решать задачи, используя очень глубокие сети, содержащие 100 слоёв и более.
Работа [1] является одной из самых цитируемой научных работ глубокого обучения!
Модель ResNet детально разобрана в разделе учебника, посвящённом классификации изображений.
Рассмотрим, в чём состоит идея остаточного блока.
Обычная нейросетевая архитектура преобразуют вход , применяя к нему некоторую нелинейную функцию , применяя ко входу один или несколько слоёв сети:
В остаточном блоке предлагается пробросить тождественную связь (skip connection, identity connection), не изменяющую вход , начала к концу преобразования , а выходом блока сделать сумма входа и нелинейного преобразования :
Таким образом, нелинейный блок вычисляет остаток (residual) между желаемым выходом и входом .
Как видим из определения остаточного блока, преобразование должно обеспечивать такое же число выходов, каким было число входов, чтобы мы их могли сложить.
Это не всегда удобно, поскольку часто необходимо постепенно снижать размерность внутреннего представления, чтобы нейросеть не получилась слишком перепараметризованной и сложной.
Если нужно снизить выходную размерность, то тождественное преобразование заменяется на линейное преобразование (с настраиваемой матрицей весов ), приводящее размерность входа к размерности нелинейного выхода перед суммированием:
Активация ReLU всегда выдаёт неотрицательные значения, а LeakyReLU смещает распределение в сторону неотрицательных значений. Чтобы нелинейный блок мог как увеличивать, так и уменьшать вход , последним преобразованием нелинейного блока ставят линейный слой без функции активации, которую переносят в начало последующего нелинейного блока.
На практике используется не один, а сразу несколько подряд идущих остаточных блоков, как показано ниже:
что аналитически записывается как
Эквивалентно это можно записать как
что графически представляется как одновременное воздействие на выход менее и более глубоких сетей, т.е. ансамбль моделей:
Нейросети, использующие большое количество остаточных блоков, называются остаточными сетями (residual networks).
Преимущества остаточных сетей
Прогнозирование ансамблем
Как мы видели, применение цепочки остаточных блоков эквивалентно получению результата, опираясь не на одну единственную глубокую сеть, а задействуя целый ансамбль глубоких и неглубоких сетей, что делает прогноз б олее устойчивым и точным.
Естественная инициализация
Ключом к успешной настройке глубоких сетей является грамотная инициализация начальных значений весов перед их настройкой. В остаточных блоках сама собой возникает естественная инициализация для нелинейных преобразований очень малыми случайными числами. В этом случае на начальных итерациях оптимизации остаточные блоки действуют почти как тождественные преобразования, поскольку основная часть входного сигнала идёт в обход нелинейностей по тождественным связям.
-
Если для уменьшения потерь достаточно неглубокой сети, то веса так и останутся малыми.
-
Если потребуется большее число нелинейных преобразований, то оптимизатор может увеличить веса только для недостающих слоёв!