#python-3.x #numpy #machine-learning
#python-3.x #numpy #машинное обучение
Вопрос:
Я понимаю вывод частных производных для двоичной перекрестной энтропии.
двоичная перекрестная энтропия
Loss = y * log10(yHat) (1 - y) * log10(1 - yHat)
dLoss/dyHat = -y/yHat (1 - y) / (1 - yHat)
категориальная перекрестная энтропия
Loss = y * log10(yHat)
dLoss/dyHat = -y / (yHat * exp(10))
Хотя я не вижу, чтобы последняя производная использовалась при обратном распространении. Проблема, с которой я сталкиваюсь, заключается в том, что обновляется только положительная категория.
Например; Если после первого прямого распространения,
y = category 4, and category 3 = [[0, 0, 0, 1], [0, 0, 1, 0]]
yHat = [[0.1, 0.2, 0.1, 0.4], [0.1, 0.3, 0.1, 0.5]]
Тогда обратное распространение с использованием категориальной перекрестной энтропии будет =
[[0., 0., 0., -0.1e-3], [0., 0., -0.4e-3, 0.]
Обновление весов этими значениями приводит только к увеличению чисел при каждом обновлении без каких-либо штрафных санкций за вероятность неправильных классификаций. В конечном итоге все значения yHat приближаются к 1.0.
Тот же шаг обратного распространения с использованием двоичной перекрестной энтропии дает значения =
[[1.1, 1.3, 1.1, -2.5],[1.1, 1.4, -10.0, 2.0]]
Позволяет получать как вознаграждение за правильную категорию, так и штраф за неправильную.
Итак, практикуется ли при использовании категориальной перекрестной энтропии использовать двоичную производную перекрестной энтропии? Не похоже, что такая свобода должна быть принята, но не уверен, что делать?