Остаточная нейронная сеть (также называемая остаточной сетью или ResNet ) [1] представляет собой модель глубокого обучения, в которой весовые слои изучают остаточные функции со ссылкой на входные данные слоя. Она ведет себя как сеть автомагистралей , ворота которой открываются благодаря сильно положительным весам смещения. [2] Это позволяет легко обучать модели глубокого обучения с десятками или сотнями слоев и достигать большей точности при углублении. Соединения с пропуском идентификаторов, часто называемые «остаточными соединениями», также используются в сетях LSTM 1997 года , [3] моделях трансформаторов (например, BERT , моделях GPT , таких как ChatGPT ), системе AlphaGo Zero , системе AlphaStar и Система AlphaFold .
Остаточные сети были разработаны Каймином Хэ, Сянъюем Чжаном, Шаоцином Реном и Цзянь Сунь, победившими в конкурсе ImageNet 2015 года . [4] [5]
Модель AlexNet , разработанная в 2012 году для ImageNet, представляла собой восьмислойную сверточную нейронную сеть . Нейронные сети, разработанные в 2014 году группой Visual Geometry Group (VGG) в Оксфордском университете, достигли глубины 19 слоев путем укладки сверточных слоев 3х3. [6] Однако объединение большего количества слоев привело к резкому снижению точности обучения, [7] что называется проблемой «деградации». [1]
Более глубокая сеть не должна приводить к более высоким потерям при обучении, чем ее более мелкий аналог, если эта более глубокая сеть может быть построена с помощью ее более мелкого аналога, состоящего из дополнительных слоев. [1] Если дополнительные уровни могут быть установлены как сопоставления идентификаторов, более глубокая сеть будет представлять ту же функцию, что и более мелкий аналог. Предполагается, что оптимизатор не может выполнить сопоставление идентификаторов для параметризованных слоев.
В модели многослойной нейронной сети рассмотрим подсеть с определенным количеством (например, 2 или 3) сложенных слоев. Обозначим базовую функцию, выполняемую этой подсетью, как , где – входные данные для этой подсети. Идея «Остаточного обучения» повторно параметризует эту подсеть и позволяет слоям параметров представлять остаточную функцию . Выход этой подсети представлен как:
Это также принцип вычислений ячейки LSTM 1997 года [3] , который становится во время обратного распространения ошибки во времени .
Функция часто представляет собой умножение матриц, переплетенное с функциями активации и операциями нормализации (например, пакетной нормализацией или нормализацией слоев).
Эта подсеть называется «остаточным блоком». [1] Глубокая остаточная сеть строится путем объединения серии остаточных блоков.
К операции " " в " " применяется пропускное соединение, которое выполняет сопоставление идентификаторов и соединяет вход остаточного блока с его выходом. В более поздних работах это соединение часто называют «Остаточным соединением». [8]
Введение сопоставлений идентичности облегчает распространение сигнала как в прямом, так и в обратном направлении. [9]
Если выход -го остаточного блока является входом для -го остаточного блока (т.е. при условии отсутствия функции активации между блоками), мы имеем: [9]
Применяя эту формулировку рекурсивно, например, мы имеем:
где - индекс любого более позднего остаточного блока (например, последнего блока) и - индекс любого более раннего блока. Эта формулировка предполагает, что всегда существует сигнал, который напрямую передается от более мелкого блока к более глубокому блоку .
Формулировка остаточного обучения обеспечивает дополнительное преимущество, позволяя в некоторой степени решить проблему исчезающего градиента . Однако крайне важно признать, что проблема исчезновения градиента не является основной причиной проблемы деградации, поскольку она уже решена с помощью слоев нормализации. Взяв производную относительно указанного выше прямого распространения, мы имеем: [9]
Вот функция потерь, которую необходимо минимизировать. Эта формулировка предполагает, что при вычислении градиента более мелкого слоя всегда добавляется член , который добавляется напрямую. Даже если градиенты членов невелики, общий градиент не исчезает благодаря добавленному члену .
Базовый блок — это самый простой строительный блок, изученный в оригинальной ResNet. [1] Этот блок состоит из двух последовательных сверточных слоев 3х3 и остаточного соединения. Входные и выходные размеры обоих слоев равны.
Блок «Узкое место» [1] состоит из трех последовательных сверточных слоев и остаточного соединения. Первый слой в этом блоке представляет собой свертку 1x1 для уменьшения размерности, например, до 1/4 входного измерения; второй слой выполняет свертку 3x3; последний слой — это еще одна свертка 1x1 для восстановления размеров. Все модели ResNet-50, ResNet-101 и ResNet-152 в [1] основаны на блоках узких мест.
Блок невязки предварительной активации [9] применяет функции активации (например, нелинейность и нормализацию) перед применением функции невязки . Формально вычисление остаточного блока предварительной активации можно записать как:
где может быть любая операция активации нелинейности (например, ReLU ) или нормализации (например, LayerNorm). Такая конструкция уменьшает количество неидентичных сопоставлений между остаточными блоками. Этот дизайн использовался для обучения моделей с количеством слоев от 200 до более 1000. [9]
Начиная с GPT-2 , блоки- трансформеры преимущественно реализовывались как блоки предварительной активации. В литературе по моделям Трансформеров это часто называют «предварительной нормализацией». [10]
Блок - трансформер представляет собой набор из двух остаточных блоков. Каждый остаточный блок имеет остаточное соединение.
Первый остаточный блок — это многоголовый блок внимания , который выполняет вычисление (само) внимания, за которым следует линейная проекция.
Второй остаточный блок представляет собой блок многослойного персептрона с прямой связью ( MLP ) . Этот блок аналогичен «обратному» блоку узкого места: он имеет слой линейной проекции (который эквивалентен свертке 1x1 в контексте сверточных нейронных сетей), который увеличивает размерность, и еще одну линейную проекцию, которая уменьшает размерность.
Блок Трансформатора имеет глубину 4 слоев (линейных проекций). Модель GPT-3 имеет 96 блоков-трансформеров (в литературе по трансформерам блок-трансформер часто называют «слоем трансформатора»). Эта модель имеет глубину около 400 слоев проекции, включая слои 96x4 в блоках-трансформерах и несколько дополнительных слоев для внедрения входных данных и прогнозирования выходных данных.
Очень глубокие модели Трансформаторов не могут быть успешно обучены без Остаточных Связей. [11]
В 1961 году Фрэнк Розенблатт описал модель трехслойного многослойного перцептрона (MLP) с пропускаемыми соединениями. [12] Модель называлась «системой с перекрестной связью», а пропускные соединения представляли собой формы перекрестных соединений.
В двух книгах, опубликованных в 1994 [13] и 1996 годах, [14] связи «пропущенного уровня» были представлены в моделях MLP с прямой связью: « Общее определение [MLP] допускает более одного скрытого слоя, а также допускает» «соединения пропуска слоев от входа к выходу » (p261 в, [13] p144 в [14] ), «... что позволяет нелинейным блокам нарушать линейную функциональную форму » (p262 в [13] ). Это описание предполагает, что нелинейная MLP работает как функция невязки (возмущения), добавленная к линейной функции.
Зепп Хохрайтер проанализировал проблему исчезающего градиента в 1991 году и объяснил, почему глубокое обучение не работает должным образом. [15] Чтобы решить эту проблему, рекуррентные нейронные сети с длинной краткосрочной памятью (LSTM) [3] имели пропущенные соединения или остаточные соединения с весом 1,0 в каждой ячейке LSTM (так называемая карусель с постоянными ошибками) для вычисления . Во время обратного распространения ошибки во времени это становится вышеупомянутой остаточной формулой для нейронных сетей прямого распространения. Это позволяет обучать очень глубокие рекуррентные нейронные сети в течение очень длительного периода времени. Более поздняя версия LSTM, опубликованная в 2000 году [16], модулирует идентификационные соединения LSTM с помощью так называемых шлюзов забывания, так что их веса не фиксированы на 1,0, но могут быть изучены. В экспериментах ворота забывания инициализировались с положительными весами смещения, [16] таким образом открывались, решая проблему исчезновения градиента.
Сеть автомагистралей в мае 2015 года [2] [17] применяет эти принципы к нейронным сетям прямого распространения . Сообщалось, что это «первая очень глубокая сеть прямой связи с сотнями слоев». [18] Это похоже на LSTM с развернутыми во времени воротами забывания , [16] в то время как более поздние остаточные сети не имеют эквивалента шлюзов забывания и похожи на развернутый исходный LSTM. [3] Если соединения пропуска в сетях автомагистралей «без ворот» или если их ворота остаются открытыми (активация 1.0) благодаря сильным положительным весам смещения, они становятся идентификационными соединениями пропуска в остаточных сетях.
В оригинальной статье «Сеть шоссе» [2] не только были представлены основные принципы очень глубоких сетей прямого распространения, но также были включены экспериментальные результаты с сетями с 20, 50 и 100 слоями, а также упомянуты текущие эксперименты с числом слоев до 900. Сети с 50 или 100 слоями имели меньшую ошибку обучения, чем их простые сетевые аналоги, но не меньшую ошибку обучения, чем их аналог с 20 слоями (в наборе данных MNIST, рисунок 1 в [2] ). Никакого улучшения точности тестирования не наблюдалось в сетях с глубиной более 19 слоев (в наборе данных CIFAR-10; таблица 1 в [2] ). Однако статья ResNet [9] предоставила убедительные экспериментальные доказательства преимуществ проникновения глубже 20 слоев. Он утверждал, что тождественное отображение без модуляции имеет решающее значение, и упомянул, что модуляция в пропускном соединении все еще может приводить к исчезновению сигналов при прямом и обратном распространении (раздел 3 в [9] ). По этой же причине ворота забывания LSTM 2000 года [16] изначально открывались посредством положительных весов смещения: пока ворота открыты, он ведет себя как LSTM 1997 года. Аналогично, сеть Highway Net, ворота которой открываются благодаря сильно положительным весам смещения, ведет себя как ResNet. Пропускные соединения, используемые в современных нейронных сетях (например, Трансформерах ), преимущественно представляют собой тождественные сопоставления.
DenseNets в 2016 году [19] были разработаны как глубокие нейронные сети, которые пытаются соединить каждый уровень с каждым другим слоем. DenseNets подошла к этой цели, используя сопоставления идентификаторов в качестве пропускных соединений. В отличие от ResNets, DenseNets объединяют выходные данные слоев с пропуском соединений путем конкатенации, а не сложения.
Нейронные сети со стохастической глубиной [20] стали возможными благодаря архитектуре остаточной сети. Эта процедура обучения случайным образом удаляет подмножество слоев и позволяет сигналу распространяться через соединение с пропуском идентификаторов. Это эффективный метод регуляризации, также известный как «DropPath», для обучения больших и глубоких моделей, таких как Vision Transformer (ViT).
В оригинальной статье «Остаточная сеть» не утверждалось, что она вдохновлена биологическими системами. Но более поздние исследования связали Остаточные сети с биологически правдоподобными алгоритмами.[21] [22]
Исследование, опубликованное в журнале Science в 2023 году [23] , раскрыло полный коннектом мозга насекомого (личинки плодовой мухи). В ходе этого исследования были обнаружены « многослойные ярлыки », напоминающие пропускные соединения в искусственных нейронных сетях, включая ResNet.