Батч-нормализация

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: {{well|Статья написана с использованием LLM '''Claude Sonnet 5''' и проверена участником Daria Makeeva...)
 
Строка 1: Строка 1:
-
{{well|Статья написана с использованием LLM '''Claude Sonnet 5''' и проверена участником [[Участник:Daria Makeeva|Daria Makeeva]] 01:30, 17 июля 2026 (MSD)
+
{{well|Статья объединена из версий, написанных с использованием LLM '''GPT-4 Turbo''' (проверена участником [[Участник:Amir Baidanov|Amir Baidanov]]) и '''Claude Sonnet 5''' (проверена участником [[Участник:Daria Makeeva|Daria Makeeva]])}}
-
}}
+
{{TOCright}}
{{TOCright}}
-
'''Батч-нормализация''' (англ. batch normalization, BatchNorm) — метод регуляризации и ускорения обучения глубоких [[Искусственная нейронная сеть|нейронных сетей]], основанный на нормализации активаций промежуточных слоёв по статистикам (среднему и дисперсии), вычисленным внутри мини-батча обучающих примеров. Метод предложен Сергеем Иоффе и Кристианом Сегеди в 2015 году и стал одним из наиболее широко применяемых приёмов стабилизации обучения глубоких сетей<ref name="ioffe2015">{{статья |автор=Ioffe S., Szegedy C. |заглавие=Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift |издание=Proceedings of the 32nd International Conference on Machine Learning (ICML) |год=2015 |том=37 |страницы=448–456}}</ref>.
+
'''Батч-нормализация''' (англ. batch normalization, BatchNorm; также встречается название '''пакетная нормализация''') — метод регуляризации и ускорения обучения глубоких [[Искусственная нейронная сеть|нейронных сетей]], основанный на нормализации активаций промежуточных слоёв по статистикам (среднему и дисперсии), вычисленным внутри мини-батча обучающих примеров, с последующим обучаемым сдвигом и масштабированием. Метод предложен Сергеем Иоффе и Кристианом Сегеди в 2015 году<ref name="ioffe2015">{{статья |автор=Ioffe S., Szegedy C. |заглавие=Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift |издание=Proceedings of the 32nd International Conference on Machine Learning (ICML) |год=2015 |том=37 |страницы=448–456}}</ref> и стал одним из наиболее широко применяемых приёмов стабилизации обучения глубоких сетей, позволившим использовать высокие [[скорость обучения|скорости обучения]] и снизившим чувствительность к инициализации весов.
== Интуитивное объяснение проблемы ==
== Интуитивное объяснение проблемы ==
-
По мере обучения глубокой сети параметры каждого слоя постоянно меняются, а значит, меняется и распределение значений, поступающих на вход следующего слоя — даже если распределение исходных обучающих данных остаётся неизменным. Авторы метода назвали это явление '''внутренним ковариационным сдвигом''' (internal covariate shift): каждый слой должен непрерывно «подстраиваться» под меняющееся распределение своих входов, что замедляет и усложняет обучение, особенно при использовании насыщающихся функций активации и высоких скоростей обучения<ref name="ioffe2015"/>.
+
По мере обучения глубокой сети параметры каждого слоя постоянно меняются, а значит, меняется и распределение значений, поступающих на вход следующего слоя, — даже если распределение исходных обучающих данных остаётся неизменным. Авторы метода назвали это явление '''внутренним ковариационным сдвигом''' (internal covariate shift): каждый слой должен непрерывно «подстраиваться» под меняющееся распределение своих входов, что замедляет и усложняет обучение, особенно при использовании насыщающихся функций активации и высоких скоростей обучения<ref name="ioffe2015"/>.
-
Интуитивно ситуацию можно сравнить с попыткой попасть в постоянно перемещающуюся цель: если распределение входов слоя постоянно «дрейфует» из-за обновления весов предыдущих слоёв, оптимизатору приходится не только находить хорошие веса для текущего слоя, но и без конца компенсировать этот дрейф. Батч-нормализация решает эту проблему напрямую: активации каждого слоя явно приводятся к фиксированному распределению (нулевое среднее, единичная дисперсия) на каждом шаге обучения, независимо от того, как изменились веса предыдущих слоёв.
+
Ситуацию можно сравнить с попыткой попасть в постоянно перемещающуюся цель: если распределение входов слоя непрерывно «дрейфует» из-за обновления весов предыдущих слоёв, оптимизатору приходится не только находить хорошие веса для текущего слоя, но и без конца компенсировать этот дрейф. Другая полезная аналогия — настройка микроскопа: если изображение постоянно дрожит, сфокусироваться трудно, но стоит его стабилизировать — и настройка становится намного проще и быстрее. Батч-нормализация решает проблему напрямую: активации каждого слоя явно приводятся к фиксированному распределению (нулевое среднее, единичная дисперсия) на каждом шаге обучения, независимо от того, как изменились веса предыдущих слоёв. Как следствие, сглаживается и [[ландшафт функции потерь]], что делает поведение градиента более предсказуемым.
 +
 
 +
== Историческая справка ==
 +
До появления BatchNorm глубокие сети было трудно обучать из-за проблем с [[проблема затухающего градиента|затухающими]] и [[проблема взрыва градиента|взрывающимися градиентами]]; требовались тщательная инициализация весов<ref name="glorot2010">{{статья |автор=Glorot X., Bengio Y. |заглавие=Understanding the difficulty of training deep feedforward neural networks |издание=Proceedings of the 13th International Conference on Artificial Intelligence and Statistics |год=2010 |страницы=249–256}}</ref> и заведомо низкие скорости обучения.
 +
 
 +
Иоффе и Сегеди представили батч-нормализацию на конференции ICML 2015, объяснив её эффективность именно уменьшением внутреннего ковариационного сдвига: по их гипотезе, стабилизация распределения входов каждого слоя позволяет использовать значительно более высокие скорости обучения, снижает зависимость результата от точной схемы инициализации и даже оказывает регуляризующий эффект, в ряде случаев позволяя отказаться от [[дропаут|дропаута]]<ref name="ioffe2015"/>. Метод быстро стал стандартом при обучении [[свёрточная нейронная сеть|свёрточных нейронных сетей]] и был использован в архитектурах, установивших новые рекорды на [[ImageNet]] (Inception, ResNet).
 +
 
 +
=== Пересмотр объяснения эффективности ===
 +
Спустя три года объяснение через ковариационный сдвиг подверглось существенному пересмотру. Сантуркар, Циприс, Ильяс и Мадри (2018) экспериментально показали, что степень внутреннего ковариационного сдвига в сетях с батч-нормализацией и без неё практически не различается, то есть уменьшение ковариационного сдвига не может служить основной причиной успеха метода. Авторы предложили альтернативное объяснение: батч-нормализация делает '''ландшафт функции потерь значительно более гладким''' — уменьшает константу Липшица функции потерь и её градиента по направлению обучения, — что делает поведение градиента более предсказуемым и позволяет использовать бо́льшие шаги обучения без потери устойчивости<ref name="santurkar2018">{{статья |автор=Santurkar S., Tsipras D., Ilyas A., Madry A. |заглавие=How Does Batch Normalization Help Optimization? |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1805.11604 |страницы=2488–2498}}</ref>. Таким образом, современное понимание механизма действия батч-нормализации основано в первую очередь на сглаживании оптимизационного ландшафта, а не на устранении ковариационного сдвига, как предполагалось изначально.
== Формальное определение ==
== Формальное определение ==
-
Пусть <tex>\mathcal{B} = \{x_1, \dots, x_m\}</tex> — мини-батч значений некоторой активации (одного нейрона или одного канала свёрточного слоя) размера <tex>m</tex>. Батч-нормализация вычисляет выборочное среднее и дисперсию по батчу:
+
Пусть <tex>\mathcal{B} = \{x_1, \dots, x_m\}</tex> — мини-батч значений некоторой активации (одного нейрона или одного канала свёрточного слоя) размера <tex>m</tex>.
 +
=== 1. Статистики по мини-батчу ===
: <tex>\mu_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} x_i, \qquad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2</tex>
: <tex>\mu_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} x_i, \qquad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2</tex>
-
и нормализует каждое значение:
+
=== 2. Нормализация ===
-
 
+
: <tex>\hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \varepsilon}}</tex>
: <tex>\hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \varepsilon}}</tex>
-
где <tex>\varepsilon > 0</tex> — малая константа, предотвращающая деление на ноль. Наконец, нормализованное значение подвергается обучаемому афинному преобразованию:
+
где <tex>\varepsilon > 0</tex> — малая константа (например, <tex>10^{-5}</tex>), предотвращающая деление на ноль.
 +
=== 3. Сдвиг и масштабирование ===
: <tex>y_i = \gamma \hat{x}_i + \beta</tex>
: <tex>y_i = \gamma \hat{x}_i + \beta</tex>
-
где <tex>\gamma</tex> (масштаб) и <tex>\beta</tex> (сдвиг) — параметры, обучаемые совместно с остальными весами сети методом обратного распространения ошибки<ref name="ioffe2015"/>. Роль этих параметров принципиальна: без них слой был бы вынужден всегда выдавать активации с нулевым средним и единичной дисперсией, что ограничивало бы выразительность сети. Параметры <tex>\gamma</tex> и <tex>\beta</tex> позволяют сети самой выучить, нужна ли строгая нормализация — если оптимальным решением является исходное распределение активаций, сеть может настроить <tex>\gamma \approx \sigma_{\mathcal{B}}</tex> и <tex>\beta \approx \mu_{\mathcal{B}}</tex>, фактически отменив нормализацию<ref name="ioffe2015"/>.
+
где <tex>\gamma</tex> (масштаб) и <tex>\beta</tex> (сдвиг) — параметры, обучаемые совместно с остальными весами сети методом [[обратное распространение ошибки|обратного распространения ошибки]]<ref name="ioffe2015"/>. Роль этих параметров принципиальна: без них слой был бы вынужден всегда выдавать активации с нулевым средним и единичной дисперсией, что ограничивало бы выразительность сети. Параметры <tex>\gamma</tex> и <tex>\beta</tex> позволяют сети самой выучить, нужна ли строгая нормализация, — если оптимальным решением является исходное распределение активаций, сеть может настроить <tex>\gamma \approx \sigma_{\mathcal{B}}</tex> и <tex>\beta \approx \mu_{\mathcal{B}}</tex>, фактически отменив нормализацию<ref name="ioffe2015"/>.
== Обучение и инференс ==
== Обучение и инференс ==
-
На этапе обучения статистики <tex>\mu_{\mathcal{B}}</tex> и <tex>\sigma^2_{\mathcal{B}}</tex> пересчитываются заново для каждого мини-батча, что делает выход слоя зависящим не только от текущего примера, но и от остальных примеров в батче этот эффект также действует как форма регуляризации, слегка зашумляя активации на каждом шаге обучения<ref name="ioffe2015"/>.
+
На этапе обучения статистики <tex>\mu_{\mathcal{B}}</tex> и <tex>\sigma^2_{\mathcal{B}}</tex> пересчитываются заново для каждого мини-батча, что делает выход слоя зависящим не только от текущего примера, но и от остальных примеров в батче; этот эффект также действует как форма регуляризации, слегка зашумляя активации на каждом шаге обучения. Шум, вносимый случайностью выбора мини-батча, аналогичен по действию дропауту, и на практике использование BatchNorm может снижать потребность в дропауте или позволять уменьшать коэффициенты регуляризации<ref name="ioffe2015"/>. Важно, однако, понимать, что этот эффект является побочным: при увеличении размера мини-батча шум уменьшается, и регуляризация ослабевает.
-
На этапе инференса (применения обученной модели) такой подход неприменим: модель должна давать детерминированный результат для одного примера, а состав «батча» может быть произвольным или отсутствовать вовсе. Поэтому во время обучения параллельно накапливаются '''скользящие средние''' (running statistics) статистик по всем виденным батчам:
+
На этапе инференса (применения обученной модели) такой подход неприменим: модель должна давать детерминированный результат для одного примера, а состав «батча» может быть произвольным или отсутствовать вовсе. Поэтому во время обучения параллельно накапливаются '''скользящие средние''' (running statistics) по всем виденным батчам:
: <tex>\mu_{\text{run}} \leftarrow (1-\alpha)\,\mu_{\text{run}} + \alpha\, \mu_{\mathcal{B}}, \qquad \sigma^2_{\text{run}} \leftarrow (1-\alpha)\,\sigma^2_{\text{run}} + \alpha\, \sigma^2_{\mathcal{B}}</tex>
: <tex>\mu_{\text{run}} \leftarrow (1-\alpha)\,\mu_{\text{run}} + \alpha\, \mu_{\mathcal{B}}, \qquad \sigma^2_{\text{run}} \leftarrow (1-\alpha)\,\sigma^2_{\text{run}} + \alpha\, \sigma^2_{\mathcal{B}}</tex>
-
где <tex>\alpha</tex> — коэффициент экспоненциального сглаживания. На этапе инференса нормализация выполняется с использованием этих накопленных статистик <tex>\mu_{\text{run}}</tex>, <tex>\sigma^2_{\text{run}}</tex> вместо статистик текущего батча, что делает преобразование детерминированным и не зависящим от других примеров<ref name="ioffe2015"/>.
+
где <tex>\alpha</tex> — коэффициент экспоненциального сглаживания (обычно 0.9 или 0.99). На этапе инференса нормализация выполняется по этим накопленным статистикам, а не по статистикам текущего батча:
-
== Связь с проблемой затухающего и взрывающегося градиента ==
+
: <tex>y = \gamma \frac{x - \mu_{\text{run}}}{\sqrt{\sigma^2_{\text{run}} + \varepsilon}} + \beta</tex>
-
Батч-нормализация тесно связана с [[Проблема затухающего градиента|проблемой затухающего градиента]] (vanishing gradient problem). Насыщающиеся функции активации, такие как сигмоида и гиперболический тангенс, имеют производную, близкую к нулю при больших по модулю значениях входа; если активации слоя дрейфуют в область насыщения, производные становятся исчезающе малыми, и градиент, умножаясь на них при обратном распространении ошибки, затухает по мере прохождения через слои. Явно удерживая распределение активаций центрированным около нуля с единичной дисперсией, батч-нормализация удерживает бо́льшую часть значений в области, где производная функции активации далека от нуля, что ослабляет как затухание, так и потенциальный неконтролируемый рост градиента при обратном распространении<ref name="ioffe2015"/>. Кроме того, авторы отмечали, что батч-нормализация делает сеть более устойчивой к масштабу весов: при масштабировании весов слоя на константу выход нормализующего преобразования не меняется, что стабилизирует величину градиента по параметрам и позволяет использовать более высокие скорости обучения без риска расходимости<ref name="ioffe2015"/>.
+
-
== История и пересмотр объяснения эффективности ==
+
что делает преобразование детерминированным и не зависящим от других примеров. При этом параметры <tex>\gamma</tex> и <tex>\beta</tex>, как и <tex>\mu_{\text{run}}</tex>, <tex>\sigma^2_{\text{run}}</tex>, на инференсе остаются фиксированными.
-
Иоффе и Сегеди представили батч-нормализацию на конференции ICML 2015, объяснив её эффективность именно уменьшением внутреннего ковариационного сдвига: по их гипотезе, стабилизация распределения входов каждого слоя позволяет использовать значительно более высокие скорости обучения и снижает зависимость результата от точной схемы инициализации весов, при этом ускоряя сходимость сетей на порядок по числу шагов обучения по сравнению с сетями без батч-нормализации<ref name="ioffe2015"/>.
+
-
Спустя три года это объяснение подверглось существенному пересмотру. Сантуркар, Циприс, Ильяс и Мадри (2018) экспериментально показали, что степень внутреннего ковариационного сдвига в сетях с батч-нормализацией и без неё практически не различается, то есть уменьшение ковариационного сдвига не может служить основной причиной успеха метода. Авторы предложили альтернативное объяснение: батч-нормализация делает '''ландшафт функции потерь значительно более гладким''' — уменьшает константу Липшица функции потерь и её градиента по направлению обучения, что делает поведение градиента более предсказуемым и позволяет использовать бо́льшие шаги обучения без потери устойчивости<ref name="santurkar2018">{{статья |автор=Santurkar S., Tsipras D., Ilyas A., Madry A. |заглавие=How Does Batch Normalization Help Optimization? |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1805.11604}}</ref>. Таким образом, современное понимание механизма действия батч-нормализации основано в первую очередь на сглаживании оптимизационного ландшафта, а не на устранении ковариационного сдвига, как предполагалось изначально.
+
== Связь с затуханием и взрывом градиента ==
 +
Батч-нормализация тесно связана с [[Проблема затухающего градиента|проблемой затухающего градиента]] (vanishing gradient problem). Насыщающиеся функции активации, такие как сигмоида и гиперболический тангенс, имеют производную, близкую к нулю при больших по модулю значениях входа; если активации слоя дрейфуют в область насыщения, производные становятся исчезающе малыми, и градиент, умножаясь на них при обратном распространении ошибки, затухает по мере прохождения через слои. Явно удерживая распределение активаций центрированным около нуля с единичной дисперсией, батч-нормализация удерживает бо́льшую часть значений в области, где производная функции активации далека от нуля, что ослабляет как затухание, так и потенциальный неконтролируемый рост градиента<ref name="ioffe2015"/>. Кроме того, батч-нормализация делает сеть более устойчивой к масштабу весов: при масштабировании весов слоя на константу выход нормализующего преобразования не меняется, что стабилизирует величину градиента по параметрам и позволяет использовать более высокие скорости обучения без риска расходимости<ref name="ioffe2015"/>.
-
== Практические аспекты и зависимость от размера батча ==
+
== Практические рекомендации ==
-
Поскольку статистики <tex>\mu_{\mathcal{B}}</tex> и <tex>\sigma^2_{\mathcal{B}}</tex> вычисляются как выборочные оценки по конечному мини-батчу, качество этих оценок напрямую зависит от размера батча <tex>m</tex>. При малых значениях <tex>m</tex> (например, 2–4 примера) оценки среднего и дисперсии становятся шумными и нестабильными от шага к шагу, что ухудшает качество обучения и итоговую точность модели; этот эффект особенно заметен в задачах, где большой размер батча невозможен по памяти — например, при обучении на изображениях высокого разрешения или трёхмерных данных<ref name="wu2018">{{статья |автор=Wu Y., He K. |заглавие=Group Normalization |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2018 |страницы=3–19}}</ref>. Кроме того, батч-нормализация плохо сочетается с [[Рекуррентная нейронная сеть|рекуррентными нейронными сетями]], поскольку статистики приходится вычислять и хранить отдельно для каждого временного шага, а длина последовательностей в батче может различаться<ref name="ba2016">{{статья |автор=Ba J.L., Kiros J.R., Hinton G.E. |заглавие=Layer Normalization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.06450}}</ref>.
+
=== Расположение в архитектуре ===
 +
Традиционно BatchNorm применяется перед [[функция активации|функцией активации]]:
 +
 
 +
: <tex>y = \text{BN}(Wx + b) \;\to\; \text{ReLU}(y)</tex>
 +
 
 +
Некоторые исследователи рекомендуют применять нормализацию после активации; на практике оба варианта работают, но стандартом остаётся применение перед активацией.
 +
 
 +
=== Взаимодействие с другими методами ===
 +
* '''С дропаутом''': поскольку BatchNorm уже оказывает регуляризующий эффект, коэффициент дропаута обычно можно уменьшить;
 +
* '''С [[L2-регуляризация|L2-регуляризацией]]''': методы работают совместно, но может потребоваться перенастройка коэффициента регуляризации;
 +
* '''С [[инициализация весов|инициализацией весов]]''': BatchNorm снижает чувствительность сети к выбору схемы инициализации.
 +
 
 +
=== Совместимость с архитектурами ===
 +
* '''В [[свёрточная нейронная сеть|CNN]]''' — нормализация выполняется по batch-измерению отдельно для каждого канала (фильтра);
 +
* '''В [[многослойный персептрон|MLP]]''' — нормализация выполняется отдельно для каждого нейрона;
 +
* '''В [[рекуррентная нейронная сеть|RNN]]''' — применение затруднительно (см. раздел «Ограничения»).
 +
 
 +
=== Зависимость от размера мини-батча ===
 +
Поскольку статистики <tex>\mu_{\mathcal{B}}</tex> и <tex>\sigma^2_{\mathcal{B}}</tex> — это выборочные оценки по конечному мини-батчу, их качество напрямую зависит от размера батча <tex>m</tex>. При малых значениях <tex>m</tex> (например, 2–8 примеров) оценки среднего и дисперсии становятся шумными и нестабильными от шага к шагу, что ухудшает качество обучения и итоговую точность модели. Этот эффект особенно заметен в задачах, где большой батч невозможен по памяти, — например, при обучении на изображениях высокого разрешения, трёхмерных данных или в медицинской диагностике с ограниченным числом объектов. На практике рекомендуется использовать мини-батчи размером не менее 16–32 объектов.
 +
 
 +
== Ограничения ==
 +
=== Малый размер батча ===
 +
Как отмечено выше, BatchNorm плохо работает с маленькими мини-батчами: шумные оценки статистик ухудшают качество обучения.
 +
 
 +
=== Проблемы с рекуррентными сетями ===
 +
В [[рекуррентная нейронная сеть|RNN]] статистики приходится вычислять и хранить отдельно для каждого временного шага, а длина последовательностей в батче может различаться, что делает применение BatchNorm затруднительным<ref name="ba2016">{{статья |автор=Ba J.L., Kiros J.R., Hinton G.E. |заглавие=Layer Normalization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.06450}}</ref>. Хотя существуют модификации BatchNorm для RNN, LayerNorm обычно даёт лучшие результаты.
 +
 
 +
=== Расхождение статистик обучения и инференса ===
 +
При инференсе используются фиксированные скользящие среднее и дисперсия, накопленные на обучающей выборке. Если распределение данных на инференсе отличается от обучающего (сдвиг распределения, distribution shift), это может привести к заметному ухудшению качества.
 +
 
 +
=== Отсутствие гарантированного улучшения ===
 +
BatchNorm не всегда даёт выигрыш в качестве: при обучении очень больших моделей или на очень больших наборах данных эффект может быть менее заметным, а иногда даже отрицательным.
== Альтернативные виды нормализации ==
== Альтернативные виды нормализации ==
-
Для случаев, где батч-нормализация работает плохо (малый размер батча, рекуррентные архитектуры, независимость статистик от батча), были предложены альтернативные схемы, различающиеся тем, по каким измерениям тензора активаций вычисляются статистики нормализации.
+
Для случаев, где батч-нормализация работает плохо (малый размер батча, рекуррентные архитектуры, потребность в независимости статистик от батча), были предложены альтернативные схемы, различающиеся тем, по каким измерениям тензора активаций вычисляются статистики нормализации.
{| class="wikitable"
{| class="wikitable"
Строка 56: Строка 94:
| [[Layer normalization|Layer normalization]] || По всем каналам/признакам одного примера, независимо от батча || Рекуррентные сети, трансформеры — не зависит от размера батча<ref name="ba2016"/>
| [[Layer normalization|Layer normalization]] || По всем каналам/признакам одного примера, независимо от батча || Рекуррентные сети, трансформеры — не зависит от размера батча<ref name="ba2016"/>
|-
|-
-
| [[Instance normalization|Instance normalization]] || По пространственным измерениям (высота, ширина) отдельно для каждого канала и каждого примера || Перенос стиля изображений (style transfer), генеративные модели изображений<ref name="ulyanov2016">{{статья |автор=Ulyanov D., Vedaldi A., Lempitsky V. |заглавие=Instance Normalization: The Missing Ingredient for Fast Stylization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.08022}}</ref>
+
| [[Instance normalization|Instance normalization]] || По пространственным измерениям (высота, ширина) отдельно для каждого канала и каждого примера || Перенос стиля изображений (style transfer), генеративные модели<ref name="ulyanov2016">{{статья |автор=Ulyanov D., Vedaldi A., Lempitsky V. |заглавие=Instance Normalization: The Missing Ingredient for Fast Stylization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.08022}}</ref>
|-
|-
-
| [[Group normalization|Group normalization]] || По пространственным измерениям и подгруппе каналов, независимо от батча || Сети с малым размером батча (детекция, сегментация, видео)<ref name="wu2018"/>
+
| [[Group normalization|Group normalization]] || По пространственным измерениям и подгруппе каналов, независимо от батча || Сети с малым размером батча (детекция, сегментация, видео)<ref name="wu2018">{{статья |автор=Wu Y., He K. |заглавие=Group Normalization |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2018 |страницы=3–19}}</ref>
 +
|-
 +
| [[Weight normalization|Weight normalization]] || Нормализуются веса слоя, а не активации || Ускорение сходимости без зависимости от статистики батча<ref name="salimans2016">{{статья |автор=Salimans T., Kingma D.P. |заглавие=Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2016 |том=29 |страницы=901–909}}</ref>
|}
|}
-
'''Layer normalization''' нормализует активации по всем признакам одного примера (а не по батчу), что делает её результат не зависящим от размера батча и позволяет применять один и тот же расчёт как на этапе обучения, так и на этапе инференса без накопления скользящих статистик<ref name="ba2016"/>. '''Instance normalization''' была предложена для задач переноса стиля и нормализует каждый канал каждого отдельного изображения независимо, что убирает информацию о контрасте конкретного изображения, мешающую переносу стиля<ref name="ulyanov2016"/>. '''Group normalization''' занимает промежуточное положение: каналы разбиваются на группы, и статистики вычисляются внутри каждой группы для каждого отдельного примера — при этом group normalization переходит в layer normalization, если число групп равно 1, и в instance normalization, если число групп равно числу каналов; авторы показали, что этот метод даёт заметно лучшую точность, чем batch normalization, при очень малых размерах батча (например, при батче из двух примеров ошибка ResNet-50 на ImageNet снижается на 10,6 процентных пункта)<ref name="wu2018"/>.
+
'''Layer normalization''' нормализует активации по всем признакам одного примера (а не по батчу), что делает её результат не зависящим от размера батча и позволяет применять один и тот же расчёт как на этапе обучения, так и на этапе инференса без накопления скользящих статистик<ref name="ba2016"/>. '''Instance normalization''' была предложена для задач переноса стиля и нормализует каждый канал каждого отдельного изображения независимо, что убирает информацию о контрасте конкретного изображения, мешающую переносу стиля<ref name="ulyanov2016"/>. '''Group normalization''' занимает промежуточное положение: каналы разбиваются на группы, и статистики вычисляются внутри каждой группы для каждого отдельного примера, — group normalization переходит в layer normalization при числе групп, равном 1, и в instance normalization, если число групп равно числу каналов; авторы показали, что этот метод даёт заметно лучшую точность, чем batch normalization, при очень малых размерах батча (например, при батче из двух примеров ошибка ResNet-50 на ImageNet снижается на 10,6 процентных пункта)<ref name="wu2018"/>. '''Weight normalization''' идёт другим путём и нормализует не активации, а веса слоя, используя параметризацию <tex>w = g \cdot v / \|v\|</tex>, где <tex>g</tex> и <tex>v</tex> — обучаемые параметры<ref name="salimans2016"/>.
 +
 
 +
== Пример: влияние на распределения активаций ==
 +
Рассмотрим простую сеть из 5 полносвязных слоёв по 100 нейронов в каждом, обучаемую на данных с нормальным распределением.
 +
 
 +
'''Без BatchNorm:'''
 +
* активации первых слоёв имеют распределение с небольшим разбросом;
 +
* активации последних слоёв сильно растягиваются, их значения могут достигать сотен;
 +
* градиенты в последних слоях становятся очень маленькими или очень большими;
 +
* обучение требует низкой скорости обучения (<tex>10^{-3}</tex>).
 +
 
 +
'''С BatchNorm:'''
 +
* активации всех слоёв имеют распределение, близкое к <tex>\mathcal{N}(0,1)</tex>;
 +
* градиенты остаются стабильными;
 +
* можно использовать высокую скорость обучения (<tex>10^{-1}</tex>);
 +
* сеть сходится за в 2–3 раза меньшее число эпох.
 +
 
 +
Пример иллюстрирует ключевое практическое преимущество BatchNorm: стабилизация распределений активаций позволяет обучать сети значительно быстрее.
 +
 
 +
== Краткий вывод ==
 +
Батч-нормализация — метод, значительно ускоривший обучение глубоких нейронных сетей за счёт стабилизации распределений активаций по мини-батчу и последующего обучаемого сдвига и масштабирования. Она снижает зависимость от инициализации весов, позволяет использовать высокие скорости обучения и оказывает побочный регуляризующий эффект. Изначально эффективность метода объяснялась снижением внутреннего ковариационного сдвига, однако более поздние исследования показали, что определяющую роль играет сглаживание ландшафта функции потерь. Метод требует достаточно большого размера мини-батча и плохо подходит для задач с переменной длиной последовательностей (RNN) или при малых батчах; для этих случаев были предложены альтернативы — Layer, Instance, Group и Weight normalization, каждая со своей областью применения.
== См. также ==
== См. также ==
 +
* [[Нормализация данных]]
* [[Проблема затухающего градиента]]
* [[Проблема затухающего градиента]]
 +
* [[Дропаут]]
 +
* [[Регуляризация]]
* [[Остаточные связи]]
* [[Остаточные связи]]
* [[Свёрточная нейронная сеть]]
* [[Свёрточная нейронная сеть]]
Строка 70: Строка 133:
* [[ReLU]]
* [[ReLU]]
* [[Обратное распространение ошибки]]
* [[Обратное распространение ошибки]]
 +
* [[Layer normalization]]
 +
* [[Instance normalization]]
 +
* [[Group normalization]]
 +
* [[Weight normalization]]
== Примечания ==
== Примечания ==
Строка 76: Строка 143:
== Литература ==
== Литература ==
* {{статья |автор=Ioffe S., Szegedy C. |заглавие=Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift |издание=Proceedings of the 32nd International Conference on Machine Learning (ICML) |год=2015 |том=37 |страницы=448–456}}
* {{статья |автор=Ioffe S., Szegedy C. |заглавие=Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift |издание=Proceedings of the 32nd International Conference on Machine Learning (ICML) |год=2015 |том=37 |страницы=448–456}}
-
* {{статья |автор=Santurkar S., Tsipras D., Ilyas A., Madry A. |заглавие=How Does Batch Normalization Help Optimization? |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1805.11604}}
+
* {{статья |автор=Santurkar S., Tsipras D., Ilyas A., Madry A. |заглавие=How Does Batch Normalization Help Optimization? |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2018 |том=31 |номер=arXiv:1805.11604 |страницы=2488–2498}}
* {{статья |автор=Ba J.L., Kiros J.R., Hinton G.E. |заглавие=Layer Normalization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.06450}}
* {{статья |автор=Ba J.L., Kiros J.R., Hinton G.E. |заглавие=Layer Normalization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.06450}}
* {{статья |автор=Ulyanov D., Vedaldi A., Lempitsky V. |заглавие=Instance Normalization: The Missing Ingredient for Fast Stylization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.08022}}
* {{статья |автор=Ulyanov D., Vedaldi A., Lempitsky V. |заглавие=Instance Normalization: The Missing Ingredient for Fast Stylization |издание=arXiv preprint |год=2016 |номер=arXiv:1607.08022}}
* {{статья |автор=Wu Y., He K. |заглавие=Group Normalization |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2018 |страницы=3–19}}
* {{статья |автор=Wu Y., He K. |заглавие=Group Normalization |издание=Proceedings of the European Conference on Computer Vision (ECCV) |год=2018 |страницы=3–19}}
 +
* {{статья |автор=Salimans T., Kingma D.P. |заглавие=Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks |издание=Advances in Neural Information Processing Systems (NeurIPS) |год=2016 |том=29 |страницы=901–909}}
 +
* {{статья |автор=Glorot X., Bengio Y. |заглавие=Understanding the difficulty of training deep feedforward neural networks |издание=Proceedings of the 13th International Conference on Artificial Intelligence and Statistics |год=2010 |страницы=249–256}}
 +
 +
== Ссылки ==
 +
* [https://arxiv.org/abs/1502.03167 Оригинальная статья Batch Normalization]
 +
* [https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html BatchNorm в PyTorch]
 +
* [https://www.tensorflow.org/api_docs/python/tf/keras/layers/BatchNormalization BatchNormalization в TensorFlow/Keras]
[[Категория:Машинное обучение]]
[[Категория:Машинное обучение]]
[[Категория:Глубокое обучение]]
[[Категория:Глубокое обучение]]
 +
[[Категория:Нейронные сети]]
 +
[[Категория:Нормализация]]
 +
[[Категория:Регуляризация]]

Текущая версия

Статья объединена из версий, написанных с использованием LLM GPT-4 Turbo (проверена участником Amir Baidanov) и Claude Sonnet 5 (проверена участником Daria Makeeva)


Содержание

Батч-нормализация (англ. batch normalization, BatchNorm; также встречается название пакетная нормализация) — метод регуляризации и ускорения обучения глубоких нейронных сетей, основанный на нормализации активаций промежуточных слоёв по статистикам (среднему и дисперсии), вычисленным внутри мини-батча обучающих примеров, с последующим обучаемым сдвигом и масштабированием. Метод предложен Сергеем Иоффе и Кристианом Сегеди в 2015 году[1] и стал одним из наиболее широко применяемых приёмов стабилизации обучения глубоких сетей, позволившим использовать высокие скорости обучения и снизившим чувствительность к инициализации весов.

Интуитивное объяснение проблемы

По мере обучения глубокой сети параметры каждого слоя постоянно меняются, а значит, меняется и распределение значений, поступающих на вход следующего слоя, — даже если распределение исходных обучающих данных остаётся неизменным. Авторы метода назвали это явление внутренним ковариационным сдвигом (internal covariate shift): каждый слой должен непрерывно «подстраиваться» под меняющееся распределение своих входов, что замедляет и усложняет обучение, особенно при использовании насыщающихся функций активации и высоких скоростей обучения[1].

Ситуацию можно сравнить с попыткой попасть в постоянно перемещающуюся цель: если распределение входов слоя непрерывно «дрейфует» из-за обновления весов предыдущих слоёв, оптимизатору приходится не только находить хорошие веса для текущего слоя, но и без конца компенсировать этот дрейф. Другая полезная аналогия — настройка микроскопа: если изображение постоянно дрожит, сфокусироваться трудно, но стоит его стабилизировать — и настройка становится намного проще и быстрее. Батч-нормализация решает проблему напрямую: активации каждого слоя явно приводятся к фиксированному распределению (нулевое среднее, единичная дисперсия) на каждом шаге обучения, независимо от того, как изменились веса предыдущих слоёв. Как следствие, сглаживается и ландшафт функции потерь, что делает поведение градиента более предсказуемым.

Историческая справка

До появления BatchNorm глубокие сети было трудно обучать из-за проблем с затухающими и взрывающимися градиентами; требовались тщательная инициализация весов[1] и заведомо низкие скорости обучения.

Иоффе и Сегеди представили батч-нормализацию на конференции ICML 2015, объяснив её эффективность именно уменьшением внутреннего ковариационного сдвига: по их гипотезе, стабилизация распределения входов каждого слоя позволяет использовать значительно более высокие скорости обучения, снижает зависимость результата от точной схемы инициализации и даже оказывает регуляризующий эффект, в ряде случаев позволяя отказаться от дропаута[1]. Метод быстро стал стандартом при обучении свёрточных нейронных сетей и был использован в архитектурах, установивших новые рекорды на ImageNet (Inception, ResNet).

Пересмотр объяснения эффективности

Спустя три года объяснение через ковариационный сдвиг подверглось существенному пересмотру. Сантуркар, Циприс, Ильяс и Мадри (2018) экспериментально показали, что степень внутреннего ковариационного сдвига в сетях с батч-нормализацией и без неё практически не различается, то есть уменьшение ковариационного сдвига не может служить основной причиной успеха метода. Авторы предложили альтернативное объяснение: батч-нормализация делает ландшафт функции потерь значительно более гладким — уменьшает константу Липшица функции потерь и её градиента по направлению обучения, — что делает поведение градиента более предсказуемым и позволяет использовать бо́льшие шаги обучения без потери устойчивости[1]. Таким образом, современное понимание механизма действия батч-нормализации основано в первую очередь на сглаживании оптимизационного ландшафта, а не на устранении ковариационного сдвига, как предполагалось изначально.

Формальное определение

Пусть \mathcal{B} = \{x_1, \dots, x_m\} — мини-батч значений некоторой активации (одного нейрона или одного канала свёрточного слоя) размера m.

1. Статистики по мини-батчу

\mu_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} x_i, \qquad \sigma^2_{\mathcal{B}} = \frac{1}{m}\sum_{i=1}^{m} (x_i - \mu_{\mathcal{B}})^2

2. Нормализация

\hat{x}_i = \frac{x_i - \mu_{\mathcal{B}}}{\sqrt{\sigma^2_{\mathcal{B}} + \varepsilon}}

где \varepsilon > 0 — малая константа (например, 10^{-5}), предотвращающая деление на ноль.

3. Сдвиг и масштабирование

y_i = \gamma \hat{x}_i + \beta

где \gamma (масштаб) и \beta (сдвиг) — параметры, обучаемые совместно с остальными весами сети методом обратного распространения ошибки[1]. Роль этих параметров принципиальна: без них слой был бы вынужден всегда выдавать активации с нулевым средним и единичной дисперсией, что ограничивало бы выразительность сети. Параметры \gamma и \beta позволяют сети самой выучить, нужна ли строгая нормализация, — если оптимальным решением является исходное распределение активаций, сеть может настроить \gamma \approx \sigma_{\mathcal{B}} и \beta \approx \mu_{\mathcal{B}}, фактически отменив нормализацию[1].

Обучение и инференс

На этапе обучения статистики \mu_{\mathcal{B}} и \sigma^2_{\mathcal{B}} пересчитываются заново для каждого мини-батча, что делает выход слоя зависящим не только от текущего примера, но и от остальных примеров в батче; этот эффект также действует как форма регуляризации, слегка зашумляя активации на каждом шаге обучения. Шум, вносимый случайностью выбора мини-батча, аналогичен по действию дропауту, и на практике использование BatchNorm может снижать потребность в дропауте или позволять уменьшать коэффициенты регуляризации[1]. Важно, однако, понимать, что этот эффект является побочным: при увеличении размера мини-батча шум уменьшается, и регуляризация ослабевает.

На этапе инференса (применения обученной модели) такой подход неприменим: модель должна давать детерминированный результат для одного примера, а состав «батча» может быть произвольным или отсутствовать вовсе. Поэтому во время обучения параллельно накапливаются скользящие средние (running statistics) по всем виденным батчам:

\mu_{\text{run}} \leftarrow (1-\alpha)\,\mu_{\text{run}} + \alpha\, \mu_{\mathcal{B}}, \qquad \sigma^2_{\text{run}} \leftarrow (1-\alpha)\,\sigma^2_{\text{run}} + \alpha\, \sigma^2_{\mathcal{B}}

где \alpha — коэффициент экспоненциального сглаживания (обычно 0.9 или 0.99). На этапе инференса нормализация выполняется по этим накопленным статистикам, а не по статистикам текущего батча:

y = \gamma \frac{x - \mu_{\text{run}}}{\sqrt{\sigma^2_{\text{run}} + \varepsilon}} + \beta

что делает преобразование детерминированным и не зависящим от других примеров. При этом параметры \gamma и \beta, как и \mu_{\text{run}}, \sigma^2_{\text{run}}, на инференсе остаются фиксированными.

Связь с затуханием и взрывом градиента

Батч-нормализация тесно связана с проблемой затухающего градиента (vanishing gradient problem). Насыщающиеся функции активации, такие как сигмоида и гиперболический тангенс, имеют производную, близкую к нулю при больших по модулю значениях входа; если активации слоя дрейфуют в область насыщения, производные становятся исчезающе малыми, и градиент, умножаясь на них при обратном распространении ошибки, затухает по мере прохождения через слои. Явно удерживая распределение активаций центрированным около нуля с единичной дисперсией, батч-нормализация удерживает бо́льшую часть значений в области, где производная функции активации далека от нуля, что ослабляет как затухание, так и потенциальный неконтролируемый рост градиента[1]. Кроме того, батч-нормализация делает сеть более устойчивой к масштабу весов: при масштабировании весов слоя на константу выход нормализующего преобразования не меняется, что стабилизирует величину градиента по параметрам и позволяет использовать более высокие скорости обучения без риска расходимости[1].

Практические рекомендации

Расположение в архитектуре

Традиционно BatchNorm применяется перед функцией активации:

y = \text{BN}(Wx + b) \;\to\; \text{ReLU}(y)

Некоторые исследователи рекомендуют применять нормализацию после активации; на практике оба варианта работают, но стандартом остаётся применение перед активацией.

Взаимодействие с другими методами

  • С дропаутом: поскольку BatchNorm уже оказывает регуляризующий эффект, коэффициент дропаута обычно можно уменьшить;
  • С L2-регуляризацией: методы работают совместно, но может потребоваться перенастройка коэффициента регуляризации;
  • С инициализацией весов: BatchNorm снижает чувствительность сети к выбору схемы инициализации.

Совместимость с архитектурами

  • В CNN — нормализация выполняется по batch-измерению отдельно для каждого канала (фильтра);
  • В MLP — нормализация выполняется отдельно для каждого нейрона;
  • В RNN — применение затруднительно (см. раздел «Ограничения»).

Зависимость от размера мини-батча

Поскольку статистики \mu_{\mathcal{B}} и \sigma^2_{\mathcal{B}} — это выборочные оценки по конечному мини-батчу, их качество напрямую зависит от размера батча m. При малых значениях m (например, 2–8 примеров) оценки среднего и дисперсии становятся шумными и нестабильными от шага к шагу, что ухудшает качество обучения и итоговую точность модели. Этот эффект особенно заметен в задачах, где большой батч невозможен по памяти, — например, при обучении на изображениях высокого разрешения, трёхмерных данных или в медицинской диагностике с ограниченным числом объектов. На практике рекомендуется использовать мини-батчи размером не менее 16–32 объектов.

Ограничения

Малый размер батча

Как отмечено выше, BatchNorm плохо работает с маленькими мини-батчами: шумные оценки статистик ухудшают качество обучения.

Проблемы с рекуррентными сетями

В RNN статистики приходится вычислять и хранить отдельно для каждого временного шага, а длина последовательностей в батче может различаться, что делает применение BatchNorm затруднительным[1]. Хотя существуют модификации BatchNorm для RNN, LayerNorm обычно даёт лучшие результаты.

Расхождение статистик обучения и инференса

При инференсе используются фиксированные скользящие среднее и дисперсия, накопленные на обучающей выборке. Если распределение данных на инференсе отличается от обучающего (сдвиг распределения, distribution shift), это может привести к заметному ухудшению качества.

Отсутствие гарантированного улучшения

BatchNorm не всегда даёт выигрыш в качестве: при обучении очень больших моделей или на очень больших наборах данных эффект может быть менее заметным, а иногда даже отрицательным.

Альтернативные виды нормализации

Для случаев, где батч-нормализация работает плохо (малый размер батча, рекуррентные архитектуры, потребность в независимости статистик от батча), были предложены альтернативные схемы, различающиеся тем, по каким измерениям тензора активаций вычисляются статистики нормализации.

Сравнение методов нормализации активаций
Метод По каким осям усредняются статистики Типичная область применения
Batch normalization По batch-измерению, отдельно для каждого канала Свёрточные сети с достаточно большим батчем[1]
Layer normalization По всем каналам/признакам одного примера, независимо от батча Рекуррентные сети, трансформеры — не зависит от размера батча[1]
Instance normalization По пространственным измерениям (высота, ширина) отдельно для каждого канала и каждого примера Перенос стиля изображений (style transfer), генеративные модели[1]
Group normalization По пространственным измерениям и подгруппе каналов, независимо от батча Сети с малым размером батча (детекция, сегментация, видео)[1]
Weight normalization Нормализуются веса слоя, а не активации Ускорение сходимости без зависимости от статистики батча[1]

Layer normalization нормализует активации по всем признакам одного примера (а не по батчу), что делает её результат не зависящим от размера батча и позволяет применять один и тот же расчёт как на этапе обучения, так и на этапе инференса без накопления скользящих статистик[1]. Instance normalization была предложена для задач переноса стиля и нормализует каждый канал каждого отдельного изображения независимо, что убирает информацию о контрасте конкретного изображения, мешающую переносу стиля[1]. Group normalization занимает промежуточное положение: каналы разбиваются на группы, и статистики вычисляются внутри каждой группы для каждого отдельного примера, — group normalization переходит в layer normalization при числе групп, равном 1, и в instance normalization, если число групп равно числу каналов; авторы показали, что этот метод даёт заметно лучшую точность, чем batch normalization, при очень малых размерах батча (например, при батче из двух примеров ошибка ResNet-50 на ImageNet снижается на 10,6 процентных пункта)[1]. Weight normalization идёт другим путём и нормализует не активации, а веса слоя, используя параметризацию w = g \cdot v / \|v\|, где g и v — обучаемые параметры[1].

Пример: влияние на распределения активаций

Рассмотрим простую сеть из 5 полносвязных слоёв по 100 нейронов в каждом, обучаемую на данных с нормальным распределением.

Без BatchNorm:

  • активации первых слоёв имеют распределение с небольшим разбросом;
  • активации последних слоёв сильно растягиваются, их значения могут достигать сотен;
  • градиенты в последних слоях становятся очень маленькими или очень большими;
  • обучение требует низкой скорости обучения (10^{-3}).

С BatchNorm:

  • активации всех слоёв имеют распределение, близкое к \mathcal{N}(0,1);
  • градиенты остаются стабильными;
  • можно использовать высокую скорость обучения (10^{-1});
  • сеть сходится за в 2–3 раза меньшее число эпох.

Пример иллюстрирует ключевое практическое преимущество BatchNorm: стабилизация распределений активаций позволяет обучать сети значительно быстрее.

Краткий вывод

Батч-нормализация — метод, значительно ускоривший обучение глубоких нейронных сетей за счёт стабилизации распределений активаций по мини-батчу и последующего обучаемого сдвига и масштабирования. Она снижает зависимость от инициализации весов, позволяет использовать высокие скорости обучения и оказывает побочный регуляризующий эффект. Изначально эффективность метода объяснялась снижением внутреннего ковариационного сдвига, однако более поздние исследования показали, что определяющую роль играет сглаживание ландшафта функции потерь. Метод требует достаточно большого размера мини-батча и плохо подходит для задач с переменной длиной последовательностей (RNN) или при малых батчах; для этих случаев были предложены альтернативы — Layer, Instance, Group и Weight normalization, каждая со своей областью применения.

См. также

Примечания

Литература

  • Ioffe S., Szegedy C. Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift // Proceedings of the 32nd International Conference on Machine Learning (ICML). — 2015. — Т. 37. — С. 448–456.
  • Santurkar S., Tsipras D., Ilyas A., Madry A. How Does Batch Normalization Help Optimization? // Advances in Neural Information Processing Systems (NeurIPS). — 2018. — Т. 31. — № arXiv:1805.11604. — С. 2488–2498.
  • Ba J.L., Kiros J.R., Hinton G.E. Layer Normalization // arXiv preprint. — 2016. — № arXiv:1607.06450.
  • Ulyanov D., Vedaldi A., Lempitsky V. Instance Normalization: The Missing Ingredient for Fast Stylization // arXiv preprint. — 2016. — № arXiv:1607.08022.
  • Wu Y., He K. Group Normalization // Proceedings of the European Conference on Computer Vision (ECCV). — 2018. — С. 3–19.
  • Salimans T., Kingma D.P. Weight Normalization: A Simple Reparameterization to Accelerate Training of Deep Neural Networks // Advances in Neural Information Processing Systems (NeurIPS). — 2016. — Т. 29. — С. 901–909.
  • Glorot X., Bengio Y. Understanding the difficulty of training deep feedforward neural networks // Proceedings of the 13th International Conference on Artificial Intelligence and Statistics. — 2010. — С. 249–256.

Ссылки

Личные инструменты