Изменения

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

Batch-normalization

147 байт добавлено, 19:25, 9 января 2019
Идея
==Идея==
[[Файл:covariate-shift1.png|upright=1.5|thumb|Пример свертки двух матриц с дополнением нулями]]
Нормализация входного слоя обычно выполняется путем масштабирования функции активации. Например, когда у нас есть признаки со значениями от 0 до 1 и некоторые признаки со значениями от 1 до 1000, то их необходимо нормализовать, чтобы ускорить обучение. То же самое можно сделать и для скрытых слоев нейронных сетей.
Нормализация батчей уменьшает величину, на которую смещаются значения узлов в скрытых слоях (т.н. смещение ковариации (англ. covariance shift)). Проиллюстрируем смещение ковариации примером. Пусть есть глубокая нейронная сеть, которая обучена обнаруживать кошек определять находится ли на изображениироза. И нейронная сеть была обучена на изображении только черных кошеккрасных роз. Теперь, если попытаться использовать обученную модель для обнаружения цветных кошекроз, то, очевидно, результат будет неудовлетворительный. Обучающая и тестовая выборки содержат изображения кошекроз, но немного отличаются. Другими словами, если модель обучена отображению из множества <tex>X</tex> в множество <tex>Y</tex> и если распределение элементов в <tex>X</tex> изменяется, то появляется необходимость обучить модель заново, чтобы "выровнять" распределение элементов в <tex>X</tex> и <tex>Y</tex>. Когда батчи содержат изображения, равномерно-распределенные на всем множестве, то смещение ковариации незначительно. Однако, когда батчи выбираются только из одного из двух подмножеств (в данном случае, черные кошки красные розы и цветные кошкирозы), то смещение ковариации возрастает. Это довольно сильно замедляет процесс обучения модели.
Простой способ решить проблему смещения ковариации для входного слоя {{---}} это рандомизировать данные перед созданием батчей. Но для скрытых слоев нейронной сети данный метод не подходит, так как распределение входных данных для каждого узла скрытых слоев изменяется каждый раз, когда происходит обновление параметров в предыдущем слое. Данная проблема называется внутренним смещением ковариации (англ. internal covariate shift). Для решения этой проблемы необходимо использовать маленький коэффициент скорости обучения и методы регуляризации. Но, для решения данной проблемы как раз и был придуман метод нормализация батчей.
210
правок

Навигация