Estou lidando com um problema relacionado à localização do gradiente da função de perda de entropia cruzada no parâmetro que:
Onde, e é uma entrada de vetor.
Além disso, é um vetor quente da classe correta e é a previsão para cada classe usando a função softmax.y
Portanto, por exemplo, vamos ter ey i = ( 0,10 0,20 0,10 0,40 0,20 )
Para encontrar a derivada parcial
A partir daí, para cada os gradientes parciais individuais serão ∂ C E ( θ )
Mas isso não é verdade porque os gradientes devem ser 0 para todas as outras linhas, exceto para a quarta linha, porque usamos a propriedade do vetor quente. Portanto, o gradiente real deve ser
E, portanto, os gradientes para tudo o que deveria ser ∂ C E ( θ )
Mas isso não é igual a . Portanto, não devemos chamar o gradiente da função de entropia cruzada uma diferença de vetor entre o previsto e o original.
Alguém pode esclarecer isso?
UPDATE: Corrigida minha derivação
Onde, e é uma entrada de vetor.θi
Além disso, é um vetor quente da classe correta e é a previsão para cada classe usando a função softmax.y
UPDATE: Removido o índice de ey Portanto, por exemplo, vamos ter ey = ( 0,10 0,20 0,10 0,40 0,20 )
UPDATE: Corrigido: eu estava usando derivada wrt , deveria ser apenas wrt . θ i Para encontrar a derivada parcial
A partir daí, para cada os gradientes parciais individuais serão ∂ C E ( θ )
O que aconteceu acima acontece porque E Tomando a derivada parcial de wrt , obtemos:
PASSO PRINCIPAL: O facto de e cria o vetor que completa a prova.
fonte
O seguinte é o mesmo conteúdo da edição, mas no formato passo a passo (para mim) um pouco mais claro:
Estamos tentando provar que:
dado
e
Sabemos que para e , então:yj=0 j≠k yk=1
Use o fato de que e para , para mostrar isso.∂θk∂θk=1 ∂θk∂θq=0 q≠k
Para a segunda parte, escrevemos a derivada para cada elemento individual de e usamos a regra da cadeia para obter:θ
Conseqüentemente,
fonte