Для повышения устойчивости и скорости настройки нейросети, обрабатывающей изображения, используя свёрточные слои (convolutional layers), применяется нормализация свёрточных слоёв (convolutional layer normalization).
Эта нормализация несколько отличается от батч-нормализации и нормализации слоя в многослойном п ерсептроне, учитывая специфику обработки пространственных данных на изображениях.
Особенностью свёрточного слоя является то, что свёртка извлекает один и тот же признак в разных локациях на изображении. Таким образом, применив свёртку мы получаем карту пространственной размерности H×W значений одного и того же признака, где H-высота, а W-ширины карты признаков. Применив C свёрток, мы получим H⋅W реализаций каждого из C признаков, извлекаемых каждой свёрткой.
Настройка параметров нейросети производится мини-батчами из B изображений.
Таким образом, внутреннее представление изображений мини-батча можно представить в виде тензора размера (B⋅C)×H×W, как показано на рисунке слева, а основные виды нормализации свёрточных слоёв (batch norm, instance norm, layer norm) - справа [1]:
Каждый тип нормализации задаётся одной и той же формулой, перевзвешивающей активации каналов 1,2,...C:
где zib(x,y) - активация свёртки для изображения b мини-батча, канала i в пространственных координатах (x,y), δ=0.001 - малый параметр, чтобы избежать деления на ноль, а γi,βi,i=1,2,...C - настраиваемые параметры вместе с остальными весами сети.
Расчет {μib,σib}i,b меняется в режимах обучения и применения сети точно так же, как и в обычной батч-нормализации.
Нормализация экземпляра (instance normalization) усредняет независимо для каждого изображения только по его реализациям на различных позициях на изображении:
Расчет {μib,σib}i,b не меняется в режимах обучения и применения сети.
Нормализация слоя (layer normalization) усредняет независимо для каждого изображения по всевозможным признакам на всевозможных позициях на изображении: