Batch-normalization — различия между версиями
(→Обучение нейронных сетей с нормализацией батчей) |
|||
Строка 29: | Строка 29: | ||
==Обучение нейронных сетей с нормализацией батчей== | ==Обучение нейронных сетей с нормализацией батчей== | ||
+ | |||
+ | Для обучения нейронных сетей необходимо вычислять градиент функции потерь. В случае использования метода нормализации батчей градиент вычисляется следующим образом: | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial \hat{x}_{i}} = \frac{\partial l}{\partial y_{i}} \cdot \gamma</tex> | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial \sigma_{B}^{2}} = \sum_{i=1}^{m}\frac{\partial l}{\partial \hat{x}_{i}} \cdot (x_{i} - \mu_{B}) \cdot \frac{-1}{2}(\sigma_{B}^{2} + \epsilon)^{-3/2}</tex> | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial \mu_{B}} = \left(\sum_{i=1}^{m}\frac{\partial l}{\partial \hat{x}_{i}} \cdot \frac{-1}{\sqrt{\sigma_{B}^{2} + \epsilon}}\right) + \frac{\partial l}{\partial \sigma_{B}^{2}} \cdot \frac{\sum_{i=1}^{m}-2(x_{i}-\mu_{B})}{m}</tex> | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial x_{i}} = \frac{\partial l}{\partial \hat{x}_{i}} \cdot \frac{1}{\sqrt{\sigma_{B}^{2} + \epsilon}} + \frac{\partial l}{\partial \sigma_{B}^{2}} \cdot \frac{2(x_{i}-\mu_{B})}{m} + \frac{\partial l}{\partial \mu_{B}} \cdot \frac{1}{m}</tex> | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial \gamma} = \sum_{i=1}^{m}\frac{\partial l}{\partial y_{i}} \cdot \hat{x}_{i}</tex> | ||
+ | |||
+ | <tex>\displaystyle \frac{\partial l}{\partial \beta} = \sum_{i=1}^{m}\frac{\partial l}{\partial y_{i}}</tex> | ||
==Нормализация батчей в свёрточных сетях== | ==Нормализация батчей в свёрточных сетях== |
Версия 12:13, 8 января 2019
Нормализация батчей (англ. batch-normalization) — это метод, который позволяет повысить производительность и стабилизировать работу искусственных нейронных сетей. Суть данного метода заключается в том, что некоторым слоям нейронной сети на вход подаются данные, предварительно обработанные и имеющие нулевое среднее значение и единичную дисперсию. Впервые данный метод был представлен в [1].
Содержание
Идея
Описание метода
Опишем устройство метода нормализации батчей. Пусть, на вход некоторому слою нейронной сети поступает вектор размерности
: . Нормализуем данный вектор по каждой размерности :,
где математическое ожидание и дисперсия считаются по всей обучающей выборке. Такая нормализация входа слоя нейронной сети может изменить представление данных в слое. Чтобы избежать данной проблемы, вводятся два параметра сжатия и сдвига нормализованной величины для каждого
: , — которые действуют следующим образом:.
Данные параметры настраиваются в процессе обучения вместе с остальными гиперпараметрами модели.
Пусть, обучение модели производится с помощью батчей
размера : . Здесь нормализация применяется к каждой компоненте входа с номером отдельно, поэтому в индекс опускается для ясности изложения. Пусть, были получены нормализованные значения батча . Далее, после применения операций сжатия и сдвига были получены . Обозначим данную функцию нормализации батчей следующим образом:
Тогда, алгоритм нормализации батчей можно представить так:
Вход: значенияиз батча ; настраиваемые параметры ; константа для вычислительной устойчивости. Выход: // математическое ожидание батча // дисперсия батча // нормализация // сжатие и сдвиг
Обучение нейронных сетей с нормализацией батчей
Для обучения нейронных сетей необходимо вычислять градиент функции потерь. В случае использования метода нормализации батчей градиент вычисляется следующим образом: