Расчет ошибки при обратном распространении (градиентный спуск)
Может кто-нибудь дать объяснение по поводу вычисления ошибки в обратном распространении, которое встречается во многих примерах кода, таких как:
error=calculated-target
// then calculate error with respect to each parameter...
Это то же самое для квадратичной ошибки и кросс-энтропийной ошибки? Как?
Спасибо...
1 ответ
Отмечу x
пример из тренировочного набора, f(x)
прогноз вашей сети для этого конкретного примера, и g_x
основную истину (ярлык), связанную с x
,
Короткий ответ: "Среднеквадратичная ошибка (RMS)" используется, когда у вас есть сеть, которая может точно и дифференцированно предсказать нужные вам метки. Ошибка перекрестной энтропии используется, когда ваша сеть прогнозирует оценки для набора дискретных меток.
Чтобы уточнить, вы обычно используете Root Mean Squared (RMS), когда вы хотите предсказать значения, которые могут изменяться непрерывно. Представьте, что вы хотите, чтобы ваша сеть предсказывала векторы в R^n
, Это тот случай, когда, например, вы хотите предсказать нормали поверхности или оптический поток. Затем эти значения могут меняться непрерывно, и ||f(x)-g_x||
дифференцируемо Вы можете использовать backprop и обучать свою сеть.
Кросс-энтропия, с другой стороны, полезна в классификации с n
метки, например, в классификации изображений. В этом случае g_x
принять дискретные значения c_1,c_2,...,c_m
где m
это количество классов. Теперь вы не можете использовать RMS, потому что если вы предполагаете, что ваша сеть предсказывает точные метки (т.е. f(x) in {c_1,...,c_m}
), затем ||f(x)-g_x||
больше не дифференцируется, и вы не можете использовать обратное распространение. Итак, вы создаете сеть, которая не вычисляет метки классов напрямую, а вместо этого вычисляет набор баллов s_1,...,s_m
для каждого ярлыка класса. Затем вы максимизируете вероятность правильной оценки, максимизируя функцию softmax на оценках. Это делает функцию потерь дифференцируемой.