Anda di halaman 1dari 10

EL ALGORITMO BACKPROPAGATION DESDE OTRA PERSPECTIVA.

Aprendizaje y minimizacin de una funcin de error


Las redes multicapa son capaces de calcular una gama ms amplia de funciones que las redes
compuestas por una nica capa de elementos. Pero el esfuerzo computacioual necesario para encontrar la
combinacin correcta de pesos se incrementa sustancialmente cuando se consideran ms parmetros y
topologas ms complejas.
Se ha visto en la seccin anterior que el aprendizaje de un perceptron poda interpretarse grficamente
como la bsqueda de un mnimo de una funcin de error en el espacio de los pesos. Cada combinacin de pesos
produce una funcin lgica que difiere de la funcin que se desea aprender en un nmero de puntos. El
aprendizaje se define como la bsqueda de la combinacin que minimiza ese nmero. Se vio tambin que la
funcin de error de un perceptrn aislado era una funcin simple con un nico mnimo global.
Pero el algoritmo de aprendizaje de una red neuronal sin realimentacin es en su caso general mucho ms
difcil de definir, ya que la optimizacin de una funcin de error discontinua no es un problema sencillo. Sin
embargo existen procedimientos numricos eficaces para buscar mnimos en funciones derivables. Por esta
razn, se relaja cl problema definiendo un perceptron continuo, en cl que la funcin de activacin no sea la
funcin signo, sino una funcin continua y derivable parecida a la funcin signo. An as, aparecen mnimos
locales en las superficies, lo que complica tambin el proceso.
Funciones de activacin diferenciables
Si la funcin escaln del perceptron se reemplaza por una funcin derivable como

sc(x) = 1/ (1 + e cx)

o su variante bipolar

Scb(x) = 2sc(x) - 1

la funcin de error ser, obviamente, continua y derivable a su vez, lo que permitir emplear tcnicas de
optimizacin clsicas para determinar la combinacin de pesos que resuelve un problema de aprendizaje dado.
Las funciones sc, Scb y otras similares se denominan sigmoides, porque su representacin grfica recuerda a la
forma de la letra s.
Una vez que se ha decidido reemplazar el signo por la sigmoide, se define una funcin de error que
tambin sea continua y derivable. La funcin de error ms empleada en la prctica es

E(w) = i (oi(w) ti)2 = i (oi(w) ti)t (oi(w) ti)


donde w es el vector formado por todos los parmetros de la red neuronal, Oi(w) es la salida de la red neuronal
para el ejemplo i-simo, ti es la salida que se desea obtener en el ejemplo i-simo y N es el nmero de ejemplos.
Si se emplea esta funcin de error, el aprendizaje neuronal es un problema de mnimos cuadrados no lineales,
que puede resolverse por algn mtodo optimizacin (como podra ser el descenso de gradiente, el gradiente
conjugado o un quasi-Newton). Todos estos mtodos requieren conocer el gradiente de la funcin de error:

E(w) = i 2 = i oi(w)t (oi(w) ti) + (oi(w) ti)t oi(w)


que depende a su vez de Oi (w), el vector formado por las derivadas parciales de la salida de la red ante el
ejemplo i con respecto a cada uno de los pesos.
De esta expresin no conocemos los N vectores

oi(w) = (oi/w1, ......, oi/wnp)


cada uno de los cuales contiene a las derivadas parciales de la salida de la red con respecto a cada peso,
evaluadas en el ejemplo i-simo. Por tanto, el problema que se debe resolver es el de calcular estas derivadas
parciales, donde i recorre los ejemplos de entrenamiento.
Luego hemos reducido el problema de calcular el gradiente del error al clculo de las derivadas anteriores,
de las salidas (para todos los ejemplos de entrenamiento i) respecto de los pesos (de todas las conexiones j)
En las secciones que siguen se proporcionan algoritmos para realizar este clculo, basados en el gradiente
del error obtenido.
Como sabemos, una red neuronal es un grafo de funciones. El grafo que se propone puede recorrerse

de dos formas, que llamaremos hacia adelante" y "hacia detrs".


En la forma 'hacia adelante", cada arco transmite un nmero real entre un nodo de entrada y un nodo
oculto, entre dos nodos ocultos o entre uno oculto y uno de salida. Los arcos tienen asociado un peso, lo cual
quiere decir que el nmero que llega al nodo o al nodo de salida en el que incide el arco es el resultado de
multiplicar el nmero que parti del nodo o nodo de entrada correspondiente por el peso asociado al arco.
Cada nodo puede recibir un nmero arbitrario de arcos incidentes, pero solamente sale un arco de l. Un
nodo es un objeto que evala una funcin y su derivada en el punto que recibe como mensaje, y almacena
ambos valores. El seudocdigo de la definicin de un nodo es como sigue:
estructura nodo

f : real ;
f: vector
; delta : vector
virtual real funcin (mensaje :vector)
virtual vector gradiente-funcion(mensaje :vector)
mensaje_adelante (mensaje: vector)
f = funcion (mensaje) ; f' = gradiente_funcion (mensaje)
enva f al arco de salida
fin mensaje_adelante
mensaje_detrs (mensaje: real)
delta = f *mensaje
enva cada delta[i] a su arco de entrada i
fin mensaje_detrs
fin nodo
donde los mtodos funcin y gradiente-funcion contienen el cdigo para evaluar la salida de un nodo ante una
entrada y la evaluacin de la derivada de esa misma funcin ante la entrada. Por ejemplo, si la funcin de
agregracin es la suma y la funcin de activacin es la sigmoide si, la funcin ser

f (x1,x2,.. .,xn) = sc( xi) y su gradiente ser

f(x1,x2,.. .,xn) = (sc( xi), ....., sc( xi))

donde s'c es la derivada de sc. Si la funcin de agregacin no fuese la suma, las componentes de s'c podran ser
distintas entre s, aunque esto no es habitual.
En el recorrido "hacia detrs" se deposita un valor en los nodos de salida y se recorren los arcos en el orden
contrario al definido para el recorrido "hacia adelante". Los arcos se comportan igual (multiplican el valor que
se transmite por el peso que tienen asociado) y en los nodos se multiplica el valor almacenado de f' por el
mensaje y se retransmite el resultado a todas sus entradas (ver el cdigo del mtodo mensaje_detrs).
En el recorrido hacia detrs es posible que dos o ms arcos se unan (por ejemplo, cuando la salida de una
neurona se conecta a la entrada de varias neuronas). El valor que se propaga al origen comn de varios arcos es
la suma de los valores propagados por cada uno de los arcos.
Con esta construccin, para cada valor que se deposite en los nodos de entrada se recoge otro en los
nodos de salida. Llamemos F a la funcin que relaciona la salida con la entrada, oi = F(xi). Demostraremos que

(F/x1, ......, F/xn)

se calcula de la forma siguiente:

1. Fase "Hacia Adelante": Se alimenta una entrada Xi a la red. Se transmiten todos los valores y las salidas
de cada nodo y sus derivadas se almacenan en las variables de estado de los nodos.
2. Fase "Hacia Detrs": Se alimenta el valor 1" a cada nodo de salida y se recorre el grafo hacia atrs. Los
valores que llegan a los nodos de entrada son las derivadas parciales F/xi con respecto a cada entrada.
Una vez recorrida la red en los dos sentidos (fig. 1 y 2) calcular F/w para cada peso w es inmediato:
- Si un arco con peso w une una neurona con salida s con la entrada de otra neurona, la entrada que
llega a la segunda neurona es ws y por tanto la componente de la variable delta asociada al nodo en
el que incide el arco de peso w contiene la derivada parcial de F con respecto al producto ws:
= F/ws

Para calcular F/w aplicamos que s(F/ws) = F/w , es decir, multiplicamos la componente
adecuada de la variable delta del nodo en que el arco incide por la salida de la neurona en la que se
origina el arco en el recorrido hacia adelante.

Figura 1.- Clculo del gradiente mediante


proceso hacia delante y hacia atras

Figura 2.9.

Figura 2.8.- Almacenamiento


de las derivadas en los nodos

El algoritmo anterior calcula correctamente (F/x1, ..., F/xn)


Demostracin: Se proceder por induccin en el nmero de nodos. Puede comprobarse con facilidad que el
algoritmo funciona en los siguientes casos triviales:
1. La red es una nica neurona que conecta un nodo de entrada con un nodo de salida
2. La red es un nico arco que conecta un nodo de entrada con un nodo de salida
3. La red consta de dos neuronas conectadas en serie
4. La red consta de n neuronas conectadas a la misma entrada y con salidas conectadas a un elemento que
suma todas las salidas y transmite el resultado a un nodo de salida .
Considrese ahora el diagrama de la figura 2.9, que contiene n + 1 nodos. Se ejecuta el paso hacia
adelante y el resultado es el valor F(x) de la unidad de salida. Supongamos que hay m unidades, con salidas
F1(x), F2(.x), ....., Fm (x) conectadas a esta neurona de salida. Sabemos entonces que
F(x) = (w1F1(x) + w2F2(x) + ... + wmFm(x))

y que las derivadas parciales de F en x son

F(x)/xi = ( (s) / xi) [w1 (F1(x)/xi) + ... + wm (Fm(x)/xi) ] con s = w1F1(x) + w2F2(x) + ...+ wmFm(x.)).
El subgrafo que incluye todos los caminos posibles entre la unidad de entrada y la unidad cuya salida es
F1(x) es una subred que calcula la funcin F1 y que tiene n o menos nodos, y lo propio puede decirse de las
subredes que calculan F2 a Fm. Por la hiptesis de induccin, podemos calcular las derivadas parciales de F1 con
respecto a xi introduciendo un 1 en la salida y recorriendo el grafo hacia detrs. Debido a que todos los pasos del
recorrido hacia detrs son lineales (multiplicar por constantes y sumar) si se introduce una constante ki en cada
salida se obtiene en la entrada el valor p kp (Fp(x)/xi) y por tanto si se introducen wp ( (s)/xi) se
obtiene en la entrada el valor
p wp ( (s)/xi) (Fp(x)/xi) = ( (s)/xi) p wp (Fp(x)/xi)
que es la derivada parcial que queramos obtener.

Derivadas del error en redes recurrentes


Una red recurrente se comporta como autmata finito. Sea que la entrada a una red neuronal es un vector
de estados en el periodo t y que su salida es el estado en t + 1. La pregunta que se puede hacer a continuacin es
Hay algoritmos para entrenar uno de estos autmatas para que produzcan una secuencia dada de estados?
Retropropagacin en el tiempo
Si consideramos secuencias de longitud limitada, el problema no es ms que un caso particular del
anterior. Si la red neuronal en la que se desea implementar el autmata se duplica tantas veces como estados
haya en la secuencia tenemos una nueva red neuronal en la que la entrada es el estado inicial y las salidas de
todas las redes concatenadas son los estados intermedios que se desea obtener. Esta red puede construirse
mediante un grafo similar a los vistos en la seccin anterior, con una salvedad importante: los pesos de los arcos
deben coincidir en todas las redes duplicadas, por lo que el algoritmo anterior es vlido si no se modifica.
Afortunadamente, la solucin no es complicada, ya que toda red con pesos duplicados es equivalente a otra
con pesos nicos. En particular, dos arcos con pesos w1 y w2 ms la restriccin de que w1 = w2 pueden
reemplazarse por dos nodos que realicen la operacin de multiplicacin entre dos entradas, una de las cuales se
conectar a un valor w y la otra a la salida de la neurona correspondiente en cada caso. Todos los arcos
adicionales tendran peso 1 y no se modificaran en el entrenamiento. Pero tampoco es necesario realizar este
cambio, ya que es fcil comprobar por el esquema anterior que con esta nueva disposicin obtendramos
(E/w) = (E/w1) + ( E/w2) con lo que el tratamiento consiste ahora en considerar que la red tiene tantos
pesos distintos como arcos y acumular las derivadas del error con respecto a cada juego de pesos duplicados.
Modelos Ocultos de Markov
Los modelos ocultos de Markov son un tipo importante de red recurrente. Un modelo de Markov de primer
orden es cualquier sistema que est en un estado de entre n estados posibles en el tiempo t. El sistema no cambia
su estado determinsticamente en cada instante t sino que sigue una dinmica estocstica. La probabilidad de
que el sistema cambie del estado i al j en cada paso viene dada por un valor aij que no depende de t. Los valores
aij pueden recogerse en una matriz A de nxn valores. El sistema tambin emite en cada estado uno de m valores.
Llamamos a la probabilidad de que se emita el valor k-simo de salida en el estado i bik y tenemos una matriz B
de orden nxm. Comenzando en un estado definido en t = 0, el sistema evoluciona durante T periodos y se
almacenan las salidas generadas. Cada nueva evolucin del sistema produce una secuencia diferente de valores
de salida. El calificativo de 'oculto" se aplica porque solamente las salidas son observables, no los estados.
El problema consiste en calcular la secuencia ms probable de transiciones de estados dada una secuencia
de salidas. En el primer tiempo, las probabilidades de que el sistema alcance el estado j desde el i son los aij .
Si no conocemos el estado inicial de forma precisa, y solamente podemos decir que la probabilidad de que
sea i es i, la probabilidad de observar la salida k-sima en t = 0 es i i bik . La probabilidad de que en t=1, la
salida sea la q-sima y la k-sima en t = 0 es p(SkSq) = i j p(Xi Xj) p(Sk/Xi) p(Sq/Xj) = i j i aijbik bjq
(S indica salida y X estado) y en general, la probabilidad de aparicin de una secuencia Sk1, Sk2, . . . ,Skr es
p(Sk1, Sk2, . . . ,Skr) = i1 .... jr p(Xi1 .... Xir) p(Sk1/Xi1) .... p(Skr/Xir) = i ...... j i1 ai1 i2 ..... air-1 ir bi1 k1 ...... bir kr
Si se observa una muestra Sk1, Sk2, . . . ,Skr entonces la estimacin mximo verosmil de las matrices A
y B consistir en determinar los valores que maximicen esta ltima expresin. Puede aprovecharse la construccin que hemos seguido para implementar la expresin anterior como una red de funciones primitivas, emplear
el algoritmo de retropropagacin para calcular la derivada de la funcin y usarla en un mtodo de optimizacin.
En todo caso, obsrvese que el problema de optimizar esta funcin no es trivial, ya que los valores de los
elementos de las matrices A y B estn sujetos a restricciones: su suma por filas y por columnas es 1, todos ellos
son positivos y todos ellos son menores o iguales que 1. No se podr aplicar un algoritmo de descenso de
gradiente y ser necesario recurrir a tcnicas basadas en multiplicadores de Lagrange o programacin no lineal.
Esta formulacin es vlida para redes de topologa arbitraria y con distintas funciones de activacin e
integracin. Curiosamente, este desarrollo adems de ser ms general que el original, es ms sencillo de
implementar. El algoritmo de retropropagacin, tal y como nosotros lo vemos, sirve para calcular la derivada
parcial del error de la red ante un ejemplo con respecto a cada uno de los pesos, y en ese sentido es un algoritmo
ingenioso y muy eficaz computacionalmente. Desafortunadamente, es corriente que no se separe el cmputo de

estas derivadas parciales del uso que se les da ms tarde para corregir los pesos de la red mediante un algoritmo
del tipo de descenso de gradiente, con lo que existe cierta confusin en la nomenclatura, y se hace referencia a la
retropropagacin tanto para calcular las derivadas como para optimizar los pesos de una red. Se debe entender
que el algoritmo de retropropagacin se puede integrar con otros mtodos de optimizacin ms eficaces basados
tambin en el conocimiento del gradiente.

Aprendizaje como minimizacin de una funcin de error


El aprendizaje de un perceptrn multicapa consiste en minimizar una suma de cuadrados. Como se ha visto
en el captulo anterior, existe un procedimiento analtico para obtener el valor del gradiente de esta suma, por lo
que el algoritmo numrico que se emplee puede emplear esa informacin.
Los algoritmos ms eficaces para minimizar una funcin de la que se conoce el gradiente son el gradiente
conjugado y los quasi-Newton. Los mtodos Quasi-Newton requieren almacenar una aproximacin a la inversa
de la matriz Hessiana, por lo que necesitan un espacio proporcional al cuadrado del nmero de pesos; esta
necesidad de almacenamiento era un problema importante hace unos aos, pero actualmente es raro disear una
red en la que esa matriz no pueda almacenarse en memoria.
En 1990 poda darse el caso de que el fichero de ejemplos e incluso el mismo vector de gradientes fuesen
excesivamente grandes como para estar en minora, y por esta razn se popularizaron algoritmos que
modificaban los pesos "on line": esto es, la presentacin de un ejemplo a la red serva para calcular un
incremento de cada peso y este incremento se hacia efectivo antes de procesar el siguiente ejemplo, con lo que
no haba necesidad de almacenar simultneamente todos los pesos ni todos los ejemplos en memoria. Pero en un
ordenador con recursos suficientes no hay razn para emplear uno de estos algoritmos, ya que la versin
cannica del descenso de gradiente (llamada por algunos autores fullpropagation) es en promedio 3 4 veces
ms rpida que el mtodo conocido como backpropagation on line (que se estudiar ms adelante) y los
mtodos de gradiente conjugado o quasi-Newton son tpicamente un orden de magnitud ms rpidos que ste.
Todos los mtodos de optimizacin que se emplearn son de la siguiente forma: Se desea minimizar la
funcin ET (w) = i (Tw(xi) yi)2 donde w (w1,w2,... , wnp) es un vector cuyas componentes son los pesos de
la red neuronal que se desea entrenar, np es el nmero de pesos de la red y N es el nmero de ejemplos. Cada
ejemplo es un par (xi, yj), donde xi es la entrada e yi es la salida que se desea obtener. Tw(xi) es la respuesta de la
red ante la entrada xi y se desea que Tw(xi) sea parecida a yi.. Tw(xi) depende del valor de w.
Los algoritmos de optimizacin no usan el que Tw sea un grafo de funciones primitivas; los mismos
algoritmos seran vlidos para cualquier otra funcin expresada de cualquier otra forma, por ejemplo un
polinomio. La estructura de la funcin T solamente se utiliza para deducir analticamente la expresin del
gradiente de T, mediante el algoritmo visto en el captulo anterior.
Las nicas diferencias entre los mtodos estn en la forma en que se seleccionan las direcciones p y en el
procedimiento seguido en la bsqueda lineal (o sea, en la bsqueda de la ).
accin entrena_red (
ejemplo: tabla[l. .N] de pares (entrada, salida)
var w: tabla[1. .np] de reales
ET: funcin Rnp R
ET: funcin Rnp R
)
var
p: tabla[l. .np] de reales
: REAL
fvar
inicio
elegir aleatoriamente w
repetir
seleccionar una direccin p
buscar que minimice ET(w+p)
w + p
w
hasta limite de iteraciones

Mtodos de descenso de gradiente


En los mtodos de descenso de gradiente, las direcciones p son las direcciones de mximo descenso
local de la funcin de error. Esta direccin viene dada por el gradiente ET cambiado de signo. Es importante
notar que estas direcciones no son las direcciones ptimas de descenso ni siquiera en funciones sencillas como
las cudricas y que en algunos problemas una seleccin aleatoria de la direccin puede ser igual de eficaz. La
ventaja principal de los mtodos de descenso de gradiente est en su simplicidad y en que tienen convergencia
global en funciones convexas.
Fullpropagation
La versin cannica del mtodo de descenso de gradiente no se ha aplicado a las redes neuronales
hasta despus de 1990 y ha recibido cl nombre de Fullpropagation. En fullpropagation se selecciona la
direccin del gradiente de la suma de los errores de la red como direccin de bsqueda y la bsqueda lineal se
hace como se menciona en el apndice. El seudocdigo del mtodo fullpropagation es como sigue:
accin entrena_red(
ejemplo: tabla[1. .N] de pares (entrada, salida)
var w: tabla[1. np] de reales
ET: funcin Rnp R
ET: funcin Rnp R )
var
p: tabla[1. np] de reales
: real
fvar
inicio
elegir aleatoriamente w
repetir
p=ET
buscar que minimice ET(w+_p)
w w + p
hasta limite de iteraciones
fin
Backpropagation
Decimos que la versin cannica no se aplic hasta los 90 porque la primera aplicacin del descenso de
gradiente al entrenamiento de los perceptrones multicapa data de 1986 y tiene varias caractersticas poco
frecuentes, orientadas a ahorrar recursos del ordenador, que no contribuyen positivamente a la estabilidad del
algoritmo ni al orden de su convergencia. Estas modificaciones son:
La funcin de error empleada no es la suma de los errores cometidos en cada punto del fichero de
entrenamiento, sino el error en un nico punto, seleccionado secuencial o aleatoriamente.
La bsqueda lineal se reemplaza por un nico paso de tamao proporcional al gradiente de la funcin de
error correspondiente a la iteracin en curso
La primera de las sustituciones tiene como consecuencia el que el entrenamiento es sensible al orden de
presentacin de los patrones y que la convergencia del algoritmo ya no es global. Si el orden de presentacin es
aleatorio cl algoritmo es estocstico y podremos hablar de la probabilidad de que cl algoritmo converja pero
nunca asegurar sta. La segunda modificacin obliga a determinar experimentalmente el tamao del paso, que
en el mtodo cannico se obtiene automticamente en la bsqueda lineal . En todo caso, por acertada que sea la
eleccin, el tamao ptimo del paso depende del valor del vector de pesos y, en general, ser mayor cuando la
funcin est lejos de la solucin y tender a cero conforme la sucesin de pesos se acerca al mnimo. Por tanto,
valores altos de la llamada constante de aprendizaje hacen que el valor de error descienda rpidamente al
principio y que la secuencia de pesos no converja a la solucin (se dice que el error "oscila") en las etapas

finales del algoritmo y con constantes reducidas las oscilaciones tardan ms en aparecer, pero el nmero de
evaluaciones de la funcin crece y el proceso se ralentiza. Este comportamiento es tpico de los mtodos de paso
fijo y no se debe a las propiedades de las redes neuronales.
El algoritmo original de la retropropagacin on-line es como sigue:
* Algoritmo original
inicio
elegir aleatoriamente w; elegir
repetir
seleccionar i
para j de 1 a np
wj wj + [(Tw(xi) yi)2 /wj ]
fin para
hasta limite de iteraciones
fin

var
w: tabla [1 ... np] de reales
fvar
inicio
elegir aleatoriamente w ; elegir
repetir
seleccionar i
para j de 1 a np
wj 0
fin para
para i de 1 a np
para j de 1 a n
wj wj + [(Tw(xi) yi)2 /wj ]
fin para
fin para
para j de 1 a np
wj wj + wj
fin para
epoca = epoca+1
hasta limite de iteraciones
fin

y la versin batch (tabla de la derecha)


En la versin en cola (batch u off-line), las
modificaciones correspondientes a cada ejemplo se
acumulan y se hacen efectivas en cada poca (epoch) o
iteracin.
Para solucionar el problema de las oscilaciones sin
recurrir a la bsqueda lineal se han sugerido numerosos
algoritmos que adaptan la constante de aprendizaje por
medio de heursticos ms o menos elaborados y que de
hecho hacen que el algoritmo ya no sea de paso fijo. Con algunos de estos mtodos (llamados acelerados) se
consiguen unos rdenes de convergencia similares a los de descenso de gradiente, aunque en general es
complicado demostrar su convergencia.
Momento
La primera modificacin se denomina
momento(inercia) y consiste en almacenar la
ltima correccin hecha a cada peso y ponderarla
con la modificacin que cl algoritmo sugiere en el
paso actual. Sigue el seudo-cdigo del algoritmo
de retropropagacin on-line con momento
(tambin puede aplicarse a la versin off-line):
Algunos autores afirman que el momento
tiene gran importancia en la rapidez con que el
algoritmo de aprendizaje converge y otros afirman
lo contrario. Ambas afirmaciones se basan en la
aplicacin experimental del algoritmo a conjuntos
de datos distintos y son difcilmente
generalizables. En general es mejor no usar el
momento y optar directamente por un mtodo
como fullpropagation o un mtodo acelerado
como el que se muestra en la siguiente seccin.

var

w*: tabla [1 ... np] de reales


w: real
fvar
inicio
elegir aleatoriamente w; elegir
para j de 1 a np
w*j 0
fin para
repetir
seleccionar i
para j de 1 a np
w [(Tw(xi) yi)2 /wj ] + bw*j
wj wj + wj
w*j w
fin para
hasta limite de iteraciones
fin

Regla Delta-Bar-Delta
Una de las aceleraciones ms empleadas es la regla conocida como "delta-bar-delta", que se basa en la
existencia de una constante de aprendizaje distinta para cada peso de la red. Se aplica la siguiente regla a cada
peso: si la direccin en la que el error decrece es la misma que la que en la que ha decrecido recientemente,
aumenta el tamao del paso. Si la direccin es opuesta, decrementa el tamao del paso. La direccin en la que el
error decrece se determina mediante el signo de la derivada del error con respecto al peso en la poca actual: si
es positivo, el error crece al aumentar el peso. Si es negativo, el error decrece al aumentar el peso.
Este mtodo utiliza la direccin en la que el error haya decrecido 'recientemente". Para definir
"recientemente" se recurre a un alisado exponencial. Si de es la derivada del error con respecto al peso y f es el
promedio de la derivada actual y de las pasadas, podemos definir fe+1 = fe + (1 - ) de
con entre O y 1.
Cuanto mayor es el valor de ms pesan las derivadas pasadas en la media. El signo de d nos da una indicacin
de la tendencia de cambio actual del peso, y el signo de f nos da una indicacin de las tendencias pasadas. Si
ambos tienen igual signo podemos aumentar el tamao del paso. Si tienen distinto signo, la direccin ha
cambiado y debemos reducir el paso.El criterio es entonces:
e = e-1 +

si de fe > 0

e = e-1

si de fe < 0

donde y son parmetros. Si vamos en la misma direccin, se incrementa por la constante . Si la


direccin ha cambiado, se decremeuta en . En la prctica, el mtodo no es muy sensible a los valores
elegidos para esas constantes. (son tpicos los valores = 0.1, = 0.5, = 0.7). El seudocdigo es como sigue:
var
fvar

f, d, : tabla [1... np] de reales


inicio
elegir aleatoriamente w ;
para j de 1 a np
fj 0

elegir

j 0
fin para
repetir
para j de 1 a np
dj 0
fin para
para i de 1 a N
para j de 1 a np
dj dj + [(Tw(xi) yi)2 /wj ]
fin para
fin para
para j de 1 a np
wj wj - j dj
si dj fj > 0 entonces
j j +
sino
j j
fin si
fj fj + (1 - ) dj
fin para
epoca epoca+1
hasta limite de iteraciones
fin

Quickpropagation
Una alternativa al empleo del mtodo delta-bar-delta consiste en emplear una iteracin del mtodo de la
se hace
secante en vez de un paso simple. Es decir en lugar de hacer
w = - (E /w)
2
2 -1
w = - ( E /w ) (E /w) que es una iteracin del mtodo de Newton, es decir, se supone que la funcin
de error es cuadrtica, y para no tener que calcular las derivadas segundas, lo cual sera muy costoso, se hace

2E /w2 = [ (E /w)e - (E /w)e-1 ] / we-1


donde el subndice e hace referencia a los valores obtenidos en las pocas e y e - 1. Este mtodo es conocido
como Quickprop. Aunqne puede mejorar bastante la velocidad con que se reduce la tasa de error, no converge
bien en todos los problemas.
Otros Mtodos
La variedad de mtodos de aprendizaje
acelerados para perceptrones multicapa es enorme. No
se ha pretendido hacer un anlisis exhaustivo de estos
algoritmos, sino que se han seleccionado aqullos cuya
importancia prctica es mayor.
El empleo de los algoritmos de descenso del
error propuestos originalmente por el grupo PDP no
est justificado actualmente, ya que hay mtodos ms
estables y que adems convergen ms deprisa. De
entre estos, el que mejores propiedades tiene es el
mtodo del gradiente conjugado (cuadro adjunto). No
es mucho ms complejo que el descenso de gradiente
y su funcionamiento es considerablemente mejor. Los
mtodos de mtrica variable (quasi-Newton)
convergen solo ligeramente ms rpido y necesitan
mucha ms memoria (ver un ejemplo ms abajo). El
descenso de gradiente (fullpropagation) es lento pero a
cambio es cl mtodo mas estable de todos (con esto
queremos decir, por ejemplo, que es mas robusto ante
inexactitudes en la bsqueda lineal que el gradiente
conjugado). Tambin son muy populares los mtodos
heursticos en que la constante de aprendizaje
evoluciona, como el mtodo de Silva y Almeida, el
Delta-Bar-Delta, I{esilient Propagation, Quickprop etc.

Mtodos de direcciones conjugadas


algoritmo gradiente_conj
var
x, g, g_old, d: vector
alfa, beta: reales
fvar
inicio
elegir el punto x=x0
repetir
para i = 0 a n hacer
g = gradiente de E_phi
si (i = 0) // Descenso de gradiente
d=-g
si no
beta = ( (g-g_old) *g) / (g_old*g_old)
d = - g + beta*d
fin si
g_old = g
buscar alfa que minimiza E_phi(x+alfa*d)
x = x + alfa*d
fin para
hasta final
fin

Algoritmo Levenberg-Marquardt.
Como los mtodos del cuasi-newton, el algoritmo de Levenberg-Marquardt fue diseado para acercarse a la
velocidad del entrenamiento del segundo-orden sin tener que calcular la matriz Hessiana. Cuando la funcin de
error tiene la forma de una suma de cuadrados (como es tpico entrenando redes feedforward ), entonces la
matriz Hessiana puede aproximarse como H = Jt J, y la pendiente puede computarse como; g = Jt e
donde J es la matriz Jacobiana que contiene las derivadas (primeras) de los errores de la red con respecto a los
pesos y tendencias, y e es un vector de errores de la red. La matriz Jacobiana puede calcularse a travs de una
tcnica de backpropagation estandar (vea [HaMe94]) que es mucho menos complejo que calcular la Hessiana.
El algoritmo de Levenberg-Marquardt usa esta aproximacin a la matriz Hessiana en la siguiente adaptacin
tipo Newton:
Xk+1 = Xk - [ Jt J + I ] 1 Jt e
Cuando el escalar es cero, es el mtodo de Newton, usando la matriz Hessiana aproximada. Cuando es
grande, tenemos el gradiente descendente de pendiente con un tamao del paso pequeo. El mtodo de Newton
es ms rpido y ms exacto cerca de un mnimo del error, as que el objetivo es cambiar tan rpidamente como

posible hacia el mtodo de Newton (cambiando ). As, disminuye despus de cada paso exitoso (hay
reduccin en la funcin de error) y aumenta cuando un paso tentativo aumentara el error. De esta manera, la
funcin de error se reducir siempre en cada iteracin del algoritmo.

Mtodo de mtrica variable


algoritmo quasi_Newton_DFP_escalado
var
x , g , g_old , d , p , q: vector
alfa, beta: reales
H: matriz
fvar
inicio
elegir el punto x = x0
calcular g = gradiente de E_phi en x0
k=0
repetir
si (k mod n = 0) ; H=I ; fin si
d = - H*g
buscar alfa que minimiza E_phi(x+alfa*d)
x = x+alfa*d ;
p = alfa*d ;
g_old = g
g = gradiente de E_phi en x
q = g - g_old
si (k mod n > 0) entonces
H = (H - (H*q*tr (q) *H) / (tr (q) *H*q)) * (tr (p) *q) / (tr (q) *H*q) + (p*tr(p) ) / (tr(p)*q)
fin si
k = k+1
hasta final
fin
Mtodo de direcciones aleatorias
Por ltimo se comentar un mtodo que no es
empleado para entrenar redes neuronales sino para
dar valores iniciales adecuados a los pesos.
Consiste en seleccionar aleatoriamente una
direccin y realizar la bsqueda lineal a lo largo de
ella, de acuerdo con el esquema adjunto.
La ventaja de este mtodo es que no emplea
informacin acerca del gradiente de la funcin
(siempre y cuando, obviamente, la bsqueda lineal
no emplee el gradiente). No es eficaz en las
proximidades de la solucin, pero puede ser igual
de eficaz que un mtodo basado en el gradiente en
las primeras etapas del algoritmo, con la ventaja de
que, al no necesitar calcular el gradiente, es ms
rpido. Por esta razn se han conseguido ahorros de
ticifl1)o iniciando el aprendizaje de esta forma y
cambiando a descenso de gradiente o a gradiente
conjugado tras un numero dado de iteraciones.

accion entrena_red(
ejemplo: tabla[1 ... N] de pares (entrada,salida)
var
w:
tabla[1 ... np] de reales
ET :
funcion Rnp R
)
ET : funcion Rnp R
var
p: tabla[1. np] de reales
: real
fvar
inicio
elegir aleatoriamente w
repetir
elegir aleatoriamente p
buscar que minimice ET (w+_p)
w w + p
hasta limite de iteraciones
fin

Anda mungkin juga menyukai