Eu sou novo no aprendizado profundo e estou tentando calcular a derivada da seguinte função em relação à matriz :
Usando a regra do quociente, recebo:
Acredito que estou fazendo algo errado, uma vez que a função softmax é comumente usada como uma função de ativação no aprendizado profundo (e, portanto, nem sempre pode ter uma derivada de ). Analisei questões semelhantes , mas elas parecem encobrir essa parte do cálculo.
Agradeço qualquer indicação na direção certa.
Respostas:
A última camada oculta produz valores de saída formando um vetor . A camada neuronal de saída destina-se a classificar entre as categorias com uma função de ativação SoftMax atribuindo probabilidades condicionais (dadas ) a cada uma das categoriasEm cada nó na camada final (ou saída), os valores pré-ativados (valores de logit) consistirão nos produtos escalares , em que . Em outras palavras, cada categoria,x⃗ =x K=1,…,k x K w⊤jx wj∈{w1,w2,…,wk} k terá um vetor diferente de pesos apontando para ele, determinando a contribuição de cada elemento na saída da camada anterior (incluindo um viés), encapsulado em . Entretanto, a ativação dessa camada final não ocorrerá em elementos (como por exemplo, com uma função sigmóide em cada neurônio), mas através da aplicação de uma função SoftMax, que mapeará um vetor em para um vetor de elementos em [0,1]. Aqui está um NN inventado para classificar as cores:x Rk K
Definindo o softmax como
Queremos obter a derivada parcial em relação a um vetor de pesos , mas podemos primeiro obter a derivada de em relação ao logit, ou seja, :(wi) σ(j) zi=w⊤i⋅x
Obrigado e (+1) a Yuntai Kyong por apontar que havia um índice esquecido na versão anterior do post, e as alterações no denominador do softmax foram deixadas de fora da seguinte regra da cadeia ...
Pela regra da cadeia,
Combinando este resultado com a equação anterior:
fonte
Eu tenho um resultado diferente. Além disso, depende de dentro do denominador do softmax, portanto, não tenha certeza se o resultado de Antoni está correto.σ(j) wi
fonte