Как и почему Пакетная нормализация использует скользящие средние для отслеживания точности модели во время обучения?


21

Я читал статью о пакетной нормализации (BN) (1) и не понимал необходимости использовать скользящие средние для отслеживания точности модели, и даже если я признал, что это было правильно, я не понимаю что они делают точно.

Насколько я понимаю (что я могу ошибаться), в статье упоминается, что она использует статистику населения, а не мини-серию, статистику, когда модель закончила обучение. После некоторого обсуждения непредвзятых оценок (которые кажутся мне касательными и я не понимаю, почему это говорит об этом) они идут и говорят:

Используя вместо этого скользящие средние, мы отслеживаем точность модели во время обучения.

Это та часть, которая смущает меня. Почему они делают скользящие средние, чтобы оценить точность модели и какой набор данных?

Обычно, что люди делают, чтобы оценить обобщение своей модели, они просто отслеживают ошибку валидации своей модели (и потенциально рано прекращают свой градиентный спуск для регуляризации). Тем не менее, кажется, что пакетная нормализация делает что-то совершенно другое. Может кто-то уточнить, что и почему он делает что-то другое?


1 : Иоффе С. и Сегеди С. (2015 г.),
«Нормализация партии: ускорение глубокого сетевого обучения за счет уменьшения внутреннего смещения ковариат»,
Материалы 32-й Международной конференции по машинному обучению , Лилль, Франция, 2015 г.
Журнал исследований в области машинного обучения: W & CP том 37


Удовлетворены ли вы ответом, за который проголосовали? Это совсем не «ответ», если вы спросите меня; если все еще актуально, я могу дать лучший ответ.
OverLordGoldDragon

@OverLordGoldDragon предоставит свой собственный ответ :)
Буратино

Ответы:


8

При использовании batch_normalization первое, что мы должны понять, это то, что он работает двумя разными способами, когда в обучении и тестировании .

  1. В обучении нам нужно рассчитать среднее значение мини-партии, чтобы нормализовать партию

  2. В заключении мы просто применяем предварительно рассчитанную статистику мини-партий

Итак, во 2-й вещи, как рассчитать эту мини-статику

Здесь идет скользящее среднее

running_mean = momentum * running_mean + (1 - momentum) * sample_mean
running_var = momentum * running_var + (1 - momentum) * sample_var

Это не отвечает на вопрос вообще; «почему» и «как» спросили, а поверхностное «что» дали. Это не должно быть upvoted.
OverLordGoldDragon

1

Они говорят о нормализации партии, которую они описали для процедуры обучения, но не для вывода.

Это процесс нормализации скрытых блоков с использованием образцов средств и т.д.

В этом разделе они объясняют, что делать для этапа логического вывода, когда вы просто делать предсказание (то есть после того, как подготовка завершена).

Однако при остановленной проверке вы чередуете прогноз на наборе проверки с обучением, чтобы оценить вашу ошибку проверки.

Таким образом, во время этого процесса у вас нет среднего значения по населению (средние значения все еще меняются в процессе обучения), поэтому вы используете скользящее среднее для расчета параметров нормы партии для расчета производительности на проверочном наборе.

Именно в этом смысле

Используя вместо этого скользящие средние, мы отслеживаем точность модели во время обучения.

не имеет ничего общего с буквальным использованием средства запуска в качестве показателя производительности нейронной сети.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.