O problema é:
Derive o gradiente em relação à camada de entrada para uma rede neural de camada única oculta usando sigmoid para entrada -> oculta, softmax para oculta -> saída, com perda de entropia cruzada.
Eu posso passar a maior parte da derivação usando a regra de cadeia, mas não tenho certeza de como realmente "encadear" elas.
Definir algumas notações
, é função sigmóide
,
, é a função softmax
, é um vetor quente de rótulo real
Então, pela regra da cadeia,
Os gradientes individuais são:
Agora temos que encadear as definições. Na variável única, isso é fácil, apenas multiplicamos tudo juntos. Nos vetores, não tenho certeza se usaremos a multiplicação por elementos ou por matriz.
Onde é a multiplicação de vetores por elementos e é uma multiplicação de matrizes. Essa combinação de operações é a única maneira em que eu consigo las para obter um vetor de dimensão , que eu sei que deve ser.
Minha pergunta é: qual é a maneira correta de descobrir qual operador usar? Estou especificamente confuso com a necessidade do elemento entre e .
Obrigado!
fonte
Respostas:
Acredito que a chave para responder a essa pergunta é apontar que a multiplicação por elementos é realmente uma abreviação e, portanto, quando você deriva das equações, nunca a usa realmente.
A operação real não é uma multiplicação por elementos, mas uma multiplicação por matriz padrão de um gradiente com um jacobiano , sempre .
No caso da não linearidade, o jacobiano da saída do vetor da não linearidade em relação à entrada do vetor da não linearidade passa a ser uma matriz diagonal. Portanto, é verdade que o gradiente multiplicado por essa matriz é equivalente ao gradiente da saída da não linearidade em relação ao elemento de perda multiplicado por um vetor que contém todas as derivadas parciais da não linearidade em relação à entrada da não linearidade, mas isso decorre do jacobiano ser diagonal. Você deve passar pelo passo jacobiano para chegar à multiplicação por elementos, o que pode explicar sua confusão.
Em matemática, temos algumas não linearidades , uma perda e uma entrada para a não linearidade (pode ser qualquer tensor). A saída da não linearidade tem a mesma dimensão --- como @Logan diz, a função de ativação é definida como elemento.s L x∈Rn×1 s(x)∈Rn×1
Queremos
Onde é o jacobiano de . Expandindo esse jacobiano, obtemos∂s(x)∂x s
Vemos que está em todo lugar zero, exceto na diagonal. Podemos criar um vetor de todos os seus elementos diagonais
E então use o operador elemento a elemento.
fonte
Sempre que houver uma proporção proporcional a uma função de ativação, as operações tornam-se elementos. Especificamente, usando o seu exemplo, é um derivado de retropropagação e é um derivado de ativação, e seu produto é um elemento elementar, . Isso ocorre porque as funções de ativação são definidas como operações entre elementos na rede neural.δ2=(y^−y)WT2 a′=h∘(1−h) δ2∘a′
Consulte os slides da palestra do cs224d página 30, também pode ajudar.
fonte