Redes neuronales híbridas. - página 17

 

¿Quién lo ha probado?

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

Combinación de la retropropagación con el aprendizaje Cauchy

La corrección de los pesos en el algoritmo combinado que utiliza la retropropagación y el aprendizaje de Cauchy consta de dos componentes: (1) un componente direccional calculado mediante el algoritmo de retropropagación, y (2) un componente aleatorio definido por la distribución de Cauchy.

Estos componentes se calculan para cada peso, y su suma es la cantidad en la que cambia el peso. Como en el algoritmo de Cauchy, una vez calculado el cambio de peso, se calcula la función objetivo. Si hay una mejora, el cambio se guarda. En caso contrario, se guarda con la probabilidad determinada por la distribución de Boltzmann.

La corrección del peso se calcula utilizando las ecuaciones presentadas anteriormente para cada uno de los algoritmos:

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

donde η es el coeficiente que controla las cantidades relativas de Cauchy y de retropropagación en los componentes del paso de peso. Si η es igual a cero, el sistema se convierte en una máquina totalmente Cauchy. Si η es igual a uno, el sistema se convierte en una máquina de retropropagación.

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

 
gumgum >> :

¿Puede entrar en más detalles sobre la cuasi-Newtoniana y la LMA?

LMA = algoritmo de Levenberg-Marquardt

Método Quasi-Newton

Métodos de gradiente de segundo orden


Mucho que escribir, en resumen:


El algoritmo de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),donde
H^(-1)(xk) es la inversa de la matriz de Hesse en el punto xk,
sk es el valor del paso,
gradf(xk) es el gradiente de la función en el punto xk.

Así, el método cuasi-newtoniano utiliza la matriz H(xk) en lugar de H^(-1)(xk) que se construye a partir de derivadas parciales de segundo orden,
En el método cuasi-newtoniano las segundas derivadas se calculan mediante el método de las diferencias extremas. En consecuencia, tenemos los dos más utilizados

Fórmulas de cálculo de la RC:


Broydon-Fletcher-Goldfarb-Shanno (BFGS)

Devidon - Fletcher - Powell(DFP).


LMA:


También se refiere a los métodos de segundo orden, es decir, hay que calcular las derivadas parciales de segundo orden,


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

por lo que H^(-1)(xk)se calcula como H= J^t*J donde J es el Jacobiano

respectivamente gradf(xk) = J^t*E, J^t es el jacobiano de transposición, E es el vector de error de la red, entonces

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, donde mu es escalar, si mu es 0, tenemos el método Newton con aproximación hessiana, si mu -> + Inf,

método de gradiente con paso pequeño.


Aquí hay más discusión:


Neurosintetizador, constructor+laboratorio

 
rip писал(а) >>

LMA = algoritmo de Levenberg-Marquardt

Método Quasi-Newton

Métodos de gradiente de segundo orden

Mucho que escribir, en resumen:

El algoritmo de Newton,
xk+1 = xk - sk*H^(-1)(xk)grad f(xk),donde
H^(-1)(xk) es la inversa de la matriz de Hesse en el punto xk,
sk es el valor del paso,
gradf(xk) es el gradiente de la función en el punto xk.

Así, el método cuasi-newtoniano utiliza la matriz H(xk) en lugar de H^(-1)(xk) que se construye a partir de derivadas parciales de segundo orden,
En el método cuasi-newtoniano las segundas derivadas se calculan mediante el método de las diferencias extremas. En consecuencia, tenemos los dos más utilizados

Fórmulas de cálculo de la RC:

Broydon-Fletcher-Goldfarb-Schanno (BFGS)

Devidon-Fletcher-Powell(DFP)


LMA:

También se refiere a los métodos de segundo orden, es decir, hay que calcular las derivadas parciales de segundo orden,

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

por lo que H^(-1)(xk)se calcula como H= J^t*J donde J es el Jacobiano

respectivamente gradf(xk) = J^t*E, J^t es la jacobiana transpuesta, E es el vector de error de la red, entonces

xk+1 = xk - [J^t*J + mu*I]^(-1)*J^t*E, donde mu es un escalar, si mu es 0, tenemos el método Newton con aproximación hessiana, si mu -> + Inf,

método de gradiente con paso pequeño.

Aquí hay más discusión:


Neuro-sintetizador, constructor+laboratorio

Gracias.

La pregunta sigue siendo... ¿Dónde está la verdad?

Esquina superior izquierda (RProp). ¿Por qué DE/DW=0 cuando DE/DW(t-1)*DE/DW<0?

 
gumgum >> :

Gracias.

La pregunta sigue siendo... ¿Dónde está la verdad?

Esquina superior izquierda. ¿Por qué DE/DW=0 cuando DE/DW(t-1)*DE/DW<0?

Un producto negativo de gradientes indica que el algoritmo ha "saltado" el extremo requerido. Por eso esa celda de memoria donde se almacena el valor del gradiente en el paso actual (nótese que es la celda de memoria, no el gradiente en sí) se pone a cero, para que la tercera condición funcione en el siguiente paso. Esta es una buena característica del algoritmo si se lee el artículo en su totalidad.

 
alsu писал(а) >>

Un producto negativo de gradientes indica que el algoritmo ha "sobrepasado" el extremo requerido. Por eso, la celda de memoria donde se almacena el valor del gradiente en el paso actual (nótese que es la celda de memoria, no el gradiente en sí) se pone a cero, para que la tercera condición se active en el siguiente paso. Esto es un truco del algoritmo, si has leído el artículo completo.

Pero entonces necesitas de/dw(t-1)=0

 
gumgum >> :

Pero entonces necesitas de/dw(t-1)=0

en este paso es de/dw(t), en el siguiente será de/dw(t-1)

 
alsu писал(а) >>

en este paso es de/dw(t), en el siguiente será de/dw(t-1)

Gracias. ¿Puedes insinuar con JRprop q es individual para cada peso o qué?

 

Ya me confunde que algunos escriban deltaW=n*DE/DW otros deltaW=n*DE/DW otros etc. etc. ......

 
gumgum >> :

Gracias. Me puedes decir con JRprop q es individual para cada peso o que?

Por lo que tengo entendido, q es lo mismo para todos

 
gumgum >> :

Ya estoy confundido algunos escriben deltaW=n*DE/DW otros deltaW=n*DE/DW otros etc. etc. ......

Empecemos por el principio, el algoritmo heurístico RProp, utiliza el análisis del signo de la primera derivada de la función de error por peso de la sinapsis.

Si el signo de la derivada es positivo, dEdW(t)*dEdW(t-1) > 0, es decir, se aplica la minimización del error, nos movemos en la dirección correcta.

Si el signo ha cambiado, es decir, dEdW(t)*dEdW(t-1) < 0, hemos perdido el mínimo (mínimo local) y debemos dar dos pasos atrás. En primer lugar, para compensar el mínimo que acabamos de perder -en tu ejemplo DELTAij(t) se calcula a partir del valor anterior de delta y -eta. No es necesario corregir Wij(t) en este paso, sólo volveremos al valor anterior de Wij, pero la forma en que lo haces significa que retrocedemos dos veces desde el punto de cambio de signo de la derivada.


En cuanto a <deltaW=-n*DE/DW otros deltaW=n*DE/DW>, no importa, sólo hay que entender qué paso hace qué, en qué dirección y en qué momento.


Dado que se trata de una heurística, el cumplimiento exacto de las fórmulas no es importante, lo que cuenta es el principio.