Перейти к основному содержимому

Нормализация свёрточных слоёв

Для повышения устойчивости настройки нейросети и для повышения скорости её настройки используется нормализация промежуточных активаций.

Ранее мы уже познакомились с батч-нормализацией и нормализацией слоя.

Особенностью свёрточного слоя является то, что свёртка извлекает один и тот же признак в разных локациях на изображении. Таким образом, применив свёртку мы получаем H×WH\times W карту значений одного и того же признака. Применив CC свёрток, мы получим HWHW реализаций каждого из CC признаков, извлекаемых каждой свёрткой.

Настройка параметров нейросети производится мини-батчами из BB изображений.

Таким образом, внутреннее представление изображений мини-батча можно представить в виде тензора размера BC×H×WBC\times H\times W, как показано на рисунке слева ([источник](Neupane D., Kim Y., Seok J. Bearing fault detection using scalogram and switchable normalization-based CNN (SN-CNN) //IEEE Access. – 2021. – Т. 9. – С. 88151-88166.)):

а основные виды нормализации - справа.

Каждый тип нормализации задаётся одной и той же формулой, перевзвешивающей активации каналов 1,2,...C1,2,...C:

z1b(x,y)  γ1z1b(x,y)μ1b(σ1b)2+δ+β1z2b(x,y)  γ2z2b(x,y)μ2b(σ2b)2+δ+β2zCb(x,y)  γCzCb(x,y)μCb(σCb)2+δ+βC\begin{align*} & z_1^b(x,y) \;&\to\quad &\gamma_1\frac{z_1^b(x,y)-\mu_1^b}{\sqrt{(\sigma_1^b)^2+\delta}}+\beta_1 \\ & z_2^b(x,y) \;&\to\quad &\gamma_2\frac{z_2^b(x,y)-\mu_2^b}{\sqrt{(\sigma_2^b)^2+\delta}}+\beta_2 \\ & \cdots & \cdots \\ & z_C^b(x,y) \;&\to\quad &\gamma_C\frac{z_C^b(x,y)-\mu_C^b}{\sqrt{(\sigma_C^b)^2+\delta}}+\beta_C \\ \end{align*}

где zib(x,y)z_i^b(x,y) - активация свёртки для изображения bb мини-батча, канала ii в пространственных координатах (x,y)(x,y), δ=0.001\delta=0.001 - малый параметр, чтобы избежать деления на ноль, а γi,βi,i=1,2,...C\gamma_i,\beta_i, i=1,2,...C - настраиваемые параметры.

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

μib=μi=1Bb=1B1HWx=1Wy=1Hzib(x,y)(σib)2=(σi)2=1Bb=1B1HWx=1Wy=1H(zib(x,y)μi)2\begin{align*} \mu_i^b &= \mu_i = \frac{1}{B}\sum_{b=1}^B\frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H z^b_i(x,y) \\ (\sigma_i^b)^2 &= (\sigma_i)^2 = \frac{1}{B}\sum_{b=1}^B\frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H (z^b_i(x,y)-\mu_i)^2 \\ \end{align*}

Расчет {μib,σib}i,b\{\mu_i^b,\sigma_i^b\}_{i,b} меняется в режимах обучения и применения сети точно так же, как и в обычной батч-нормализации.

Нормализация экземпляра (instance normalization) усредняет независимо для каждого изображения только по его реализациям на различных позициях на изображении, как показано на рисунке зелёным:

μib=1HWx=1Wy=1Hzib(x,y)(σib)2=1HWx=1Wy=1H(zib(x,y)μi)2\begin{align*} \mu_i^b &= \frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H z^b_i(x,y) \\ (\sigma_i^b)^2 &= \frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H (z^b_i(x,y)-\mu_i)^2 \\ \end{align*}

Расчет {μib,σib}i,b\{\mu_i^b,\sigma_i^b\}_{i,b} не меняется в режимах обучения и применения сети.

Нормализация слоя (layer normalization) усредняет независимо для каждого изображения по всевозможным признакам на всевозможных позициях на изображении, как показано на рисунке жёлтым.

μib=μb=1Ci=1C1HWx=1Wy=1Hzib(x,y)(σib)2=(σb)2=1Ci=1C1HWx=1Wy=1H(zib(x,y)μi)2\begin{align*} \mu_i^b &= \mu^b = \frac{1}{C}\sum_{i=1}^C\frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H z^b_i(x,y) \\ (\sigma_i^b)^2 &= (\sigma^b)^2 = \frac{1}{C}\sum_{i=1}^C\frac{1}{HW}\sum_{x=1}^W \sum_{y=1}^H (z^b_i(x,y)-\mu_i)^2 \\ \end{align*}

Расчет {μib,σib}i,b\{\mu_i^b,\sigma_i^b\}_{i,b} не меняется в режимах обучения и применения сети.