Redes neurais híbridas. - página 17

 

Quem já tentou?

...........................................................

Combinando a propagação de volta com a aprendizagem de Cauchy

A correção de pesos no algoritmo combinado usando propagação traseira e aprendizagem Cauchy consiste em dois componentes: (1) um componente direcional calculado usando o algoritmo de propagação traseira, e (2) um componente aleatório definido pela distribuição Cauchy.

Estes componentes são computados para cada peso, e sua soma é a quantidade pela qual o peso muda. Como no algoritmo Cauchy, uma vez calculada a mudança de peso, a função alvo é calculada. Se houver uma melhoria, a mudança é salva. Caso contrário, ele é salvo com a probabilidade determinada pela distribuição Boltzmann.

A correção do peso é calculada usando as equações apresentadas anteriormente para cada um dos algoritmos:

wmn,k(n+1) = wmn,k(n) + η[aΔwmn,k(n) + (1 - a) δ n,k OUT m,j ] + (1 - η) xc,

onde η é o coeficiente que controla as quantidades relativas de Cauchy e backpropagation nos componentes da etapa de peso. Se η for igual a zero, o sistema se torna uma máquina totalmente Cauchy. Se η for igual a um, o sistema se torna uma máquina de propagação de retorno.

........................................................

 
gumgum >> :

Você pode entrar em mais detalhes sobre o quase-Newtonian e LMA.

LMA = algoritmo Levenberg-Marquardt

Método Quasi-Newton

Métodos de segunda ordem de gradiente


Muito para escrever, em resumo:


O algoritmo de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),onde
H^(-1)(xk) é o inverso da matriz de Hesse no ponto xk,
sk é o valor do passo,
gradf(xk) é o gradiente da função no ponto xk.

Portanto, o método quase newtoniano usa a matriz H(xk) em vez de H^(-1)(xk) que é construída a partir de derivadas parciais de segunda ordem,
No método quase newtoniano, os segundos derivados são calculados usando o método das diferenças extremas. Assim, temos os dois mais freqüentemente utilizados

Fórmulas de cálculo CR:


Broydon-Fletcher-Goldfarb-Shanno (BFGS)

Devidon - Fletcher - Powell(DFP).


LMA:


Também se refere aos métodos de segunda ordem, ou seja, devem ser calculadas as derivadas parciais de segunda ordem,


xk+1 = xk - sk*H^(-1)(xk)grad f(xk),onde

então H^(-1)(xk)é calculado como H= J^t*J onde J é o Jacobiano

respectivamente gradf(xk) = J^t*E, J^t é o Jacobiano de transposição, E é o vetor de erro da rede, então

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, onde mu é escalar, se mu é 0, temos o método Newton com aproximação Hessian, se mu -> + Inf,

método de gradiente com passo pequeno.


Há mais discussão aqui:


Neuro-sintetizador, construtor+lab

 
rip писал(а) >>

LMA = algoritmo Levenberg-Marquardt

Método Quasi-Newton

Métodos de segunda ordem de gradiente

Muito para escrever, em resumo:

O algoritmo de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),onde
H^(-1)(xk) é o inverso da matriz de Hessen no ponto xk,
sk é o valor do passo,
gradf(xk) é o gradiente da função no ponto xk.

Portanto, o método quase newtoniano usa a matriz H(xk) em vez de H^(-1)(xk) que é construída a partir de derivadas parciais de segunda ordem,
No método quase newtoniano, os segundos derivados são calculados usando o método das diferenças extremas. Correspondentemente, temos dois utilizados com maior freqüência

Fórmulas de cálculo CR:

Broydon-Fletcher-Goldfarb-Schanno (BFGS)

Devidon-Fletcher-Powell(DFP)


LMA:

Também se refere aos métodos de segunda ordem, ou seja, devem ser calculadas as derivadas parciais de segunda ordem,

xk+1 = xk - sk*H^(-1)(xk)grad f(xk),onde

então H^(-1)(xk)é calculado como H= J^t*J onde J é o Jacobiano

respectivamente gradf(xk) = J^t*E, J^t é o Jacobiano transposto, E é o vetor de erro da rede, então

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, onde mu é um escalar, se mu é 0, temos o método Newton com aproximação Hessian, se mu -> + Inf,

método de gradiente com passo pequeno.

Há mais discussão aqui:


Neuro-sintetizador, construtor+lab

Obrigado.

A questão permanece... Onde está a verdade?

Canto superior esquerdo (RProp). Por que DE/DW=0 quando DE/DW(t-1)*DE/DW<0?

 
gumgum >> :

Obrigado.

A questão permanece... Onde está a verdade?

Canto superior esquerdo. Por que DE/DW=0 quando DE/DW(t-1)*DE/DW<0?

Um produto negativo de gradientes indica que o algoritmo "saltou" o extremo exigido. É por isso que aquela célula de memória onde o valor do gradiente na etapa atual é armazenado (note que é a célula de memória, não o gradiente em si) é zerada, para que a terceira condição funcione na etapa seguinte. Esta é uma boa característica do algoritmo, se você ler o artigo na íntegra.

 
alsu писал(а) >>

Um produto negativo de gradientes indica que o algoritmo "superou" o extremo exigido. É por isso que a célula de memória onde o valor do gradiente no passo atual é armazenado (nota, é a célula de memória, não o gradiente em si) é zerada, para que a terceira condição seja acionada no próximo passo. Este é um truque do algoritmo, se você tiver lido o artigo na íntegra.

Mas então você precisa de de/dw(t-1)=0

 
gumgum >> :

Mas então você precisa de de/dw(t-1)=0

nesta etapa é de/dw(t), na próxima se tornará de/dw(t-1)

 
alsu писал(а) >>

nesta etapa é de/dw(t), na próxima se tornará de/dw(t-1)

Obrigado. Você pode sugerir com JRprop q é individual para cada peso ou o quê?

 

Eu já estou confuso por alguns escrever deltaW=n*DE/DW outros deltaW=n*DE/DW outros etc. etc. ......

 
gumgum >> :

Obrigado. Você pode me dizer com JRprop q é individual para cada peso ou o quê?

Tanto quanto eu entendo, q é o mesmo para todos

 
gumgum >> :

Já estou confuso, alguns escrevem deltaW=-n*DE/DW outros deltaW=n*DE/DW outros etc. etc. ......

Vamos começar do início, algoritmo heurístico RProp, ele usa a análise do sinal da primeira derivada da função de erro pelo peso da sinapse.

Se o sinal da derivada for positivo, dEdW(t)*dEdW(t-1) > 0, ou seja, se for implementada a minimização de erros, nós nos movemos na direção correta.

Se o sinal mudou, ou seja, dEdW(t)*dEdW(t-1) < 0, perdemos o mínimo (mínimo local) e devemos dar dois passos atrás. Primeiro, para compensar o mínimo que acabamos de perder - no seu exemplo o DELTAij(t) é calculado a partir do valor anterior de delta e -eta. Você não precisa corrigir o Wij(t) nesta etapa, voltaremos apenas ao valor anterior de Wij, mas a maneira como você o faz significa que voltamos duas vezes a partir do ponto de mudança do sinal derivado.


Quanto a <deltaW=-n*DE/DW outros deltaW=n*DE/DW>, não importa, você só tem que entender qual passo faz o quê, em que direção e em que ponto no tempo.


Como isto é heurístico, a adesão exata às fórmulas não é importante, é o princípio que conta.