Batch-normalization — различия между версиями
Строка 12: | Строка 12: | ||
Данные параметры настраиваются в процессе обучения вместе с остальными гиперпараметрами модели. | Данные параметры настраиваются в процессе обучения вместе с остальными гиперпараметрами модели. | ||
− | Пусть, обучение модели производится с помощью батчей <tex>B</tex> размера <tex>m</tex>: <tex>B = \{x_{1,\ldots, m}\}</tex>. Здесь нормализация применяется к каждой компоненте входа с номером <tex>k</tex> отдельно, поэтому в <tex>x^{(k)}</tex> индекс опускается для ясности. | + | Пусть, обучение модели производится с помощью батчей <tex>B</tex> размера <tex>m</tex>: <tex>B = \{x_{1,\ldots, m}\}</tex>. Здесь нормализация применяется к каждой компоненте входа с номером <tex>k</tex> отдельно, поэтому в <tex>x^{(k)}</tex> индекс опускается для ясности изложения. Пусть, были получены нормализованные значения батча <tex>\hat{x}_{1,\ldots, m}</tex>. Далее, после применения операций сжатия и сдвига были получены <tex>y_{1,\ldots, m}</tex>. Обозначим данную функцию нормализации батчей следующим образом: |
+ | |||
+ | <tex>BN_{\gamma, \beta}: x_{1,\ldots, m} \rightarrow y_{1,\ldots, m}</tex> | ||
+ | |||
+ | Тогда, алгоритм нормализации батчей можно представить так: | ||
+ | |||
+ | ''<font color="green"></font>'' | ||
+ | '''Вход''': значения <tex>x</tex> из батча <tex>B = \{x_{1,\ldots, m}\}</tex>; настраиваемые параметры <tex>\gamma, \beta</tex>; константа <tex>\epsilon</tex> для вычислительной устойчивости. | ||
+ | '''Выход''': <tex>\{y_{i} = BN_{\gamma, \beta}(x_{i})\}</tex> | ||
+ | <tex>\mu_{B} = \displaystyle \frac{1}{m} \sum_{i=1}^{m} x_{i}</tex> // математическое ожидание батча | ||
+ | <tex>\sigma_{B}^{2} = \displaystyle \frac{1}{m} \sum_{i=1}^{m} (x_{i} - \mu_{B})^{2}</tex> // дисперсия батча | ||
+ | <tex>\hat{x}_{i} = \displaystyle \frac{x_{i} - \mu_{B}}{\sqrt{\sigma_{B}^{2} + \epsilon}}</tex> // нормализация | ||
+ | <tex>y_{i} = \gamma \hat{x}_{i} + \beta \equiv BN_{\gamma, \beta}(x_{i}) </tex> // сжатие и сдвиг | ||
+ | |||
+ | |||
== Примечания == | == Примечания == | ||
<references/> | <references/> |
Версия 22:50, 7 января 2019
Нормализация батчей (англ. batch-normalization) — это метод, который позволяет повысить производительность и стабилизировать работу искусственных нейронных сетей. Суть данного метода заключается в том, что некоторым слоям нейронной сети на вход подаются данные, предварительно обработанные и имеющие нулевое среднее значение и единичную дисперсию. Впервые данный метод был представлен в [1].
Описание метода
Опишем устройство метода нормализации батчей. Пусть, на вход некоторому слою нейронной сети поступает вектор размерности
: . Нормализуем данный вектор по каждой размерности :,
где математическое ожидание и дисперсия считаются по всей обучающей выборке. Такая нормализация входа слоя нейронной сети может изменить представление данных в слое. Чтобы избежать данной проблемы, вводятся два параметра сжатия и сдвига нормализованной величины для каждого
: , — которые действуют следующим образом:.
Данные параметры настраиваются в процессе обучения вместе с остальными гиперпараметрами модели.
Пусть, обучение модели производится с помощью батчей
размера : . Здесь нормализация применяется к каждой компоненте входа с номером отдельно, поэтому в индекс опускается для ясности изложения. Пусть, были получены нормализованные значения батча . Далее, после применения операций сжатия и сдвига были получены . Обозначим данную функцию нормализации батчей следующим образом:
Тогда, алгоритм нормализации батчей можно представить так:
Вход: значенияиз батча ; настраиваемые параметры ; константа для вычислительной устойчивости. Выход: // математическое ожидание батча // дисперсия батча // нормализация // сжатие и сдвиг