Изменения

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

Batch-normalization

2 байта добавлено, 11:53, 10 января 2019
Пример
[[Файл:bn_exp_2.png|400px|thumb|Точность распознавания в зависимости от итерации обучения c использованием сигмоиды в качетсве функции активации.]]
Приведем пример демонстрирующий работу нормализации батчей. Рассмотрим задачу распознавания рукописных цифр на известном датасете MNIST. Для решения задачи будет использоваться обычная нейронная сеть с <tex>3</tex> скрытыми полносвязными слоями по <tex>100</tex> узлов в каждом. Функция активации {{---}} ReLU. Выходной слой содержит <tex>10</tex> узлов. Размер батча равен <tex>60</tex>. Сравнивается две одинаковые модели, но в первой перед каждым скрытым слоем используется нормализация батчей, а во второй {{---}} нет. Коэффициент скорости обучения равен <tex>0.01</tex>. Веса инициализированы значениями с малой дисперсией.  На рисунке изображены два графика, показывающий разницу между моделями. Как видно, обе модели достигли высокой точности, но модель с использованием нормализации батчей достигла точности более <tex>90\%</tex> быстрее, почти сразу, и достигла максимума, примерно, уже на <tex>10000</tex> итераций. Однако, модель без нормализации батчей достигла скорости обучения примерно <tex>510</tex> батчей в секунда, а модель с использованием нормализации батчей {{---}} <tex>270</tex>. Однако, как можно видеть, нормализация батчей позволяет выполнить меньшее количество итераций и, в итоге, сойтись за меньшее время.
На следующем рисунку изображен график, сравнивающий точно такие же модели, но с использованием сигмоиды в качестве функции активации. Использование сигмоиды в качестве функции активации требует большего времени, чтобы начать обучение модели. В итоге, модель обучается, но на это потребовалось более <tex>45000</tex> итераций, чтобы получить точность более <tex>80\%</tex>. При использовании нормализации батчей получилось достичь точность более <tex>90\%</tex> примерно за <tex>1000</tex> итераций.
210
правок

Навигация