Как проводить градиентный контроль в нейронной сети с батч-нормализацией?
Краткое содержание
Я реализовал нейронную сеть (НС) с использованием Python и NumPy исключительно в целях обучения. Я уже закодировал скорость обучения, импульс и регуляризацию L1/L2, а также проверил реализацию с помощью проверки градиентов. Несколько дней назад я реализовал нормализацию пакетов, используя формулы, представленные в оригинальной статье. Однако, в отличие от скорости обучения/импульса/регуляризации, процедура нормализации пакетов ведет себя по-разному во время фаз обучения и предсказания – обе необходимые для проверки градиентов. При обучении сети нормализация пакетов вычисляет среднее значение каждого пакета и оценивает популяционное среднее для использования при предсказании чего-либо. Аналогичным образом, мы знаем, что мы можем не проводить проверку градиентов в нейронной сети с dropout, поскольку dropout приводит к нулевым значениям некоторых градиентов во время обучения и не применяется во время предсказания. Можно ли проводить проверку градиентов в НС с нормализацией пакетов? Если да, то как?
Полный текст
Задано 7 лет, 8 месяцев назад Изменено сегодня Просмотрено 2 тыс. раз
Задано 7 лет, 8 месяцев назад
4 $\begingroup$ Я реализовал нейронную сеть (NN) на Python и NumPy только для учебных целей. Я уже закодировал скорость обучения, импульс и регуляризацию L1/L2 и проверил реализацию с помощью проверки градиентов. Несколько дней назад я реализовал батч-нормализацию, используя формулы, представленные в оригинальной статье. Однако, в отличие от обучения/импульса/регуляризации, процедура батч-нормализации ведет себя по-разному во время фаз fit и predict – обе необходимые для проверки градиентов. При подгонке сети батч-нормализация вычисляет среднее значение каждого пакета и оценивает среднее значение популяции, которое используется при необходимости предсказать что-то. Аналогично, я знаю, что мы можем не проводить проверку градиентов в нейронной сети с dropout, поскольку dropout приводит к нулевым значениям некоторых градиентов во время подгонки и не применяется во время прогнозирования. Можно ли проводить проверку градиентов в NN с батч-нормализацией? Если да, то как? neural-networks python gradient-descent batch-normalization