Derivada do Softmax em relação aos pesos

8

Eu sou novo no aprendizado profundo e estou tentando calcular a derivada da seguinte função em relação à matriz :w

p(a)=ewaxΣdewdx

Usando a regra do quociente, recebo:

p(a)w=xewaxΣdewdxewaxΣdxewdx[Σdewdx]2=0

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.0

Agradeço qualquer indicação na direção certa.

李成 震
fonte
11
Sua notação realmente não funciona, talvez porque você não tenha explicado o que é " " ou quais podem ser as dimensões de . Isso parece estar no centro do seu problema, porque você parece tratar como um número, mas isso não faz sentido. xwx
whuber

Respostas:

13

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=xK=1,,kxKwjxwj{w1,w2,,wk}která 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:xRkK

insira a descrição da imagem aqui

Definindo o softmax como

σ(j)=exp(wjx)k=1Kexp(wkx)=exp(zj)k=1Kexp(zk)

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=wix

(wix)σ(j)=(wix)exp(wjx)k=1Kexp(wkx)=(wix)exp(wjx)k=1Kexp(wkx)exp(wjx)(k=1Kexp(wkx))2(wix)k=1Kexp(wkx)=δijexp(wjx)k=1Kexp(wkx)exp(wjx)k=1Kexp(wkx)exp(wix)k=1Kexp(wkx)=σ(j)(δijσ(i))

- quotient rule


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,

wiσ(j)=k=1K(wkx)σ(j)wiwkx=k=1K(wkx)σ(j)δikx=k=1Kσ(j)(δkjσ(k))δikx

Combinando este resultado com a equação anterior:

wiσ(j)=σ(j)(δijσ(i))x
Antoni Parellada
fonte
1. Bela figura, mas a explicação é confusa. "A última camada oculta produz valores de saída formando um vetor x⃗ = x." Mas x a entrada e não a saída? 2. "a ativação desta camada final não ocorrerá em elementos": isso é útil, mas algumas informações sobre o uso da função exponencial serão úteis.
Coder.in.me 7/10/19
8

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

wiσ(j)=k(wkx)σ(j)wiwkx=k(wkx)σ(j)δikx=kσ(j)(δjkσ(k))δikx=σ(j)(δijσ(i))x
Yuntai Kyong
fonte