Обратное распространение, кросс-энтропийная потеря и функция Softmax - PullRequest
0 голосов
/ 13 апреля 2020

Я читал эту статью: https://stackabuse.com/creating-a-neural-network-from-scratch-in-python-multi-class-classification/.
Если вы прочитаете весь код в конце статьи, вы заметите, что автор НЕ запускает backprop из функции loss ( перекрестная энтропия) так и должно быть. Скорее, он запускает обратный процесс с выхода softmax.

Мои вопросы:

  1. Почему он не оптимизирует кросс-энтропийные потери, предпочитая оптимизацию выхода softmax?

Предварительный ответ: если метки закодированы как горячие, то мы просто получим один член в выражении суммирования кросс-энтропии, то есть отрицательный логарифм вывода softmax для правильного класса , Таким образом, оптимизация softmax эквивалентна оптимизации кросс-энтропии. Я прав?

Учитывая, что кто-то хочет оптимизировать softmax, посмотрите, как он вычисляет (промежуточную) производную softmax по логитам от последнего полностью подключенного: dcost_dzo = ao - one_hot_labels. Это просто вычитает «1» из вывода softmax для правильного класса. Он даже не использует аналитическую производную softmax. Почему можно это сделать?

Предположим, что мой ответ на вопрос 1 верен. Но если бы мы хотели, для ясности, начать обратный процесс с кросс-энтропийной потерей, явно используя выражения для производных как функции потерь, так и функции softmax. Как бы мы это закодировали?

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...