2014-11-23 93 views
2

В настоящее время я заинтересован в использовании ошибки Cross Entropy при выполнении алгоритма BackPropagation для классификации, где я использую функцию активации Softmax в своем выходном уровне.Кросс-энтропия, Softmax и производный термин в Backpropagation

Из того, что я понимаю, вы можете оставить производную посмотреть, как это с Cross энтропией и SoftMax:

Error = targetOutput[i] - layerOutput[i] 

Это отличается от ошибки Mean Squared из:

Error = Derivative(layerOutput[i]) * (targetOutput[i] - layerOutput[i]) 

Так, может вы бросаете только производный термин, когда ваш выходной уровень использует функцию активации Softmax для классификации с помощью Cross Entropy? Например, если бы я должен был делать регрессию с использованием ошибки кросс-энтропии (с помощью функции активации TANH), мне все равно нужно было бы сохранить производный термин, правильно?

Мне не удалось найти явный ответ на этот вопрос, и я не попытался выработать математику на этом (как я ржавый).

ответ

1

Вы не используете производный термин в выходном слое, так как вы получаете «реальную» ошибку (разницу между вашим выводом и вашей целью), в скрытых слоях вы должны рассчитать приблизительную ошибку, используя обратное распространение.

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

С уважением,

+1

Привет, Seguy, вопрос направлен на ** когда ** производный термин отбрасывается. Всегда ли он используется при использовании кросс-энтропии? Или удалено при использовании слоя Cross Entroy + Softmax Output? – GreekFire

+0

Привет @GreekFire, я понимаю, что вопрос ограничен, чтобы backpropagate последнего слоя. Там вы могли бы использовать или не использовать производную функции squashing (softmax, tanh, ...) на выходе предыдущего слоя. Если вы принимаете во внимание производную, то ошибка сигнала backpropagated ослабляется (замедляя процесс обучения). – Seguy