Изменения

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

Batch-normalization

Нет изменений в размере, 19:12, 10 января 2019
м
Нет описания правки
Нормализация батчей уменьшает величину, на которую смещаются значения узлов в скрытых слоях (т.н. '''смещение [[Ковариация случайных величин|ковариации]]''' (англ. covariance shift)). Проиллюстрируем смещение ковариации примером. Пусть, есть [[Глубокое обучение|глубокая нейронная сеть]], которая обучена определять находится ли на изображении роза. И нейронная сеть была обучена на изображении только красных роз. Теперь, если попытаться использовать обученную модель для обнаружения цветных роз, то, очевидно, результат будет неудовлетворительный. Обучающая и тестовая выборки содержат изображения роз, но немного отличаются. Другими словами, если модель обучена отображению из множества <tex>X</tex> в множество <tex>Y</tex> и если [[wikipedia:ru:Распределение_вероятностей|распределение]] элементов в <tex>X</tex> изменяется, то появляется необходимость обучить модель заново, чтобы "выровнять" распределение элементов в <tex>X</tex> и <tex>Y</tex>. Когда батчи содержат изображения, равномерно-распределенные на всем множестве, то смещение ковариации незначительно. Однако, когда батчи выбираются только из одного из двух подмножеств (в данном случае, красные розы и цветные розы), то смещение ковариации возрастает. Это довольно сильно замедляет процесс обучения модели. На Рисунке 1 изображена разница в распределениях.
Простой способ решить проблему смещения ковариации для входного слоя {{---}} это случайным образом перемешать данные перед созданием батчей. Но для скрытых слоев нейронной сети данный метод не подходит, так как распределение входных данных для каждого узла скрытых слоев изменяется каждый раз, когда происходит обновление параметров в предыдущем слое. Данная проблема называется '''внутренним смещением ковариации''' (англ. internal covariate shift). Для решения этой проблемы необходимо использовать маленький коэффициент скорости обучения и методы регуляризации. Но, для решения данной проблемы как раз и был придуман метод нормализация нормализации батчей.
Кроме того, использование нормализации батчей обладает еще несколькими дополнительными полезными свойствами:
# В <ref>[https://arxiv.org/pdf/1607.06450.pdf Ba J. L., Kiros J. R., Hinton G. E. {{---}} Layer normalization]</ref> был предложен метод нормализации слоев (англ. Layer Normalization), который решает проблему выбора размера батча.
# В работе <ref>[https://arxiv.org/pdf/1702.03275.pdf Ioffe S. {{---}} Batch renormalization: Towards reducing minibatch dependence in batch-normalized models]</ref> было представлено расширение метода нормализации батчей: ренормализация батчей (англ. Batch Renormalization). Данный метод улучшает нормализацию батчей, когда размер батчей мал и не состоит из независимых данных.
# Метод потоковой нормализации (англ. Streaming Normalization) был предложен в <ref>[https://arxiv.org/pdf/1610.06160.pdf Liao Q., Kawaguchi K., Poggio T. {{---}} Streaming normalization: Towards simpler and more biologically-plausible normalizations for online and recurrent learning]</ref>. Данные Данный метод убирает два ограничения нормализации батчей: использование при online-обучении и использование в рекуррентных нейронных сетях.
==См. также==
210
правок

Навигация