Изменения

Перейти к: навигация, поиск

Batch-normalization

2132 байта добавлено, 14:28, 22 января 2019
Обучение нейронных сетей с пакетной нормализацией
Для обучения нейронных сетей необходимо вычислять [[wikipedia:ru:Градиент|градиент]] [[wikipedia:en:Loss_function|функции потерь]] <tex>l</tex>. В случае использования метода пакетной нормализации градиент вычисляется следующим образом:
<tex>\displaystyle \frac{\partial l}{\partial \hat{x}_{i}} = \frac{\partial l}{\partial y_{i}} \cdot \gamma</tex> <tex> (1)</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> (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> (3)</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> (4)</tex>
<tex>\displaystyle \frac{\partial l}{\partial \gamma} = \sum_{i=1}^{m}\frac{\partial l}{\partial y_{i}} \cdot \hat{x}_{i}</tex> <tex> (5)</tex>
<tex>\displaystyle \frac{\partial l}{\partial \beta} = \sum_{i=1}^{m}\frac{\partial l}{\partial y_{i}}</tex><tex> (6)</tex> На Рисунке 2 изображен [[Настройка_глубокой_сети#Граф вычислений|граф вычислений]] слоя пакетной нормализации алгоритмом обратного распространения ошибки. В прямом направлении, как и описано в алгоритме метода, из входа <tex>x</tex> вычисляется среднее значение по каждой размерности признакового пространства. Затем полученный вектор средних значение вычитается из каждого элемента обучающей выборки. Далее вычисляется дисперсия, и с помощью нее вычисляется знаменатель для нормализации. Затем полученное значение инвертируется и умножается на разницу входа <tex>x</tex> и средних значений. В конце применяются параметры <tex>\gamma</tex> и <tex>\beta</tex>.  В обратном направлении вычисляются производные необходимых функций.  <gallery mode="nolines" widths=300px heights=300px>Файл:step9.png|Шаг 9.Файл:step8.png|Шаг 8.Файл:step7.png|Шаг 7.Файл:step6.png|Шаг 6.Файл:step5.png|Шаг 5.Файл:step4.png|Шаг 4.Файл:step3.png|Шаг 3.Файл:step2.png|Шаг 2.Файл:step1.png|Шаг 1.Файл:step0.png|Шаг 0.</gallery> Сначала вычисляется градиент параметра <tex>\beta</tex>, как в уравнении <tex>(6)</tex>, так как к нему применяется только операции суммирования.  Далее, как в уравнении <tex>(5)</tex> вычисляется градиент параметра <tex>\gamma</tex>.
==Пакетная нормализация в [[Сверточные нейронные сети | свёрточных сетях]]==
210
правок

Навигация