Изменения

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

Batch-normalization

2955 байт добавлено, 12:15, 9 января 2019
Идея
==Идея==
Нормализация входного слоя обычно выполняется путем масштабирования функции активации. Например, когда у нас есть признаки со значениями от 0 до 1 и некоторые признаки со значениями от 1 до 1000, то их необходимо нормализовать, чтобы ускорить обучение. То же самое можно сделать и для скрытых слоев нейронных сетей.
 
Нормализация батчей уменьшает величину, на которую смещаются значения узлов в скрытых слоях (т.н. смещение ковариации (англ. covariance shift)). Проиллюстрируем смещение ковариации примером. Пусть есть глубокая нейронная сеть, которая обучена обнаруживать кошек на изображении. И нейронная сеть была обучена на изображении только черных кошек. Теперь, если попытаться использовать обученную модель для обнаружения цветных кошек, то, очевидно, результат будет неудовлетворительный. Обучающая и тестовая выборки содержат изображения кошек, но немного отличаются. Другими словами, если модель обучена отображению из множества <tex>X</tex> в множество <tex>Y</tex> и если распределение элементов в <tex>X</tex> изменяется, то появляется необходимость обучить модель заново, чтобы "выровнять" распределение элементов в <tex>X</tex> и <tex>Y</tex>.
 
Кроме того, нормализация батчей позволяет каждому слою сети обучатся более независимо от других слоев. Также, становится возможно использование более высокого коэффициента скорости обучения, так как нормализация батчей гарантирует, что выходы узлов нейронной сети не будут иметь слишком больших или малых значений.
 
Нормализация батчей в каком-то смысле также является механизмом регуляризации. Данный метод привносит в выходы узлов скрытых слоев некоторый шум, аналогично методу dropout.
==Описание метода==
Анонимный участник

Навигация