Download Una Introduccion Al Computo Neuronal Artificial Ricardo Perez Aguila...
Una Introducción al Cómputo Neuronal Artificial
Ricardo Pérez Aguila Profesor Investigador Titular
Universidad Tecnológica de la Mixteca (UTM)
Dedicatorias Con todo amor a mi hija Diana, mi esposa Kenia y mi(s) hij@(s) que aún está(n) por llegar a este mundo. Con todo cariño a mi sobrina Lucy, mi mamámiMaría de laEdna Luz, hermana y mi cuñada Fernanda A quien me introdujo en el mundo de las Redes Neuronales: Dra. María del Pilar Gómez Gil A mis García, amigos Thelma Gabriel Gerónimo, Luis Javier Martínez, Omar Ramírez, Ricardo Ruiz, Aisa Santiago y Paola Soto
Una introducción al cómputo neuronal artificial.
24 978-1-4135-2424-6
Septiembre
978-1-4135-2424-6 978-1-4135-2434-5
Una Introducción al Cómputo Neuronal Artificial
Acerca del Autor Ricardo Pérez Aguila es originario de la ciudad de Tehuacán, Puebla, México. Es egresado de la Universidad de las Américas Puebla (UDLAP, Cholula, Puebla, México) donde obtuvo los Títulos de Ingeniero en Sistemas Computacionales (2001), Maestro en Ciencias con Especialidad en Ingeniería en Sistemas Computacionales (2003) y Doctor en Ciencias de la Computación (2006). Durante el periodo 2003-2007 se desempeñó como Profesor de Tiempo Parcial en el Departamento de Actuaría, Física y Matemáticas de la UDLAP. En Otoño de 2007 se incorporó de Tiempo Completo como Profesor-Investigador Titular del Instituto de Computación en la Universidad Tecnológica de la Mixteca (UTM, Huajuapan de León, Oaxaca, México). Desde el año 2009 ostenta el nombramiento de Candidato a Investigador Nacional por parte del Sistema Nacional de Investigadores (Conacyt-SNI, México). En 2011 se le otorgó el Reconocimiento a Perfil Deseable y Apoyo por parte del Programa de Mejoramiento del Profesorado (PROMEP, México). Como docente ha impartido en varias ocasiones los cursos de Matemáticas Discretas, Análisis de Algoritmos, Redes Neuronales Artificiales, Teoría de Autómatas, Algoritmos Genéticos, Visión por Computadora, entre otros. Sus intereses de investigación consideran la visualización, geometría, topología, representación y aplicaciones de los Politopos n-Dimensionales. En el campo de las Redes Neuronales Artificiales ha tenido particular interés en las arquitecturas basadas en entrenamiento no supervisado. Cuenta en su haber con más de 30 artículos publicados, internacionalmente y con arbitraje, en congresos y revistas.
Ricardo Pérez Aguila Instituto de Computación Universidad Tecnológica de la Mixteca (UTM) Carretera Huajuapan-Acatlima Km. 2.5 Huajuapan de León, Oaxaca 69000, México E-mails:
[email protected],
[email protected] Web site: http://ricardo.perez.aguila.googlepages.com
iii
A rtificial Una Introducción al Cómputo Neuronal Artificial
iv
Una Introducción al Cómputo Neuronal Artificial
También del Autor
El objetivo principal de este texto es el de proporcionar las bases formales y fundamentales para que el alumno sea capaz de estudiar sus algoritmos y determinar si éstos son, desde un punto de vista de la Complejidad Temporal, eficientes o no. Este trabajo cuenta con cinco capítulos en donde se abordan tópicos como Preliminares Matemáticos (Logaritmos, Series, Sucesiones, Inducción Matemática, Teorema del Binomio), Notación Asintótica, Técnicas para el Análisis de Complejidad Temporal, Solución de Recurrencias (Método de Extensiones, Teorema Maestro), Teoría de Grafos, enfoques de diseño de algoritmos bajo Memoización, Bottom-Up y Voracidad. Finalmente, se presenta una introducción informal a las Clases de Problemas P y NP, Problemas NP-Completos y Reducción Polinomial. Las técnicas y conceptos son aplicados sobre los bien conocidos algoritmos de ordenamiento Insertion Sort, Quick Sort, Merge Sort, Counting Sort y Bucket Sort. También se estudia la Complejidad Temporal de algunos algoritmos que dan solución a problemas clásicos de Teoría de Grafos: Búsquedas por Profundidad y Amplitud, Algoritmos de Dijkstra, Bellman-Ford, Fleury y Kruskal. La forma de presentar los temas está dirigida a estudiantes que estén cursando el segundo año de las Licenciaturas en Computación, Sistemas Computacionales, Informática, Ciencias de la Computación y Matemáticas Aplicadas.
Una Introducción a las Matemáticas para el Análisis y Diseño de Algoritmos Ricardo Pérez Aguila El Cid Editor, Argentina, 336 páginas, Primera Edición, 2012 ISBN Edición Impresa: 978-1-4135-7661-0, ISBN Edición Digital: 978-1-4135-7647-4 Registro SEP-INDAUTOR (México): 03-2011-111412410000-01 Web Site de Difusión y Distribución: http://www.e-libro.net/libros/libro.aspx?idlibro=6525
v
A rtificial Una Introducción al Cómputo Neuronal Artificial
vi
Una Introducción al Cómputo Neuronal Artificial
Abstract En este trabajo se presenta una introducción al estudio y análisis de las Redes Neuronales Artificiales. Se hace mención de las bases neurofisiológicas que inspiran a algunas de las Arquitecturas Neuronales más populares y se plantean de manera formal sus procedimientos correspondientes haciendo uso de herramientas provenientes de áreas como el Álgebra Lineal y el Cálculo Diferencial de Varias Variables. Se estudian inicialmente las neuronas de tipo Adaline Perceptrón. el caso del Perceptrón presentan Problemay de Representación y el yTeorema de En Convergencia a fin de se plantear los elalcances limitaciones que se tiene con este tipo de Neurona Artificial. Posteriormente se aborda el estudio de la Red Madaline a fin de establecer los retos que surgen para el aprendizaje en una red formada por varias neuronas. Se da un especial énfasis a las redes compuestas por Perceptrones al estudiar los fundamentos de su popular mecanismo de aprendizaje, definido por el Algoritmo de Retropropagación. También se presentarán a las Redes de Kohonen como un ejemplo de Arquitectura Neuronal cuyo aprendizaje no requiere de supervisión. A lo largo del texto se desarrollan aplicaciones de las Redes Neuronales en los contextos del Modelado y Predicción de Señales, Modelado de Funciones Booleanas y Clasificación Automática de Imágenes.
vii
A rtificial Una Introducción al Cómputo Neuronal Artificial
viii
Una Introducción al Cómputo Neuronal Artificial
Prólogo
"I propose we build a robot child, who can love. A robot child child who will genuinely genuinely love love the parent parent or parents it imprints imprints on, with with a love that that will never never end ... But a mecha mecha with a mind, mind, with neuronal neuronal feedback. feedback. You see what I'm suggesting is that live will be the key by which they acquire a kind of subconscious never before achieved. And inner world of metaphor, of intuition, of self motivated reasoning. Of dreams."
Profesor Hobby en A.I. Artificial Intelligence, Dirigida por Steven Spielberg, Warner Bros. Pictures, 2001
Tuve la oportunidad de conocer el área de las Redes Neuronales Artificiales gracias a que formé parte, primero como alumno de Licenciatura y posteriormente como alumno de Posgrado, de dos interesantes cursos impartidos por la Dra. María del Pilar Gómez Gil. Fue en esas ocasiones en las que tuve acceso por primera vez a ese paradigma cuyo fundamento radica en tomar el poder del procesamiento cerebral y tratar de llevarlo a la implementación mediante nuestras computadoras actuales. Al incorporarme como Profesor Titular de la Universidad Tecnológica de la Mixteca (UTM) me fue asignada la impartición del curso de Redes Neuronales Artificiales. Se me presentó entonces la oportunidad de expandir mis conocimientos en el área, nuevamente con la ayuda de la Dra. Gómez Gil, y de ganar un poco más de experiencia. Desde entonces he tenido la oportunidad de transmitir lo que sé al respecto a alumnos tanto de nivel Licenciatura como de Posgrado. Hasta el día de hoy, teniendo identificadas las limitaciones teóricas de nuestras computadoras, no me ha dejado de ser sumamente interesante que mediante esas Redes Neuronales y sus sencillas implementaciones se han logrado resultados que han dado importantes soluciones a problemas tan variados como de Optimización, Predicción y Clasificación. Inclusive, se han dado soluciones aproximadas, pero muy cercanas a las exactas, a problemas que yacen en la frontera de las Ciencias de la Computación, como son los bien conocidos Problemas NP-Completos. Hemos de mencionarlo también, las Redes Neuronales Artificiales tienen sus limitaciones, pero éstas a su vez forman un gran panorama de Investigación y Desarrollo que ha de ser enfrentado y cubierto en los próximos años.
ix
A rtificial Una Introducción al Cómputo Neuronal Artificial
Muchas de mis experiencias como Docente y como Investigador en el área de Redes Neuronales Artificiales las he englobado en este texto, el cual se divide en siete Capítulos y cuyos contenidos enuncio brevemente: • Capítulo 1: Introducción. En donde se estudian las bases neurofisiológicas de las que toma su inspiración el Computo Neuronal. También se hace una breve visita a los principios de los que parte el diseño y expectativas de las Redes Neuronales Artificiales y sus mecanismos de aprendizaje. Finalmente, se mencionan las estructuras básicas de Neuronas y Redes más utilizadas en la actualidad. • Capítulo 2: Preliminares Matemáticos. Se hace un repaso de algunas herramientas Matemáticas que serán requeridas para la formalización de los Algoritmos de Aprendizaje a abordar en el texto. Se estudian los vectores gradientes desde el punto de vista del Cálculo Diferencial y su relación con los Máximos y Mínimos en una función de varias variables. También se aborda a la Regresión Lineal y en particular al Método de Mínimos Cuadrados. Finalmente se discutirá a la Desigualdad de Cauchy-Schwarz. • Capítulo 3: La Neurona Adaline. En donde se utiliza a tal neurona para introducir los métodos de Aprendizaje neuronal basados primeramente en el método de Mínimos Cuadrados, y posteriormente en el método de Descenso Escalonado. Los métodos serán formalizados desde un punto de vista que los analiza como procesos de búsqueda de gradientes.4: El Perceptrón. En donde se abordará el estudio de la que quizás es la • Capítulo Neurona Artificial más popular. Se analizará su estructura y principios funcionales. También nos introduciremos en el Problema de Representación que se encarga de establecer de manera formal los alcances y limitaciones que presenta la neurona de tipo Perceptrón desde el punto de vista de los problemas a los que puede dar solución. Se hará mención de una aplicación orientada al Modelado de Señales. • Capítulo 5: La Red Madaline. En este Capítulo se introduce a esta red, formada por neuronas de tipo Adaline, como un primer ejemplo de una arquitectura de neuronas interconectadas. También se establecen los retos y consideraciones referentes al aprendizaje. En particular, se discuten los aspectos relacionados con la eficiencia de los métodos de aprendizaje desde el punto de vista de la solución que se encuentre para un problema dado, así como el tiempo requerido para llegar a ésta. Finalmente, se presenta una aplicación dirigida al Modelado de Funciones Booleanas. • Capítulo 6: Redes de Perceptrones. Se estudian las redes formadas por neuronas de tipo Perceptrón. Se retomará el estudio de la neurona de tipo Perceptrón al abordar la Regla de Aprendizaje de Rosenblatt. También se demostrará y discutirá el Teorema de Convergencia de Perceptrón, el cual formaliza la mencionada regla. Esta regla representa el punto de partida e inspiración para el popular Algoritmo de Retropropagación. Se estudiarán también las bases formales detrás de la Retropropagación tanto para redes formadas por una capa oculta así también para redes formadas por varias capas ocultas. Ubicaremos formalmente al Algoritmo de Retropropagación como un método de búsqueda de gradiente por medio de Descenso Escalonado. Por último, se presentará una aplicación de las redes de Perceptrones en la Predicción de Señales.
x
Una Introducción al Cómputo Neuronal Artificial
• Capítulo 7: Redes de Kohonen. En este último Capítulo se abordará el modelo
propuesto por el finlandés Teuvo Kohonen. Estas redes son un ejemplo de arquitectura basada en aprendizaje no supervisado, es decir, aprendizaje no sustentado en la presencia de un “maestro” o “evaluador”. Veremos como es que las Redes de Kohonen toman inspiración de la forma en la cual la corteza cerebral procesa y administra información proveniente de los sentidos. Se discutirá una aplicación para la Clasificación Automática de Imágenes. Este texto está pensado principalmente para estudiantes de nivel Licenciatura en las carreras de Ciencias de la Computación, Informática, Física, Matemáticas Aplicadas y afines. Desde el punto de vista Matemático se asume que el alumno se encuentra habilitado con las nociones básicas de Álgebra Lineal y Cálculo Diferencial de Varias Variables. Como se apreciará a lo largo del texto, desde el punto de vista Computacional sólo se requiere un buen manejo de algún lenguaje de programación de alto nivel. Nuestros algoritmos serán especificados utilizando únicamente estructuras de datos estáticas (arreglos y matrices). Reconozco que el área de las Redes Neuronales Artificiales no es mi principal nicho de Investigación. mi objetivo es transmitir nociones quede forman a este campo tal y cómo las veo y lasPero entiendo. Pero además, comolas se verá a través este trabajo, lo haremos desde la perspectiva de la aplicación intensa del Cálculo Diferencial de Varias Variables. Esta es un área de estudio de la cual los estudiantes, sobre todo de Ingeniería (incluido el Autor), han renegado en su momento. Quiero hacerles ver a los alumnos como es que el Cálculo Diferencial es una poderosa herramienta que permite establecer los fundamentos detrás de los mecanismos de Aprendizaje para algunos modelos de Redes Neuronales. Veremos que términos como Derivada Parcial, Regla de la Cadena, Vector Gradiente, Máximos y Mínimos de una Función tendrán una gran relevancia en el estudio que presentamos. Espero haber cumplido con mis objetivos. Quiero agradecer, en primer lugar y como mi siempre, a mi hermosa hija Diana y a mi esposa Kenia. Ustedes han sido, y serán, mi motor y mi inspiración. Gracias por todos los ánimos, queMaría me han dadoGómez para poder concluir esteyatrabajo. También quiero dar lascariño graciasy aamor la Dra. del Pilar Gil por ser, como mencioné antes, quien me introdujo a este maravilloso campo de estudio y con quien además he tenido el gran de honor de colaborar en varios artículos científicos. También agradezco profundamente a mis amigos por todo su apoyo. Cualquier comentario, sugerencia o corrección serán siempre bienvenidos. Éstos se podrán hacer llegar a través del e-mail
[email protected]. Finalmente, solo me basta hacer saber que a final del texto se cuenta con una Sección de Referencias. Todas han sido utilizadas en la elaboración de este trabajo y además el lector interesado puede consultarlas para profundizar más aún en el área de Redes Neuronales Artificiales. Una buena opción, desde mi punto de vista, sería comenzar por lo excelentes textos de Graupe, Haykin, Hilera & Martínez, y Rojas. Ricardo Pérez Aguila Agosto de 2012 xi
A rtificial Una Introducción al Cómputo Neuronal Artificial
xii
Una Introducción al Cómputo Neuronal Artificial
Índice General Índice de Ecuaciones Índice de Algoritmos Índice de Figuras Índice de Tablas
1. Introducción 1.1 Redes Neuronales Biológicas 1.2 Principios del Diseño de Redes Neuronales Artificiales 1.3 Principios del Aprendizaje o Entrenamiento de una Red Neuronal Artificial 1.4 Estructuras Básicas de Neuronas y Redes
2. Preliminares Matemáticos 2.1 Gradientes y Búsquedas de Máximos y Mínimos 2.2 Regresión Lineal 2.3 Regresión Lineal con Múltiples Variables 2.4 La Desigualdad de Cauchy-Schwarz
3. La Neurona Adaline 3.1 Estructura 3.2 Ajuste de Pesos de la Neurona Adaline por Mínimos Cuadrados 3.3 Ajuste de Pesos de la Neurona Adaline por Descenso Escalonado 3.3.1 Descenso Escalonado: Caso una entrada – una salida 3.3.2 Descenso Escalonado: Caso varias entradas – una salida
4. El Perceptrón 4.1. Estructura Básica y Funciones de Activación 4.2 El Problema de Representación 4.3 Aplicación: Identificación de Parámetros Autorregresivos en una Señal
5. La Red Madaline 5.1 Estructura Básica 5.2 Ajuste de Pesos en una Red Madaline 5.3 Modelado de Funciones Booleanas
Página Página xv xxix xxxi xxxix 1 8 13 15 17 21 23 30 38 44 47 49 49 52 57 58 69 83 85 90 103 121 123 125 133
xiii
A rtificial Una Introducción al Cómputo Neuronal Artificial
6. Redes de Perceptrones 6.1 La Regla de Rosenblatt 6.2 Teorema de Convergencia del Perceptrón 6.2.1 Discusión 6.3 Retropropagación 6.3.1 Retropropagación en una Red de una Sola Capa Oculta 6.3.2 Justificación del Algoritmo de Retropropagación 6.4 Retropropagación en una Red con Múltiples Capas Ocultas 6.5 Aplicación: Predicción de Señales
7. Redes de Kohonen 7.1 Redes Neuronales Auto-Organizadas 7.2 La Corteza Cerebral 7.3 El Modelo de Kohonen 7.4 Aplicación: Clasificación Automática de Imágenes 7.4.1 Redistribución del Conjunto de Entrenamiento 7.4.2. Clasificación de Imágenes mediante una Red de Kohonen 1D
Referencias
xiv
153 155 159 168 168 173 173 174 184 201 227 243 245 246 248 262 263 268 279
Una Introducción al Cómputo Neuronal Artificial
Índice de Ecuaciones Ecuación 2.1.1
Ecuación 2.1.2 Ecuación 2.1.3 Ecuación 2.2.1 Ecuación 2.2.2 Ecuación 2.2.3 Ecuación 2.2.4 Ecuación 2.2.5 Ecuación 2.2.6 Ecuación 2.2.7 Ecuación 2.2.8 Ecuación 2.2.9
Du f ( x1 , ..., xn ) =
23
δ f δf δ f u1 + u2 + ... + un δ x1 δ x2 δ xn
Du f ( x x1, …, xn) = ||∇ f ( x x1, …, xn)|| cos θ d i = wx1,i + b + εi d i = x2,i + εi εi = d i – (wx1,i + b) εi = d i – d i’ J =
26 28 30 30 31 31
1 N 2 ε i 2 N i =1
32
x d δ J b = w 1,i + − i δ b i =1 N i =1 N i =1 N N
N
N
33
2
N N N x1,i x1,i dx δ J = w + b − i 1,i N δ w i =1 N i =1 N i =1
x1,i + N i =1 N
w
N x12,i
1 N
w
1
b − N
N
x1,i
N
i=
+ b i =1
i=
Ecuación 2.2.10 Ecuación 2.2.11 Ecuación 2.2.12
Página
δ f δ x 1 δ f ∇ f ( x1 , ..., xn ) = δ x2 δ f δ xn
N
N
w=
xd − d ⋅ x 2
( )
x − x
2
34
i=
N
−
w x 2 + b x − xd = 0
33
d i
1 N = 0
w x + b − d = 0
i =1
di x1,i N
= 0
34 34 34
35
xv
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 2.2.13 b=
d ⋅ x2 − xd ⋅ x
( )
2
x − x
Ecuación 2.3.1
2
35
P
di' = b +
1 w x , k
ik
k =
Ecuación 2.3.2 Ecuación 2.3.3
38 38
ε i = di − (b + w1 xi ,1 + w2 xi ,2 + ... + wP xi , P ) P
ε i = di − wk xi, k
39
k = 0
Ecuación 2.3.4 Ecuación 2.3.5 Ecuación 2.3.6 Ecuación 2.3.7 Ecuación 2.3.8
2
P 1 N J = di − wk xi ,k 2 N i =1 k = 0 P δ J 1 N
di − wk xi , k δ w j i= k = 0 N N P xi , j di = xi , j wk xi ,k i =1 i =1 k =0 N P N P xi , j wk xi , k = wk xi, j xi , k i =1 k = 0 k =0 i =1
x , N 1
=−
i j
N
P
i j
1
i
k
N
Ecuación 2.3.10 Ecuación 2.3.11
Ecuación 2.3.12 Ecuación 2.3.13
xvi
k=
N
1 i=
Rk , j =
N i =1
1
i k
41
42
0
wk
1
N
x, x,
N i =1
i j
i k
xi , j xi ,k
k = 0,1,2,..., P
N
R0,0 R = R1,0 RP ,0 ℘ j =
i j
k=
1
41
i=
P
xi , j di =
40
N
1 x , d = 0 w 1 x , x , i=
Ecuación 2.3.9
39
j = 0,1,2,..., P
42
42
R0, P
R0,1
R1,1
RP ,1
RP , P
R1, P
42
N
x , d
N i =1
℘0 ℘ ℘= 1 ℘P
i j
i
j = 0,1,2,..., P
42
43
Una Introducción al Cómputo Neuronal Artificial
Ecuación 2.3.14
w0 w 1 W = wP
43
℘-1 = 2.3.15 R Ecuación 2.3.16 ℘ RW = W Ecuación 3.1.1
43 43
y = sign w0 +
Ecuación 3.2.1
0 w x , k
1 w x i i
49
i=
P
zi =
P
i k
εi = d i - zi
54 54
1 N 2 J (W ) = ε i 2 N i =1 W m+1 = W m + ∆wm ∆wm = µ(-∇ J (W )m)
54 58 63
k =
Ecuación 3.2.2 Ecuación 3.2.3 Ecuación 3.3.1 Ecuación 3.3.2 Ecuación Ecuación 3.3.3 3.3.4
2
2
( ) = ( – ) = ( – ( + x )) m ,0 ∇ J (W ) m = −2(d m − (wm,0 xm ,0 + wm ,1 x m ,1 ))
J W m
d m
zm
d m
wm,0 xm,0
wm,1 xm,1
xm ,1
Ecuación 3.3.5 Ecuación 3.3.6
Ecuación 3.3.7 Ecuación 3.3.8
63 64
2
P J (W )m = (d m − Wm ⋅ X m ) = d m − wm ,k xm ,k k = 0 δ J (W ) m δ w m ,0 δ J (W ) m ∇ J (W )m = δ wm ,1 J W δ ( ) m δ w m,P
2
δ J (W ) m = −2 xm , j (d m − Wm ⋅ X m ) δ wm , j
xm,0 x m ,1 ∇ J (W )m = −2(d m − Wm ⋅ X m ) xm , P
Ecuación 3.3.9 SDO(T, N, P) = TN (7 (7P + 8) Ecuación 3.3.10 LSO( N N , P) = (P + 1)2(2 N + 1) + ( P + 1)(2 N + 1) + (P + 1)3 + (P + 1)2
70
71 71
72 75 77 xvii
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 3.3.11 Ecuación 4.1.1
2P2 + 6P + 4 T ( P) = P 7 + 8
79
n
1 w x
z =
i
i
85 85 86
i=
Ecuación 4.1.2 Ecuación 4.1.3 Ecuación 4.1.4 Ecuación 4.1.5 Ecuación 4.1.6 Ecuación 4.1.7 Ecuación 4.1.8
z = W ⋅ X y = f N ( z z)
f N ( z ) = f N ' =
1 1 + e− z e
= y
86
− z
(1 + e − z )2
87
z f N ( z ) = Tanh = y
2 2 z f N ( z ) = Tanh = −1 − z 2 1+ e
2e
f N ' =
Ecuación 4.1.10
2
(1 + e− )
Ecuación 4.1.11 Ecuación 4.2.1 Ecuación 4.2.2 Ecuación 4.2.3 Ecuación 4.2.4 Ecuación 4.2.5
89 −2 z
f N ( z ) = Tanh ( z ) = f N ' = f N ' =
4e
1− e = y 1 + e−2 z
(1 + e )
89
2 z 2 z 2
(1 + e )
z( x x1, x2) = w1 x1 + w2 x2 w1 x1 + w2 x2 = v⋅ x x = ||v||⋅|| x x|| cos θ z( x x1, x2, x3) = w1 x1 + w2 x2 + w3 x3 z( x x1, x2,…, xn) = w1 x1 + w2 x2 + … + wn xn = 0
2 ⋅ 2 ⋅ .. .. . ⋅ 2 = 2n n
2 ⋅ 2 ⋅ .. .. . ⋅ 2 = 2(2 )
99
2n
Ecuación 4.3.1
Ecuación 4.3.2
ck si n = k , k ∈ {1, 2, ..., M } M xn = a x + n o i s e ( n ) s i n > M k n −k k =1 M
1 a ' x
x 'n =
k
n−k
N ≥ n > M
k =
Ecuación 4.3.3
x
ε = n
xviii
90 92 92 94 95 99
n
Ecuación 4.2.6
89
2 z 2 z 2
2e
88
− z
z
Ecuación 4.1.9
88
n
– x 'n
N n M
≥ >
103 105 106
Una Introducción al Cómputo Neuronal Artificial
Ecuación 4.3.4 Ecuación 4.3.5
2
M MSE = x − a ' x n k n − k N − M n = M +1 k =1
1
N
M MSEn = xn − a 'n ,k xn− k k =1
Ecuación 4.3.6
δ MSE n = −2ε n x n− j δ a 'n, j
Ecuación 4.3.7
xn −1 x n ∇ MSE n = −2ε n − 2 xn− M a 'n ,1 a 'n,2 a 'n = a 'n , M a 'n +1 = a 'n + ∆a'n
Ecuación 4.3.8
Ecuación 4.3.9 Ecuación 4.3.10
Ecuación 4.3.11
Ecuación 5.1.1 Ecuación 5.2.1 Ecuación 5.2.2
107
2
CM ( n, p, m, q, n1 , …, nm ) = np + pn1 +
108
109 109
S = w j ,0 + w j ,i yi : j = 3, 4 i =1
109
115
m −1
n ⋅n
+1
=1
2
1 w , y j i
i
i=
Ecuación 5.2.3
m
M = q +
1 n
=
Ecuación 5.2.4 Ecuación 5.2.5
107 108
xn −1 x ∆a'n = µ2εn n − 2 x n M − ck si n = k , k ∈ {1, 2, ..., M } M x 'n = ' a x s i N ≥n>M k n − k k =1
A( j ) = w j ,0 +
N ≥ n > M
M M ! k = k ! ( M k ) ! − M M M M M M + + ... + + ... + = 1 2 k M k =1 k
+ nm q
124 127 129 131 131 131 xix
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 5.2.6 Ecuación 5.2.7 Ecuación 5.3.1
M M − k k a b k = 0 k M M M M M M − k k M k − 0 = k 1 1 − 1 = 2 − 1 k =1 k =1 M
( a + b) = M
f ( x x , x , x ) = (¬ x1 1 ∧2 ¬ x3 2 ∧ xx3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3) x1 ⊗ xx2 = (¬ x1 ∧ xx2) ∨ ( x x1 ∧ ¬ x2) Z 1( x x1, x2) = w1,0 + x1w1,1 + x2w1,2 x1 − x2 − 1 = 0
Ecuación 5.3.2 Ecuación 5.3.3 Ecuación 5.3.4 Ecuación 5.3.5 Z 2( x x1, x2) = w2,0 + x1w2,1 + x2w2,2 Ecuación 5.3.6 x1 − x2 + 1 = 0 Ecuación 5.3.7 − x1 + x2 − 1 = 0 Ecuación 5.3.8 − y1 − y2 − 1 = 0 Ecuación 5.3.9 Z 3( y y1, y2) = y1 + y2 + 1 Ecuación 5.3.10 − x1 − x2 + x3 − 2 = 0 Ecuación 5.3.11 Ecuación 5.3.12 Ecuación 5.3.13 Ecuación 5.3.14 Ecuación 5.3.15 Ecuación 5.3.16 Ecuación 6.1.1
x1 − x2 + x3 + 2 = 0 − x1 + x2 − x3 − 2 = 0
− x1 − x2 − x3 + 2 = 0 x1 + x2 + x3 − 2 = 0 y1 + y2 + y3 + 2 = 0
2n (2n ) ! = n − n n ( 2 ) ! ! n I 1 I 2 E =
149
1 w I j
j
156
j =
Ecuación 6.1.3 Ecuación 6.1.4 Ecuación 6.1.5 Ecuación 6.2.1 Ecuación 6.2.2
n O = g(ent ) = g w j I j j =1 n Err = = T – – O = T – – g w j I j j =1 w j = w j + α⋅ Err Err I ⋅I j j = 1, 2, …, n γ 1 = min {W * ⋅E k } W k k
= W k k + E + E + … + E k-1 E k k = ( E k-1) + E k k
+1
xx
135 136 137 137 138 138 138 139 140 144
155
n
ent =
132
145 145 145 145 146
I n
Ecuación 6.1.2
132
1
2
156 156 157 162 162
Una Introducción al Cómputo Neuronal Artificial
Ecuación 6.2.3 Ecuación 6.2.4 Ecuación 6.2.5 Ecuación 6.2.6 Ecuación 6.2.7
W *⋅W k E 1 + E 2 + … + E k-1 k +1 +1 = W *⋅( E k-1 + E k k ) W *⋅W k ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅ E k k -1 ⋅ E k k k +1 +1 = W * E -1 + W * E 2 2 2 ||W k k +1 +1|| = ||W k k || + 2W k k ⋅Ε k k + ||Ε k k ||
162 163 164
k ⋅Ε kk − = k k || 1 ||W k || + ||Ε ||W k +12 || – 2W 2 2 Wk + Ek = 2W j ⋅ E j + E j
164
2
2
j =1
Ecuación 6.2.8 Ecuación 6.2.9
( k )
2
γ 12
W *
Ecuación 6.2.10 k =
Ecuación 6.2.11
2
{
γ 2 = max E k
2
}
1
166 167
168
N
(T
− Ok )2
k
N k =1
2
n 2 ME k = ( T – O ) = T − g w I k k k k k j j j =1 Ecuación 6.2.13 W *⋅W k k +1 +1 = W *⋅W 1 + W *⋅ E E 1 + W * E ⋅E 2 + … + W * E ⋅E k E k k -1 -1 + W *⋅ E k
Ecuación 6.3.1
n2
1 w , a
enti =
ji
j
j =
Ecuación 6.3.2 Ecuación 6.3.3 Ecuación 6.3.4 Ecuación 6.3.5 Ecuación 6.3.6 Ecuación 6.3.7 Ecuación 6.3.8
Oi = g(ent i) w j,I = w j,I + α⋅a j⋅∆i ∆i = Err i ⋅ g’(ent i) Err i = T i – Oi
170 172 176 176 176 176 176 177 177
n3
∆ j = g '(ent j ) ⋅ w j ,i ∆i n1
1 w , I
ent j =
k j k
k =
Ecuación 6.3.10
170
n
2 g '(enti ) = g ' w j ,i a j j =1 wk,j = wk,j + α⋅ I I k k ⋅∆ j
i =1
Ecuación 6.3.9
165
2
γ 12
Ecuación 6.2.12
j =1
= k γ 2
γ 2 W *
ME =
2
1 (Ti − Oi ) 2 2 i =1
177 177
n3
E =
184
xxi
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 6.3.11
n3 SSE = (T i , − Oi , ) 2 =1 i =1
Ecuación 6.3.12
1 (Ti − g (ent i )) 2 2 i =1
Ecuación 6.3.13 Ecuación 6.3.14 Ecuación 6.3.15 Ecuación 6.3.16
xxii
N
185
n3
E =
2
n2 1 n3 E = Ti − g w j ,i a j 2 i =1 j =1
185 185
∂ E = −a j ∆i ∂w j ,i
187
∂ E = −∆ j ⋅ I k ∂wk , j
189
δ E δ w 1,1 δ E δ wn ,1 2 δ E δ w1,n3 δ E δ wn2 , n3 ∇ E = δ E δ w1,1 δ E w δ n ,1 1 δ E δ w 1,n2 δ E δ wn ,n 1 2
190
Una Introducción al Cómputo Neuronal Artificial
Ecuación 6.3.17
Ecuación 6.3.18 Ecuación 6.3.19
Ecuación 6.3.20
−a1∆1 −an2 ∆1 −a ∆ 1 n3 a − ∆ n n ∇ E = 2 3 − I 1∆1 − I n1 ∆1 − I 1∆ n2 − I n1 ∆ n2 E =
191
1 2 T − 2 ⋅ T1 ⋅ g ( w1,1 g ( w1,1 x1 ) ) + g ( w1,1 g ( w1,1 x1 ) ) 2 1
−2( ) 1− e 1,1 1 −2 w1,1⋅ − 2( ) 1+ e 1,1 1 1− e T12 − 2 ⋅ T 1 ⋅ −2( ) 1− e 1,1 1 −2 w1,1⋅ −2( ) 1+ e 1,1 1 1+ e 1 E = 2 −2( ) 1− e 1,1 1 2 −2 w1,1⋅ −2( ) 1 − e 1+ e 1,1 1 + −2( ) 1− e 1,1 1 −2 w1,1⋅ −2( 1,1 1 ) e + 1 + e 1 2( − ⋅0.2 ) 1− e 1,1 −2 w1,1⋅ −2 ( ⋅0.2 ) 1+ e 1,1 1 − e (0.5)2 − 2 ⋅ (0.5) ⋅ −2 ( ⋅0.2 ) 1− e 1,1 −2 w1,1⋅ −2 ( ⋅0.2 ) 1+ e 1,1 1+ e 1 E = 2 −2 ( ⋅0.2 ) 1− e 1,1 2 −2 w1,1⋅ −2 ( 1,1⋅0.2 ) e 1 + 1− e + −2 ( ⋅0.2 ) 1− e 1,1 w − 2 ⋅ 1,1 −2( ⋅0.2) 1 + e 1+ e 1,1 w
x
w
x
w
x
w
x
w
x
w
x
w
x
w
x
2
193
193
w
w
w
w
w w
w w
Ecuación 6.3.21
E =
1 2
194
(T12 − 2T1w1,1w1,1 x1 + w12.1w12,1 x12 ) 195 xxiii
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 6.3.22 Ecuación 6.3.23 Ecuación 6.3.24 Ecuación 6.3.25 Ecuación 6.3.26 Ecuación 6.4.1
E = 0.125 − 0.1w1,1w1,1 + 0.02 w12.1w12,1
195
δ E = −0.1w1,1 + 0.04 w1,1w12,1 δ w1,1,11
196
δ E 2 1,1 + 1,1w1,1 w w = − 0.1 0.04 δ w1,1,11
196
w1,1 = w1,1 =
2.5
, w1,1 ≠ 0
w1,1,11
2.5
, w1.1 ≠ 0
w1,1,11 nm
enti =
w
⋅ am, k
k m ,i
k m =1
Ecuación 6.4.2
197
m
197
204
n Oi = g (enti ) = g wk ,i ⋅ am ,k k =1 m
m
m
204
m
n
Ecuación 6.4.3 Ecuación 6.4.4
entk , =
−1
w
k −1 , k ,
k −1 =1
⋅ a −1,k.−1
a , k = g (entk , ) = g
Ecuación 6.4.5
n−1
1 w
k−1 , k ,
k −1 =
204 ⋅ a −1,k−1
204
p
entk1 ,1 =
1 w ,
k k1 ,1
⋅ Ik
204
k =
Ecuación 6.4.6 Ecuación 6.4.7
p = g (ent1,k1 ) = g wk , k1 ,1 ⋅ I k k =1
a1,k1
q
E =
1 (T − O ) i
2
i
204
205
i=
Ecuación 6.4.8
δ E = − T − O g ' ent a ( i i ) ( i ) m, k δ wk ,i m
207
m
Ecuación 6.4.9
n Erri = Ti − Oi = Ti − g wk ,i ⋅ am ,k k =1 ∆i = Erri ⋅ g '(ent i ) m
m
m
207
m
Ecuación 6.4.10
n n = Ti − g wk ,i ⋅ am ,k ⋅ g ' wk ,i ⋅ am ,k k =1 k =1 m
m
m
m
Ecuación 6.4.11
m
xxiv
m
m
δ E = −∆i ⋅ am ,k δ wk ,i m
m
m
207 207
Una Introducción al Cómputo Neuronal Artificial
Ecuación 6.4.12
q
δ E
= − ∆i w k ,i g ' ( entk m
Ecuación 6.4.13
δ wk
∆k
Ecuación 6.4.14
m
, km , m
,m
)a
m −1, km−1
210
i =1
q
,m
= ∆ i ⋅ wk ,i ⋅ g ' ( entk ,m ) m
i =1
δ E δ wk
Ecuación 6.4.15
m−1
m
m−1
= − ∆ k
m
210
m
,m
⋅ am −1, k −1 m
211
, km , m n+1
∆ k , = g '(entk , ) ∆ k+1, +1 ⋅ wk , k+1 , +1
k +1 =1
Ecuación 6.4.16
δ E δ wk−1 ,k ,
Ecuación 6.4.17 Ecuación 6.4.18 Ecuación 6.4.19 Ecuación 6.4.20 Ecuación 6.4.21 Ecuación 6.5.1 Ecuación 7.3.1
δ E
=− ∆ k , a −1,k −1
1< < m
wkm ,i = wkm ,i + α⋅∆i⋅ am,k m wkm−1 ,km ,m = wkm−1 ,km , m + α⋅ ∆ km ,m ⋅ am −1,k m−1 wk−1 ,k , = wk−1 , k , + α⋅ ∆ k , ⋅ a−1,k −1 wk ,k 1 ,1 = wk ,k 1 ,1 + α⋅ ∆ k 1 ,1 ⋅Ι k k
1 1 + t
224 225 225 225 225 233
x1 x 2 X = xn
Ecuación 7.3.2 Ecuación 7.4.1
220
= −∆ k1 ,1 ⋅ I k
δ wk ,k 1 ,1
α (t ) =
215
W j = W j + α⋅ϕ( j j, k , r )⋅( E E – – W j) H = [0,1] × [0,1] × ... × [0,1]
n
Ecuación 7.4.2 min
xi
= min x j ,i : E j = x j ,i , j = 1, 2, ..., N
248 250 263
264
xxv
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ecuación 7.4.3
Ecuación 7.4.4
Ecuación 7.4.5
x1min min x Pmin = 2 min x n x max 1 max x Pmax = 2 max xn
264
x = max x j ,i : E j = x j ,i , j = 1, 2, ..., N x j ,1 x1min x ' j ,1 E j ' = E j − Pmin = − =
265
265
max
i
Ecuación 7.4.6
Ecuación 7.4.7
Ecuación 7.4.8
Ecuación 7.4.9 Ecuación 7.4.10
x j ,n xnmin x ' j ,n x1max x1min x1max ' Pmax ' = Pmax − Pmin = − = xnmax xnmin xnmax ' min min x1 x1 0 Pmin ' = Pmin − Pmin = − = xnmin xnmin 0 ximax '⋅ Si = 1, i = 1, 2, ..., n S = i
Ecuación 7.4.11
xxvi
1 ximax
266
266
266 267
, i = 1, 2, ..., n '
1 min ( x j ,1 − x1 ) max min x − x 1 1 x j*,1 1 min x ) E j * = x j*,i = ( x j ,i − i max min x − x i i x* j ,n 1 min ( x − x ) j , n n max min x − x n n
267
268
Una Introducción al Cómputo Neuronal Artificial
Ecuación 7.4.12
normalized
G j
Ecuación 7.4.13 Ecuación 7.4.14
α (t ) =
=
1 t + 1
G j
256
d G = d ⋅ 255 max
268 270
W
274
xxvii
A rtificial Una Introducción al Cómputo Neuronal Artificial
xxviii
Una Introducción al Cómputo Neuronal Artificial
Índice de Algoritmos Página Algoritmo 3.1. Algoritmo 3.2. Algoritmo 3.3. Algoritmo 3.4. Algoritmo 4.1. Algoritmo 6.1. Algoritmo 6.2. Algoritmo 6.3. Algoritmo 6.4. Algoritmo 6.5. Algoritmo 7.1. Algoritmo 7.2.
Cálculo del mínimo de la función J (W ) mediante búsqueda del vector gradiente ∇ J (W ) = 0 y actualización iterativa del vector de pesos. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de una única entrada. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de una única entrada y T presentaciones del conjunto de entrenamiento. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de varias entradas y T presentaciones del conjunto de entrenamiento. Implementación del método de Descenso Escalonado para el entrenamiento de un Perceptrón y determinación de Parámetros Autorregresivos en una señal. Implementación de la Regla de Rosenblatt para el entrenamiento de un Perceptrón. Propagación de un vector de entrada en una red de Perceptrones con una única capa oculta. Método de Retropropagación para el entrenamiento de una Red de Perceptrones con una única capa oculta. Propagación de un vector de entrada en una red de Perceptrones con dos capas ocultas. Entrenamiento por Retropropagación para una Red de Perceptrones con dos capas ocultas. Entrenamiento de una Red de Kohonen Unidimensional. Determinando la neurona asociada a un vector de entrada E en una Red de Kohonen Unidimensional.
61 65 69 72 110 158 180 182 230 233 251 253
xxix
A rtificial Una Introducción al Cómputo Neuronal Artificial
xxx
Una Introducción al Cómputo Neuronal Artificial
Índice de Figuras Figura 1.1. Figura 1.2. Figura 1.3. Figura 1.4. Figura 1.5. Figura 1.6. Figura 2.1.
Figura 2.2. Figura 2.3. Figura 2.4. Figura 2.5. Figura 3.1. Figura 3.2. Figura 3.3. Figura 3.4. Figura 3.5. Figura 3.6.
Componentes principales de una Neurona Biológica. Componentes de la Unión Sináptica entre dos neuronas. Porción de una Red Neuronal Biológica. Representación esquemática de una neurona (biológica o artificial). Ejemplo de Representación Esquemática de un fragmento de Red Neuronal. Un Red formada por 6 neuronas tipo Adaline. Interpretación del signo de las pendientes de las Rectas Tangentes a una función f . a) Una pendiente positiva señala la dirección de crecimiento de f . b) Una pendiente negativa indica que f decrece decrece en la dirección positiva del eje X 1. Ajuste de la recta wx1 + b. Disposición en el plano cartesiano de los puntos presentados en la Tabla 2.1. La recta d = = 2.9818 x1 + 3.9545 como el mejor estimador lineal para el conjunto de datos presentado en la Tabla 2.1. El paraboloide asociado a la función de error J = = 5w2 + 0.5b2 – 29.81w – 3.95b + 52.397 Representación esquemática de una neurona Adaline. Gráfica de la función sign. Esquema de una neurona Adaline para dar solución al modelado de la compuerta lógica OR. Estructura de la neurona Adaline omitiendo el uso de la función sign. Sección transversal del paraboloide definido por J (W ). ). El vector gradiente nos indica la dirección de máximo crecimiento de J (W ). ). Sección transversal del paraboloide definido por J (W ). ). La dirección opuesta del vector gradiente indica la dirección en donde se ubica el mínimo de J (W ). ).
Página 9 10 11 12 12 13 18
25 25 31 31 36 37 37 38 49 49 49 51 53 53 58 58 59 59
xxxi
A rtificial Una Introducción al Cómputo Neuronal Artificial
Figura 3.7.
Figura 4.1. Figura 4.2.
Sección transversal del paraboloide definido por J (W ). ). Dado un (punto) vector de pesos inicial W 1 y -∇ J (W 1) se obtiene el nuevo (punto) vector de pesos W 2. Usando a W 2 y -∇ J (W 2) se obtiene el (punto) vector de pesos W 3. Se procede de manera sucesiva hasta obtener un vector de pesos W m tal que ∇ J (W m) = 0 o tan cercano a éste como sea posible. Representación esquemática de un Perceptrón. Algunas Funciones de Activación para el Perceptrón: a) Función Sigmoide; b) Tangente Hiperbólica con argumento
Figura 4.3. Figura 4.4. Figura 4.5. Figura 4.6.
Figura 4.7.
Figura 4.11.
xxxii
2
; c) Tangente Hiperbólica; d) La función
1 + Tanh( z ) . 2 Una neurona de tipo Perceptrón con dos entradas. El umbral z( x x1, x2) = w1 x1 + w2 x2 = 0 asociado a un Perceptrón de 2 entradas. x1, x2) = w1 x1 + w2 x2 = 0 El vector normal v del umbral z( x asociado a un Perceptrón de 2 entradas. Los componentes de v son precisamente los valores de los pesos w1 y w2. Caracterización de los puntos en el Espacio Euclidiano Bidimensional en función del signo de su evaluación con la función z( x x1, x2) = w1 x1 + w2 x2. Si w1 x1 + w2 x2 > 0 entonces el punto está en la misma región hacia la que apunta el vector normal v. Si w1 x1 + w2 x2 < 0 entonces el punto está en la región hacia la que apunta – v. Si w1 x1 + w2 x2 = 0 entonces el punto está sobre la recta z( x x1, x2) = 0. Partición de 2 mediante el umbral z( x x1, x2)
Figura 4.8. Figura 4.9. Figura 4.10.
z
60 85
w1 x 1
w2 x 2
87 91 91 92 92
93
2 1 R
= + = 0 y su vector normal v. se forma por los puntos por encima de la recta z( x x1, x2) = 0. 2 R2 se forma por los puntos debajo de la recta z( x x1, x2) = 0. R32 es el conjunto de puntos sobre la recta z( x x1, x2) = 0. Una neurona de tipo Perceptrón con tres entradas. El lugar geométrico asociado a z( x x1, x2, x3) = 0. Visualización en el plano de los cuatro posibles estados de la compuerta lógica AND (Véase el texto para detalles). Una recta que separa los estados con salida 0 del estado con salida 1 en la compuerta lógica AND.
94 94 95 96 96 97
Una Introducción al Cómputo Neuronal Artificial
Figura 4.12. Figura 4.13.
Figura 4.14. Figura 4.15. Figura 4.16. Figura 4.17. Figura 4.18. Figura 4.19.
Figura 4.20.
Figura 4.21.
Figura 4.22. Figura 4.23. Figura 5.1. Figura 5.2. Figura 5.3.
Visualización en el plano de los cuatro posibles estados de la compuerta lógica XOR (Véase el texto para detalles). a) Una recta que agrupa, para la compuerta lógica XOR, a los estados con salida 0 pero que también incluye a un estado con salida 1. b) Una recta que agrupa a los estados con salida 1 pero que también incluye a un estado con salida 0. Ejemplos de regiones convexas: a) Región Convexa Cerrada; b) Región Convexa Abierta. Separación de los estados de la compuerta lógica AND mediante dos regiones cerradas convexas disjuntas (véase el texto para detalles). Dos regiones convexas no disjuntas que agrupan, cada una, a los estados negros y a los estados blancos de la función XOR. Separación de los estados negros y los estados blancos de la función XOR. Se tienen dos regiones disjuntas, pero una ellasde es no convexa. Unadeserie tiempo de 7 parámetros autorregresivos (véase el texto para detalles). Representación esquemática del Perceptrón que se utilizará para determinar los Parámetros Autorregresivos en una Señal de Séptimo Orden (Véase el texto para detalles). Evolución del valor MSE (Ecuación (Ecuación 4.3.4) a lo largo de las T = = 100 presentaciones del conjunto de entrenamiento para un Perceptrón entrenado mediante el Algoritmo 4.1 (Véase el texto para detalles). Evolución del Coeficiente de Aprendizaje µ a lo largo de las T = = 100 presentaciones del conjunto de entrenamiento para un Perceptrón entrenado mediante el Algoritmo 4.1 (Véase el texto para detalles). Serie de tiempo de 7 parámetros autorregresivos generada por un Perceptrón bajo la Ecuación 4.3.11 (véase el texto para detalles). En color gris, la serie de tiempo presentada en la Figura 4.22. En color negro, la serie de tiempo presentada en la Figura 4.18 (véase el texto para detalles). Una red Madaline formada por 5 neuronas. Una red Madaline formada por 5 neuronas que efectúa un mapeo de vectores en 2 a vectores (escalares) en . El umbral Z 1( x x1, x2) = 0 asociado a la neurona que modelará la función Booleana x x . 1
∧¬
2
98
99 100 101 102
102 106
114 114
116
117 118 119 123 126 126 138
xxxiii
A rtificial Una Introducción al Cómputo Neuronal Artificial
Figura 5.4. Figura 5.5. Figura 5.6. Figura 5.7.
Figura 5.8. Figura 5.9.
Figura 5.10. Figura 5.11.
Figura 6.1. Figura 6.2. Figura 6.3. Figura 6.4. Figura 6.5. Figura 6.6.
El umbral Z 2( x x1, x2) = 0 asociado a la neurona que modelará la función Booleana ¬ x1 ∧ x x2. El umbral Z 3( y y1, y2) = 0 asociado a la neurona que modelará la función Booleana OR. Una red Madaline formada por 3 neuronas que resuelve el problema del modelado de la compuerta XOR. a), b) y c) En gris: Regiones del plano por encima de los umbrales asociados a las neuronas que modelan las funciones Booleanas x1 ∧ ¬ x2, ¬ x1 ∧ xx2 y OR. d) Las tres regiones anteriores sobrepuestas. En gris obscuro: sus intersecciones. Partición del plano inducida por la Red Neuronal de la Figura 5.6 (Véase el texto para detalles). Visualización en el espacio 3D de los estados y las salidas de las funciones Booleanas a) ¬ x1 ∧ ¬ x2 ∧ xx3, b) ¬ x1 ∧ x2 ∧ ¬ x3, c) x1 ∧ x2 ∧ x3, y d) y1 ∨ y2 ∨ y3. Los triángulos en gris están inmersos en los planos que separan a los estados negros de los estados blancos. Sus vértices son ecuaciones utilizados y para determinar correspondientes orientaciones (véase sus el texto para detalles). Red Madaline que modela a la función Booleana f ( x x1, x2, x3) = (¬ x1 ∧ ¬ x2 ∧ x3) ∨ (¬ x1 ∧ x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3). Los estados de las funciones Booleanas de 1 a 4 variables vistos como los vértices de hipercubos. a) Un hipercubo 1D: un segmento (2 vértices/estados). b) Un hipercubo 2D: un cuadrado (4 vértices/estados). c) Un hipercubo 3D: un cubo (8 vértices/estados). d) Un Hipercubo 4D (16 vértices/estados). Representación Esquemática de un Perceptrón. Una red de Perceptrones con una única capa oculta (Véase el texto para detalles). Una Red de Perceptrones de una sola capa oculta con una neurona en cada una de sus capas. Gráfica de la función de Error asociada a la red de Perceptrones de la Figura 6.3 (véase el texto para detalles). Gráfica de la Ecuación E = 0.125 − 0.1w1,1w1,1 + 0.02w12.1w12,1 . El conjunto de puntos, resaltados en negro, para los cuales el vector gradiente de la función 2 2 E = 0.125 − 0.1w1,1w1,1 + 0.02w1.1w1,1 es el vector cero.
139 139 140 141
143 143 143
147 148
150 156 175 192 194 194 195
199
xxxiv
Una Introducción al Cómputo Neuronal Artificial
Figura 6.7. Figura 6.8. Figura 6.9.
Una Función de Error E con un único punto crítico: un máximo (punto remarcado). Una de red de Perceptrones formada por m capas ocultas, m ≥ 2 (Véase el texto para detalles). En color gris se muestran las neuronas involucradas en la wk ,i . Tal peso se encuentra actualización peso neurona únicamente en del la i-ésima de la capa de salida. En color gris se muestran las neuronas involucradas en la actualización del peso wk 1 ,k ,m el cual reside en la k m-ésima neurona de la última capa oculta. Las actualizaciones aplicadas sobre las neuronas en la capa de salida influyen también en la actualización del peso wk 1 , k ,m . En color gris se presentan a las neuronas involucradas en la actualización del peso wk 1 ,k , . Éste se encuentra localizado específicamente en la k -ésima neurona en la -ésima -ésima capa oculta. Las actualizaciones aplicadas sobre las neuronas en las capas ocultas +1, +1, +2, +2, …, m y la capa de salida influyen sobre la actualización de wk 1 ,k , . En color gris se muestran las neuronas involucradas en la actualización del peso wk ,k 1 ,1 . Este peso se ubica específicamente en la k 1-ésima neurona de la primera capa oculta. Las correcciones aplicadas sobre todas las neuronas de la red, a excepción de las neuronas en la capa de entrada y de las neuronas en la primera capa oculta (salvo la k 1-ésima), influyen sobre la actualización del peso wk ,k 1 ,1 . Una serie de tiempo formada por K = 2000 muestras.
201 202
m
Figura 6.10.
m−
m−
Figura 6.11.
205
m
m
−
208
−
Figura 6.12.
Figura 6.13. Figura 6.14.
Figura 6.15.
Figura 6.16.
La serie de tiempo originalmente presentada en la Figura 6.13. En color negro, las muestras utilizadas para formar el conjunto de entrenamiento. En color gris, las muestras que conformarán al conjunto de evaluación. 1 Evolución del Coeficiente de Aprendizaje α (t ) = a 1 + t lo largo de 500 presentaciones del conjunto de entrenamiento. En la última instancia se tiene α(500) ≈ 0.0019. Una Red de Perceptrones con dos capas ocultas. Se utilizará para modelar a la serie de tiempo presentada en la Figura 6.13.
211
221 229
229
237 238
xxxv
A rtificial Una Introducción al Cómputo Neuronal Artificial
Figura 6.17.
Figura 6.18.
Figura 7.1.
Figura 7.2. Figura 7.3. Figura 7.4.
Figura 7.5.
Figura 7.6.
Figura 7.7.
xxxvi
Evolución del Error Global de la Red de Perceptrones de la Figura 6.16 durante la aplicación del Algoritmo de Retropropagación. Se efectuaron 500 presentaciones del conjunto de entrenamiento. En color gris, serie de tiempo producida por la Red de Perceptrones de la Figura 6.16. En color negro, la serie de tiempo original. La recta punteada separa las muestras que conformaron al conjunto de entrenamiento (n = 1, …, 1000) de las muestras que dieron lugar al conjunto de evaluación (n = 1001, …, 2000). El conjunto A es particionado en 20 regiones. Una Red de Kohonen implementa a la función f de de manera que los vectores en el conjunto A son asociados a su correspondiente clase. Una Red Unidimensional Unidimensional de Kohonen para la clasificación de vectores en n . r para la k -ésima neurona en una La de radio1D. Redvecindad de Kohonen La vecindad se extiende r posiciones hacia la izquierda y r posiciones hacia la derecha. Una Red de Kohonen Bidimensional para la clasificación de puntos en n . Las neuronas son posicionadas en renglones y columnas. El vector de entrada X es es enviado a todas las neuronas. La vecindad bidimensional de radio r para la k -ésima -ésima neurona en una Red de Kohonen 2D. La vecindad se extiende r posiciones posiciones cubriendo una región cuadrangular. Todas las neuronas dentro de esta región son vecinas de la neurona k . Evolución del ajuste de pesos para una Red de Kohonen 1D en la primeras 10 presentaciones del conjunto de entrenamiento. Los triángulos denotan las posiciones de los Centros de Gravedad (vectores de pesos) asociados a las neuronas que forman la red (véase el texto para detalles). Algunas fases de la evolución del ajuste de pesos para una Red de Kohonen 1D. Los triángulos denotan las posiciones de los Centros de Gravedad (vectores de pesos) asociados a las neuronas que forman la red (véase el texto para detalles).
240
241
246 249
250 250
254
255 255
257 257
258
Una Introducción al Cómputo Neuronal Artificial
Figura 7.8.
Figura 7.9.
Figura 7.10.
Figura 7.11. Figura 7.12. Figura 7.13. Figura 7.14.
Figura 7.15. Figura 7.16.
Partición de la región [0, 1] × [0, 1] inducida por los centros de gravedad (vectores de pesos, triángulos en la figura) asociados a las 10 neuronas que conforman a una Red de Kohonen 1D. La región ha sido subdividida en 10 clases después de 100 presentaciones del conjunto de entrenamiento (véase el texto para detalles). Evolución del ajuste de pesos para una Red de Kohonen 1D en la primeras 10 presentaciones de un conjunto de entrenamiento inmerso en un cubo unitario [0, 1] × [0, 1] × [0, 1]. Los círculos mayores denotan las posiciones de los Centros de Gravedad (vectores de pesos) asociados a las neuronas que forman la red (véase el texto para detalles). Algunas fases de la evolución del ajuste de pesos para una Red de Kohonen 1D. Se mapea un conjunto de entrenamiento inmerso en un cubo unitario [0, 1] × [0, 1] × [0, 1]. Los círculos mayores denotan las posiciones de los Centros de Gravedad (vectores de
259
260
pesos) a las neuronas que forman la red (véase el textoasociados para detalles). Un conjunto de vectores inmersos en el cubo [0.3, 0.6] × [0.3, 0.6] × [0.3, 0.6] ⊆ [0,1] × [0,1] × [0,1]. La diagonal principal asociada al cubo [0.3, 0.6] × [0.3, 0.6] × [0.3, 0.6]. Traslación de los vectores originalmente inmersos en el cubo [0.3, 0.6] × [0.3, 0.6] × [0.3, 0.6] de manera que Pmin ' es ahora el origen del espacio 3D. Aplicación de factores de escalamiento de manera que el conjunto de vectores originalmente inmerso en el cubo [0.3, 0.6] × [0.3, 0.6] × [0.3, 0.6] (Figura 7.11) se
261
redistribuya largo del cubo [0, 1] × [0,cerebral 1]. Una imagena locorrespondiente a 1] una× [0, sección capturada mediante Tomografía Computada. Mapa de Falso Color que muestra las distancias entre los vectores de pesos asociados a una Red de Kohonen 1D formada por 20 neuronas.
267 269
264 265 266
276
xxxvii
A rtificial Una Introducción al Cómputo Neuronal Artificial
xxxviii
Una Introducción al Cómputo Neuronal Artificial
Índice de Tablas Tabla 2.1. Tabla 3.1. Tabla 3.2. Tabla 3.3. Tabla 3.4.
Tabla 3.5.
Tabla 4.1. Tabla 4.2. Tabla 4.3. Tabla 4.4. Tabla 4.5. Tabla 5.1. Tabla 5.2. Tabla 5.3. Tabla 5.4.
Un conjunto de 11 observaciones. Una compuerta lógica a ser modelada por una neurona Adaline. Un conjunto de entrenamiento al que se le aplicará el método de Descenso Escalonado a fin de que una neurona Adaline lo modele. Aplicación del método de Descenso Escalonado para el ajuste de pesos de una neurona Adaline con el conjunto de entrenamiento de la Tabla 3.2. Aplicación del método de Descenso Escalonado para el ajuste de pesos de una neurona Adaline presentando por segunda vez el conjunto de entrenamiento de la Tabla 3.2 y usando como vector de pesos iniciales W 1 = 1.2432 . 3.4485 Vectores de pesos obtenidos al final de la t -ésima -ésima presentación, t = 1, 2, …, 10, mediante Descenso Escalonado, para el conjunto de entrenamiento de la Tabla 3.2. Tabla de verdad de la compuerta lógica AND. Tabla de verdad de la compuerta lógica XOR. Conteo de funciones Booleanas de 1 a 6 entradas linealmente separables. Las primeras 15 muestras asociadas a una serie de tiempo de 7 parámetros autorregresivos (véase el texto para detalles). Desempeño del aprendizaje de un Perceptrón entrenado mediante Descenso Escalonado y el Algoritmo 4.1 (véase el texto para detalles). Conjunto de entrenamiento a presentar a una red Madaline. Pesos iniciales de las neuronas en la red Madaline presentada en la Figura 5.2. Pesos de las neuronas en la red Madaline presentada en la Figura 5.2 una vez que se ha aplicado un ajuste sobre la neurona 4 (Véase el texto para detalles). Estados y salidas para una función Booleana de 3 variables.
Página 36 55 55 67 67
68
70 96 98 100
105 105 115 125 125 126 128 133 133
xxxix
A rtificial Una Introducción al Cómputo Neuronal Artificial
Tabla 5.5. Tabla 5.6. Tabla 5.7. Tabla 5.8. Tabla 5.9. Tabla 5.10. Tabla 6.1.
Tabla 7.1.
Tabla 7.2.
Tabla 7.3. Tabla 7.4. Tabla 7.5. Tabla 7.6. Tabla 7.7.
xl
Estados para los cuales la función Booleana de la Tabla 5.4 tiene salida 1. Tabla de verdad asociada la la función Booleana (¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3). Estados y salidas para la función Booleana XOR. Estados salidas para la función (el valor 0y ha sido sustituido por -1). Booleana x1 ∧ ¬ x2 Estados y salidas para la función Booleana ¬ x1 ∧ x2 (el valor 0 ha sido sustituido por -1). Estados y salidas para la función Booleana OR (el valor 0 ha sido sustituido por -1). Pesos asociados a la Red de Perceptrones de la Figura 6.16 una vez que se aplicó el Algoritmo de Retropropagación con 500 presentaciones del conjunto de entrenamiento. Distribución de los 100 elementos del conjunto de entrenamiento en las 10 clases obtenidas mediante una Red de Kohonen 1D. Se muestran también las coordenadas de los de gravedad de cada clase una vezfinales efectuadas 100centros presentaciones del conjunto de entrenamiento (véase el texto para detalles). Distribución de los 100 elementos del conjunto de entrenamiento, inmerso en un cubo unitario [0, 1] × [0, 1] × [0, 1], en las 10 clases obtenidas mediante una Red de Kohonen 1D. Se muestran también las coordenadas finales de los centros de gravedad de cada clase una vez efectuadas 100 presentaciones del conjunto de entrenamiento (véase el texto para detalles). Clasificación de las 340 imágenes en el conjunto de entrenamiento de acuerdo a una Red de Kohonen 1D con 20 neuronas (véase el texto para detalles). Los 16 miembros de la clase 17 asociada a un conjunto de entrenamiento formado por 340 imágenes y clasificado mediante una Red de Kohonen 1D. Los 25 miembros de la clase 12 asociada a un conjunto de entrenamiento formado por 340 imágenes y clasificado mediante una Red de Kohonen 1D. Visualización de las imágenes asociadas a los vectores de pesos de una Red de Kohonen 1D formada por 20 neuronas (Véase el texto para detalles). Distancias que tienen los vectores de pesos asociados a las clases 12 y 17 con todos los demás vectores de pesos que conforman a una Red de Kohonen 1D.
133 135 135 137 139 140
239
259
262 271 271 272 275 277
Una Introducción al Cómputo Neuronal Artificial
1. Introducción
A rtificial Una Introducción al Cómputo Neuronal Artificial
2
Capítulo 1. Introducción
Las Redes Neuronales Artificiales son Redes Computacionales cuya finalidad es la de simular, en su totalidad, las redes de células nerviosas (neuronas) del sistema nervioso central (biológico) de humanos o mamíferos. Usamos el término totalidad para referirnos al hecho de que la simulación efectivamente es total: se detalla cada neurona a utilizar, la forma en que procesa la información, y también se especifican las conexiones entre las neuronas. Estas simulaciones se derivan del conocimiento neurofisiológico de las neuronas biológicas y las redes formadas por éstas. Se dice que el proceso de solución de problemas mediante Redes Neuronales, ya sean Biológicas o Artificiales, es llamado Cómputo Neuronal. Esta distinción tiene la intención también de diferenciarlo del Cómputo Digital “Convencional”, es decir, aquel cómputo que se sustenta en nuestras computadoras digitales actuales. También diremos que el Cómputo Neuronal Artificial es el proceso de solución de problemas pero utilizando específicamente Redes Neuronales Artificiales. El Cómputo Neuronal Artificial aspira a reemplazar, mejorar o acelerar el cómputo que se efectúa en el cerebro humano. Sabemos que la velocidad de procesamiento del cerebro es lenta comparada con la velocidad de procesamiento presente en las computadoras actuales. Operaciones simples pero en grandes volúmenes, como las aritméticas por ejemplo, en los inicios del siglo XX le requerían interminables horas de trabajo un por ser lo humano. habría que Con tenerlaenllegada cuentadelaslasposibilidades de cometer errores, aque regularAdemás, eran considerables. primeras computadoras electrónicas de propósito general, como la ENIAC en 1946, cuyo poder de procesamiento es hoy comparable al de una calculadora de bolsillo, esas mismas operaciones aritméticas podían ser efectuadas con unos pocos segundos de procesamiento y con nulas probabilidades de error. Ahora bien, imaginemos lo que se puede lograr al proporcionar la misma velocidad de cómputo que nos da la electrónica al incorporarla a nivel neuronal y combinarla con el poder de solución de problemas con que cuenta nuestro cerebro. Tomemos en cuenta que hay una gran cantidad de problemas en los cuales el cerebro humano supera, por su capacidad para formar y proporcionar soluciones, a las computadoras digitales. La velocidad que nos da la electrónica junto con las capacidades del Cómputo Neuronal deja abiertas grandes posibilidades de contar con soluciones correctas a problemas realmente difíciles en tiempos sumamente cortos. Otro punto interesante es que el Cómputo Neuronal no considera explícitamente la organización de sus elementos de cómputo, las neuronas, y las redes que éstas forman. El cerebro se estructura en una red de neuronas realmente enorme. Se tiene un conteo aproximado de 1011 = 100,000,000,000 células nerviosas en el caso del cerebro humano. Esta red neuronal se encuentra trabajando activamente incluso en los periodos de sueño. Es la misma red que utilizamos para la solución de problemas. Sin embargo, es claro que ningún ser humano está consciente de que partes de esa red fueron utilizadas para dar solución a una Ecuación Diferencial, por ejemplo. Es decir, para solucionar problemas, no requerimos, a priori, determinar a que subred neuronal hay que dirigir nuestro razonamiento o bien cual de todas las subredes disponibles se adapta mejor para solucionarlo. Tampoco estamos conscientes de los mensajes transmitidos por cada neurona involucrada en la generación de la solución. Contamos con una arquitectura de Red Neuronal de la cual no necesitamos conocer su organización y funcionamiento internos. En el caso de las Redes
3
A rtificial Una Introducción al Cómputo Neuronal Artificial
Neuronales Artificiales veremos que si es necesario especificar una arquitectura y la manera en que las neuronas se conectan. También es necesario especificar puntos en los cuales proporcionaremos una entrada a la red y puntos en donde debemos esperar la salida que ésta dará para nuestro problema. Pero aparte de ello, veremos que los mecanismos de aprendizaje a utilizar no son dependientes en ninguna manera de la estructura de red. También veremos que si el aprendizaje fue exitoso, entonces realmente sólo nos preocuparemos de dar la entrada y obtener la salida correspondiente sin prestar mayor consideración a la organización interna, tal y como sucede con el procesamiento cerebral. Una Red Neuronal Artificial es computacionalmente y algorítmicamente muy simple. Si bien sabemos que se tienen contabilizadas aproximadamente 10 11 neuronas en el cerebro humano, en la práctica, la implementación de una Red Neuronal Artificial sólo requiere, a lo más, unos cientos de neuronas. Pero, por otro lado, se verá que existen aplicaciones en las cuales una decena de neuronas basta para dar solución a un problema. Ello implica que los requerimientos espaciales (memoria primaria y secundaria) son en realidad pequeños. Adicionalmente, una Red Neuronal, y particularmente cada una de las neuronas que la componen, usan únicamente operaciones computacionales elementales tales como sumas, multiplicaciones y operadores lógicos. Esto tiene como consecuencia que la implementación, sea en software o en hardware, es en realidad además cuenta con tiempos deya ejecución, o respuesta, reducidos que de sencilla hecho ydependen directamente del tamaño de la entrada que recibirá la red y el número de neuronas que la forman. En el sistema nervioso central miles de neuronas mueren al año. La perdida de neuronas inicia a partir del nacimiento y nunca se detiene. También hay que tomar en cuenta que las neuronas tienen entre una de sus características la de no reproducirse. Por lo tanto, la pérdida neuronal puede verse como un daño irreparable. Pero en este punto surge un aspecto sumamente interesante y que forma parte del gran poder del Cómputo Neuronal: las funciones del cerebro no se ven afectadas por daños menores (al menos bajo condiciones normales y durante los primeros dos tercios de vida del ser humano). Esta insensibilidad a daños menores se debe a tres propiedades trascendentales de las Redes Neuronales Biológicas: su Alto Paralelismo, su Adaptabilidad y la capacidad de Auto-Organización. El Alto Paralelismo se refiere al hecho de que una vez que se recibe una entrada, ésta es manipulada al mismo tiempo por varias neuronas. Cada neurona proporcionará su correspondiente aportación a la solución del problema la cual es enviada a su vez como entrada a otras neuronas que la procesarán también en paralelo. El punto trascendental es que la pérdida de neuronas no implica necesariamente que la red quede desconectada o bien que reduzca su eficiencia. La ventaja del paralelismo es que siempre existirán rutas disponibles para procesar la entrada y producir la salida correspondiente. Sólo para hacer un contraste: una computadora digital “convencional” es una máquina secuencial, ello implica que si un transistor falla entonces la máquina por completo se hace inservible.
4
Capítulo 1. Introducción
El alto paralelismo presente en las Redes Neuronales permite siempre encontrar rutas alternas para procesar una entrada. Sin embargo, es probable que el daño neuronal reduzca la eficiencia de la red. Es cuando las propiedades de la Adaptabilidad y Auto-Organización entran en acción. Puede que se tengan neuronas especializadas en alguna tarea particular. Sin embargo, la pérdida neuronal puede obligar a éstas a especializarse en otras nuevas tareas. Ello implica que deben adaptarse a un nuevo ambiente e inclusive estar preparadas para recibir y procesar nuevos tipos de entradas y proporcionar las salidas correspondientes a esas nuevas tareas. La auto-organización toma lugar cuando se crean u omiten conexiones entre neuronas a fin de reforzar el proceso de adaptación. Son las mismas neuronas las que controlan las modificaciones a la estructura de la Red Neuronal a la que están asociadas. Los procesos de auto-organización y adaptación toman lugar a lo largo de toda la vida, dado que ya mencionamos que a lo largo de ésta se pierden neuronas, y además, se encuentra sumamente ligado a los procesos de aprendizaje. Para su estudio y análisis, el cerebro humano, y en particular la corteza cerebral, se dividen en regiones. Cada una de estas regiones es de hecho una Red Neuronal con una tarea específica. Una de estas zonas es la llamada Área de Broca la cual está asociada con el proceso de la comunicación oral. Mencionamos antes que bajo condiciones normales las pérdidas neuronales pueden serSincontroladas sinadaptabilidad percibir los daños o efectos provocados por la ausencia de tales neuronas. embargo, la y auto-organización neuronales también actúan bajo situaciones más dramáticas. Un accidente cerebrovascular puede ser causado al incidir sobre una región del tejido cerebral un repentino bloqueo de la irrigación sanguínea o bien, por el contrario, una hemorragia. Como consecuencia, la región afectada queda por completo dañada. Si esta condición se presentara en el Área de Broca, el paciente entonces perdería la capacidad del habla. En la Literatura Médica se tienen identificados casos de pacientes con esta situación y que han regenerado su capacidad de comunicación gracias a los procesos de auto-organización y adaptabilidad. En estos casos se requieren intervalos de tiempo más largos para la recuperación, del orden de meses, debido a que son millones las neuronas involucradas. Las regiones en la corteza cerebral que son vecinas del Área de Broca deben adaptarse a la nueva función y al mismo tiempo continuar dando seguimiento a las tareas que ya tienen asignadas. En consecuencia, se tiene que una Red Neuronal, gracias a los procesos de adaptación y auto-organización, cuenta con un amplio potencial para abordar una gran cantidad de problemas. Aunque la base algorítmica sobre la que se sustentan Redes Neuronales Artificiales es muy simple, veremos que éstas efectivamente cuentan con las características del paralelismo, adaptabilidad y auto-organización. Dado un problema a ser resuelto, plantearemos una topología de red neuronal: se establecen las neuronas a utilizar, su posición dentro de la red y sus conexiones. Los algoritmos de aprendizaje ajustarán los elementos de cómputo de cada neurona a fin de maximizar su eficiencia de manera que la topología elegida se adapte tanto como sea posible para proporcionar una solución al problema y procesar adecuadamente las entradas y producir las salidas correctas. Inclusive, si la red es sometida en el futuro a cambios respecto a la naturaleza del problema, será posible esperar que mediante reajustes mínimos de sus elementos, ésta tenga la capacidad de responder exitosamente a tales cambios.
5
A rtificial Una Introducción al Cómputo Neuronal Artificial
Todos los puntos anteriores nos conducen a pensar que una Red Neuronal puede verse de hecho como una arquitectura novedosa a nivel computacional y algorítmico. Ello quiere decir que incluso podríamos pensar en una arquitectura computacional adicional a la arquitectura de Cómputo Digital “Convencional”. El cómputo “Convencional” debe entenderse, de manera concreta y formal, como aquel basado en las Máquinas de Turing y la electrónica. Las Máquinas de Turing proporcionan la Teoría y Fundamentos detrás de la Computación. Una Máquina de Turing expresa a nivel elemental la lógica detrás de un algoritmo. Una Máquina de Turing Universal T es aquella que es capaz de recibir como entrada una Máquina de Turing M y las entradas para M de manera que T simula la ejecución de M. Es decir, una Máquina de Turing Universal puede verse como el modelo matemático de una computadora de escritorio y de manera más específica, de su Unidad Central de Procesamiento (CPU). La electrónica nos proporciona los elementos para la materialización y aceleración de nuestras Máquinas de Turing. Ya hicimos mención de que el Cómputo Neuronal podría verse como un modelo adicional al Cómputo “Convencional”. Sin embargo, en realidad las Redes Neuronales Artificiales pueden simularse sin problema alguno en las computadoras convencionales. Ello las herramientas algorítmicas que utilizamos comúnmente útiles para implica resolverque problemas bajo el enfoque neuronal. El hardware y software nos que serán requiere el Cómputo Neuronal Artificial es el mismo que utilizamos hoy en día. Además, hemos de recalcar que una Red Neuronal usa únicamente operaciones computacionales elementales, como sumas, multiplicaciones y lógica elemental, para dar solución a una amplia gama de problemas. En este punto es posible plantearse una observación: Si el Cómputo Neuronal Artificial no requiere hardware y software específicos y además se basa en operaciones básicas, las mismas presentes en los CPUs, entonces, ¿qué ventajas puede tener sobre el Cómputo “Convencional”? Parte de la respuesta a ello viene de las características del Alto Paralelismo, Adaptabilidad y la capacidad de Auto-Organización que forman en sí una porción de la base de los procesos de razonamiento y aprendizaje en el cerebro. La otra parte de la respuesta surge al considerar las propiedades anteriores y su impacto en la solución de algunos de los problemas a los cuales el Cómputo Neuronal Artificial ha dado soluciones exitosas: • Problemas Mal Definidos: Todo problema a ser resuelto computacionalmente debe tener bien definidos sus conjuntos de entrada y de salida. Es decir, se debe especificar claramente las propiedades de las entradas y las propiedades de las salidas y cómo es que éstas pueden ser validadas como correctas o incorrectas. Sin embargo, no todos los problemas presentan estas propiedades. Considérese por ejemplo el reconocimiento de voz. Supongamos que se desean clasificar oraciones en general. Si bien los idiomas cuentan con reglas para definir la estructura de una oración, sujeto-verbo-predicado por ejemplo, la realidad es que muchas de las oraciones en ocasiones no se sujetan a una y sólo una estructura ya definida. Por lo regular una oración puede ajustarse a varias reglas o estructuras al mismo tiempo. Ello se debe a que si se busca clasificar oraciones es necesario tomar en cuenta su semántica o intención. Una misma oración puede ser entendida como una declaración, interrogación, exclamación, etc. Es claro que los conjuntos de entrada y salida, en este caso, oraciones y su clasificación esperada, no
6
Capítulo 1. Introducción
están bien delimitados y estructurados. Pero por otro lado, como seres humanos somos capaces de comunicarnos de manera oral y también somos capaces de entender y actuar en función de los mensajes recibidos y su intención. En este sentido, existen aplicaciones exitosas de Redes Neuronales Artificiales, bajo dominios restringidos, en el Área de Reconocimiento de Voz. • Problemas Analicemos el casoy salidas particular la Optimización No Lineales: Matemática. Aquí se tienen conjuntos de entradas bien de especificadas. Por lo
regular, se cuenta con una función objetivo y un conjunto de restricciones. La idea es Maximizar o Minimizar la función al encontrar los valores de sus variables que la optimicen y que además satisfagan las restricciones dadas. La instancia en la cual la función objetivo y las restricciones son todas funciones lineales está sumamente estudiada y se cuenta con soluciones algorítmicas “convencionales” eficientes. Sin embargo, la gran mayoría de los problemas de optimización no son de naturaleza lineal. Una búsqueda exhaustiva es no factible ya que el conjunto de los posibles valores de que pueden tomar las variables es por lo regular infinito. Actualmente la Optimización No Lineal es un área de Investigación de desarrollo intenso. Hay una gran cantidad de Investigadores involucrados en la búsqueda de metodologías y soluciones para este tipo de problemas. El campo de las Redes Neuronales Artificiales ha logrado aportar guías respecto a lainformación manera engeométrica la que problemas particulares serdeabordados al proporcionar y/o topológica respectopodrían al espacio búsqueda de posibles soluciones, o bien al proporcionar soluciones bastante cercanas a las soluciones óptimas. • Problemas de Predicción: Consideremos la situación en la cual contamos con una serie de eventos dependientes del tiempo y para los cuales se desea saber como se comportará esa serie pero en el futuro. Este tipo de estudios han encontrado nichos de trascendencia vital para los seres humanos tales como la predicción de sismos, tornados, actividad volcánica, el clima, e incluso en cuestiones de salud como análisis de electrocardiogramas para predicción de infartos o bien en el diagnóstico de algunos tipos de cáncer. El “Santo Grial” de los Economistas es un modelo que les permita predecir el comportamiento futuro de las Bolsas de Valores. Es bien sabido que en este tipo de situaciones la sola medición de los factores involucrados directos por lo regular no es suficiente. Es decir, por ejemplo, el comportamiento de la Bolsa de Valores no sólo se rige por el intercambio de divisas o por el mercado accionario, también se puede ver afectado por factores externos como las declaraciones de un mandatario, por movimientos sociales, o hasta actividades como el terrorismo. Estos factores por lo regular son muy difíciles de modelar y predecir, pero influyen y están presentes de manera intrínseca en las mediciones. Las Redes Neuronales Artificiales han encontrado un nicho de aplicación exitoso al efectuar predicciones sobre series de tiempo o bien al identificar predictores dentro de éstas: subsecuencias dentro de una serie de tiempo que sirven como patrones para identificar eventos futuros como las devaluaciones de las monedas, por ejemplo. • Problemas computacionalmente complejos: Dentro de la Teoría de la Computación existe la llamada Completez NP. Un problema caracterizado como NP-Completo se entiende, informalmente, como aquel para el cual no se ha encontrado una solución
7
A rtificial Una Introducción al Cómputo Neuronal Artificial
algorítmica eficiente, es decir, no se ha determinado un algoritmo ejecutado sobre una computadora convencional que lo resuelva en un tiempo razonable. Es importante mencionar también que para este tipo de problemas tampoco se ha demostrado que no puedan ser resueltos de manera eficiente. La clase de problemas NP-Completos tiene en su haber a algunos bien conocidos como el Problema del Agente Viajero (PAV), el Problema de ellaProblema Satisfactibilidad de de unaOrden Proposición en Forma Normal del Conjuntiva (SAT-CNF), del Cliqué k (k -Cliqué), -Cliqué), el Problema Circuito Hamiltoniano, etc. De hecho, hasta el día de hoy se han caracterizado a millares de problemas como NP-Completos, y la cuenta sigue en aumento al publicarse en la literatura, año con año, nuevos problemas identificados. El consenso mayoritario entre los expertos de la Teoría de la Computación, y basado únicamente en las experiencias e información con que se cuenta, apunta a que para los problemas NP-Completos no existirán soluciones algorítmicas eficientes. Ello quiere decir que existiría una noción clara de lo que es un problema computacional “fácil” y un problema computacional “difícil”. Lo importante es que entonces se estaría reconocimiento la ausencia de soluciones eficientes para éstos últimos. Otra cuestión relevante es que existen una gran cantidad de problemas prácticos que a final de cuentas se reducen a un problema NP-Completo. Por lo tanto, tampoco podemos ignorarlos debido a que efectivamente, bajo instancias,Artificiales se requiere solucionarlos. Nuevamente,soluciones se tienen arquitecturas Redestales Neuronales que han proporcionado aproximadas dea instancias de entrada para algunos problemas NP-Completos. Lo mejor es que de hecho estas arquitecturas proporcionan en algunos casos soluciones con rangos de error muy bajos, usando pocos elementos de Cómputo Neuronal y con un tiempo de ejecución sumamente corto.
1.1 Redes Neuronales Biológicas Biológicas Como bien sabemos una Red Neuronal Biológica se forma por células nerviosas, las neuronas, las cuales se encuentran interconectadas. En el cuerpo de una neurona, el cuál contiene su Núcleo, es donde la mayor parte de la Computación Neuronal se efectúa. Véase la Figura 1.1. Las Dentritas son ramificaciones a través de las cuales una neurona recibe las señales de entrada. Por otro lado, el Axón es una ramificación que puede llegar a tener cientos o hasta miles de veces la longitud del diámetro del núcleo y su objetivo es propagar una señal. Por lo regular la propagación es en un único sentido pero de hecho es posible encontrar axones bidireccionales. El axón en su parte final se ramifica. A estas ramificaciones se les llama en conjunto Región Pre-Sináptica. Por último, cada ramificación termina en una Sinapsis. Es en las sinapsis donde precisamente una neurona transmite su señal al propagarla con todas aquellas neuronas con las cuales tiene conexiones. Nótese que la descripción que acabamos de presentar es muy similar a la clasificación comúnmente usada para presentar los componentes de una computadora digital “convencional”: tenemos entonces a las dentritas como los dispositivos de entrada, el núcleo de la neurona como su CPU y finalmente las sinapsis como los dispositivos de salida. De allí la razón de considerar a la neurona como la unidad básica del Cómputo Neuronal.
8
Capítulo 1. Introducción
Dentritas (Entradas)
Axón
Región Pre-sináptica (Salidas)
Núcleo
Figura 1.1. Componentes principales de una Neurona Biológica.
Lasuna neuronas pueden ser clasificadas en 3 tipos de acuerdo al rol que cumplen dentro de Red Neuronal: Neuronal: • Neuronas aferentes: o Transmiten mensajes al interior del organismo los cuales proceden de los receptores sensoriales (vista, tacto, olfato, etcétera). • Neuronas eferentes: o Llevan mensajes a las estructuras ejecutoras haciendo que los músculos se contraigan o relajen y también al ordenar a las glándulas la secreción de hormonas. • Interneuronas: o Sirven como puntos de conexión entre otras neuronas dentro del sistema nervioso central y constituyen aproximadamente el 97% de todas las células nerviosas. Veremos en secciones posteriores como que es que esta clasificación es sumamente útil, ya que en una Red Neuronal Artificial efectivamente identificaremos a las neuronas aferentes (la entrada de la red), las interneuronas y a las neuronas eferentes (la salida de la red). De acuerdo a su rol es como los algoritmos de aprendizaje aplican cambios y ajustes. Parte del poder del Cómputo Neuronal radica en la capacidad de las neuronas para transportar y transmitir mensajes. A esta propiedad se le conoce como Excitabilidad. Analicemos de manera superficial como que es que una neurona transmite un mensaje. Como cualquier célula, una neurona es delimitada por su membrana. La membrana de la neurona se encuentra Polarizada. Es decir, en el exterior se presenta una baja concentración de iones de potasio mientras que en su interior esta concentración es alta. Por otro lado, se tiene una alta concentración de iones de sodio en el exterior y una baja concentración en el interior. Estas concentraciones no se equilibran gracias a que la membrana tiene diferencias de permeabilidad lo que impide el paso de iones del interior al exterior y viceversa.
9
A rtificial Una Introducción al Cómputo Neuronal Artificial
Sin embargo, es posible que la permeabilidad de la membrana de una neurona se altere momentáneamente permitiendo que las concentraciones de los iones se equilibren. Este fenómeno provoca entonces un súbito incremento de actividad eléctrica lo cual da lugar a un Impulso Nervioso que se propaga a lo largo de la membrana. Una vez que la neurona rápido se ha Despolarizado decir, se ha inicia uny proceso que la coloca ,enes un estado de liberado Reposo. del En impulso esta fasenervioso, se reacomodan redistribuyen los iones de sodio y potasio en el interior/exterior de la membrana, así como las moléculas que la forman para retornar a su estado de permeabilidad original. Durante esta fase a la neurona se le llama Refractaria ya que no es capaz de transmitir impulsos nerviosos. Los impulsos nerviosos, dentro de una neurona, se mueven de las dentritas al núcleo, del núcleo al axón y finalmente del axón a la región pre-sináptica. Cuando el impulso llega a los extremos finales de las ramificaciones en la región pre-sináptica, es decir, a las sinapsis, se encuentra con una discontinuidad. A este espacio, junto con una sinapsis de la neurona que porta el impulso y la dentrita de una neurona a la cual se le transmitirá el impulso, se le denomina Espacio Sináptico o Unión Sináptica. Véase la
Figura 1.2.
Dentrita (Entrada)
Uni ón Sin áptica ptica
Neurotransmisor
Sinapsis (Salida)
Figura 1.2. Componentes de la Unión Sináptica entre dos neuronas.
Cuando el impulso nervioso alcanza a una sinapsis provoca la liberación de una sustancia química denominada Neurotransmisor. Los neurotransmisores están alojados en vesículas adheridas a las terminaciones del axón. Al día de hoy se tienen identificados decenas de tipos de neurotransmisores entre los que se encuentran, por ejemplo, la adrenalina o la acetilcolina. La secreción ocupa el espacio sináptico y provoca los cambios de permeabilidad en la membrana de la neurona receptora. De esta manera el impulso nervioso pasa de una neurona a la siguiente y de hecho continúa su camino a través del nervio correspondiente. Finalmente, el neurotransmisor es destruido por la acción de enzimas con lo que se deja nuevamente libre el espacio sináptico. sináptico. Dado que una neurona puede tener miles de sinapsis, entonces ésta se puede conectar, y por tanto transmitir su impulso, a otros miles de neuronas. Véase la Figura 1.3. Es más, una neurona puede conectarse consigo misma. En otras palabras, al procesar la
10
Capítulo 1. Introducción
señal que ella misma generó se tiene un proceso que en ocasiones es llamado de Retroalimentación. No todas las conexiones entre neuronas tienen los mismos valores o pesos. Y de hecho esos valores o pesos determinan si la membrana de la neurona que recibe el impulso lo transmitirá o no. Ello se debe a la existencia de Sinapsis Excitadoras y Sinapsis Inhibidoras. Estas diferencias de pesos o prioridades son moduladas precisamenteenpor los neurotransmisores involucrados, los cuales enInhibidores ocasiones . son clasificados Neurotransmisores Excitadores y Neurotransmisores Un neurotransmisor excitador incrementa las probabilidades de que la neurona receptora continúe con la transmisión del mensaje, mientras que un neurotransmisor inhibidor puede encargarse de bloquear su transmisión.
Región Pre-sináptica Neurona i+1
Dentritas Neurona i+1
Dentritas Neurona i
Neurona i+1
Axón i+1 Neurona i
Dentritas Neurona i+2
Axón i
Región Pre-sináptica Neurona i+3
Axón i+3
Región Pre-sináptica Neurona i
Región Pre-sináptica Neurona i+2
Neurona i+2
Neurona i +3
Axón i+2
Dentritas Neurona i+3
Figura 1.3. Porción de una Red Neuronal Biológica.
A partir de este punto nos será más conveniente representar a las neuronas (biológicas o artificiales) en términos esquemáticos. Véase la Figura 1.4. A toda neurona se le visualizará como una entidad que cuenta con n entradas (las dentritas). En cada entrada se recibirá un valor proveniente de otra neurona, o bien, tales valores pueden formar también una entrada proveniente del mundo exterior. En el primer caso estaríamos modelando una interneurona, mientras que en el segundo nuestra neurona sería del tipo
11
A rtificial Una Introducción al Cómputo Neuronal Artificial
aferente. Ello implica que el conjunto de las entradas de una neurona puede ser representado como un vector con n componentes. Cada entrada i, i = 1, 2, …, n, tendrá asociada un peso wi. Este peso tendrá la función de neurotransmisor. El peso wi se asociará al valor recibido en la entrada i. La combinación de ambos puede caracterizar a la conexión como excitadora o como inhibidora. Todo par (entrada i, peso wi) es llevado al núcleo en donde se efectuará el Cómputo Neural. ElEstas resultado obtenido un único valor es distribuido en m salidas (las sinapsis). salidas puedenesconectarse con el cual mundo exterior, en donde por instancia tenemos una neurona de tipo eferente. Si, por otro lado, cada salida se conecta con otra neurona entonces tenemos una interneurona. Nótese que de hecho podemos tener las siguientes caracterizaciones de neuronas en función de su relación con otras neuronas y con el mundo exterior: • Aferente/Eferente: entradas provenientes del exterior, salidas enviadas al exterior. • Aferente/Interneurona: entradas provenientes del exterior, salidas enviadas a otras neuronas. • Interneurona/Eferente: entradas provenientes de otras neuronas, salidas enviadas al exterior. • Interneurona: entradas provenientes de otras neuronas, salidas enviadas a otras neuronas.
W 1
W 2
Salida 1
Núcleo
Salida 2
W n Salida m
Figura 1.4. Representación esquemática de una neurona (biológica o artificial).
Con base en los puntos anteriores, también contamos con los elementos para una representación esquemática de Red Neuronal (biológica o artificial). En la Figura 1.5 se presenta un ejemplo de fragmento de esquema de Red Neuronal. Se puede apreciar claramente la presencia de 3 neuronas y la manera en que se encuentran conectadas sus respectivas entradas y salidas. A cada neurona le es asignado un índice. Por lo tanto, para diferenciar los pesos a estos se les asignan dos índices de manera que wi,j denota al j-ésimo peso de la i-ésima neurona.
12
Capítulo 1. Introducción
Wi+2,1
W i+2,2
Neurona i+2 W i,1
W i+2,n
W i,2
Neurona i
W i,n
W i+1,1
W i+1,2
Neurona i+1
W i+1,n
Figura 1.5. Ejemplo de Representación Esquemática de un fragmento de Red Neuronal. N euronal.
1.2 Principios del Diseño de Redes Neuronales Artificiales Artificiales A partir de este punto nos adentraremos en los aspectos teóricos detrás de las Redes Neuronales Artificiales. También seremos más concretos y formales al especificar los principios detrás de su funcionamiento e interacción con su “mundo exterior” y sus procesos de aprendizaje. Finalmente, haremos mención de los modelos básicos de neuronas y también de las estructuras básicas de Redes Neuronales. Los principios básicos de las Redes Neuronales Artificiales fueron formulados por Warren Walter Pittsdeenoperaciones 1943 al proponer la idea de analizar el Cómputoy NeuronalMcCulloch (Biológico)y por medio elementales (sumas, multiplicaciones lógica básica). Establecieron cinco principios como punto de partida: partida: • La actividad de una neurona es “Todo o Nada”. Se refiere al hecho de que las salidas proporcionadas por la neurona son binarias: 0 o 1. La neurona proporcionará un 1 (el “todo”) si las entradas que recibe, y al ser “sumadas” de alguna manera, proporcionan un valor lo “suficientemente alto” precisamente para proporcionar la salida 1. De lo contrario, se proporciona la salida 0 (la “nada”). Es claro que entonces contamos con Neurona Binaria. • Un cierto número fijo de sinapsis, mayor a 1, deben ser estimuladas dentro de un intervalo de tiempo para que una neurona sea excitada. Entenderemos a la excitación de la neurona como el simple hecho de que inicia el procesamiento de su entrada. Es decir, sólo se ha planteado un criterio para “encender” una neurona.
13
A rtificial Una Introducción al Cómputo Neuronal Artificial
• El único retraso no despreciable dentro de la Red Neuronal es el retraso sináptico. En
otras palabras, para efectuar Cómputo Neuronal se deben tomar en cuenta los tiempos de espera para que las sinapsis proporcionen su salida. • La actividad de cualquier sinapsis inhibidora impide por completo la excitación de la neurona en ese momento. De hecho, la activación de una sola sinapsis inhibidora “apagará” duranteenun independientemente de las sinapsis excitadoras aquelaseneurona hayan activado ese tiempo, mismo momento. • La estructura de las conexiones entre las neuronas de la red nunca cambia. Estos cinco principios aún se aplican (no necesariamente todos al mismo tiempo) en el diseño de Redes Neuronales Artificiales. Además cimentaron las bases a partir de las cuales, de acuerdo a McCulloch y Pitts, las neuronas y las Redes Neuronales deberían ser modeladas y estudiadas. Por otro lado, en 1949, Donald Hebb estableció un principio que también es Hebbian Rule, Hebbian utilizado en la actualidad: la Ley de Aprendizaje Hebbiano ( Hebbian Learning Law Law). Esta ley se cita de la siguiente manera: manera: “Cuando un axón de una célula P está lo suficientemente cerca de una célula Q y cuando P de manera repetida y persisten persistente te toma parte en la excitació excitación n de Q, entonces algún proceso de crecimiento o cambio metabólico ocurre en una o ambas células tal que la eficiencia de P es incrementada.”
¿Qué significa que la eficiencia de una neurona sea incrementada? Veamos primero un ejemplo clásico que se utiliza para visualizar el proceso de Aprendizaje Hebbiano. a) Supóngase que una célula S causa salivación y es excitada por una célula F la cual, a su vez, es excitada por el avistamiento de comida. comida. b) Supóngase además que una célula L, la cual es excitada al escuchar una campana, también se conecta con S, pero L no es capaz de encender o excitar, por sí sola, a S: necesita a F. F. c) Ahora, cada vez que S es excitada por F, también recibe estimulación proveniente de L. Sin embargo, la conexión entre S y L es débil o no cuenta con prioridad suficiente de manera que S no detecta o ignora el impulso proveniente de L. Como ya comentamos, para excitar a S, L necesita excitar a F y ésta a su vez excita a S. d) Eventualmente, por repetición sucesiva y por cambios metabólicos o de algún otro tipo, L será capaz de excitar a S sin que F intervenga. Es decir, tales cambios incrementan el peso (o prioridad) de la entrada de L hacia S. e) L ha aprendido a estimular a S y a su vez S ha aprendido a detectar y responder a las señales de L (sin intervención alguna de F). De acuerdo al ejemplo anterior, es claro que el la Ley de Aprendizaje Hebbiano implica la modificación de las sinapsis para controlar la memoria a largo plazo a través de la generación de nuevas conexiones entre neuronas o a través del refuerzo de las conexiones existentes entre éstas. Este tipo de modificaciones pueden incluso requerir el que las neuronas se desplacen.
14
Capítulo 1. Introducción
Desde el punto de vista de las Redes Neuronales Artificiales se plantea la existencia de un proceso de modificación de pesos en las entradas de cualquier neurona a fin de mejorar su eficiencia. Esta variación de pesos es un evento que ocurre en todo modelo de Red Neuronal Artificial. En la siguiente Sección veremos los principios de los que parte el proceso de aprendizaje neuronal.
1.3 Principios del Aprendizaje o Entrenamiento de una Red Neuronal Artificial Considérese un conjunto formado por N vectores: vectores: { X 1, X 2, …, X N } Donde: xi,1 X i = xi ,k xi , P
i = 1, 2, …, N xi,k ∈ k = = 1, 2, …, P
A tal conjunto se le llamará el Conjunto de Vectores de Entrada para una Red Neuronal. Ahora considérese un segundo conjunto de N vectores: vectores: { D1, D2, …, D N } Donde: d i ,1 Di = d i ,k d i ,m
i = 1, 2, …, N d i,k i,k ∈ k = = 1, 2, …, m
15
A rtificial Una Introducción al Cómputo Neuronal Artificial
Al conjunto { D1, D2, …, D N } se le llamará el Conjunto de Vectores de Salida Esperada para una Red Neuronal. Se asumirá que dado un vector de entrada X i, la salida que se espera proporcione la Red Neuronal será el vector Di. El conjunto de vectores de entrada y el conjunto de vectoresque de de salida esperada el Conjunto demapeo Entrenamiento Red Neuronal Nótese hecho la Redforman Neuronal efectuará un de vectoresdedelaentrada en P a. vectores de salida en m . El conjunto de entrenamiento se utiliza para ajustar a las neuronas que forman una Red Neuronal. El procedimiento de ajuste trata de modificar los pesos de las neuronas de manera que para cualquier vector de entrada X i el vector de salida S i proporcionado por la red sea igual a Di. De hecho, en la práctica sólo se espera que S i sea tan cercano como sea posible a Di. Ello implica que las salidas proporcionadas por la red tendrán un error respecto a las esperadas. Por lo tanto, el procedimiento de ajuste en estos casos también tratará de minimizar los errores. El procedimiento de ajuste de las neuronas de una red es llamado Procedimiento de Aprendizaje o Procedimiento de Entrenamiento. Aquellas arquitecturas de Redes Neuronales que requieren un conjunto de entrenamiento formado por los vectores de entrada y por los vectores de salida esperada son agrupadas en una clase denominada Redes Neuronales Supervisadas. El término “Supervisado” surge del hecho de que los procedimientos de entrenamiento cuentan con un parámetro para supervisar el desempeño actual de la red. Tal parámetro es usado para determinar las mejores modificaciones a aplicar con la finalidad de mejorar el desempeño. En las Redes Supervisadas el desempeño por lo regular se mide numéricamente con la magnitud del Error de Aprendizaje, es decir, mediante la diferencia entre Di y S i. En función de la magnitud obtenida se deciden los cambios a aplicar. En ocasiones, sólo se cuenta con el conjunto de vectores de entrada. Estas situaciones por lo regular se presentan en problemas relacionados con la agrupación de tales vectores en clases de equivalencia. Un ejemplo clásico de un problema con este enfoque es el del Reconocimiento Automático de Caracteres Manuscritos. Tenemos conocimiento previo respecto a cuantas clases necesitamos para clasificar a los caracteres: deseamos que aquellos caracteres que corresponden a la letra x, por ejemplo, estén agrupados en la misma clase. Las arquitecturas de Redes Neuronales que parten de la hipótesis de que el conjunto de entrenamiento únicamente se forma por los vectores de entrada, forman parte de las denominadas Redes Neuronales No Supervisadas. Es claro que los procedimientos de entrenamiento de las Redes No Supervisadas no pueden medir numéricamente la magnitud del error de aprendizaje. Por lo tanto, estos procesos tratan de determinar la estructura que forman los vectores de entrada al tomar en cuenta las similitudes entre éstos. Para determinar en que clase debe ser colocado un vector, el proceso de análisis de similitud se puede apoyar, por ejemplo, en evaluación y comparación de características topológicas o geométricas.
16
Capítulo 1. Introducción
1.4 Estructuras Básicas de Neuronas y Redes Redes Dentro de las neuronas artificiales básicas en primer lugar debemos mencionar al Perceptrón. Es quizás la neurona artificial más popular. Su mecanismo de aprendizaje está basado en un entrenamiento supervisado y fue propuesta en 1958 por el psicólogo Frank Adaptive Linear Neuron, Neurona Adaptive Rosenblatt. Por otro lado fue contamos con por el Adaline Lineal Adaptiva), la cual propuesta Bernard (Widrow en 1960. Esta neurona es también conocida como ALC (Combinador Lineal Adaptivo). Si bien el Perceptrón, históricamente, precede al Adaline, la última será estudiada en primer lugar en el Capítulo 3 y posteriormente el Perceptrón en el Capítulo 4. Ello se debe a que el Adaline cuenta en su especificación con parte de la estructura básica del Perceptrón. También veremos que los mecanismos para entrenar a una neurona Adaline forman una serie de preliminares para comprender mejor los procedimientos para entrenar a un Perceptrón, y posteriormente, en el Capítulo 6, a una red formada por Perceptrones.
En las décadas de los 50s y 60s se conjeturaba que una sola neurona sería capaz de representar una amplia gama de problemas. Desgraciadamente, veremos que una neurona, como único elemento de Cómputo Neural, no es capaz de aprender cualquier problema y de hecho el número de problemas que puede aprender es en realidad limitado. Sin embargo notaremos posteriormente que estas restricciones son superadas al utilizar una Red Neuronal. Entre los primeros problemas para los cuales se encontraron soluciones exitosas al considerar redes de varias neuronas podemos mencionar, por ejemplo, al Modelado de Funciones Booleanas de n variables, Reconocimiento de Patrones y Clasificación Automática. Sin embargo, ante tales éxitos, también es natural plantearnos las siguientes preguntas: preguntas: • ¿Qué problemas pueden ser modelados mediante una Red Neuronal? • ¿Cuántas neuronas se requieren para garantizar que una red aprenderá un problema dado? • ¿Existe algún criterio que permita determinar el tiempo que requerirá el proceso de entrenamiento de manera que se asegure el contar con un modelo apropiado del su solución? Si problema bien el ycampo de las Redes Neuronales Artificiales ha logrado importantes contribuciones, tal y como veremos a lo largo del texto, estas preguntas, de carácter fundamental, aún siguen abiertas. Las neuronas que forman parte de una red estarán interconectadas y agrupadas en Capas. Se tendrán 3 diferentes tipos de capas: • Capa de Entrada: el conjunto de neuronas que recibe información proveniente del exterior. • Capa de Salida: el conjunto de neuronas que proporciona la salida final proporcionada por la red. • Capas Ocultas: conjuntos de neuronas ubicadas entre las capas de entrada y salida. Todas las neuronas, independientemente de la capa en que se encuentren, contribuyen al Cómputo Neural. Por otro lado, es claro que el rol de las neuronas de acuerdo a su posición
17
A rtificial Una Introducción al Cómputo Neuronal Artificial
en una red es consistente con la clasificación que se tiene para las neuronas biológicas en Aferentes, Eferentes, e Interneuronas. Considérese por ejemplo la Red Neuronal presentada en la Figura 1.6. Se tiene una red formada por 6 neuronas de tipo Adaline. Las neuronas 1, 2 y 3 forman la capa de entrada y pueden ser caracterizadas como las neuronas aferentes. Sólo se cuenta en este caso con una neurona eferente, aquella etiquetada como la neurona 6. De hecho, la de salida de oculta la red formada se formaporexclusivamente neurona. Finalmente, se capa tiene sólo una capa las neuronas 4 por y 5. esta Si bien estas neuronas funcionan como puntos de conexión entre las capas de entrada y salida, lo que las caracterizaría como interneuronas, veremos que juegan un papel importante durante los procesos de aprendizaje.
W1,1
W1,2 1,2
sign(z ) z = w + Adaline 1
X1
X2
y1,1
z 1,1
1,1
1,1
1,0
W1,n 1,n
W
W2,1 2,1
2,2 2,2
sign(z ) z = w + Adaline 2
2,1
2,0
W 2,n
Xn
W W 3,1 3,1
3,2 3,2
sign(z ) z = w + Adaline 3
3,0
W z = w + W
sign(z )
z 4,1
4,2 4,2
4,1
4,0
y4,1
4,1
W 5,1 5,1
z 5,1
5,2 5,2
5,1
5,0
W z = w + W6,1
4,3 4,3
z 6,1
Adaline 5
6,2 6,2
6,1
6,0
sign(z ) Adaline 6 y6,1
6,1
Network output
y5,1
5,1
5,3 5,3
y3,1
z 3,1
3,1
sign(z ) Adaline 4
y2,1
z 2,1
2,1
W z = w + W W 4,1 4,1
3,1
W3,n 3,n
Figura 1.6. Un Red formada por 6 neuronas tipo Adaline.
Entre las Redes Neuronales más populares podemos mencionar: • Red Madaline ( Many Many Adaline): También propuesta por Bernard Widrow en 1962. Es una Red Neuronal basada en neuronas tipo Adaline. Esta red ha proporcionado soluciones a problemas asociados a la Predicción de Señales y el Reconocimiento de Patrones. Back-Propagation Nde etwork • Red ( Back-Propagation Quizás la más popular de Retropropagación del área de las Redes Neuronales. Se trata Network una): red multicapa formadadentro por
Perceptrones. Esta red, y de hecho el área misma de las Redes Neuronales Artificiales, adquieren relevancia científica al ser presentado en 1986, por David Rumelhart, Geoffrey Hinton y Ronald Williams, el Algoritmo de Retropropagación. Este algoritmo describe un método eficiente para el entrenamiento de este tipo de redes. Se tienen reportadas aplicaciones exitosas de la Red de Retropropagación en áreas relacionadas a la Predicción de Señales, Reconocimiento de Patrones, Reconocimiento de Caracteres Manuscritos y Búsqueda de Soluciones Aproximadas para problemas como la Identificación de Secuencias Proteínicas y el Problema del Agente Viajero, entre otras muchas más. • Red de Hopfield: Propuesta por John Hopfield en 1982. Es una Red Neuronal que se diferencia de las anteriores debido a que permite retroalimentación recurrente entre neuronas. Es decir, cada neurona cuenta con una salida que a su vez se conecta con
18
Capítulo 1. Introducción
alguna de sus propias entradas. En las áreas de Reconocimiento de Patrones, Reconocimiento de Caracteres Manuscritos y Clasificación Automática de Imágenes es donde la Red de Hopfield ha encontrado un nicho de aplicación. ): Una aportación del finlandés Teuvo Kohonen. • Red de Kohonen (Kohonen Network ): Se trata de redes basadas en aprendizaje no supervisado y cuya finalidad es resolver el problema la clasificación automática.deEsta red haReconocimiento proporcionado de soluciones problemas de asociados al Reconocimiento Patrones, Caracteresa Manuscritos, Clasificación Automática de Imágenes y Búsqueda de Soluciones Aproximadas para problemas como el del Agente Viajero. La solución de un problema mediante una única neurona o bien mediante una red de neuronas impone importantes diferencias en cuanto a los mecanismos de aprendizaje a usar. Intuitivamente se debe entender que entrenar a una Red Neuronal requiere procedimientos más sofisticados que aquellos para el ajuste de una única neurona, aunque no por ello éstos últimos son menos importantes. De hecho, por ejemplo, veremos como es que el mecanismo de aprendizaje del Perceptrón guarda una relación profunda con el mecanismo de entrenamiento de una Red de Retropropagación. En realidad, existe una gama de métodos de entrenamiento disponibles para redes como la Madaline o la de Perceptrones. Entre éstos podemos mencionar: • Aprendizaje basado en Solución por Mínimos Cuadrados • Madaline Rule Rule I • Madaline Rule Rule II • Madaline Rule Rule III • Retropropagación ( Back-Propagation Back-Propagation) En los Capítulos 2, 5 y 6 describiremos a detalle algunas de estas metodologías.
19
A rtificial Una Introducción al Cómputo Neuronal Artificial
20
Una Introducción al Cómputo Neuronal Artificial
2. Preliminares Matemáticos
A rtificial Una Introducción al Cómputo Neuronal Artificial
22
Capítulo 2. Preliminares Matemáticos
El objetivo de este Capítulo es el de describir algunas de las herramientas Matemáticas necesarias para abordar el estudio de las Redes Neuronales Artificiales. En la Sección 2.1 efectuaremos un breve repaso relacionado con el Gradiente de una Función y su relación con sus Máximos y Mínimos. En la Sección 2.2 comentaremos los fundamentos del Método de Mínimos Cuadrados, popular Regresión Lineal. Abordaremos primero el caso del ajuste una con una rectametodología en el plano ydeposteriormente, en la Sección 2.3, el ajuste con un hiperplano multidimensional. Finalmente, en la Sección 2.4 efectuaremos la demostración de la Desigualdad de Cauchy-Schwarz. Nuestro estudio de las Redes Neuronales Artificiales iniciará formalmente a partir del Capítulo 3, por lo que aquellos lectores que ya se encuentren familiarizados con los temas antes mencionados pueden sin problema alguno omitir el presente Capítulo.
2.1 Gradientes y Búsquedas de Máximos y Mínimos Mínimos Consideremos una función f tal que f : n → . Es decir, nuestra función recibirá como entrada un vector n-Dimensional y producirá como salida un escalar. El Vector x1, …, xn), denotado por ∇ f ( x x1, …, xn), se define como: en el punto ( x como: Gradiente de f en δ f δ x 1 δ f ∇ f ( x1 , ..., xn ) = δ x2 δ f δ xn
(Ecuación 2.1.1)
δ f denota a la derivada parcial de f respecto a la variable xi, i = 1, 2, …, n. δ xi δ f Recordemos que no es más que la derivada “convencional”, aquella estudiada en los δ xi
Donde
cursos de Cálculo de una Única Variable, en donde las variables x1, x2, …, xn, excepto la variable xi, son todas asumidas como constantes. Sean e1, e2, …, en los vectores que forman la base canónica de n . Entonces el vector gradiente de f puede puede ser descrito como la combinación lineal:
23
A rtificial Una Introducción al Cómputo Neuronal Artificial
δ f δ x 1 δ f ∇ f ( x1 , ..., xn ) = δ x2 δ f δ xn ⇔ ∇ f ( x1 , ..., xn ) =
δ f δf δf δ f e1 + e2 + e3 + ... + en δ x1 δ x2 δ x3 δ xn
1 0 δ f δ f 0 + = δ x1 δ x2 0
0 0 0 1 0 δ f 0 δ f 0 + 1 + ... + 0 δ xn δ x3 0 0 1
El i-ésimo componente de ∇ f nos nos proporciona la razón de cambio de f en en la dirección del vector unitario ei, i = 1, 2, …, n. δ f
Analicemos primero el caso con n = 1. Ello implica que ∇ f ( x x1) = = [ f '( x1 )] . x δ 1 Es decir, el único componente del gradiente de f , f : → , no es más que la derivada “convencional”. Ese único componente nos proporciona la razón de cambio de f en la dirección del eje X 1. La evaluación de la derivada de f en el punto x0, f '(x0 ) , desde un punto vista geométrico, nos 2.1 proporciona la pendiente de la recta a f en el punto ( x x0, f ( x xde Véase la Figura . El signo de la pendiente nostangente proporciona también 0)). información acerca de la dirección hacia la cual f crece crece más rápido. Una pendiente positiva nos informa que la función, partiendo de x0, crece más rápido en la dirección positiva del eje X 1 (Figura 2.1.a). Una pendiente negativa es indicativo de que, partiendo de x0, f decrece en la dirección positiva del eje X 1 (Figura 2.1.b). O de manera equivalente, una pendiente negativa nos indica que f crece crece cuando nos movemos en la dirección negativa del eje X 1. Cuando f '( x0 ) = 0 entonces se ha encontrado un punto crítico que bien puede ser un máximo, un mínimo, o un punto de inflexión.
24
Capítulo 2. Preliminares Matemáticos
f
f
x 0
X 1
x 0
X 1
a) b) Figura 2.1. Interpretación del signo de las pendientes de las Rectas Tangentes a una función f . a) Una pendiente positiva señala la dirección de crecimiento de f . b) Una pendiente negativa indica que f decrece decrece en la dirección positiva del eje X 1.
Ahora bien, consideremos una función f tal que f : 2 → . Por ejemplo, sea f la 2 2 función f ( x x1, x2) = x2 − x1 . Su vector gradiente estará dado por −2 x1 ∇ f = 2 x2
Al evaluar el vector gradiente en el punto (-2,3), y al expresarlo como combinación lineal de la base canónica {e1, e2}, obtenemos: 4 4 0 ∇ f (−2, 3) = = + = 4e1 + 6e2 6 0 6
El primer componente de ∇ f (-2,3) (-2,3) nos indica que la razón de cambio en dirección 4 del vector 0 , el cual es paralelo al eje X 1, es 4. El segundo componente de ∇ f (-2,3) nos 0 indica que la razón de cambio en dirección del vector , paralelo al eje X 2, es 6. De 6 hecho, las razones de cambio al ser ambas positivas denotan que la función crece al moverse en cualquiera de esas dos direcciones partiendo del punto (-2,3). Es más, se tiene 0 mayor crecimiento en la dirección . 6 Los dos ejemplos anteriores nos permiten observar como es que efectivamente cada componente del vector gradiente nos informa acerca de la razón de cambio de una función en las direcciones de los ejes principales de n . En el caso particular de n = 1 de hecho no tenemos otras maneras de movernos más a que a lo largo del eje X 1. Sin embargo, cuando
25
A rtificial Una Introducción al Cómputo Neuronal Artificial
n >
1 es claro que podemos considerar direcciones no necesariamente paralelas a los ejes principales. Y además, nos interesará conocer las razones de cambio de una función cuando nos movemos a lo largo de tales direcciones. Por ejemplo, ¿qué tanto crece o decrece la función f ( x x1, x2) = x22 − x12 cuando nos movemos, a partir de un punto dado, en la dirección −3 del vector 18
T
−3 18 ?
Si se requiere la razón de cambio de f en en la dirección del vector arbitrario y unitario u, entonces se debe recurrir a la Derivada Direccional de f en en la Dirección de u. Se le denota por Du f ( x x1, …, xn) y se calcula mediante el producto punto del vector gradiente de f (Ecuación 2.1.1) y el vector u: Du f ( x1 , ..., xn ) = ∇f ⋅ u
u1 = ∇ f ⋅ u2 un =
(Ecuación 2.1.2)
δ f δf δ f u1 + u2 + ... + un δ x1 δ x2 δ xn
A diferencia del gradiente, la derivada direccional nos proporciona un escalar. Ello se debe a que describe únicamente la razón de cambio de f cuando cuando nos movemos, a partir del punto ( x x1, …, xn), en la dirección del vector u (nuestro vector de dirección arbitraria). El signo de tal escalar nos informará si la función crece o decrece al tomar la dirección u y x1, …, xn). partiendo del punto ( x
Sea el vector unitario u1 =
−3 18 −3 18
2 2 Ahora deseamos conocer la derivada direccional de f ( x x1, x2) = x2 − x1 en el punto (-2,3) en la dirección de u1. Por lo tanto, al aplicar la Ecuación 2.1.2, se tiene: tiene:
26
Capítulo 2. Preliminares Matemáticos
Du1 f (−2, 3) = ∇f (−2, 3) ⋅ u1
−3 4 18 −3 −3 = ⋅ = 4 + 6 6 −3 18 18 18 =−5 2
Ello implica que partiendo del punto (-2,3) y moviéndose en la dirección del vector u1, la función f tiene tiene una razón de cambio −5 2 . Tal razón, al ser negativa, nos indica que de hecho la función decrece al moverse en esa dirección. dirección. Consideremos el vector unitario −1 0
u2 =
La derivada direccional de f en en el punto (-2,3) en la dirección de u2 es: es: Du2 f (−2, 3) = ∇f (−2, 3) ⋅ u2
4 −1 = ⋅ 6 0 =−4
Partiendo del punto (-2,3) y moviéndose en la dirección del vector u2, la función f tiene tiene una razón de cambio -4. Nuevamente, la función decrece al moverse en esa dirección. dirección. Ahora sea el vector unitario − u3 =
2 13 3 13
27
A rtificial Una Introducción al Cómputo Neuronal Artificial
La derivada direccional de f en en el punto (-2,3) en la dirección de u3 es: es: Du3 f (−2, 3) = ∇f (−2, 3) ⋅ u3
− 4 = ⋅ 6 =
2
313 13
10 13
Concluimos que partiendo del punto (-2,3) y moviéndonos en la dirección u3, la función f 10 tiene una razón de cambio . Aunque la razón es positiva, es menor que la obtenida 13 4 para la dirección , con valor 4. Ello implica que en la dirección dada por u3 la función 0 crece aunque más “lento” que usando la dirección 4 . 0 Plantearemos dos observaciones: observaciones: • Dado un punto ( x x1, …, xn) es claro que es posible determinar una cantidad enorme de derivadas direccionales de f en en ese punto. • ¿Cómo encontrar aquel vector cuya dirección, y partiendo del punto ( x1, …, xn), nos indique la máxima razón de cambio de f ? La dirección de ese vector será también la dirección de máximo crecimiento de f . Por la teoría del Algebra Lineal se sabe que el producto punto entre ∇ f y y el vector unitario u también puede ser expresado como: como: x1, …, xn) Du f ( x
= ∇ f ( x x1, …, xn)⋅u = ||∇ f ( x x1, …, xn)|| ||u|| cos θ = ||∇ f ( x x1, …, xn)|| cos θ
(Por la Ecuación 2.1.2) (recuérdese que ||u|| = 1) (Ecuación 2.1.3)
Donde θ es el ángulo formado por los vectores ∇ f y y u. El valor máximo del coseno se da cuando θ = 0. Ello implica que u y el vector gradiente, ∇ f , tienen la misma dirección. En ese caso la derivada direccional tendrá un valor Du f ( x x1, …, xn) = ||∇ f ( x x1, …, xn)||, que de hecho es también su valor máximo. Ello implica que la dirección del vector gradiente nos indica hacia donde f tiene su máxima razón de cambio. En este punto recalcamos que los componentes del vector gradiente, cada uno por separado, proporcionan las razones de cambio en dirección de los ejes principales.
28
Capítulo 2. Preliminares Matemáticos
Pero en sí, el vector gradiente indica una dirección y es en esa dirección donde f tiene tiene su máximo crecimiento. Esta propiedad es sumamente útil si se requieren identificar máximos en la función f . 2 2 Previamente establecimos que para f ( x x1, x2) = x2 − x1 su vector gradiente en el
punto (-2, 3) era ∇ f (-2,3) (-2,3) = 4 . La magnitud del vector gradiente está dada por: 6 ||∇ f (-2,3)|| (-2,3)|| = 42 + 62 = 52 4 Por lo tanto, partiendo del punto (-2, 3) y en la dirección dada por el vector , el vector 6 gradiente, se tiene la máxima razón de cambio de f , 52 , y en consecuen consecuencia cia su dirección de máximo crecimiento. Cualquier derivada direccional en el punto (-2, 3) indicará una razón de cambio menor o igual a la proporcionada por el vector gradiente. gradiente.
Ahora nos plantearemos una nueva pregunta: ¿Cómo encontrar aquel vector cuya dirección, y partiendo del punto ( x x1, …, xn), nos indique la mínima razón de cambio de f ? Sabemos por la Ecuación 2.1.3 que: que: Du f ( x x1, …, xn)
= ||∇ f ( x x1, …, xn)|| cos θ
La función coseno tiene su valor mínimo cuando θ = π. Ello implica que los vectores u y ∇ f apuntan en direcciones opuestas. Por lo tanto, en ese caso, se tendrá que Du f ( x x1, …, xn) = -||∇ f ( x x1, …, xn)|| )||
Entonces, claro que la dirección opuesta la del vector f tiene su esmínima razón de cambio. Esta apropiedad es identificar mínimos en la función f .
gradiente nosútil indica hacia donde sumamente si se requieren
4 Para f ( x x1, x2) = x22 − x12 su vector gradiente en el punto (-2, 3) era ∇ f (-2,3) (-2,3) = con 6 magnitud ||∇ f (-2, (-2, 3)|| 3)|| = 52 . Por lo tanto, tanto, partiendo partiendo del punto punto (-2, (-2, 3) y en la dirección dirección dada 4 por el vector (-1) se tiene la mínima razón de cambio de f , - 52 . Cu Cual alqu quie ierr ot otra ra 6 derivada direccional en el punto (-2, 3) indicará una razón de cambio mayor o igual a la proporcionada por la dirección opuesta del vector gradiente. gradiente.
29
A rtificial Una Introducción al Cómputo Neuronal Artificial
2.2 Regresión Lineal Lineal En ocasiones se requiere inferir un modelo o sistema a partir de datos experimentales. La importancia y finalidad de tal inferencia radica en que entonces podrá ser posible entender, predecir y controlar al sistema que generó tales datos. En esta Sección aplicaremos razonamientos a fin de presentar unael bien de estimación: la RegresiónMatemáticos Lineal. Primero, presentaremos casoconocida particularmetodología cuando los datos son pares de la forma ( x x, d ), ), donde x es la única variable de entrada y d el el valor que se espera genere el sistema para tal entrada. Posteriormente, en la Sección 2.3 discutiremos el fundamento matemático detrás del caso general, en el cual se tienen varias variables. Existen tres condiciones a las cuales los datos experimentales deben sujetarse y que de hecho asumiremos se cumplen: cumplen: • Deben ser suficientes en cantidad. • Deben capturar los principios fundamentales del sistema o modelo de origen. • Y finalmente, deben ser libres, tanto como sea posible, de ruido. Como ya comentamos previamente, se tendrán pares de observaciones ( x1,i, d i) tal que x1,i se asume es libre de errores y d i está contaminado por ruido. El objetivo es buscar una relación lineal entre las variables x1 y d tal tal que que d ≈ wx1 + b
Es decir, buscaremos valores para las variables w y b de manera que contemos con un modelo lineal tal que dado un valor para la variable x1, obtengamos, tan justa como sea posible, la correspondiente predicción d . O de manera más específica, dado un valor de entrada particular x1,i y el correspondiente ruido o error εi, el cual se agrega a wx1,i + b, entonces podemos garantizar una predicción exacta d i: d i = wx1,i + b + εi
(Ecuación 2.2.1)
Sea x2,i = wx1,i + b. Entonces al sustituir en la Ecuación 2.2.1 se tendrá: tendrá: d i = x2,i + εi
(Ecuación 2.2.2)
Donde εi es ahora el error agregado a x2,i, w es una pendiente y b es una intersección con el eje X 2. Al valor b también se le llama sesgo. Es claro que se buscará entonces una recta en el plano que se ajuste a las observaciones ( x x1,i, d i). Véase la Figura 2.2. Es bien sabido que cualquier recta se ajusta perfectamente a dos observaciones, pero ésta no necesariamente se ajustará al resto de las observaciones. Nuestro problema a resolver se plantea en el siguiente cuestionamiento: ¿Cuál es la mejor elección de w y b tal que la recta wx1 + b esté tan “cerca” como sea posible a todas las observaciones?
30
Capítulo 2. Preliminares Matemáticos
(x 1,i 1,i, d i i)
(x 1,4 1,4, d 4 4) (x 1,5, d 5 5 )
(x 1,2 1,2, d 2 2 )
wx1 + b
(x 1,3 1,3, d 3 3) (x 1,1 1,1, d 1)
X1
Figura 2.2. Ajuste de la recta wx1 + b.
Una solución muy popular para nuestro problema es el método de Mínimos Cuadrados. Se trata de un método sistemático que permite determinar los mejores valores para las constantes b y w. El método parte de la consideración de que todo d i contiene ruido, de manera que no será posible ajustar la relación sin error, por lo tanto se tiene que: d i = wx1,i + b + εi ⇔ εi = d i – (wx1,i + b)
(Ecuación 2.2.3)
Sea d i’ = wx1,i + b. Entonces al sustituir en la Ecuación 2.2.3: εi = d i – d i’
(Ecuación 2.2.4)
Es claro que εi es el error o diferencia que existe entre el valor experimental d i y el valor predicho por la recta, es decir d i’. A fin de encontrar aquella recta que mejor se ajuste a los datos, se requerirá de un criterio para determinar que tan bueno es un estimador lineal. Para este fin, se tiene que el Promedio de los Errores al Cuadrado es un criterio bastante recurrido. Básicamente considera, para cada una de las observaciones, y dada una recta candidata, la diferencia εi entre la predicción que ésta proporciona y el valor esperado. Nótese que εi puede ser positivo o negativo. Por ello es posible, en un caso extremo, que la suma de todas las diferencias sea cero. Ello implica que la sola suma de diferencias puede no proporcionarnos información real de cómo se comporta el estimador lineal con el conjunto de observaciones. Por ello, a fin de que los signos de las diferencias no afecten la elección de la mejor recta,
31
A rtificial Una Introducción al Cómputo Neuronal Artificial
es que estas diferencias son todas elevadas al cuadrado y posteriormente sumadas. Claramente el Promedio de los Errores al Cuadrado queda definido como: como: 1 N 2 J = ε i 2 N i =1
(Ecuación 2.2.5)
Donde N es es el número de observaciones. J nos
proporciona, para una recta candidata, el error total que ésta tiene con el conjunto de observaciones. Ahora el objetivo será minimizar a J . La Sección anterior nos proporcionó herramientas para lograr este objetivo. J puede puede ser vista como una Función de Error para la cual se quiere determinar su mínimo global. Se garantiza la existencia de un único mínimo ya que si se observan las Ecuaciones 2.2.3 y 2.2.5, se tiene que J describe describe un paraboloide en el espacio tridimensional debido a que depende de las variables w y b. Es en este mínimo donde el vector gradiente de J es es precisamente el vector cero. Por lo tanto, el primer paso es determinar ∇ J . Ello implica encontrar las derivadas parciales de J respecto respecto a las variables w y b. Posteriormente, el segundo paso consistirá en igualar a las expresiones resultantes a cero. Esto genera un sistema de ecuaciones: δ J δ b = 0 δ J =0 δ w
La solución del sistema de ecuaciones nos proporcionará los valores óptimos de b y w de tal forma que la función de error J sea minimizada tanto como sea posible. De esta forma, habremos encontrado a la mejor recta para ajustar nuestros datos. Procedamos a determinar la derivada parcial de J respecto respecto a la variable b: δ J δ 1 N 2 = ε i δ b δ b 2 N i =1 1 N δ 2 = ε i 2 N i =1 δ b 2 1 N δ = d − w x − b ( ) i 1,i 2 N i =1 δ b 1 N δ = 2 ( di − wx1,i − b ) ( di − wx1,i − b ) 2 N i =1 δ b
=
1
N
N i =1
( di − wx1,i − b ) (−1)
(Por la Ecuación 2.2.3) (Regla de la Cadena) di y wx1,i son constantes b respecto a
32
Capítulo 2. Preliminares Matemáticos
=
1
N
( wx1, + b − d ) i
N i =1
i
N wx b d = 1,i + − i N N i =1 N N N N = w x1,i + b − d i
N
i =1
i =1
N
i =1
N
Por lo tanto tenemos que: N N N x1,i d δ J b = w + − i δ b i =1 N i =1 N i =1 N
(Ecuación 2.2.6)
Ahora determinaremos la derivada parcial de J respecto respecto a la variable w: δ J δ 1 N 2 = ε i δ w δ w 2 N i =1
1 N δ 2 = ε i 2 N δ w i =1 2 1 N δ = d − w x − b ( ) i 1,i 2 N i =1 δ w 1 N δ 2 ( di − wx1,i − b ) ( di − wx1,i − b ) = 2 N i =1 δ w 1 N = ( di − wx1,i − b ) (− x1,i ) =
N
i =1
1
N
(Por la Ecuación 2.2.3) (Regla de la Cadena) di y b son constantes respecto a w
( wx12, + bx1, − d x1, ) i
i
i
i
N i =1 2 N wx1,i
bx dx = + 1,i − i 1,i N N i =1 N N
= w i =1
2
x1,i N
N
+ b i =1
x1,i N
N
− i =1
di x1,i
N
Es decir: 2
N N N x x dx δ J = w 1,i + b 1,i − i 1,i δ w i =1 N N i =1 N i =1
(Ecuación 2.2.7)
33
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora tanto
δ J δ J como son igualadas a cero y se cuenta con el siguiente δ b δ w
sistema de ecuaciones: ecuaciones: N x1,i N b N d i + i =1 N − i =1 N = 0 w i =1 N N x 2 N N w 1,i + b x1,i − di x1,i = 0 i =1 N N i =1 N i =1
(Ecuación 2.2.8) (Ecuación 2.2.9)
Hagamos: N
x =
x1,i
N
1 N
d =
i=
2
N
x =
d i
1 N i=
x12,i
N
1 N
xd =
i=
1
di x1,i
i=
N
Entonces al sustituir en las Ecuaciones 2.2.8 y 2.2.9 el sistema se reescribe como: como: w x + b − d = 0 2 w x + b x − xd = 0
(Ecuación 2.2.10) (Ecuación 2.2.11)
Procedemos a resolver el sistema de ecuaciones lineales. Para la Ecuación 2.2.10 tenemos: tenemos: w x + b − d = 0
⇔ b = d − wx
Sustituyendo el valor de b en la Ecuación 2.2.11: w x 2 + (d − w x) x − xd = 0 2
⇔ w x 2 + d ⋅ x − w ( x ) − xd = 0
34
Capítulo 2. Preliminares Matemáticos
2
⇔ w x 2 − w ( x ) = xd − d ⋅ x ⇔ w=
xd − d ⋅ x
( )
x 2 − x
(Ecuación 2.2.12)
2
Al sustituir el valor de w (Ecuación 2.2.12) en la Ecuación 2.2.10 tenemos finalmente: finalmente: b = d − wx
=d−
xd − d ⋅ x
( )
2
x − x
= d −
x
( ) 2 x 2 − ( x )
xd ⋅ x − d ⋅ x
(
( )
d x2 − x
=
2
2
) 2
2
− xd ⋅ x + d ⋅ ( x )
( )
x − x
2
2
2
=
d ⋅ x − xd ⋅ x 2
( )
x − x
2
Es decir:
b=
d ⋅ x2 − xd ⋅ x 2
( )
x − x
2
(Ecuación 2.2.13)
Las Ecuaciones 2.2.12 y 2.2.13 representan los valores óptimos para las variables w y b respectivamente. Ello se debe a que se determinó para qué valores precisamente de w y b el vector gradiente de la función de error J es es el vector cero. Analicemos un ejemplo práctico simple. En la Tabla 2.1 se presenta un conjunto de observaciones para las cuales deseamos obtener un estimador lineal que se ajuste lo mejor posible. En Figura 2.3 se puede apreciar la disposición de los puntos ( x1,i, d i).
35
A rtificial Una Introducción al Cómputo Neuronal Artificial
Tabla 2.1. Un conjunto de 11 observaciones. x1,i
d i
-5 -4 -3 -2 -1 0 1 2 3 4 5
-10.5 -8.5 -4.5 -2.5 0.5 4.5 6.5 10.5 12.5 16.5 18.5
15
10
5
4
2
2
4
5
10
Figura 2.3. Disposición en el plano cartesiano de los puntos presentados en la Tabla 2.1.
Para el conjunto de datos en cuestión tenemos: • x = 0 • x 2 = 10 = 3.9545 • d = • xd = = 29.8182 Que al sustituir en las Ecuaciones 2.2.12 y 2.2.13 obtenemos respectivamente: w = 2.9818 b = 3.9545
Ello implica que la recta que mejor se ajusta a nuestro conjunto de datos está dada por: d = = 2.9818 x1 + 3.9545
En la Figura 2.4 se muestra al conjunto de datos y la recta obtenida.
36
Capítulo 2. Preliminares Matemáticos
15
10
5
4
2
2
4
5
10
Figura 2.4. La recta d = = 2.9818 x1 + 3.9545 como el mejor estimador lineal para el conjunto de datos presentado en la Tabla 2.1.
Ahora bien, sustituiremos el conjunto de datos de la Tabla 2.1 en la Ecuación 2.2.5, es decir, aquella correspondiente al Promedio de los Errores al Cuadrado: 2
J = = 5w
+ 0.5b2 – 29.81w – 3.95b + 52.397
Como ya mencionamos, J describe describe un paraboloide inmerso en el espacio tridimensional. En la Figura 2.5 se puede apreciar la gráfica de J . Cada punto sobre la superficie es de la forma (w, b, J (w,b)) y describe el error total que se obtiene al usar los valores de w y b como parámetros para una recta candidata. Es claro que al visualizar la superficie contamos con una descripción gráfica del desempeño de todos los posibles estimadores lineales para w = 2.9818 y b = 3.9545, los valores encontrados nuestro conjunto de datos. Sustituyendo previamente, al aplicar directamente las Ecuaciones 2.2.12 y 2.2.13, obtenemos el error total J = = 0.122314. Por la Teoría antes presentada, sabemos que el punto
(w = 2.9818, b = 3.9545, J = = 0.122314) es precisamente el mínimo global de la función de error y es donde también el vector gradiente de J es precisamente el vector cero. Es claro, observando la Figura 2.5, que cualquier otro valor para w y b nos proporcionará un error total J mayor mayor a 0.122314.
37
A rtificial Una Introducción al Cómputo Neuronal Artificial
Figura 2.5. El2 paraboloide asociado a la función de error J = = 5w + 0.5b2 – 29.81w – 3.95b + 52.397
2.3 Regresión Lineal con Múltiples Variables Variables Sea el vector xi en P una medición libre de ruido y sea d i un escalar posiblemente P
contaminado con ruido. Sea b + wk xi ,k un hiperplano multidimensional. Este hiperplano k =1
modelará la correlación lineal entre el vector xi y el escalar d i. Sea d i’ el valor proporcionado por nuestro estimador: P
'
di = b +
k =1
wk xi ,k
(Ecuación 2.3.1)
Sea εi el error que existe entre d i y d i’: ε i = di − d i' P = di − b + wk xi ,k k =1 = di − (b + w1 xi ,1 + w2 xi ,2 + ... + wP xi , P )
(Ecuación 2.3.2)
El término b es llamado término de sesgo. A fin de incorporarlo en la sumatoria haremos w0 = b y agregaremos un 0-ésimo componente a nuestros vectores xi de manera que xi,0 = 1. Entonces al sustituir en la Ecuación 2.3.2 ahora tendremos:
38
Capítulo 2. Preliminares Matemáticos
P
ε i = di − wk xi ,k
(Ecuación 2.3.3)
k = 0
El Promedio de los Errores al Cuadrado tiene la forma: forma: 2
P 1 N J = di − wk xi ,k 2 N i =1 k = 0
(Ecuación 2.3.4)
Donde N es el número de mediciones. J será minimizada al resolver el sistema de ecuaciones formado precisamente al igualar a cero sus derivadas parciales respecto a las variables w0, w1, w2, …, wP: δ J δ w = 0 0 δ J δ w1 = 0 δ J δ w = 0 P
Es decir, se buscará la solución de ∇ J = = 0. 0. En términos geométricos, lo que buscamos son los valores de los coeficientes w0, w1, …, wP de manera que el hiperplano multidimensional w0 xi ,0 + w1 xi ,1 + w2 xi ,2 + w3 xi ,3 + ... + wP xi , P
P +1 se ajuste lo mejor posible a nuestro conjunto de mediciones ( x xi, d i), xi ∈ , d i ∈ , i = 1, 2, 3, …, N . Por otro lado, la función de error J describe a una hipersuperficie , en particular, un hiperparaboloide multidimensional. La ecuación de tal lugar geométrico está dada en función de las variables w0, w1, …, wP. Por lo tanto, el hiperparaboloide asociado a J está está inmerso en un espacio Euclidiano ( P+2)-Dimensional. Sin embargo, demostraremos que, tal como sucede en el caso bidimensional (véase la Sección anterior), J cuenta cuenta con un único mínimo. En ese punto el vector gradiente es el vector cero. Es precisamente en esa localidad donde encontramos los valores óptimos para w0, w1, …, wP.
Considérese la j-ésima variable w j, 0 ≤ j ≤ P. Obtendremos la correspondiente derivada parcial de la función de error J respecto respecto a w j:
39
A rtificial Una Introducción al Cómputo Neuronal Artificial
P δ J δ 1 N = di − wk xi ,k δ w j δ w j 2 N i =1 k = 0
2
P 1 N δ = d − wk xi ,k i 2 N i =1 δ w j k = 0
(Por la Ecuación 2.3.4)
2
P P 1 N δ = 2 di − wk xi ,k di − wk xi ,k 2 N i =1 k =0 k = 0 δ w j P δ = di − wk xi ,k − N i =1 k =0 δ w j
1
=
N
w x k i ,k k = 0 P
d − w x , (−x , ) N 1 0
1
N
P
i
k
i=
=−
1
i k
i j
k =
P xi , j di − wk xi,k
(di es co cons nsta tant ntee re resp speect ctoo a w j ) Todas las variables wk son constantes respecto a w j excepto aquella para la cual k = j
N
N i =1
k = 0
Concretizando: P δ J 1 N = − xi , j di − wk xi ,k δ w j N i =1 k = 0
(Ecuación 2.3.5)
Nótese que la Ecuación 2.3.5 define la derivada parcial de w j para todo valor de j desde 0 hasta P. Ello implica que efectivamente hemos encontrado los valores de los componentes del vector gradiente de J , ∇ J . Como ya comentamos antes, resolver la ecuación ∇ J = 0 es equivalente a resolver el sistema de ecuaciones: N
P
− 1 xi , j d i − wk xi ,k = 0 N i k = 0 =1
j = 0,1, 2, ...P
Consideremos la j-ésima ecuación: P − xi , j di − wk xi ,k = 0 N i =1 k = 0 N P ⇔ xi , j di − wk xi ,k = 0 i =1 k = 0 N P ⇔ xi , j di − xi , j wk xi ,k = 0
1
N
i =1
k = 0
(Al multiplicar ambos lados por - N ).
40
Capítulo 2. Preliminares Matemáticos
N N P ⇔ xi , j di − xi , j wk xi , k = 0 i =1 i =1 k = 0
(La sumatoria principal es expresada como dos sumatorias)
P ⇔ xi , j di = xi , j wk xi , k i =1 i =1 k = 0
(Ecuación 2.3.6)
N
N
Considérese el lado derecho de la Ecuación 2.3.6. En primer lugar desarrollaremos la sumatoria principal y posteriormente cada sumatoria con índice de suma k : P P P P P x w x = x w x + x w x + x w x + ... + x N , j wk x N , k i , j k i , k 1, j k 1,k 2, j k 2,k 3, j k 3,k i =1 k =0 k =0 k =0 k =0 k =0 N
P
P
P
P
k =0
k =0
k =0
k =0
= wk x1, j x1,k + wk x2, j x2,k + wk x3, j x3,k + ... + wk xN , j xN ,k = ( w0 x1,1, j x1,0 + w1 x1, j x1,1 + w2 x1,1, j x1,2 + ... + wP x1, j x1, P
( w0 x2,
j
x2,0 + w1 x2, j x2,1 + w2 x2, j x2,2 + ... + wP x2, j x2, P
)+ )+
( w0 x3,
j
x3,0 + w1 x3, j x3,1 + w2 x3, j x3, 2 + ... + wP x3, j x3, P
)+
( w0 x
N , j
xN ,0 , 0 + w1 xN , j xN ,1 ,1 + w2 xN , j xN ,2 , 2 + ... + wP xN , j xN , P )
Es claro que los términos entre paréntesis, con factor común xi , j , corresponden al P
desarrollo “horizontal” de cada suma xi , j wk xi, k . Pero nótense los recuadros punteados k = 0
que hemos agregado. Los términos en cada uno de estos recuadros pueden ser vistos como N
el desarrollo “vertical” de una sumatoria de la forma wk xi, j xi , k , donde evidentemente sus i =1
términos cuentan con el factor común wk . Reagrupando los términos de las sumatorias en forma “vertical” tenemos ahora: N
N
N
N
i =1
i =1
i =1
= w0 xi , j xi ,0 + w1 xi , j xi ,1 + w2 xi , j xi ,2 + ... + wP xi , j xi , P i =1 P
N
k =0
i =1
= wk xi , j xi ,k
Es decir, el lado derecho de la Ecuación 2.3.6 queda ahora expresado como: P xi, j wk xi,k = i =1 k = 0 N
P
N
w x, x, k
k =0
i j
i =1
i k
(Ecuación 2.3.7)
41
A rtificial Una Introducción al Cómputo Neuronal Artificial
Igualamos con el lado izquierdo de la Ecuación 2.3.6: N
P
N
1 x , d = 0 w 1 x , x , i j
i
k
i=
i j
k=
i k
(Ecuación 2.3.8)
i=
Se dividen ambos lados de la Ecuación 2.3.8 por N : N
P
N
1 x , d 0 w 1 x , x , i j
i
i=
k
=
N
k=
i j
1
P
= wk xi , j di =
k =0
i j
i k
i=
1
N
x, x,
wk N xi , j xi ,k i =1
N i =1
1
P
i =1
k
i k
k =0 N
N
w 1 x , x ,
N k =0 P
⇔ N
N
=
1
i k
i=
i j
N
(Ecuación 2.3.9)
Consideraremos ahora, del lado derecho de la Ecuación 2.3.9 la sumatoria con 1 índice i y su factor . Sea Rk,j definido como: como: N
Rk , j =
1
N
x, x, i j
N i =1
i k
k = 0,1,2,..., P j = 0,1,2,..., P
(Ecuación 2.3.10)
Ahora, sea R la matriz de (P+1) × (P+1) dada por: por: R0,0 R 1, 0 R = RP,0
R0,1 R1,1
RP ,1
R0, P R1, P RP , P
(Ecuación 2.3.11)
Sea ℘ j igual al lado izquierdo de la Ecuación 2.3.9: ℘ j =
1
N
x , d i j
N i =1
i
j = 0,1,2,..., P
(Ecuación 2.3.12)
42
Capítulo 2. Preliminares Matemáticos
Definimos a ℘ como un vector de P+1 elementos: elementos: ℘0 ℘ ℘= 1
(Ecuación 2.3.13)
℘P
Y sea W el el vector de P+1 elementos dado por: por: w0 w 1 W = wP
(Ecuación 2.3.14)
Eldesistema de ecuaciones parciales la función de error J que se obtuvo originalmente al calcular las derivadas P 1 N xi , j d i − wk xi ,k = 0 − k = 0 N i =1
j = 0,1, 2, ...P
Ahora puede ser reescrito como el producto matricial: ℘ = RW
(Ecuación 2.3.15)
Supongamos la existencia de la matriz inversa de R, es decir R-1, entonces tendremos manera de determinar al vector W ( (Ecuación 2.3.14), cuyos componentes son precisamente los valores de las variables w0, w1, …, wP: ℘ = RW R-1℘ = R-1 RW ⇔ R ⇔ R R-1℘ = I W ⇔ R R-1℘ = W
( I I : matriz identidad) (Ecuación 2.3.16)
La Ecuación 2.3.16 expresa de manera sumamente concreta, en términos de un producto matricial, el procedimiento de Mínimos Cuadrados. Nótese que la existencia de la solución depende precisamente de que se cuente con la inversa de la matriz R (Ecuación 2.3.11).
43
A rtificial Una Introducción al Cómputo Neuronal Artificial
Consideremos el caso particular cuando P = 1, entonces la matriz R tendrá la forma: R0,0 R 1,0
R0,1
R1,1
Específicamente, por la Ecuación 2.3.10 y dado que xi,0 = 1, i = 1, 2, …, N : 1 N N xi ,0 xi ,0 i =1 R = 1 N N xi ,0 xi ,1 i =1
xi ,1 xi ,0 1 N i =1 = N 1 N 1 x x xi ,1 i,1 i,1 N N i =1 i =1
1
N
1
N
x ,1 1 N 1
x = 1 N 2 x x 2 x N i =1 ,1 i
i=
i
Por las Ecuaciones 2.3.12 y 2.3.13, y haciendo xi,0 = 1, i = 1, 2, …, N , el vector ℘ estará dado por: 1 N 1 N i ,0 i i d d ℘ N i =1 x d N i =1 = ℘= 0 = = N N ℘ xd 1 1 x d 1 N i ,1 i N xi ,1d i i =1 i =1
Suponiendo que el sistema ha de ser resuelto usando la Regla de Crammer, se tiene que los valores para w0 y w1 están dados por:
w0 =
d
x
xd
x2
1 x x
=
d ⋅ x 2 − xd ⋅ x
( )
x 2 − x
2
w1 =
x2
1
d
x
xd
1
x
x
x2
=
xd − d ⋅ x
( )
x2 − x
2
Es claro que las expresiones encontradas para w0 y w1 corresponden con las Ecuaciones 2.2.12 y 2.2.13 presentadas en la Sección anterior.
2.4 La Desigualdad de Cauchy-Schwarz Sean u y v cualesquiera vectores en n . Su producto punto puede ser calculado mediante u ⋅ v = u ⋅ v ⋅ cos θ
44
Capítulo 2. Preliminares Matemáticos
Donde θ es el ángulo que forman u y v. Es bien sabido que cos θ ∈ [-1,1] y que por tanto el valor absoluto aplicado sobre la función coseno hará que ésta tenga sus valores en [0, 1]. Por ello se plantea entonces la siguiente desigualdad: u ⋅v =
u ⋅ v ⋅ cos θ
≤
u ⋅ v ⋅
cos θ
Es claro que el término |cos θ| puede interpretarse como un factor de escalamiento que puede reducir el valor del producto de las magnitudes de u y v, u ⋅ v . Por lo tanto, se tiene que: u ⋅ v = u ⋅ v ⋅ cos θ
≤
u ⋅ v ⋅
u ⋅ v ≤ u ⋅ v
Precisamente la última desigualdad, Cauchy-Schwarz.
u ⋅v ≤ u ⋅ v
cos θ ≤ u ⋅ v
, es conocida como la Desigualdad de
45
A rtificial Una Introducción al Cómputo Neuronal Artificial
46
Una Introducción al Cómputo Neuronal Artificial
3. La Neurona Adaline
A rtificial Una Introducción al Cómputo Neuronal Artificial
48
Capítulo 3. La Neurona Adaline
3.1 Estructura T P Sea X = [ x x1, x2, …, xP] un vector en . La neurona Adaline procesará a X y producirá su salida, un escalar, de la siguiente manera (véase la Figura 3.1): P y = sign w0 + wi xi i =1
(Ecuación 3.1.1)
Donde: Donde: • w0 es llamado término de Predisposición o Sesgo ( Bias Bias Term). • wi es el peso en la entrada xi, i = 1, 2, …, P. P
• w0 + wi xi es llamada Sumatoria de Salida. i =1
• La función sign se define como (Véase la Figura 3.2): sign : → {−1, 1,1}
−1 si z < 0 1 si z ≥ 0
z sign( z ) =
W1 X1
s a d a r X i t n E
Wi
P
z = w0 +
1 w x i
z
y = sign( z )
i
a d i l a S
y
i=
WP
XP
Figura 3.1. Representación esquemática de una neurona Adaline.
sign(z)
1
0
-1
Figura 3.2. Gráfica de la función sign.
49
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora bien, considérese un conjunto compuesto por N vectores de entrada a presentar a la neurona: neurona: { X 1, X 2, …, X N } Como ya se comentó en la Sección 1.3, cada vector será de la forma: forma: xi ,1 X i = xi ,k xi , P
También considérese un segundo conjunto compuesto por N vectores: vectores: { D1, D2, …, D N } Tales vectores formaran la salida esperada para la neurona. Cada vector será de la forma: forma: d i ,1 Di = d i ,k d i ,m
La relación el conjunto vectores de de entrada y X el i se conjunto de salida está dada por entre el objetivo de quede para un vector entrada espera de quevectores la neurona proporcione la salida Di. El entrenamiento de una neurona tipo Adaline tiene por finalidad encontrar los pesos w0, w1, w2, …, wP tales que para todo vector de entrada X i se proporcione como salida un vector S i tal que S i = Di o bien la diferencia S i - Di sea aceptable. De acuerdo a la Ecuación 3.1.1 tanto Di como S i tendrán únicamente un componente. componente. Por ejemplo, considérese el siguiente conjunto de entrenamiento: • Se tienen los vectores de entrada: 0
1
0
1
0
0
1
1
X 1 = , X 2 = , X 3 = , X 4 =
50
Capítulo 3. La Neurona Adaline
• El conjunto de vectores de salida se forma por: D1 = [ 0] , D2 = [1] , D3 = [1] , D4 = [1]
• De manera que se espera que dado el vector de entrada 0 , la neurona proporcione [0] o 0 1 o 0 , la neurona proporcione [1] 0 o 1 , la neurona proporcione [1] 1 o 1 , la neurona proporcione [1]
En este punto debe ser claro que nuestro objetivo es modelar la compuerta lógica OR. En la Figura 3.3 se presenta la correspondiente representación esquemática de la neurona para este problema en particular. Se tendrán 2 entradas y se proporcionará un escalar como salida. Dado que la función sign tiene por dominio el conjunto {-1, 1} entonces el conjunto de entrenamiento, y en particular el conjunto de vectores de salida, deberá ser ajustado de manera que sus valores estén precisamente en {-1, 1}. Es evidente que la única modificación a aplicar tiene que ver con el valor cero y ésta no altera el problema original: • D1 = [ −1] , D2 = [1] , D3 = [1] , D4 = [1] W1 X1
s a d a r t n E
z = w0 +
1 2
wi xi
z
y = sign( z )
y
i=
W2
s a d i l a S
X2
Figura 3.3. Esquema de una neurona Adaline para dar solución al modelado de la compuerta lógica OR.
Por el momento sólo verificaremos la existencia de los pesos w0, w1 y w2 de manera que se obtienen siempre las salidas correctas. Considérense los pesos: • w1 = 0.5 • w2 = 0.5 • w0 = -0.25
51
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ello implica que la Sumatoria de Salida tendrá la forma: z = 0.5 x1 + 0.5 x2 – 0.25
Aplicando cada vector de entrada a la sumatoria se obtiene: • 0.5(0) + 0.5(0) – 0.25 = -0.25 • 0.5(1) + 0.5(0) – 0.25 = 0.25 • 0.5(0) + 0.5(1) – 0.25 = 0.25 • 0.5(1) + 0.5(1) – 0.25 = 0.75 Finalmente, a cada salida z se le aplica la función sign. Con lo que se obtiene respectivamente: respectivamente: • sign(-0.25) = -1 • sign(0.25) = 1 • sign(0.25) = 1 • sign(0.75) = 1 Por lo tanto, hemos demostrado la existencia de pesos tales que una neurona Adaline es capaz de aprender y modelar la compuerta lógica OR. Evidentemente surge la pregunta de cómo es posible determinar tales pesos. Un mecanismo obvio, pero sumamente ineficiente en la práctica, es mediante prueba y error. Es claro que se requiere una metodología sistemática que nos permita encontrar los pesos. En las siguientes Secciones presentaremos dos métodos a fin de lograr tal objetivo.
3.2 Ajuste de Pesos de la Neurona Adaline por Mínimos Cuadrados Cuadrados En la Sección 2.3 describimos al Método de Mínimos Cuadrados como una solución al problema de la Correlación Lineal. Al observar la estructura interna de la neurona Adaline y en particular su Sumatoria de Salida P
w0 +
1 w x i
i=
i
es claro que el objetivo es el ajuste de los pesos w0, w1, w2, … wP de manera que para cada vector de entrada se obtenga la salida correcta o tan cercana como sea posible al valor correcto. Además, tal como nos indica la misma sumatoria, el ajuste debe ser de manera que todo valor de salida proporcionado por la neurona es una combinación lineal de su correspondiente vector de entrada y el conjunto de pesos. Es por ello que el Método de Mínimos Cuadrados resultará ser una primera metodología para el ajuste de pesos en una neurona Adaline. El mismo método, y la Teoría que lo sustenta, nos garantiza que este ajuste será el mejor posible.
52
Capítulo 3. La Neurona Adaline
Establezcamos primero puntos de conexión con la Teoría presentada en la Sección P 2.3. Contaremos con N pares pares ( X X i, d i) en donde X i es un vector en +1 tal que xi ,0 = 1 xi ,1 X i = xi ,2 xi , P
y d i es un escalar que corresponde a la salida que se espera proporcione la neurona cuando X i le es enviado como entrada, i = 1, 2, 3, …, N . Sea W el el vector de pesos de la neurona. Éste también estará en P +1 : w0 w 1 W = w2 wP
En este punto haremos una leve modificación a la estructura de la neurona en el sentido de que no será requerido el uso de la función sign. Por lo tanto tendremos una estructura neuronal como la presentada en la Figura 3.4. W1 Xi,1
s a d a r t n E
P
z = w0 +
1 w x , k
z
i k
k =
a d i l a S
WP Xi,P
Figura 3.4. Estructura de la neurona Adaline omitiendo el uso de la función sign.
53
A rtificial Una Introducción al Cómputo Neuronal Artificial
Sea zi el escalar que produce la neurona como salida cuando se le envía como entrada el vector X i. De hecho: P
zi =
k = 0
wk xi ,k
(Ecuación 3.2.1)
Nótese que hemos incorporado al peso w0 a la sumatoria haciendo xi,0 = 1 para todo vector de entrada. Se define al Error de Entrenamiento para el i-ésimo par ( X X i, d i) como: como: εi = d i - zi
(Ecuación 3.2.2)
Ahora se define al Costo de Entrenamiento para el vector de pesos W como: como: 1 N 2 J (W ) = ε i 2 N i =1
(Ecuación 3.2.3)
Es claro que el Costo de Entrenamiento no es más que la fórmula para el Promedio de los Errores al Cuadrado originalmente presentada en la Sección 2.3 (Ecuación 2.3.4). Es precisamente en este punto en que tenemos ya una conexión directa entre el objetivo de ajustar los pesos de la neurona Adaline y el método de Mínimos Cuadrados. Evidentemente, el costo de entrenamiento se minimiza al resolver la ecuación matricial (Véase la Sección 2.3, Ecuación 2.3.15): ): ℘ = RW
El vector W contiene, contiene, una vez resuelta la ecuación, los pesos que deben ser aplicados a la Sumatoria de Salida P
zi =
k =0
wk xi ,k
54
Capítulo 3. La Neurona Adaline
Consideremos el caso del ajuste de pesos de manera que una neurona Adaline modele a la función Booleana presentada en la Tabla 3.1. Recuérdese que se agrega un 0-ésimo componente a los vectores de entrada: xi,0. Su valor es siempre igual a 1 y tiene la finalidad de incorporar al peso w0 en la Sumatoria de Salida. Tenemos entonces el conjunto de entrenamiento: 1 1 1 1 • X 1 = 0 , X 2 = 1 , X 3 = 0 , X 4 = 1 0 0 1 1 • d1 = 1, d 2 = 0, d3 = 1, d 4 = 0 • N = = 4 Tabla 3.1. Una compuerta lógica a ser modelada por una neurona Adaline. i xi,1 xi,2 d i 1 0 0 1 2 1 0 0 3 0 1 1 4 1 1 0
Definimos en primer lugar a la matriz R. En este caso será de tamaño 3 × 3. De acuerdo a la Ecuación 2.3.10 (Sección 2.3) sus elementos están dados por: 1 4 1 4 • R0,0 = xi ,0 xi ,0,0 = 1 = 1 4 i =1 4 i =1 4 1 1 4 1 • R0,1 = xi ,1 xi ,0 = xi ,1 = 4 i =1 4 i =1 2 1 4 1 4 1 • R0,2 = xi ,2 xi ,0 = xi ,2 = 4 i =1 4 i =1 2 4
• R1,0 = 1 • • • • •
4
xi ,0 xi ,1 = 1 xi ,1 = 1 4 4 2 i =1 i =1 1 4 1 4 1 R1,1 = xi ,1 xi ,1 = xi2,1 = 4 i =1 4 i =1 2 1 4 1 1 R1,2 = xi ,2 xi ,1,1 = ( 0 + 0 + 0 + 1) = 4 i =1 4 4 1 4 1 4 1 R2,0 = xi ,0 xi ,2 = xi ,2 = 4 i =1 4 i =1 2 1 4 1 1 R2,1 = xi ,1 xi ,2,2 = ( 0 + 0 + 0 + 1) = 4 i =1 4 4 4 4 1 1 1 2 i i i 2 , 2 , 2 , 2 , 2 R = 4 x x =4 x =2 i =1 i =1
55
A rtificial Una Introducción al Cómputo Neuronal Artificial
Por lo tanto: 1
1 R = 2 1 2
1 2 1 2 1 4
1 2 1 4 1 2
La inversa de la matriz R está dada por: 3 −2 − 2 −1 R = −2 4 0 −2 0 4
Al aplicar la Ecuación 2.3.12 (Sección 2.3) tenemos que los elementos del vector ℘ están dados por: 1 4 1 4 1 • ℘0 = xi ,0 di = d i = 4 i =1 4 i =1 2 1 4 • ℘1 = xi ,1d i = 0 4 i =1 1 4 1 • ℘2 = xi ,2 d i = 4 i =1 4 Entonces: 1 ℘ = 2 0 1 4
Encontramos los valores del vector W mediante el producto matricial W = R-1℘ (Ecuación 2.3.16, Sección 2.3): 1 3 −2 −2 2 1 0 = −1 W = −2 4 0 −2 0 4 1 0 4
56
Capítulo 3. La Neurona Adaline
Por lo tanto se han identificado los siguientes pesos: • w0 = 1 • w1 = -1 • w2 = 0 La Ecuación 3.2.3, correspondiente al costo de entrenamiento, describe, para este ejemplo en particular, a un hiperparaboloide inmerso en el espacio Euclidiano tetradimensional. La ecuación específica de tal lugar geométrico se obtiene al sustituir con los valores del conjunto de entrenamiento: J (W ) =
w02
2
+
w12
4
+
w22
4
+
w0 w1
2
+
w0 w2
2
+
w1w2
4
−
w2
4
−
w0
2
1 4
+
Calculemos el error de entrenamiento asociado a los pesos identificados al sustituirlos precisamente en la ecuación anterior: 2 2 2 1) + (1)(0) + (−1) 1)(0) − 0 − 1 + 1 J (W ) = (1 ) + ( −1) + (0 ) + (1)( −1)
2 =0
4
4
2
2
4
4 2 4
El punto (w0 = 1, w1 = -1, w2 = 0, J (W ) = 0) es el único mínimo en la hipersuperficie de nuestro hiperparaboloide, lo que nos garantiza que los pesos encontrados son los mejores. De hecho estamos en la mejor de las situaciones al tener un error cero. Contamos entonces con una neurona Adaline óptima para el modelado de la compuerta lógica presentada en la Tabla 3.1.
3.3 Ajuste de Pesos de la Neurona Adaline por Descenso Escalonado A continuación describiremos al método de Descenso Escalonado. Se trata de un método de búsqueda de mínimos en una función f usando usando información proporcionada por el vector gradiente. Un punto interesante de esta metodología es que los gradientes usados no necesariamente se obtienen de la función a optimizar f , sino que éstos se calculan a partir de funciones auxiliares construidas a partir de f . Veremos que de hecho algunas definiciones asociadas al método de Mínimos Cuadrados son el punto de partida para la definición del Descenso Escalonado. Sin embargo, se observará que éste último proporciona un método más eficiente en términos del número de operaciones efectuadas. En la siguiente Sección se abordará primero el caso del Descenso Escalonado en el contexto de una neurona Adaline con una única entrada. Posteriormente, en la Sección 3.3.2 comentaremos el caso con múltiples entradas. En ambas situaciones se asume que la neurona proporciona como salida un único escalar.
57
A rtificial Una Introducción al Cómputo Neuronal Artificial
3.3.1 Descenso Escalonado: Caso una entrada – una salida salida Sea N el el número de elementos en el conjunto de entrenamiento, N > > 2. Supóngase que se cuenta con un método iterativo para el entrenamiento de la neurona Adaline de manera que su vector de pesos es actualizado en cada iteración. Para la m-ésima iteración, sea W m el vector de pesos actual de la neurona. El vector W m es entonces actualizado de manera que se obtendrá un nuevo vector de pesos W m+1. La actualización se efectuará mediante la siguiente regla: regla: W m+1 = W m + ∆wm
(Ecuación 3.3.1)
Donde ∆wm es el llamado el Término de Variación o Cambio en W m. Por otro lado, la instancia particular de la Ecuación 3.2.3 que describe el error de entrenamiento cuando se ajustan dos pesos está dada por: por: J (W ) =
1
N
ε
2
i
2 N
i =1
=
1
N
(d
i
− ( w0 xi ,0 + w1 xi ,1 ))2
2 N i =1
Sabemos que la función J (W ) define un paraboloide ya que sólo depende de las variables w0 y w1, y por tanto sólo tiene un mínimo. También sabemos que este mínimo puede ser determinado por el método de Mínimos Cuadrados.
J(W)
∇J(W J(W)
Figura 3.5. Sección transversal del paraboloide definido por J (W ). ). El vector gradiente nos indica la dirección de máximo crecimiento de J (W ). ).
Ahora bien, la teoría presentada en la Sección 2.1 nos dejó claro que un vector gradiente de J (W ), ), es decir ∇ J (W ), ), es un vector que apunta a la dirección de máximo crecimiento. Este vector nos indica la dirección hacia la cual el error se maximiza (Véase la
58
Capítulo 3. La Neurona Adaline
Figura 3.5 en la cual se presenta una sección transversal del paraboloide definido por J (W )). )). Sin embargo, el vector gradiente ∇ J (W ) también puede ser usado para buscar el mínimo de J (W ). ). ∇ J (W ) puede ser calculado de manera local al ubicarnos en un punto dado (w0, w1). Dado que la meta es alcanzar al mínimo de J (W ) entonces partiendo de (w0, w1), la dirección a tomar para efectuar la búsqueda debe ser la opuesta al gradiente, es decir, usar la dirección dada por -∇ J (W ) (Véase la Figura 3.6).
-∇ J (W) J(W
∇J(W )
J(W)
Figura 3.6. Sección transversal del paraboloide definido por J (W ). ). La dirección opuesta del vector gradiente indica la dirección en donde se ubica el mínimo de J (W ). ).
Ahora conectaremos estos últimos puntos para definir de manera más precisa el proceso iterativo que mencionamos al inicio de esta Sección y hacer uso de la Ecuación la actualización vector de pesos de la neurona. Véase la Figura 3.7. Dado un 3.3.1 vector para de pesos iniciales W del 1, se calcula el gradiente de J (W ) en W 1: ∇ J (W 1). Nótese que la función J (W ) está definida para cualquier punto, por lo tanto, W 1 podría ser inicializado con valores aleatorios. Se inicia la búsqueda del mínimo en dirección opuesta a ∇ J (W 1). Para ello, se requiere que nos desplacemos a otro punto. Entonces, modificamos proporcionalmente al vector W 1 usando -∇ J (W 1) de tal forma que obtenemos un nuevo vector de pesos W 2. Ya ubicados en el punto W 2, se calcula nuevamente el gradiente de J (W ) en W 2, es decir, se obtiene ∇ J (W 2). Ahora debemos continuar la búsqueda en dirección opuesta a ∇ J (W 2). Se modifica al vector W 2 de manera proporcional usando a ∇ J (W 2) de tal forma que se obtiene un nuevo vector de pesos W 3. Este proceso continúa de manera iterativa de tal forma que en la m-ésima iteración estaremos ubicados en el punto W m. Se calcula el gradiente de J (W ) en W m: ∇ J (W m). Se continúa la búsqueda en dirección opuesta a ∇ J (W ). Se modifica al vector W de manera proporcional usando - ∇ J (W ) de m m donde se obtienem un nuevo vector de pesos W m+1. Este proceso terminará cuando el vector m+1
59
A rtificial Una Introducción al Cómputo Neuronal Artificial
gradiente en el punto actual sea el vector cero o esté tan cerca como sea posible al vector cero. La idea es que en cada iteración nos acerquemos cada vez más al mínimo de la función J (W ). ). El punto final (w0, w1) es donde precisamente los valores de los pesos se optimizan. ∇J(W J (W1 )
J(W) W 1
∇J(W J (W3 )
((W ∇J J(W W2)
W 2
W 3 ... W m+1
W m ∇J(W J (Wm )
Figura 3.7. Sección transversal del paraboloide definido por J (W ). ). Dado un (punto) vector de pesos inicial W 1 y -∇ J (W 1) se obtiene el nuevo (punto) vector de pesos W 2. Usando a W 2 y -∇ J (W 2) se obtiene el (punto) (punto) vector de pesos pesos W 3. Se procede de manera sucesiva hasta obtener un vector de pesos W m tal que ∇ J (W m) = 0 o tan cercano a éste como sea posible.
El Algoritmo 3.1 presenta la codificación del proceso que acabamos de definir. Nuestro procedimiento recibe al conjunto de vectores de entrada en la forma de una matriz de tamaño N × 2 de manera que la primer columna contiene únicamente el valor 1 = xi,0. En la columna 2 se tendrán los valores xi,1, i = 1, 2, …, N . El algoritmo recibe como entrada también 3 constantes: δ, α y maxIt . La constante δ ∈ + ∪ {0 {0}} representa el valor mínimo aceptable para la magnitud del vector gradiente de la función J (W ). ). Mientras la magnitud de ∇ J (W ) sea mayor a δ el ciclo while del algoritmo seguirá efectuando iteraciones. Mencionamos previamente que el vector de pesos actual es actualizado de manera proporcional con el negativo del vector gradiente de J (W ). ). La dirección opuesta del vector gradiente nos indica hacia donde mover al vector de pesos mientras que la constante de entrada α∈ + servirá para establecer la magnitud de tal movimiento. Por lo regular, α es un valor en el intervalo (0,1). Por último, tenemos a la constante maxIt ∈ . Nótese que el número de iteraciones que efectuará el Algoritmo 3.1 depende del valor de las constantes δ y α. En un caso ideal se haría δ = 0. Sin embargo, es posible, debido a errores de redondeo o punto flotante, que se requiera un gran número de iteraciones para efectivamente lograr alcanzar el punto en la función J (W ) tal que el vector gradiente sea el vector cero. Por lo tanto, maxIt simplemente indicará el número máximo de iteraciones que el algoritmo
60
Capítulo 3. La Neurona Adaline
efectuará. Si tal número de iteraciones es alcanzado entonces el algoritmo retorna como salida al último vector de pesos calculado. Nótese que en consecuencia el Algoritmo 3.1 nos proporcionará como salida el punto donde J (W ) tiene su mínimo o bien punto cercano a éste. Algoritmo 3.1. Cálculo del mínimo de la función J (W ) mediante búsqueda del vector gradiente ∇ J (W ) = 0 y actualización iterativa del vector de pesos.
Procedure FindMinimum (Matrix xx[1, …, N ][0,1], ][0,1], Array d [1, [1, …, N ], ], Real δ, Real α, Integer maxIt ) // Se asignan asignan valores aleatorios aleatorios al al vector de pesos pesos iniciales. iniciales. W = new Array[0,1]
W[0] = Random( ) W[1] = Random( ) m=0 while (m < maxIt ) do // Se calcula calcula el vector gradiente en en el punto dado dado por W. ∇J_W = GetGradientV GetGradientVector( ector( x x, d, W , N ) // Se obtiene obtiene la magnitud magnitud del vector vector gradiente. gradiente.
Real mag = ∇J_W[0]2 + ∇J_W[1]2 // Si la magnitud magnitud del vector vector gradiente gradiente es menor menor o igual a δ // entonces entonces se retorna como como salida salida el vector de de pesos actual. actual.
if (mag (mag ≤ δ) then return W end-of-if // Se obtiene la variación o cambio a aplicar al vector de pesos W. ∆wm = new Array[0,1] ∆wm[0] = α ∗ (−1) ∗ ∇J_W[0] ∆wm[1] = α ∗ (−1) ∗ ∇J_W[1] // Se actualiza actualiza el vector vector de pesos.
W[0] = W[0] + ∆wm[0] W[1] = W[1] + ∆wm[1] m=m+1 end-of-while // Si se alcanzó alcanzó el número número máximo de iteraciones iteraciones entonces entonces se retorna retorna como // salida al último último vector vector de pesos calculado.
return W end-of-procedure
Hace falta especificar a la función GetGradientVector la cual es invocada en el recibe la neurona y el Algoritmo 3.1. Ésta vector de pesos actual. Talcomo comoentrada indicaelsuconjunto nombre,desuentrenamiento objetivo es de calcular al vector
61
A rtificial Una Introducción al Cómputo Neuronal Artificial
gradiente en el punto dado por el vector de pesos. Ello implica que entonces implementa las Ecuaciones 2.2.6 y 2.2.7 (Sección 2.2) que corresponden a las derivadas parciales de J (W ): ): N N x d δ J (W ) • = w1 1,i + w0 − i δ w0
•
i =1
N
N
2
i =1
N
N
δ J (W ) = w1 x1,i + w0 δ w1 i =1 N
N
1 i=
x1,i − N
1 i=
di x1,i N
Nótese que las sumatorias dependen únicamente del conjunto de entrenamiento. Por lo que éstas podrían ser precalculadas y pasadas también como entrada al Algoritmo 3.1 y en consecuencia a la función GetGradientVector . El procedimiento de búsqueda de mínimo que acabamos de describir e implementar en el Algoritmo 3.1 es precisamente el método de Descenso Escalonado. La idea, como se puede apreciar, es ir descendiendo sobre la función de error J (W ) usando “pasos escalonados” cuya dirección y longitud vienen dados por el vector de pesos actual W m y la dirección opuesta del vector gradiente de J (W ) en el punto W m. Se espera que por cada paso ejecutado, el vector gradiente se acerque cada vez más al vector cero. Entre más nos aproximemos al vector cero, el de vector de pesos se). óptimos ubicados en el mínimo la función J (W ). aproximará cada vez más a sus valores El método de Descenso Escalonado que acabamos de describir requiere contar con el gradiente de la función J (W ). ). Ello implica que todos los elementos del conjunto de entrenamiento son considerados en cada iteración en la forma de las sumatorias N
d i
N
x12,i
N
x1,i
1 N 1 N 1 N i=
,
i=
,
, y
i=
N
1
di x1,i N
i=
. En el caso particular que estamos tratando en esta
Sección, neurona con una entrada-una salida, pueden que se detecten situaciones con la eficiencia si el conjunto de entrenamiento es muy grande. Sin embargo, cuando tomamos en cuenta el caso una neurona varias entradas-una salida veremos que el cálculo del gradiente se vuelve ineficiente debido a que se deben considerar P+1 pesos. Para cada uno de éstos tendremos que obtener la derivada parcial de J (W ) respecto al j-ésimo peso (Ecuación 2.3.5, Sección 2.3), j = 0, 1, 2, …, P, la cual a su vez requiere tomar en cuenta a todo el conjunto de entrenamiento para su cálculo: δ J (W ) 1 =− δ w j N
N
1
xi , j d i −
i=
P
0
wk xi ,k = −
k=
Es posible precalcular la sumatoria
1
N
N i =1
N
xi , j di −
P
1 0 w x , xi , j
i=
k
i k
k=
, j = 0, 1, …, P
N
1 x , d ya que únicamente depende del conjunto de i j
i
i=
N
entrenamiento. Sin embargo no es así con la sumatoria doble
1 x , 0 w x , i j
i=
depende también de los pesos w0, w1, …, wP.
P
k
k =
i k
debido a que
62
Capítulo 3. La Neurona Adaline
Toda la problemática impuesta por la cuestión de la eficiencia encuentra una solución al simplificar los cálculos cuando consideremos en cada iteración sólo una parte de la función J (W ). ). Es decir, formaremos funciones auxiliares a partir de J (W ) que mejorarán la eficiencia de la búsqueda del mínimo al calcular gradientes que no dependen de todo el conjunto de entrenamiento en cada iteración: usarán únicamente una parte de éste. éste. Sea N el el número de elementos en el conjunto de entrenamiento, N > > 2. Nuevamente partimos del hecho de que contamos con un método iterativo para el entrenamiento de la neurona Adaline de manera que su vector de pesos es actualizado en cada iteración. Para la m-ésima iteración, sea W m el vector de pesos actual de la neurona. En esta misma iteración se le presentará a la neurona únicamente el m-ésimo elemento del conjunto de entrenamiento: ( x xm, d m), xm, d m ∈ . Recordemos que xm es el escalar de entrada y d m es el escalar que se espera proporcione la neurona como salida. El vector W m es entonces actualizado de manera que se obtendrá un nuevo vector de pesos W m+1. La actualización se efectuará mediante la regla dada por la Ecuación 3.3.1: W m+1 = W m + ∆wm
Sin embargo el Término de Variación o Cambio del vector de pesos, ∆wm, ahora estará dado por: ∆wm = µ(-∇ J (W )m)
(Ecuación 3.3.2)
Para la m-ésima iteración se tendrá la función J (W )m. A ésta se le llama Error al Cuadrado Local y es precisamente el error que existe entre la salida esperada d m y la salida zm proporcionada por la neurona cuando se le equipa con el vector de pesos actual W m y usando únicamente el m-ésimo elemento del conjunto de entrenamiento ( xm, d m). El error al cuadrado local se define entonces como: 2
J (W )m = (d m – zm)
= (d m – (wm,0 xm,0 + wm,1 xm,1))2
(Ecuación 3.3.3)
Recordemos que wm,0 es el término de sesgo o predisposición de la neurona Adaline y que xm,0 = 1 y xm,1 = xm, m = 1, 2, …, N . Nótese que J (W )m es también un paraboloide inmerso en el espacio tridimensional y que por lo tanto cuenta con un único mínimo.
63
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora determinaremos al vector gradiente de la función J (W )m. Entonces calculamos las derivadas parciales de J (W )m respecto a las variables wm,0 y wm,1: δ J (W ) m δ (d m − ( wm ,0 xm ,0 + wm,1 xm ,1 ))2 = δ wm ,0 δ wm,0
= 2(d m − ( wm ,0 xm,0,0 + wm,1 xm ,1,1 ))
δ δ wm ,0
(d m − wm,0 xm,0,0 − wm,1 xm ,1,1 )
= 2(d m − ( wm ,0 xm ,0 + wm,1 xm ,1 ))(− xm ,0 ) δ J (W ) m δ (d m − ( wm,0 xm ,0 + wm,1 xm,1 ))2 = δ wm ,1 δ wm ,1
= 2(d m − ( wm ,0 xm ,0 + wm,1 xm ,1 ))
δ δ wm ,1
(d m − wm,0 xm,0 − wm ,1 xm,1 )
= 2(d m − ( wm ,0 xm ,0 + wm,1 xm ,1 ))(− xm ,1 )
Dado que
δ J (W ) m δ J (W ) m y tienen como factor común a −2(d m − ( wm,0 xm,0 + wm,1 xm,1 )) δ wm ,0 δ wm ,1
entonces se tendrá finalmente que el vector gradiente de J (W )m esta dado por: xm ,0 ∇ J (W ) m = −2(d m − (wm,0 xm ,0 + wm ,1 x m ,1 )) x m ,1
(Ecuación 3.3.4)
Nótese que ∇ J (W )m es uno de los términos presentes en la variación o cambio del vector de pesos, ∆wm, (Ecuación 3.3.2). Es claro que ∇ J (W )m maximiza el error de la función J (W )m, por lo tanto, si nuestro objetivo es buscar su mínimo, usaremos la dirección opuesta: -∇ J (W )m. El m-ésimo término de la sumatoria presente en la función de error J (W ) es precisamente (d m − ( w0 xm,0 + w1 xm,1 )) 2 . Ello implica que de hecho la función de error al cuadrado local J (W )m puede ser vista como obtenida a partir de J (W ). ). En consecuencia, ∇ J (W )m puede ser visto también como un estimador de ∇ J (W ) el cual se usará para aproximarnos también al mínimo global de J (W ). ). La idea ahora es reespecificar el método de Descenso Escalonado para entrenar una neurona Adaline haciendo uso de las Ecuaciones 3.3.2 y 3.3.3. Se tendrá un proceso iterativo en el cual por cada elemento del conjunto de entrenamiento ( xm, d m) se considerará una función de error J (W )m y el vector de pesos actual W m. Específicamente se calculará el W m. Nótese gradiente (W )m enmás el punto dado que el cálculo de ∇ J (W )m (vector Ecuación 3.3.4)dees J mucho sencillo, en por términos de eficiencia, que el cálculo del
64
Capítulo 3. La Neurona Adaline
vector gradiente de la función J (W ) (Ecuaciones 2.2.6 y 2.2.7, Sección 2.2) precisamente porque ∇ J (W )m sólo requiere del m-ésimo par del conjunto de entrenamiento. Como ya se comentó antes, ∇ J (W )m servirá como un estimador para ∇ J (W ). ). Algoritmo 3.2. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de una única entrada. Procedure SteepestDescent(Matrix xx[1, …, N ][0,1], ][0,1], Array d [1, [1, …, N ], ], Real µ) // Se asignan asignan valores aleatorios aleatorios al al vector de pesos iniciales. iniciales.
W = new Array[0,1] W[0] = Random( ) W[1] = Random( ) for m = 1 until N N do Real ε_m = d [m] [m] – (W[0] * x[m][0] + W[1] * x[m][1])
// Se calcula calcula el vector gradiente de J(W)m en el punto dado por W.
∇J_Wm = new Array[0,1] ∇J_Wm[0] = -2 * ε_m * x[m][0] ∇J_Wm[1] = -2 * ε_m * x[m][1]
// Se obtiene la variación o cambio a aplicar al vector de pesos W. ∆wm = new Array[0,1] ∆wm[0] = µ ∗ (−1) ∗ ∇ J_Wm[0] ∆wm[1] = µ ∗ (−1) ∗ ∇ J_Wm[1] // Se actualiza actualiza el vector vector de pesos. pesos.
W[0] = W[0] + ∆wm[0] W[1] = W[1] + ∆wm[1] end-of-for // Se retorna retorna como salida salida al último último vector de pesos calculado. calculado.
return W end-of-procedure La implementación del proceso anterior requiere un vector de pesos inicial W 1. Por lo regular sus valores son inicializados aleatoriamente. Para cada iteración m, m = 1, 2, 3, …, N , primero se selecciona al m-ésimo elemento del conjunto de entrenamiento. Posteriormente se calcula el valor de εm = [d m – (wm,0 xm,0 + wm,1 xm,1)] y entonces se obtiene el vector gradiente de J (W )m en el punto W m mediante xm ,0 ∇ J (W ) m = −2ε m x m ,1
Finalmente se actualiza proporcionalmente al vector de pesos W m al sumarle el negativo de ∇ J (W ) m . La proporción a aplicar viene dada por la constante µ ∈ + . De esta manera se obtiene el vector de pesos actualizado W m+1. El Algoritmo 3.2 presenta entonces el procedimiento de entrenamiento de una neurona Adaline de una entrada y una salida mediante el3.2 método Escalonado. una Nótese que hemos establecido que de el Algoritmo efectúadeenDescenso total N iteraciones, por cada elemento del conjunto
65
A rtificial Una Introducción al Cómputo Neuronal Artificial
entrenamiento. Sin embargo, y dependiendo del problema que se esté modelando, es posible que se requiera presentar en más de una ocasión al todo el conjunto de entrenamiento. Analizaremos esta situación en los siguientes párrafos. Considérese el conjunto de entrenamiento presentado en la Tabla 3.2. Veamos que resultados nos proporciona el método de Descenso Escalonado usando al vector inicial de pesos 0.5 0.5
W 1 =
y la constante µ = 0.02. Efectuaremos en total N = = 11 actualizaciones del vector de pesos. Véase la Tabla 3.3. En la iteración m = 11 se tiene el vector de pesos 1.2432 3.4485
W 12 =
El conjunto de entrenamiento de la Tabla 3.2 ya había sido presentado en la Sección 2.2 (Tabla 2.1) para ejemplificar el método de Mínimos Cuadrados. En ese caso se obtuvieron los pesos finales y óptimos w0 = 3.9545 y w1 = 2.9818. Después de 11 iteraciones el método de Descenso Escalonado nos ha proporcionado las aproximaciones w12,0 = 1.2432 y w12,1 = 3.4485 la cuales pueden considerarse un tanto alejadas de las óptimas. Sin embargo, comentamos previamente que es posible efectuar una presentación más del conjunto de entrenamiento si se considerase necesario, es decir, efectuar otras 11 iteraciones. En este caso aplicaríamos nuevamente el Algoritmo 3.2 pero usando como vector inicial W 1 al vector de pesos final que se obtuvo en la presentación anterior del conjunto de entrenamiento, es decir, el vector W 12 12. La Tabla 3.4 muestra los resultados obtenidos al aplicar nuevamente el método de Descenso Escalonado usando ahora como vector inicial 1.2432 W 1 = 3.4485
En este caso se obtuvo la aproximación w12,0 = 2.1486 y w12,1 = 3.2661. Nótese que se ha obtenido una mejora bastante considerable respecto a los pesos obtenidos en la primer presentación del conjunto de entrenamiento. En realidad, es posible efectuar tantas presentaciones sean necesarias. El Algoritmo 3.3 es una versión modificada del Algoritmo 3.2. Recibe una entrada adicional T que indica el número de veces que el conjunto de entrenamiento será presentado. Nótese que hemos especificado que para la primer presentación, t = 1, el vector W 1 es inicializado aleatoriamente. En las posteriores presentaciones, t ≥ 2, el vector W 1 es el último vector de pesos que se obtuvo en la presentación anterior.
66
Capítulo 3. La Neurona Adaline
Tabla 3.2. Un conjunto de entrenamiento al que se le aplicará el método de Descenso Escalonado a fin de que una neurona Adaline lo modele. i
x1,i
d i
1 2 3 4 5 6 7 8 9 10 11
-5 -4 -3 -2 -1 0 1 2 3 4 5
-10.5 -8.5 -4.5 -2.5 0.5 4.5 6.5 10.5 12.5 16.5 18.5
Tabla 3.3.Aplicación del método de Descenso Escalonado para el ajuste de pesos de una neurona Adaline con el conjunto de entrenamiento de la Tabla 3.2. Iteración m εm = [d m – (wm,0 xm,0 + wm,1 xm,1)] 1
ε1 = −8.5
2
ε2 = 0.14
3
ε3 = 1.8672
4
ε4 = 1.667
5
ε5 = 2.0732
6
ε6 = 4.1301
7
ε7 = 4.1876
8
ε8 = 5.9078
9
ε9 = 4.3088
10
ε10 = 3.6508
11
ε11 = −0.3503
xm,0 W = W + µ(∇ J (W ) m ) m+1 m xm,1 17 W 2 = 0.16 ∇ J (W )1 = 2.2 −85
∇ J (W ) m = −2ε m
−0.28 ∇ J (W ) 2 = 1.12 −3.7344 ∇ J (W )3 =
11.2032 −2.3335 ∇ J (W ) 4 = 4.6671 −4.1464 ∇ J (W )5 = 4.1464 −8.2602 ∇ J (W ) 6 = 0 −8.3752 ∇ J (W ) 7 = −8.3752 −11.8157 ∇ J (W )8 = −23.6314 −8.6177 ∇ J (W )9 = −25.8533 −7.3017 ∇ J (W )10 = −29.207 0.7006 ∇ J (W )11 = 3.5032
W 3 = 0.1656
2.1776 W 4 = 0.2402 1.9535 W 5 = 0.2869 1.8601 = 0.3698 W 6 6 1.7772 = 0.5350 W 7 7 1.7772 W 8 = 0.7025 1.9447 W 9 = 0.9389 2.4174 = 1.1112 W 10 10 2.9344 = 1.2573 W 11 11 3.5186 = 1.2432 W 12 12 3.4485
67
A rtificial Una Introducción al Cómputo Neuronal Artificial
Tabla 3.4. Aplicación del método de Descenso Escalonado para el ajuste de pesos de una neurona Adaline presentando por segunda vez el conjunto de entrenamient entrenamientoo de la Tabla 3.2 y usando como vector de pesos iniciales W 1 = 1.2432 . 3.4485 Iteración m εm = [d m – (wm,0 xm,0 + wm,1 xm,1)] 1
ε1 = 5.4994
2
ε2 = −0.5686
3
ε3 = 1.3784
4
ε4 = 0.5528
5
ε5 = 1.2122
6
ε6 = 2.9337
7
ε7 = 2.6348
8
ε8 = 4.1371
9
ε9 = 2.6918
10
ε10 = 2.6741
11
ε11 = −0.513
xm,0 m ,1 x −10.9988 ∇ J (W )1 = 54.9941 1.1372 ∇ J (W ) 2 = −4.549 ∇ J (W ) m = −2ε m
W m+1 = W m + µ(- ∇ J (W ) m ) W 2 = 1.4632
8.2703 −1.1056 ∇ J (W ) 4 = 2.2112 −2.4244 ∇ J (W )5 = 2.4244 −5.8674 ∇ J (W ) =
2.3486 = 1.4405 W 3 2.4396 W 4 = 1.4956 2.2742 W 5 = 1.5177 2.23 = 1.5662 W 6 6 2.1815 = 1.6836 W 7 7
0 −5.2697 ∇ J (W ) 7 = −5.2697 −8.2743 ∇ J (W )8 = −16.5487 −5.3837 ∇ J (W )9 = −16.1511 −5.3484 ∇ J (W )10 = −21.3936 1.026 ∇ J (W )11 = 5.1303
2.1815 W 8 = 1.789 2.2869 W 9 = 1.9544 2.6178 = 2.0621 W 10 10 2.9409 = 2.1691 W 11 11 3.3687 = 2.1486 W 12 12 3.2661
−2.7567 ∇ J (W )3 =
6
En la Tabla 3.5 se presentan los vectores de pesos W 12 -ésima presentación, 12 en la t -ésima t = = 1, 2, …, 10. Los vectores de pesos obtenidos en la primera y segunda presentación son los mismos que se habían descrito en las iteraciones m = 11 de las Tablas 3.3 y 3.4. En la última presentación, t = 10, se obtuvo la aproximación de pesos w12,0 = 3.7717 y w12,1 = 2.9389. Nótese que en este punto contamos ya con valores bastante cercanos a los óptimos w0 = 3.9545 y w1 = 2.9818. En el método de Descenso Escalonado es posible efectuar tantas presentaciones del conjunto de entrenamiento sean requeridas. En este punto es muy probable que no se aprecie una diferencia sustancial comparando con el método de Mínimos Cuadrados respecto al número de operaciones efectuadas. En la siguiente Sección se retomará este tópico, sin embargo, hemos de recalcar que parte la valía del Descenso Escalonado radica en la simplicidad de las operaciones utilizadas.
68
Capítulo 3. La Neurona Adaline
Algoritmo 3.3. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de una única entrada y T presentaciones presentaciones del conjunto de entrenamiento.
Procedure SteepestDescent(Matrix x x[1,…, N N ][0,1], ][0,1], Array d [1, [1, …, N ], ], Real µ, Integer T ) // Se asignan asignan valores aleatorios aleatorios al al vector de pesos iniciales. iniciales.
W = new Array[0,1] W[0] = Random( ) W[1] = Random( ) for t = 1 until T do for m = 1 until N N do Real ε_m = d [m] [m] – (W[0] * x[m][0] + W[1] * x[m][1]) // Se calcula calcula el vector gradiente de J(W)m en el punto dado por W.
∇J_Wm = new Array[0,1] ∇J_Wm[0] = -2 * ε_m * x[m][0] ∇J_Wm[1] = -2 * ε_m * x[m][1]
// Se obtiene la variación o cambio a aplicar al vector de pesos W. ∆wm = new Array[0,1] ∆wm[0] = µ ∗ (−1) ∗ ∇ J_Wm[0] ∆wm[1] = µ ∗ (−1) ∗ ∇ J_Wm[1] // Se actualiza actualiza el vector vector de pesos. pesos.
W[0] = W[0] + ∆wm[0] W[1] = W[1] + ∆wm[1] end-of-for end-of-for return W // Se retorna retorna como salida salida al último último vector de pesos calculado. calculado. end-of-procedure
3.3.2 Descenso Escalonado: Caso varias entradas – una salida salida Consideremos ahora el caso de una neurona de tipo Adaline con P entradas y una única salida. Sea N el el número de elementos del conjunto de entrenamiento tal que N > > P+1. P +1 Formalmente, la neurona recibirá como entrada un vector X m en , 1 ≤ m ≤ N N : xm ,0 = 1
x m,1 X m = xm,2 xm , P Recordemos que el componente agregado xm,0 = 1 se relacionará con el término de sesgo o
predisposición de la neurona.
69
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora retomaremos algunos conceptos ya presentados en la Sección anterior. Sea W m el vector de pesos obtenido al presentar a la neurona el m-ésimo par del conjunto de entrenamiento ( X X m, d m), d m ∈ . A partir de W m y ( X X m, d m) se actualiza al vector de pesos mediante la regla (Ecuación 3.3.1): ): W m+1 = W m + ∆wm
Donde ∆wm es el Término de Variación o Cambio en W m dado por (Ecuación 3.3.2): ∆wm = µ(-∇ J (W )m) J (W )m es
el error entre la salida proporcionada por la neurona y el valor esperado d m al usar los pesos en W m y el vector de entrada X m. J (W )m se define ahora como (nótese la similitud con la Ecuación 3.3.3): 2
P J (W )m = (d m − Wm ⋅ X m ) = d m − wm ,k xm ,k k = 0
2
(Ecuación 3.3.5)
Tabla 3.5. Vectores de pesos obtenidos al final de la t -ésima -ésima presentación, t = = 1, 2, …, 10, mediante Descenso Escalonado, para el conjunto de entrenamiento de la Tabla 3.2. Presentación t Vectores de Pesos en m = 11 1.2432 1 3.4485 2.1486 2 3.2661 2.7364 3 3.1476 3.1181 4 3.0707 3.3659 5 3.0207 3.5268 6 2.9883 3.6312 7 2.9672 3.6991 8 2.9535 3.7431 9 2.9447 3.7717 10 2.9389
70
Capítulo 3. La Neurona Adaline
De acuerdo a la Ecuación 3.3.2, se requiere calcular el vector gradiente de J (W )m, es decir, ∇ J (W )m: δ J (W )m m δ δ w ,0 J (W ) m ∇ J (W ) m = δ wm ,1 δ J ( W ) m δ w m, P
(Ecuación 3.3.6)
Consideremos el j-ésimo componente de ∇ J (W )m. Entonces: Entonces: 2
δ J (W ) m = δ δ wm , j δ wm , j
P
d m − wm ,k xm,k k = 0
P δ = 2 d m − wm ,k xm,k k =0 δ wm, j
P d m − wm ,k xm ,k k = 0
P δ = 2 d m − wm,k xm,k − k =0 δ wm, j
P
0
wm ,k xm ,k
k =
P δ = 2 d m − wm,k xm,k − wm , j xm , j k = 0 δ wm, j
P
= 2 d m − k =0 wm,k xm,k ( − xm , j ) = −2 xm , j (d m − Wm ⋅ X m )
Es decir: δ J (W ) m = −2 xm , j (d m − Wm ⋅ X m ) δ wm , j
(Ecuación 3.3.7)
71
A rtificial Una Introducción al Cómputo Neuronal Artificial
Para cada m, m = 0, …, P, la Ecuación 3.3.7 nos proporciona el m-ésimo componente de ∇ J (W ) m . Es claro que todos los componentes del vector gradiente de J (W )m tienen el factor común −2(d m − Wm ⋅ X m ) . Por lo tanto ∇ J (W ) m queda como: −2 xm ,0 (d m − Wm ⋅ X m ) xm,0 xm ,1 − xm,1 d m − Wm ⋅ X m ) ∇ J (W )m = 2 ( = −2(d m − Wm ⋅ X m ) − 2 x ( d − W ⋅ X ) x m P m m m m P , ,
(Ecuación 3.3.8)
Algoritmo 3.4. Método de Descenso Escalonado para la búsqueda de un mínimo: caso de varias entradas y T presentaciones presentaciones del conjunto de entrenamiento.
Procedure SteepestDescent (Matrix xx[1,…, N N ][0,…, ][0,…,P], Array d [1, [1, …, N ], ], Real µ, Integer T ) // Se asignan asignan valores aleatorios aleatorios al al vector de pesos iniciales. iniciales. W = new Array[0,…,P] for i = 0 until P W[i] = Random( ) end-of-for for t = 1 until T do for m = 1 until N N do Real ε_m = 0 for i = 0 until P ε_m = ε_m + W[i] * x[m][i] end-of-for ε_m = d [m] [m] − ε_m // Se calcula calcula el vector gradiente de J(W)m en el punto dado por W. ∇J_Wm = new Array[0,…,P] for i = 0 until P
∇J_Wm[i] = -2 * ε_m * x[m][i] end-of-for // Se obtiene la variación o cambio a aplicar al vector de pesos W. ∆wm = new Array[0,…,P] for i = 0 until P ∆wm[i] = µ ∗ (−1) ∗ ∇ J_Wm[i] end-of-for for i = 0 until P W[i] = W[i] + ∆wm[i] // Se actualiza actualiza el vector vector de pesos. pesos. end-of-for end-of-for end-of-for return W // Se retorna como salida salida al último vector de pesos pesos calculado. calculado. end-of-procedure
72
Capítulo 3. La Neurona Adaline
Contamos ya con los elementos para definir el método de Descenso Escalonado en el caso de una neurona con P entradas y una salida. La Ecuación 3.3.5, 2 J (W ) m = (d m − Wm ⋅ X m ) , determina el error al cuadrado existente entre la salida actual de X m, J(W) d m). Es la -ésimo del conjunto entrenamiento ( X que de la funneurona ción J (yW el)mm es uno elemento de los términos que de forman a la función declaro Costo Entrenamiento para el vector de pesos W (Ecuación 3.2.3):
1 N 2 1 N J (W ) = ε i = (di − Wi ⋅ X i ) 2 2 N i =1 2 N i =1 En este sent sentido ido el mét método odo de Desc Descenso enso Esc Escalon alonado ado util utiliza iza a J (W ) m para obtener gradientes que pueden ser vistos como estimaciones o aproximaciones de los vectores gradientes de J (W ). ) . La ve vent ntaj ajaa es qu quee ∇ J (W ) m se calcula únicamente en función de ( X m, d m) y W m, mientras que el gradiente de J(W) requiere a todo el conjunto de entrenamiento (véase la Ecuación 2.3.5). Entonces, el procedimiento de Descenso Escalonado para actualizar a W m es el siguiente: siguiente: • Seleccionar al vector de entrada X m y la salida esperada d m. • Se calcula el error de entrenamiento para los pesos en W m mediante P
ε m = d m −Wm ⋅ X m = d m − wm ,k xm ,k k = 0
• Se aplica la Ecuación 3.3.8 de manera que se obtiene:
xm ,0 x m ,1 ∇ J (W )m = −2ε m xm , P
73
A rtificial Una Introducción al Cómputo Neuronal Artificial
• La dir irec eccció iónn de ∇ J (W ) m ma maxim ximiza iza a la fun funció ciónn de err error or J (W )m , ello implica que el
cambio o variación a aplicar al vector de pesos deberá ir en el sentido contrario a ∇ J (W ) m . Por lo tanto, de la Ecuación 3.3.2, tenemos: ∆wm = µ(-∇ J (W )m)
Donde µ es una constante positiva que definirá la proporción de - ∇ J (W )m a aplicar sobre W m. Recordemos, por la Sección anterior, que µ determina que tanto se moverá W m para obtener su correspondiente versión actualizada W m+1. • Por último, el vector W m+1 es obtenido mediante (Ecuación 3.3.1): W m+1 = W m + ∆wm
El proceso anterior ha de ser efectuado por cada uno de los elementos en el conjunto de entrenamiento. Ello implica que una vez terminada la presentación del conjunto de entrenamiento se contará con un vector de pesos aproximados W N +1 +1. Si así se requiere, es posible efectuar más presentaciones a fin de mejorar al vector de pesos. A partir de la segunda presentación, el vector de pesos inicial es el último que se obtuvo en la presentación anterior. El Algoritmo 3.4 implementa el proceso de Descenso Escalonado. Recibe como entrada una matriz de tamaño N × (P+1) que contiene los vectores de entrada; un arreglo de N elementos elementos con los escalares de salida esperada; la constante positiva µ para establecer la proporcionalidad de la actualización del vector de pesos y finalmente el número T de de veces que el conjunto de entrenamiento será presentado. Es claro que el Algoritmo 3.4 es sólo una generalización de la especificación dada en el Algoritmo 3.3 al considerar que los vectores de entrada son ahora tamaño P3.3 +1.. Cuando P = 1 entonces el Algoritmo 3.4 cubre la misma instancia que el de Algoritmo Ahora efectuaremos una serie de conteos relacionados con el número de operaciones ejecutadas por el Algoritmo 3.4. Estos conteos irán de la mano con los valores de P (dimensionalidad de los vectores de entrada), N (número (número de elementos en el conjunto de entrenamiento) y T (número (número de veces que el conjunto de entrenamiento será presentado). Para calcular P
ε m = d m −Wm ⋅ X m = d m − wm ,k xm ,k k = 0
74
Capítulo 3. La Neurona Adaline
Se requieren P + 1 multiplicaciones, P + 1 sumas y una resta. Es decir, 2 P + 3 operaciones. Por otro lado, para obtener xm ,0 m ,1 ∇ J (W )m = −2ε m x x m P ,
se deb deben en efe efectu ctuar ar,, por cad cadaa com compo ponen nente te de ∇ J (W )m , 2 multiplicaciones. Entonces tenemos en total 2(P+1) op opera eracio ciones nes.. Cad Cadaa co comp mpon onent entee de ∇ J (W ) m debe ser además multiplicado por -1 y por la constante µ. Tenemos entonces que para calcular al Término de Variación o Cambio ∆wm = µ(-∇ J (W )m) se requieren 2(P+1) operaciones. Finalmente, para la actualización del vector de pesos W m+1 = W m + ∆wm
Se deberán realizar P+1 sumas. Agrupando los conteos anteriores tenemos, que para obtener un vector de pesos actualizado, el número de operaciones requeridas en total es: (2P+3) + 2(P+1) + 2(P+1) + (P+1) = 7P + 8 Dado que en una presentación se efectúan N actualizaciones actualizaciones del vector de pesos entonces tenemos que se realizan N (7 (7P + 8) operaciones. Por último, el conjunto de entrenamiento completo es presentado en T ocasiones. ocasiones. Entonces el número total de operaciones efectuadas por el Algoritmo 3.4 será representado por la función SDO(T , N, P) (Steepest Descent Operations ) y la cual está dada por: SDO(T, N, P) = TN (7 (7P + 8)
(Ecuación 3.3.9)
Ahora bien, tenemos pleno conocimiento de que el problema que estamos tratando puede ser debidamente resuelto mediante el método de Mínimos Cuadrados. Recordemos algunos puntos. Sea la matriz R de (P+1) × (P+1) dada por (Ecuación 2.3.11): R0,0 R 1,0 R = RP ,0
R0,1 R1,1
RP ,1
R0, P R1, P RP , P
75
A rtificial Una Introducción al Cómputo Neuronal Artificial
Donde cada uno de sus elementos está dado por (Ecuación 2.3.10): Rk , j =
1
k = 0,1,2,..., P
N
N i =1
xi , j xi ,k
j = 0,1,2,..., P
Tenemos también al vector de P+1 elementos ℘ (Ecuación 2.3.13): ): ℘0 ℘ ℘= 1 ℘P
Donde (Ecuación 2.3.12): ℘ j =
1
N
x , d i j
j = 0,1,2,..., P
i
N i =1
Por la Ecuación 2.3.15 tenemos que el método de Mínimos Cuadrados queda expresado como el producto matricial: ℘ = RW
Donde W es es precisamente nuestro vector de pesos. Dada la inversa de R, R-1, entonces la Ecuación 2.3.16 nos dice que el vector de pesos óptimo esta dado por: R-1℘ = W
Para abordar la búsqueda de los pesos óptimos mediante Mínimos Cuadrados y usando el enfoque matricial es claro que tendremos tres fases: • La fase de inicialización de la matriz R y el vector ℘. • La fase de obtención de la matriz inversa de R. • Y finalmente, la fase donde efectuamos el producto matricial R-1℘. Calcularemos el número de operaciones efectuadas en cada una de estas fases. Cada 1 N elemento de la matriz R, Rk , j = xi , j xi ,k , es calculado al ejecutar una multiplicación que N i =1
involucra dos componentes por cada elemento del conjunto de entrenamiento. Los resultados de estas multiplicaciones son sumados y la suma total se divide por N . Entonces tenemos en total N multiplicaciones, multiplicaciones, N sumas sumas y una división: 2 N + + 1 operaciones. Dado que R es de tamaño (P + 1) × (P + 1) entonces en total, para inicializar a R, se efectúan (P + 1)2(2 N + + 1) operaciones. Ahora bien, para inicializar al vector ℘, se debe obtener para
76
Capítulo 3. La Neurona Adaline
cada uno de sus P+1 componentes la suma ℘ j =
1
N
x , d .
N i =1
i j
i
Esta suma depende de
multiplicar un componente de cada vector de entrada en el conjunto de entrenamiento por su correspondiente escalar de salida esperada. Los resultados de cada multiplicación son N . Entonces se efectúan N productos, N sumas y una sumados la + total dividida división: 2y N +suma 1 operaciones. Estepor ultimo resultado se multiplica por ( P + 1) de manera que para inicializar al vector ℘ se requieren (P + 1)(2 N + + 1) operaciones. Por lo tanto, la fase de inicialización de la matriz R y el vector ℘ requiere en total ejecutar (P + 1)2(2 N + + 1) + ( P + 1)(2 N + + 1) operaciones.
Ahora bien, la segunda fase requiere encontrar la matriz inversa de R. Supongamos que se aplica el bien conocido método de Eliminación de Gauss-Jordan. Es bien sabido que se requieren un número de operaciones de orden cúbico, respecto al número de renglones de la matriz, para encontrar su inversa. Tomemos tal cota justa. Por lo tanto, dado que R es de tamaño (P + 1) × (P + 1) entonces el número total de operaciones a ejecutar para encontrar su inversa es (P + 1)3. Por último, debemos determinar el número de operaciones requeridas para calcular los valores óptimos de los pesos. Estos dependen del resultado del producto matriz/vector -1 R ℘. Recordando el algoritmo clásico de multiplicación matricial, cada elemento de cada renglón de R-1 será multiplicado por cada elemento correspondiente en el vector ℘. Ello implica que se efectuarán (P + 1)2 operaciones para finalmente obtener al vector de pesos W . Entonces el número total de operaciones efectuadas por el método de Mínimos Cuadrados, a fin de entrenar a una neurona Adaline, será representado por la función LSO( N, N, P) ( Least Least Squares Squares Operations Operations) la cual está dada por: 2
LSO( N N , P) = (P + 1)
3
2
(2 N + 1) + ( P + 1)(2 N + 1) + ( P + 1) + (P + 1)
(Ecuación 3.3.10)
Ahora efectuaremos una comparación entre el costo del entrenamiento bajo Descenso Escalonado contra el método de Mínimos Cuadrados. De hecho, partiremos de suponer que efectivamente el método de Descenso Escalonado es más eficiente, en términos del número de operaciones efectuadas, que el método de Mínimos Cuadrados. Para ello, verificaremos para qué valores de T (número (número de presentaciones), N (tamaño (tamaño del conjunto de entrenamiento) y P (dimensionalidad de los vectores de entrada) la siguiente desigualdad se hace válida: SDO(T , N, P) > 0 y P > 0. De hecho, el cociente, para cualquier valor de N y P, ambos positivos, proporciona siempre un valor positivo (todos los términos que lo conforman son positivos). Lo interesante es que contamos con una formulación tal que dados los valores de N y P determinaremos el número máximo de presentaciones del conjunto de entrenamiento que se deben efectuar de manera que el número de operaciones del método de Descenso Escalonado sea estrictamente menor al número de operaciones requeridas por el método de Mínimos Cuadrados. Por ejemplo, supongamos que se cuenta con un conjunto de entrenamiento de N = 100 y dimensionalidad P = 20. Entonces al sustituir en la cota superior para T tamaño tenemos que:
(2 0)3 + 2(10 0)(20) 2 + 5(20) 2 + 6(100)(20) + 8(20) + 4(100) + 4 = 6.93 7(10 7( 100) 0)(2 (20) 0) + 8(10 1000)
Ello implica que con el método de Descenso Escalonado se deben efectuar a lo más T = 6 presentaciones del conjunto de entrenamiento antes de que sea más conveniente utilizar el método de Mínimos Cuadrados. Supongamos ahora que N = 1,000 y P continúa con su valor 20. Nuevamente, al sustituir en la cota superior para T obtenemos: obtenemos: (20)3 + 2(1, 00 00 0)(20) 2 + 5(20) 2 + 6(1, 00 000)(20) + 8(20) + 4(1, 00 000) + 4
= 6.3119
7(11,000 7( ,000)(2 )(20) 0) + 8( 8(11, 00 000) 0)
En esta situación concluimos, de nueva cuenta, que a lo más se deben efectuar T = 6 presentaciones. Ahora si N = = 10,000 y P = 20: (20)3 + 2(10, 00 0 00)(20)2 + 5(20) 2 + 6(10, 00 000)(20) + 8(20) + 4(10, 00 000) + 4 = 6.25 7(10 7( 10,, 00 000) 0)(20 (20)) + 8( 8(10 10,, 00 0000)
Nuevamente determinamos que cómo máximo T = = 6 presentaciones son las convenientes. Surge entonces la observación de que quizás quien realmente determina el número máximo de presentaciones del conjunto de entrenamiento es la dimensionalidad P de los vectores de entrada. Veamos qué sucede cuando N → ∞ mientras P permanece constante. Para ello calculamos el siguiente límite asumiendo por el momento a N y P como reales positivos:
78
Capítulo 3. La Neurona Adaline
3
lim
2
2
P + 2 NP + 5P + 6 NP + 8P + 4 N + 4
N →∞
= lim
7 NP + 8 N (2 NP 2 + 6 NP + 4 N ) + ( P3 + 5P 2 + 8P + 4)
7 NP + 8 N 3 2 (2 NP + 6 NP + 4 N ) P + 5P + 8P + 4 = lim + lim N →∞ N → ∞ N (7 P + 8) N (7 P + 8) 3 2 2P 2 + 6P + 4 N P + 5P + 8P + 4 1 = lim + lim N → ∞ ∞ N 7 P + 8 N→ 7P + 8 N N →∞
2
1
0
2P 2 + 6P + 4 = 7P + 8
Ello quiere decir que la expresión
2P 2 + 6P + 4
nos proporciona el número máximo
7P + 8 de veces que el conjunto de entrenamiento puede ser presentado, bajo Descenso Escalonado, suponiendo que su tamaño N es suficientemente grande. Entonces, sea T(P) definido como el número máximo de presentaciones de un conjunto de entrenamiento, de tamaño suficientemente grande, y con vectores de dimensionalidad P, de manera que el método de Descenso Escalonado requiera efectuar un número de operaciones menor que el método de Mínimos Cuadrados: 2P2 + 6P + 4 T ( P) = 7P + 8
(Ecuación 3.3.11)
Donde ⋅ denota a la Función Piso ( x = max {m ∈ : m ≤ x} ). Por lo tanto, retomando nuestro ejemplo con P = 20 y aplicando la Ecuación 3.3.11:
2(20)2 + 6(20) + 4 T ( 20) = = 6 7 ( 2 0 ) + 8
Tenemos entonces que el N número máximo degrande, presentaciones entrenamiento de tamaño suficientemente suficientemente es 6. a efectuar, para conjuntos de
79
A rtificial Una Introducción al Cómputo Neuronal Artificial
Supongamos, por ejemplo, que se requiere entrenar a una neurona Adaline usando un conjunto de imágenes con resolución 320 × 240. Supongamos también, y de hecho en ocasiones así se procede en la práctica, que tales imágenes son representadas como vectores en P +1 de manera que P = 320⋅240 = 76,800. Entonces tenemos que, por la Ecuación 3.3.11, el número máximo de presentaciones a efectuar es:
2(76, 80 800)2 + 6(76, 80 800) + 4 = 21,943 7 ( 7 6 ,80 ,8 0 0 ) + 8
T (76,800) =
Tenemos entonces un margen bastante considerable de presentaciones a aplicar de manera que se satisfaga la eficiencia del método de Descenso Escalonado sobre el método de Mínimos Cuadrados, siempre y cuando se asuma al conjunto de entrenamiento como de un tamaño suficientemente grande ( N N → ∞). En términos más concretos, suponiendo que se contase con N = 1,000 imágenes y sustituyendo con P = 76,800 y T = 21,943 en las Ecuaciones 3.3.9 y 3.3.10 tenemos: • SDO(2 (211943 43,, 100 0, 76800) = (2 (211,9 ,943 43)( )(11,00 ,0000)(7 (7(7 (766,80 ,800) 0) + 8) = 11,7 ,7996,7 ,7332, 2,3344,0 ,0000 ((76,8 ,80 00 + 1)2 )(2 (2((1,00 ,0000) + 1) + • LSO(1000, 76800) = (76,8 ,8000 + 1)(2 (2((1,00 ,0000) + 1) + = 464,811,264,618,404 (76, 800 + 1)3 + (76, 800 + 1) 2
76800) 7680 0) 464,811,264,618,404 = = 39.4016 SDO(2 (21194 9433, 100 0000, 76800) 11,7 ,796 96,7 ,732 32,3 ,3444, 4,0000 Es decir, el método de Mínimos Cuadrados, para esta situación, requiere efectuar casi 40 veces más operaciones que el método de Descenso Escalonado. Ahora bien, consideremos el caso en que P = 1, tal como sucede con el conjunto de entrenamiento presentado en la Sección anterior (Tabla 3.2). Tenemos entonces, por aplicación de la Ecuación 3.3.11: •
LSO(10 1000 00,,
2 T (1) = 2(1) + 6(1) + 4 = 0
7(1) + 8
El valor T (1) (1) = 0 es indicativo de que de hecho, para este caso, el método de Descenso Escalonado no es más eficiente que el método de Mínimos Cuadrados. Es más, este comentario ya había sido hecho en su momento en la Sección anterior. Cuando se tienen vectores de entrada de dimensionalidad P ≥ 2 se presentan los casos en los cuales el método de Descenso Escalonado es más eficiente que el método de Mínimos Cuadrados:
2(2) 2 + 6(2) + 4 T (2) = 7(2) + 8 = 1
80
Capítulo 3. La Neurona Adaline
Recordemos que usando la desigualdad SDO(T , N, P) < LSO( N N , P) acotamos el valor de T en función de N y P. Simplemente debemos hacer la aclaración de que la desigualdad anterior es válida para todo N y todo P positivos (P ≥ 1) mientras que T (P) efectivamente acota a T pero bajo la suposición de que el tamaño del conjunto de entrenamiento es suficientemente grande, o en otras palabras, cuando N → ∞. Es precisamente por la última hipótesis que T (P) arroja valores positivos a partir de P ≥ 2 aparentemente dejando excluido el caso P = 1. Sin embargo, debe ser claro que para algunos valores pequeños de N y con P = 1 es posible que el método de Descenso Escalonado sea más eficiente que el método de Mínimos Cuadrados. Por último, y para concluir esta sección, debemos hacer notar que mientras que la Ecuación 3.3.9 nos indica el número de operaciones requeridas por el método de Descenso Escalonado y la Ecuación 3.3.11 nos proporciona el número máximo de presentaciones del conjunto de entrenamiento a efectuar, es importante tener en cuenta que la diferencia entre el vector de pesos final y el vector de pesos óptimo va también en función de µ, de que tan representativos son los elementos del conjunto de entrenamiento y del vector inicial W 1. T P) presentaciones no garantiza de ninguna manera que el Ello quiere decirfinal que el vector de pesos seaefectuar el vector( óptimo o que incluso se encuentre sumamente cerca de éste. Podemos encontrar situaciones en las cuales se requieren presentaciones adicionales del conjunto de entrenamiento. Sin embargo, en la práctica se verá que el método de Descenso Escalonado por nada deja de ser un muy buen mecanismo para una aproximación rápida del vector de pesos. De hecho, es recurrente contar únicamente con un vector de pesos lo suficientemente cercano al vector óptimo, pero que de igual manera produce una solución bastante aceptable al problema que la correspondiente neurona Adaline esté modelando. Por otro lado, debe ser claro que conforme la dimensionalidad P de los vectores de entrada aumenta, la Ecuación 3.3.11 nos indica que el número de presentaciones del conjunto de entrenamiento crece de manera significativa y satisfaciendo el hecho de que se requieren menos operaciones que el método de Mínimos Cuadrados. En conclusión, la eficiencia del método de Descenso Escalonado mejora conforme P → ∞.
81
A rtificial Una Introducción al Cómputo Neuronal Artificial
82
Una Introducción al Cómputo Neuronal Artificial
4. El Perceptrón
A rtificial Una Introducción al Cómputo Neuronal Artificial
84
Capítulo 4. El Perceptrón
4.1. Estructura Básica y Funciones de Activación La estructura del Perceptrón se basa en la estructura fundamental de una célula nerviosa, es decir, se cuenta con varias entradas cada una asociada a un peso y se tiene una una única salida la cual puede ser direccionada a otras neuronas (véase la Figura 4.1). Es claro también que otras neuronas pueden conectarse a las entradas del Perceptrón.
W1 X1
s a dX2 a r t n E
W2
n
z =
1 w x
i i
z
y = f N ( z )
y
i=
Wn
s a d i l a S
Xn
Figura 4.1. Representación esquemática de un Perceptrón. P erceptrón.
Considérese el Perceptrón de la Figura 4.1. Éste cuenta con n entradas cada una asociada con su correspondiente peso wi, i = 1, 2, …, n. De acuerdo a la Figura, el escalar z es claramente producido por la Sumatoria de Salida del Perceptrón: Perceptrón: n
1 w x
z =
i
i
(Ecuación 4.1.1)
i=
La Ecuación anterior puede ser escrita en forma vectorial como: z = W ⋅ X
(Ecuación 4.1.2)
Donde: w1 W = wn
x1 X = xn
Hasta este punto nótese la similitud de la estructura del Perceptrón con la de la neurona Adaline (descrita en el Capítulo 3). La primera diferencia surge en el sentido de que el Perceptrón no cuenta con es uneltérmino o predisposición tal como en el. Adaline. La segunda diferencia uso, endeelsesgo Perceptrón, de una Función de sucede Activación
85
A rtificial Una Introducción al Cómputo Neuronal Artificial
Como se aprecia en la Figura 4.1 la salida final de un Perceptrón no está dada por la ecuación z = W ⋅ X . El escalar z es sometido a la acción de una función f N cuyo resultado es efectivamente la salida final de la neurona: y = f N ( z z)
(Ecuación 4.1.3)
El objetivo de la Función de Activación es el de mantener la salida dentro de ciertos límites: una situación, tal como se describió en el Capítulo 1, que se da, desde un principio, en las neuronas biológicas. Es decir, la Función de Activación hará el papel de un neurotransmisor. Si bien mencionamos a la presencia de la Función de Activación como una diferencia entre el Perceptrón y la neurona Adaline, es claro que ésta última cuenta de hecho con una función que podría considerarse como de activación. En este caso, y tal como se comentó en el Capítulo 3, se trata de la función sign. Sin embargo, veremos que para efectos del proceso de entrenamiento del Perceptrón no se puede hacer f N ( z z) = sign( z z) debido a que ésta no es diferenciable de - ∞ a ∞. En Secciones posteriores justificaremos el f N ( z z) sea diferenciable en el intervalo (-∞, ∞). De hecho, porqué defunción la necesidad de que en cualquier diferenciable el intervalo (-∞, ∞) puede ser utilizada como Función de Activación para el Perceptrón. Sin embargo, en la literatura son comúnmente mencionadas cuatro funciones. En primer lugar tenemos a la Función Sigmoide la cual está dada por: f N ( z ) =
1 1 + e− z
= y
(Ecuación 4.1.4)
Véase la Figura 4.2.a. Algunas de sus propiedades son: • f N : → (0, 1) • z → -∞ ⇔ y → 0 • z = 0 ⇔ y = 0.5 y → 1 •• zDado ⇔ todo − z → ∞que para z ∈ se tiene que e ≠ -1 entonces la función no se indefine en
ningún punto. Determinemos la derivada de la Función Sigmoide: d dz
f N =
=
d
1
dz 1 + e d dz
− z
(1 + e− z )−1
= − (1 + e− z ) −2
d dz
(1 + e− z )
86
Capítulo 4. El Perceptrón
= − (1 + e− z ) −2
d dz
= − (1 + e− z ) −2 e− z =
e− z d dz
(− z )
e− z (1 + e− z ) 2
Concretizando: f N ' =
e
− z
(1 + e− z ) 2
(Ecuación 4.1.5)
Nótese que e− z ≠ -1 para todo valor de z. Por lo tanto es posible calcular la derivada de f N en cualquier punto z, con lo cual concluimos que efectivamente es diferenciable en el intervalo (-∞, ∞). 1.0
1.0
0.8 0.5
0.6
5
5
0.4
0.5
0.2
5
5
a)
1.0
b)
1.0
1.0
0.8 0.5
0.6
10
5
5
10
0.4
0.5 0.2
1.0
10
5
5
c) d) Figura 4.2. Algunas Funciones de Activación para el Perceptrón: a) Función Sigmoide; b) Tangente Hiperbólica con argumento z2 ; c) Tangente Hiperbólica; d) La función 1 + Ta2nh( z ) .
10
87
A rtificial Una Introducción al Cómputo Neuronal Artificial
Otra función a considerar es la Tangente Hiperbólica con Argumento z 2 (Véase la Figura 4.2.b): z f N ( z ) = Tanh = y
(Ecuación 4.1.6)
2
La correspondiente expresión algebraica para la Ecuación 4.1.6 está dada por: 2
z f N ( z ) = Tanh =
− z 2 1+ e
−1
(Ecuación 4.1.7)
Al dar un vistazo a la gráfica de la Tangente Hiperbólica con argumento z 2 serán evidentes las siguientes propiedades: • f N : → (-1, 1) • z → -∞ ⇔ y → -1 • z = 0 ⇔ y = 0 • z → ∞ ⇔ y → 1 • e− z ≠ -1, ∀ z ∈ : por lo tanto no se indefine en ningún punto. z
Determinemos la derivada de la función Tanh usando su correspondiente 2 expresión algebraica: z d 2 Tanh = − 1 − z dz 2 dz 1 + e d
= d 2 (1 + e− z )−1 dz
= 2(−1) (1 + e− z )
=
−2 − z 2
(1 + e ) 2e − z
(1 + e− ) z
2
e
d
− z
dz d dz
d
1 + e− ) ( dz
−2
= − 2 (1 + e− z ) =
−2
e
−z
(− z )
z
88
Capítulo 4. El Perceptrón
Es decir: f N ' =
2e− z
− z 2
(1 + e )
(Ecuación 4.1.8)
Dado que para todo valor de z se tiene que e− z ≠ -1 entonces concluimos que la función es también diferenciable en el intervalo (-∞, ∞). Consideremos también a la Tangente Hiperbólica junto con su correspondiente expresión algebraica (Véase la Figura 4.2.c): 1 − e−2 z f N ( z ) = Tanh ( z ) = = y 1 + e−2 z
(Ecuación 4.1.9)
Algunas de sus propiedades están dadas por: • f N : → (-1, 1) • z → -∞ ⇔ y → -1 • z = 0 ⇔ y = 0 • z → ∞ ⇔ y → 1 • e−2 z ≠ -1, ∀ z ∈ . La derivada de la Tangente Hiperbólica está dada por: f N ' =
4e2 z 2 z 2
(1 + e )
(Ecuación 4.1.10)
Tenemos que su denominador no se indefine, por lo tanto la función Tangente Hiperbólica es diferenciable en (-∞,∞). La Tangente Hiperbólica se puede utilizar para construir otras funciones. Tal es el caso de la siguiente Función de Activación (Figura 4.2.d): ): z 1 + Tanh( z ) e2 f N ( z ) = = = y 2 1 + e 2 z
Haciendo referencia a su gráfica, la cual se presenta en la Figura 4.2.d, se visualizan claramente las siguientes propiedades: propiedades: • f N : → (0, 1) • z → -∞ ⇔ y → 0 • z = 0 ⇔ y = 0.5 • z → ∞ ⇔ y → 1 • e2 z ≠ -1, ∀ z ∈ .
89
A rtificial Una Introducción al Cómputo Neuronal Artificial
Su derivada está dada por:
f N ' =
e 2 z
2
(1 + e2 ) z
2
(Ecuación 4.1.11)
Analizando su denominador se concluye que es ésta diferenciable en el intervalo (-∞,∞). 1 + Tanh( z ) acotan la salida del Perceptrón a 2 valores únicamente dentro del intervalo (0, 1). Por otro lado las funciones Tangente
Nótese que las funciones Sigmoide y
Hiperbólica y Tangente Hiperbólica con argumento
z
restringen las salidas a valores en 2 (-1, 1). La Función de Activación a utilizar, tal como veremos en secciones posteriores, depende del problema a modelar. De hecho, mencionamos previamente, que cualquier función puede ser utilizada. El único requerimiento es que ésta sea diferenciable de - ∞ a ∞. Por ejemplo, es válido considerar a la Función Identidad f f N ( z z) = z. Ésta es diferenciable en el intervalo (-∞, ∞) y además hace que las salidas del Perceptrón se distribuyan sobre todo el conjunto de los números reales. De alguna manera ya habíamos considerado previamente a la Función Identidad cuando efectuamos el análisis del entrenamiento de la neurona Adaline mediante Mínimos Cuadrados (Sección 3.2) y Descenso Escalonado (Secciones 3.3.1 y 3.3.2). De allí identificamos otro punto de similitud entre ambos tipos de neuronas. Sin embargo, una desventaja que puede presentar la Función Identidad es que en un momento dado, y dependiendo del problema que se trate, se pueden generan valores cuyos valores absolutos son de gran magnitud, lo cual puede dificultar los cálculos.
4.2 El Problema de Representación Representación Hicimos mención en el Capítulo 1 (Sección 1.4) que el Perceptrón fue presentado originalmente en 1958 por el psicólogo Frank Rosenblatt. Antes de proseguir debemos aclarar que el término Perceptrón, para Rosenblatt y algunos otros autores, puede hacer referencia a una única neurona o bien a una Red Neuronal formada por varios Perceptrones agrupados en capas. En nuestro caso, sólo basta aclarar que cuando hacemos referencia a un Perceptrón nos referimos a una única neurona de ese tipo. En los siguientes Capítulos, cuando hagamos referencia a una red formada por más de una neurona entonces haremos mención explícita del término Red de Perceptrones.
90
Capítulo 4. El Perceptrón
En 1961, Rosenblatt publicó un texto titulado Principles of Neurodynamics en el cual, en referencia al Perceptrón, se establece: Un Perceptrón puede aprender (resolver) cualquier cosa que éste pueda representar (simular). (simular).
Esta proposición de inmediato conduce a preguntarse: ¿Qué cosas puede representar, y por tanto, aprender un Perceptrón? La respuesta a esta pregunta está bien delimitada e identificada. De hecho el mismo Rosenblatt la abordó. En esta Sección discutiremos precisamente qué puede ser representado o simulado en un Perceptrón. W1 X1
s a d a r t n E
2
z =
1 w x
i i
z
i=
= w1 x1 + w2 x2
y = f N ( z )
s a d i l a S
y
W2 X2
Figura 4.3. Una neurona de tipo Perceptrón con dos entradas. X 2
z( x x1, x2) = w1 x1 + w2 x2 = 0
X 1
Figura 4.4. El umbral z( x x1, x2) = w1 x1 + w2 x2 = 0 asociado a un Perceptrón de 2 entradas.
Considérese el Perceptrón de la Figura 4.3. Supongamos que ya se tienen identificados los pesos w1 y w2 para tal neurona. La Sumatoria de Salida puede ser
91
A rtificial Una Introducción al Cómputo Neuronal Artificial
considerada de hecho como una función de los componentes x1 y x2 de los vectores de entrada. Entonces tenemos que: z( x x1, x2) = w1 x1 + w2 x2
(Ecuación 4.2.1)
x1, x2) = 0 se tiene una recta que pasa por el Desde un punto de vista geométrico, cuando z( x origen del espacio Euclidiano Bidimensional. A la recta z( x x1, x2) = w1 x1 + w2 x2 = 0 se le llamará Umbral. Véase la Figura 4.4. X 2
w1 w2
v=
z( x x1, x2) = w1 x1 + w2 x2 = 0
X 1
Figura 4.5. El vector normal v del umbral z( x x1, x2) = w1 x1 + w2 x2 = 0 asociado a un Perceptrón de 2 entradas. Los componentes de v son precisamente los valores de los pesos w1 y w2.
Ahora considérese cualquier punto ( x1, x2) en 2 . Es claro que este punto puede ser x1, x2). Dependiendo del signo del valor arrojado por la evaluación evaluado en la función z( x es posible ubicar al punto sobre la recta o bien por “encima” o por “debajo” de ésta. Claramente si z( x x1, x2) = 0 entonces el punto forma parte de la recta. Ahora bien, sólo tenemos que precisar la noción de “encima” o “debajo” de la recta. De la Ecuación 4.2.1 tomaremos los coeficientes de x1 y x2, es decir, los valores de los pesos w1 y w2. Usando estos valores formaremos un vector v = [w1 w2]T, también en 2 , el cuál tendrá la propiedad de ser perpendicular a la recta y de hecho es llamado su Vector Normal. La dirección del vector normal de la recta z( x x1, x2) = 0 es precisamente la referencia que usaremos para determinar cuando un punto está por “encima” o por “debajo” de ésta. Véase la Figura 4.5. Nótese que la evaluación w1 x1 + w2 x2 puede ser vista como un producto T punto entre el vector v y el punto a evaluar x = [ x x1 x2] . Por lo tanto w1 x1 + w2 x2 = v x ⋅ x. A su vez, el producto punto nos permite inferir el ángulo θ que forman los vectores v y x: w1 x1 + w2 x2 = v x ⋅ x = ||v||⋅|| x x|| cos θ
(Ecuación 4.2.2)
92
Capítulo 4. El Perceptrón
Dado que las magnitudes de los vectores son siempre no negativas entonces únicamente π nos concentramos en el signo de cos θ. Es claro que si cos θ > 0 entonces θ ∈ 0, y por 2
otro lado, si cos θ < 0 entonces θ ∈ π , 3π . Por lo tanto diremos que si w1 x1 + w2 x2 > 0 2 2 entonces el punto ( x x1, x2) está por encima de la recta z( x x1, x2) = 0 y por otro lado si w1 x1 + w2 x2 < 0 entonces el punto está por debajo de la recta. Véase la Figura 4.6. X 2
w1 x1 + w2 x2 > 0
w1 w2
v=
z( x x1, x2) = w1 x x1 + w2 x x2 = 0
w1 x1 + w2 x2 < 0
X 1 w1 x1 + w2 x2 = 0
Figura 4.6. Caracterización de los puntos en el Espacio Euclidiano Bidimensional en función del signo de su evaluación con la función z( x x1, x2) = w1 x1 + w2 x2. Si w1 x1 + w2 x2 > 0 entonces el punto está en la misma región hacia la que apunta el vector normal v. Si w1 x1 + w2 x2 < 0 entonces el punto está en la región hacia la que apunta –v. Si w1 x1 + w2 x2 = 0 entonces el punto está sobre la recta z( x x1, x2) = 0.
Los razonamientos anteriores nos permiten establecer ahora que el umbral z( x x1, x2) = 0 divide al plano en tres regiones: • Región 1: El conjunto de puntos por encima del umbral. 2 x1, x2): w1 x1 + w2 x2 > 0} x o R = {( 1 • Región 2: El conjunto de puntos por debajo del umbral. 2 o R = {( x1, x2): w1 x1 + w2 x2 < 0} x 2 • Región 3: El conjunto de puntos inmersos en el umbral. 2 o R = {( x1, x2): w1 x1 + w2 x2 = 0} x 3 Evidentemente 2 = R12 ∪ R22 ∪ R32 . Véase la Figura 4.7.
93
A rtificial Una Introducción al Cómputo Neuronal Artificial
X 2
2
R1
v=
w1 w2
z( x x1, x2) = w1 x1 + w2 x2 = 0
2
X 1
R3 2
R2
Figura 4.7. Partición de 2 mediante el umbral z( x x1, x2) = w1 x1 + w2 x2 = 0 y su vector normal v. 2 se forma por los puntos por encima de la recta z( x x1, x2) = 0. R22 se forma por los puntos debajo R1 de la recta z( x x1, x2) = 0. R32 es el conjunto de puntos sobre la recta z( x x1, x2) = 0.
W1 X1
s a d aX r 2 t n E
W2
3
z =
1 w x
i i
z
i=
= w1 x1 + w2 x2 + w3 x3
y = f N ( z )
y
W3
s a d i l a S
X3
Figura 4.8. Una neurona de tipo Perceptrón con tres entradas.
Ahora considérese el Perceptrón de la Figura 4.8. Su Sumatoria de Salida z puede ser considerada como una función de las variables x1, x2 y x3: z( x x1, x2, x3) = w1 x1 + w2 x2 + w3 x3
(Ecuación 4.2.3)
Cuando se tiene z( x x1, x2, x3) = 0 entonces se describe a un plano que pasa por el origen del Espacio Euclidiano Tridimensional (Figura 4.9). A este plano también se le denomina umbral. umbral.
94
Capítulo 4. El Perceptrón
X3
X2
z( x x1, x x2, x x3) = w1 x1 + w2 x2 + w3 x3 = 0
X1
Figura 4.9. El lugar geométrico asociado a z( x x1, x2, x3) = 0.
Siguiendo una serie de razonamientos similares a aquellos referentes al Perceptrón de dos entradas, tenemos que para cualquier punto ( x x1, x2, x3) el signo de la evaluación w1 x1 + w2 x2 + w3 x3 nos indica si éste está encima, debajo o inmerso en el plano 3 z( x x1, x2, x3) = 0. Se tiene entonces que el umbral z( x x1, x2, x3) = 0 divide a en tres regiones: regiones: • Región 1: El conjunto de puntos por encima del umbral. 3 o R = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 > 0} x 1 • Región 2: El conjunto de puntos por debajo del umbral. 3 o R = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 < 0} x 2 • Región 3: El conjunto de puntos inmersos en el umbral. 3 o R = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 = 0} x 3 Debe ser claro que 3 = R13 ∪ R23 ∪ R33 . En general tenemos que para un Perceptrón con n entradas, el umbral z( x x1, x2,…, xn) = w1 x1 + w2 x2 + … + wn xn = 0
(Ecuación 4.2.4)
describirá a un hiperplano que divide al Espacio Euclidiano n-Dimensional, n , en tres regiones: regiones: • La Región 1 contendrá a todos los puntos ( x1, …, xn) que están ubicados por encima del hiperplano z( x x1, …, xn) = 0: n x1, …, xn): w1 x1 + … + wn xn > 0} x o R = {( 1 • La Región 2 contendrá a todos los puntos ( x x1, …, xn) que están ubicados por debajo del hiperplano z( x x1, …, xn) = 0: n x1, …, xn): w1 x1 + … + wn xn < 0} x o R = {( 2 • La Región 3 contendrá a todos los puntos ( x1, …, xn) inmersos en el hiperplano z( x x1, …, xnn) = 0: x1, …, xn): w1 x1 + … + wn xn = 0} x o R = {( 3
95
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora analizaremos la relación que existe entre las particiones del espacio n inducidas por el umbral z( x x1, …, xn) = 0 (Ecuación 4.2.4) y el conjunto de problemas que pueden ser representados por el Perceptrón. Precisamente la relación se establece de manera textual mediante el planteamiento del Problema de Representación: El Perceptr Perceptrón ón únicament únicamentee puede resolver aquellos problema problemass que pueden ser reducidos a un Problema de Separación Separación (Clasificación) (Clasificación) Lineal Lineal .
Por ejemplo, considérese la tabla de verdad de la compuerta lógica AND. Véase la Tabla 4.1. Tabla 4.1. Tabla de verdad de la compuerta lógica AND. Estado x1 x2 Z A 0 0 0 B 1 0 0 C 0 1 0 D
1
1
1
El operador AND es una función Booleana de dos variables. Ello claramente implica que contamos con 4 posibles estados o vectores de entrada. El objetivo es determinar si existe un umbral z( x x1, x2) = 0 tal que un Perceptrón proporcione siempre la salida correcta z. Supongamos que la Función de Activación utilizada es la función identidad. Grafiquemos en el plano a cada una de las 4 posibles entradas ( x1, x2). Nótese que para la entrada (1, 1) esperamos la salida z(1, 1) = 1. Para el resto de las entradas se espera la salida 0. Entonces los puntos con salida 0 serán puntos negros mientras que el punto (1, 1) será blanco. Véase la Figura 4.10.
x2
(0,1)
(0,0)
(1,1)
(1,0)
x 1
Figura 4.10. Visualización en el plano de los cuatro posibles estados de la compuerta lógica AND (Véase el texto para detalles).
96
Capítulo 4. El Perceptrón
Si la compuerta AND ha de ser modelada mediante un Perceptrón entonces se deberán determinar los valores de los pesos w1 y w2 de manera que se verifique la existencia de una recta z( x x1, x2) = w1 x1 + w2 x2 = 0 tal que ésta separe a los estados con salida 0 (A, B y C) de los estados con salida 1 (D) (véase la Tabla 4.1). Es precisamente este punto el que caracteriza a un problema como Linealmente Separable: se tiene un problema x1, …, xn) se espera una salida que en el cual para una entrada formada por n escalares ( x únicamente puede tomar uno de dos posibles valores, digamos, α1 y α2. Entonces, para aquellas entradas con salida α1 se espera que éstas estén inmersas en el hiperplano z( x x1, …, xn) = 0 o bien por encima de éste. Las entradas con salida esperada α2 se ubicarán estrictamente por debajo del hiperplano z( x x1, …, xn) = 0. Es claro que el modelado de la compuerta AND es un problema Linealmente Separable ya que efectivamente existe una recta que separa a los estados con salida esperada 0 del estado con salida esperada 1. Véase una posible recta en la Figura 4.11. Un comentario a hacer respecto a la recta presentada en la figura es que ésta evidentemente no pasa por el origen y por lo tanto no se ajusta a la Sumatoria de Salida del Perceptrón (término embargo, estalposible considerar tipo de rectas Otra al agregar Ecuación 4.2.1).o Sin de sesgo predisposición, como sucede en laeste neurona Adaline. opción un es simplemente trasladar a los 4 estados de manera que su centroide se ubique en el origen. El punto importante es que hemos verificado la existencia de una recta que permite caracterizar a nuestro problema en cuestión como linealmente separable.
x 2
(0,1)
(0,0)
(1,1)
(1,0)
x 1
Figura 4.11. Una recta que separa los estados con salida 0 del estado con salida 1 en la compuerta lógica AND.
Ahora considérese la tabla de verdad de la compuerta lógica XOR (OR Exclusivo). Véase la Tabla 4.2. Se tienen nuevamente dos variables y por tanto 4 estados. Ahora véase la Figura 4.12. Para dos de los estados se espera una salida 0 (puntos negros) mientras que para los dos restantes una salida 1 (puntos blancos).
97
A rtificial Una Introducción al Cómputo Neuronal Artificial
Tabla 4.2. Tabla de verdad de la compuerta lógica XOR. Estado x1 x2 Z A 0 0 0 B C D
10 1
01 1
11 0
x 2
(0,1)
(0,0)
(1,1)
x 1
(1,0)
Figura 4.12. Visualización en el plano de los cuatro posibles estados de la compuerta lógica XOR (Véase el texto para detalles).
Es claro, en términos visuales, que cualquier recta en el plano no podrá separar a los puntos blancos de los puntos negros en la Figura 4.12. Si bien es posible hacer que los puntos blancos (negros) queden por encima o inmersos en la recta, siempre estará un punto negro (blanco) en esa misma región (véase la Figura 4.13). Por lo tanto, concluimos que no existe una recta o umbral z( x x1, x2) = 0 tal que los estados A y D queden separados de los estados C y B. En consecuencia se tiene que el problema del modelado, mediante un Perceptrón, de la función XOR no es linealmente separable. La situación con el XOR nos conduce entonces a aceptar que existirán problemas para los cuales el Perceptrón no proporciona una solución o modelo. El siguiente cuestionamiento que surge es entonces aquel relacionado a determinar cuantos problemas linealmente separables existen, o bien, de manera complementaria, determinar la cantidad de problemas no linealmente separables. Para ello, nos concentraremos en un particular tipo de problemas: el Modelado de Funciones Booleanas. Sabemos que una función Booleana f es aquella para la que formalmente se tiene: f : {0 ,1}n = {0,1} × {0,1} × ... × {0,1} → {0,1}
n
98
Capítulo 4. El Perceptrón
x 2
x 2
(0,1)
(0,0)
(1,1)
(0,1)
x 1
(1,0)
(0,0)
(1,1)
(1,0)
x 1
a) b) Figura 4.13. a) Una recta que agrupa, para la compuerta lógica XOR, a los estados con salida 0 pero que también incluye a un estado con salida 1. b) Una recta que agrupa a los estados con salida 1 pero que también incluye a un estado con salida 0.
Donde ⋅ × ⋅ denota al Producto Cartesiano de conjuntos. Es claro que las funciones AND y XOR (Tablas 4.1 y 4.2, respectivamente) son funciones Booleanas. Es más, la cardinalidad del dominio de una función Booleana es 2n. Ello se debe a que cada estado se forma por n componentes y a su vez cada componente puede tomar uno de 2 posibles valores: o el valor 0 o el valor 1. Por lo tanto se tienen en total 2 .. . ⋅ 2 ⋅ .. ⋅ 2 = 2n
(Ecuación 4.2.5)
n
posibles estados. Para las compuertas AND y XOR se tiene que n = 2 lo que en consecuencia nos indica que cuentan con 2 2 = 4 estados. Ahora bien, cada uno de los 2 n estados de una función Booleana está asociado a una salida que la función debe proporcionar. Esta salida puede ser 0 o 1. Ello implica que se tienen en total n
2 ⋅ 2 ⋅ .. .. . ⋅ 2 = 2(2 )
(Ecuación 4.2.6)
2n
posibles funciones Booleanas con estados formados por n componentes. Retomando el caso n = 2, tenemos entonces que el número total de compuertas lógicas con 2 entradas es 2 2( 2 ) = 24 = 16 . Entre esas 16 compuertas encontramos, como ya sabemos, a las funciones AND y XOR, pero también a otras bien conocidas como OR, NOR, NAND, NXOR, etc. En la década de los 60s, investigadores como R. O. Winder y Michael A. Harrison, el primero con su Tesis Doctoral Threshold Logic (1962) y el segundo con su artículo On the Classification Boolean Functions by the General and Affine Groups (1964), abordan estudios of relacionados con la clasificación de Linear funciones Booleanas. Entre sus
99
A rtificial Una Introducción al Cómputo Neuronal Artificial
resultados resaltan los conteos correspondientes al número de funciones Booleanas que efectivamente son linealmente separables. En la Tabla 4.3 se presentan los conteos para las funciones de 1 a 6 entradas. Todas las funciones de una única entrada son linealmente separables, mientras que de aquellas con dos entradas solo 14 son linealmente separables. Precisamente las compuertas XOR y NXOR son las no linealmente separables. Ello implica que para n = 2 el 87.5% de las funciones son linealmente separables lo cual puede considerarse como un número bastante aceptable de problemas factibles de ser resueltos por el Perceptrón. Sin embargo, nótese que para n = 3 únicamente el 40.62% de las funciones pueden ser modeladas por el Perceptrón. La situación se torna más dramática conforme el número de entradas aumenta. Cuando n = 5 tenemos que sólo 0.0022% de las funciones son linealmente separables y por tanto modelables por un Perceptrón. Ello nos lleva a concluir, de manera clara y evidente, que un número sumamente limitado de las posibles 2(2 ) funciones Booleanas de n entradas son funciones linealmente separables. En la práctica se puede requerir el modelado de funciones con número de entradas realmente grande. Por tanto, el Perceptrón cuenta con una capacidad limitada para la solución de este tipo de problemas. n
Tabla Conteo linealmente de funcionesseparables. Booleanas de 1 a4.3. 6 entradas Número de Número de posibles Funciones con Estados (2 ) entradas n Funciones Booleanas: 2 Linealmente Separables 1 4 4 2 16 14 3 256 104 4 65,536 1,882 5 4,294,967,296 94,572 6 18,446,744,073,709,551,616 15,028,134 n
b) a) Figura 4.14. Ejemplos de regiones convexas: a) Región Convexa Cerrada; b) Región Convexa Abierta.
Desde otro punto de vista, el Problema de Representación puede ser replanteado como el hecho de que un único Perceptrón sólo puede resolver problemas de clasificación de puntos que yacen en dos regiones convexas disjuntas. Recuérdese que una región es convexa si para cualesquiera dos puntos en ésta, el segmento de recta que los une está por completo dentro de la región (véase la Figura 4.14). Estas regiones pueden ser abiertas o
cerradas. De manera más precisa, recordemos que tenemos problemas en los cuales para
100
Capítulo 4. El Perceptrón
una entrada formada por n escalares ( x x1, …, xn) se espera una salida que únicamente puede tomar uno de dos posibles valores: α1 o α2. Cuando decimos que los puntos deben yacer en regiones convexas hacemos referencia a que los puntos con salida α1 deben formar parte de una región y los puntos con salida α2 deben estar en la otra región. Además, el que las dos regiones sean disjuntas implica que su intersección es vacía. Recordemos que la compuerta lógica AND es un problema linealmente separable ya que existe un umbral o recta z( x x1, x2) = 0 tal que el conjunto de puntos negros queda separado del conjunto de puntos blancos (véase la Figura 4.11). Ahora bien, desde el nuevo punto de vista el problema se soluciona por un Perceptrón ya que al considerar a los puntos negros como los vértices de un polígono, en este caso un triángulo, se tiene que éste evidentemente describe a una región convexa cerrada (véase la Figura 4.15). El punto blanco por si mismo es un conjunto convexo cerrado. Nótese que no hay puntos comunes entre las dos regiones lo que las hace disjuntas.
x 2
(0,1)
(0,0)
(1,1)
(1,0)
x 1
Figura 4.15. Separación de los estados de la compuerta lógica AND mediante dos regiones cerradas convexas disjuntas (véase el texto para detalles).
Ahora bien, el mismo procedimiento aplicado sobre los estados de la compuerta XOR claramente nos permite agrupar a los puntos blancos en una región convexa y a los puntos negros en su correspondiente región convexa, ambas cerradas. Véase la Figura 4.16. El problema que surge es que tales regiones se intersectan. Si se busca que las regiones cuenten con intersección vacía entonces claramente habrá que definir a una de ellas como no convexa, tal como su sucede en el ejemplo presentado en la Figura 4.17. Esta situación hace que el XOR sea caracterizado, desde el punto de vista del uso de regiones convexas disjuntas como un problema no modelable mediante un Perceptrón. Si se espera que una neurona modele al XOR es entonces que habrá que considerar, por consecuencia, la formación de umbrales no lineales o bien regiones no convexas que agrupen adecuadamente a los estados de la función. Ambas posibilidades quedan fuera del alcance del Perceptrón debido a que precisamente su estructura interna, y en particular su sumatoria de salida, únicamente modelan umbrales lineales (Ecuación 4.1.1).
101
A rtificial Una Introducción al Cómputo Neuronal Artificial
x 2
(0,1)
(1,1)
x 1
(0,0)
(1,0)
Figura 4.16. Dos regiones convexas no disjuntas que agrupan, cada una, a los estados negros y a los estados blancos de la función XOR.
x 2
(0,1)
(0,0)
(1,1)
(1,0)
x 1
Figura 4.17. Separación de los estados negros y los estados blancos de la función XOR. Se tienen dos regiones disjuntas, pero una de ellas es no convexa.
La discusión que hemos efectuado en esta Sección puede conducir a perspectivas pesimistas para el área de Redes Neuronales Artificiales. Sin embargo, el mismo Rosenblatt y otros investigadores como Warren McCulloch y Walter Pitts (véase la Sección 1.2), ya tenían conocimiento de que redes formadas por más de un Perceptrón si eran capaces de modelar exitosamente compuertas lógicas como el XOR y de hecho otras funciones Booleanas no linealmente separables. Sin embargo, lo que no se tenía era un mecanismo eficiente para el ajuste de sus pesos. No fue sino hasta 1986 que David Rumelhart, Geoffrey Hinton y Ronald Williams presentan el Algoritmo de Retropropagación, lo cual significó un reimpulso importante para el área. En los Capítulos 5 y 6 nos concentraremos en estudiar a las redes formadas por más de una neurona artificial, y de manera particular,
en el Capítulo 6 es donde abordaremos al Algoritmo de Retropropagación.
102
Capítulo 4. El Perceptrón
4.3 Aplicación: Identificación de Parámetros Autorregresivos en una Señal En las dos Subsecciones anteriores hemos discutido ya varios aspectos detrás del Perceptrón, sin embargo, no hemos planteado una metodología para el ajuste de sus pesos. Precisamente ese será el objetivo de esta Sección. Pero además, aplicaremos tal mecanismo de entrenamiento en el contexto del problema de Predicción de una Señal. Mencionábamos en el Capítulo 1 que el objetivo es modelar una serie de tiempo de manera que sea posible determinar como se comportará en el futuro. A continuación plantearemos algunas nociones necesarias respecto al problema en particular y posteriormente veremos como abordarlo a fin de que un Perceptrón nos proporcione una solución. Existen una gran cantidad de modelos matemáticos para generar series de tiempo. En particular nosotros trabajaremos con una Serie de Tiempo de M -ésimo -ésimo Orden de Parámetros Autorregresivos. Ésta se define como: ck si n = k , k ∈ {1, 2, ..., M } M xn = a x + n o i s e ( n ) s i n > M k n − k k =1
(Ecuación 4.3.1)
Donde: Donde: • M : Orden del modelo. • ak : k -ésimo -ésimo parámetro autorregresivo, una constante, k = = 1, 2, …, M . -ésima muestra, una constante, de la serie de tiempo para t = = k , k ∈ {1, 2, …, M }. }. • c : k -ésima k • xn: muestra de la serie de tiempo en t = = n. • noise(n): ruido o perturbación a aplicar a la muestra de la serie de tiempo en t = n. Se utiliza para simular el hecho de que las muestras fueron obtenidas experimentalmente, sin embargo, por ello mismo, las mediciones efectuadas no pueden ser libres de errores. De acuerdo a la Ecuación 4.3.1, el valor de xn, cuando n > M , es una combinación lineal de los M valores previos, xn-1, xn-2, …, xn-M , y los parámetros autorregresivos a1, a2, …, a M . Cuando 1 ≤ n ≤ M M entonces entonces el valor de xn es uno de los M valores valores iniciales c1, c2, …, c M (o casos base) para la serie de tiempo. Es claro que el valor de cualquier muestra xn, n > M , tiene influencia de los valores de las muestras que le preceden y tendrá influencia sobre los valores que le prosiguen.
103
A rtificial Una Introducción al Cómputo Neuronal Artificial
Consideremos un ejemplo. Sea la serie de tiempo generada al usar los siguientes valores: valores: • M = = 7 • a1 = -0.15 •• • • • • • • • • • •
a2 = 0.1 a3 = -0.3 a4 = -0.2 a5 = -0.1 a6 = -0.5 a7 = 0.3 c1 = -3 c2 = 1 c3 = 6 c4 = -8 c5 = -1 c6 = -4
7 = 2 •• cnoise (n): una función de ruido que retornará aleatoriamente números enteros en el
conjunto {-7, -6, -5, …, 5, 6, 7}. • N = = 2,000 muestras. La Tabla 4.4 muestra la aplicación de la Ecuación 4.3.1 utilizando la configuración dada para obtener las primeras 15 muestras de la serie de tiempo. Nótese que las primeras 7 muestras corresponden con los valores c1 a c7. A partir de la octava muestra se aplica la función de ruido. En la Figura 4.18 se muestra la gráfica de la serie de tiempo considerando las N = = 2,000 muestras. El problema a tratar parte de que únicamente contamos con N muestras muestras asociadas a una serie de tiempo. Supondremos que tal serie puede ser modelada como una serie de tiempo de M -ésimo -ésimo orden de parámetros autorregresivos, N > M , es decir, que se ajusta la Ecuación 4.3.1. El objetivo es determinar sus correspondientes M parámetros autorregresivos a1, a2, …, a M . A fin de buscar una solución utilizaremos un Perceptrón que recibirá un vector en M . Los componentes de un vector de entrada estarán dados por: xn −1 x n−2 xn −3 xn − M
Donde los escalares xn-1, xn-2, …, xn-M son una subsecuencia de las muestras que forman la serie de tiempo bajo estudio.
104
Capítulo 4. El Perceptrón
Tabla 4.4. Las primeras 15 muestras asociadas a una serie de tiempo de 7 parámetros autorregresivos (véase el texto para detalles). n noise( n n) Muestra x n 1 x1 = c1 = -3 2 x2 = c2 = 1 34 5 6 7
--
8
-2
x3 = c3 = 6 x4 = c4 = -8 x5 = c5 = -1 x6 = c6 = -4 x7 = c7 = 2 x8 = a1 x7 + a2 x6 + a3 x5 + a4 x4 + a5 x3 + a6 x2 + a7 x1 + noise(8)
9
-7
x9 = a1 x8 + a2 x7 + a3 x6 + a4 x5 + a5 x4 + a6 x3 + a7 x2 + noise(9)
10
3
x10 = a1 x9 + a2 x8 + a3 x7 + a4 x6 + a5 x5 + a6 x4 + a7 x3 + noise(10)
11
-5
x11 = a1 x10 + a2 x9 + a3 x8 + a4 x7 + a5 x6 + a6 x5 + a7 x4 + noise(11)
12
-7
x12 = a1 x11 + a2 x10 + a3 x9 + a4 x8 + a5 x7 + a6 x6 + a7 x5 + noise(12)
13
2
x13 = a1 x12 + a2 x11 + a3 x10 + a4 x9 + a5 x8 + a6 x7 + a7 x6 + noise(13)
14
0
x14 = a1 x13 + a2 x12 + a3 x11 + a4 x10 + a5 x9 + a6 x8 + a7 x7 + noise(14)
15
-4
x15 = a1 x14 + a2 x13 + a3 x12 + a4 x11 + a5 x10 + a6 x9 + a7 x8 + noise(15)
= − 2.8
= − 6.88
= − 9.852
= − 8.2258
= − 0.65693
= − 2.22364
= 3.45319
= − 1.2833
El Perceptrón producirá como salida un escalar x 'n generado precisamente por su sumatoria de salida: x 'n =
M
1 a ' x k
n−k
N ≥ n > M
(Ecuación 4.3.2)
k =
Donde a '1 , a '2 , ..., a ' M son tanto los pesos de la neurona como los parámetros autorregresivos que se buscarán. Dado que el escalar producido por la sumatoria es la salida de la neurona entonces podemos considerar que la Función de Activación usada es la Función Identidad. Claramente x 'n es un estimado que proporciona el Perceptrón para la T muestra xn dado el vector de entrada [ x xn-1 xn-2 … xn- M M ] . Durante el entrenamiento de la neurona se buscará ajustar los pesos a '1 , a '2 , ..., a ' M de tal forma que el error existente entre x 'n y xn se reduzca tanto como sea posible.
105
A rtificial Una Introducción al Cómputo Neuronal Artificial
xn
n 500
1000
1500
2000
Figura 4.18. Una serie de tiempo de 7 parámetros autorregresivos autorregresivos (véase el texto para detalles).
Plantearemos ahora un método de entrenamiento basado en Descenso Escalonado (Sección 3.3). Sea εn la diferencia existente entre el estimado de la muestra que proporciona la neurona y el valor esperado, es decir: εn = xn – x 'n
N ≥ n > M
(Ecuación 4.3.3) 4.3.3)
Dado que tenemos N muestras muestras entonces los vectores de entrada estarán dados por x M = cM x = c M −1 M −1 x M − 2 = cM − 2 , 1 = c1 x
xM +1 x =c M M xM −1 = cM −1 , 2 = c2 x
x M + 2 x M + 1 x M = cM , 3 = c3 x
xM +3 x M + 2 xM +1 , ..., 4 = c4 x
xN −1 x N − 2 xN −3 N − M x
106
Capítulo 4. El Perceptrón
Por lo tanto el conjunto de entrenamiento para el Perceptrón tendrá un tamaño N – M . El promedio de los errores al cuadrado ahora estará dado por por 1
MSE =
N
ε n2
N − M n = M +1
=
1
N
1 ( x
N − M n= M +
n
− x 'n )2
M x a x = − ' k n−k n N − M n = M +1 k =1
1
N
2
(Ecuación 4.3.4)
Tenemos pleno conocimiento de que es posible utilizar Mínimos Cuadrados a fin de minimizar la Ecuación 4.3.4, sin embargo el proceso será costoso ya que se requiere manipular todas las muestras al mismo tiempo. Para ello, definiremos a una serie de funciones que forman parte de la función de error MSE . Se define a la función MSE n como: como: MSE n = ε n2
= ( xn − x 'n ) 2
M = xn − a 'n ,k xn − k k =1
2
N ≥ n > M
(Ecuación 4.3.5)
Claramente esta función corresponde al error al cuadrado entre la muestra xn y su valor estimado x 'n . En este caso, a 'n ,1 , a 'n, 2 , ..., a 'n, M son los valores actuales de los pesos, y también los parámetros autorregresivos de la señal a estimar, en el Perceptrón al presentar el vector de entrada cuyos componentes son las muestras xn-1, xn-2, …, xn-M . Se calculará el vector gradiente de MSE n. Es decir, buscaremos: buscaremos: δ MSE n δ a ' n ,1 δ MSE n ∇ MSE n = δ a 'n,2 δ MSE n δ a ' n , M
107
A rtificial Una Introducción al Cómputo Neuronal Artificial
Determinemos la derivada parcial de la función MSE n respecto al j-ésimo parámetro autorregresivo a 'n, j : δ MSE n δ δ a 'n, j = δ a 'n , j
M n n k n k − a ' , x x − k =1
2
(Por la Ecuación 4.3.5)
M δ = 2 xn − a 'n,k xn − k k =1 δ a 'n, j
M Aplicación de Regla de x − a ' x n n, k n − k la cadena k =1
M δ = 2 xn − a 'n,k xn − k − k =1 δ a 'n , j
M
1 a ' ,
nk
k =
xn− k
El término xn es constante a respecto a ' n , j Todos los términos de la sumatoria son constantes excepto el j -ésimo
M δ = −2 xn − a 'n ,k xn− k a 'n, j xn − j k =1 δ a 'n , j
= −2 xn − x 'n xn− j
(Por la Ecuación 4.3.2)
( n xn− j = −2ε
(Por la Ecuación 4.3.3)
)
Concretizando: δ MSE n = −2ε n xn − j δ a 'n, j
(Ecuación 4.3.6) 4.3.6)
Tenemos los elementos para definir de manera precisa al vector gradiente de la función MSE n: δ MSE n δ a 'n ,1 −2ε n xn −1 xn −1 δ MSE n x −2ε n xn − 2 n ∇ MSE n = δ a 'n,2 = = −2ε n − 2 −2ε n xn − M x n−M δ MSE n δ a ' n , M
(Ecuación 4.3.7)
De acuerdo a la Teoría presentada en la Sección 3.3, el objetivo es minimizar a la función de error MSE ( ( Ecuación 4.3.4) al determinar el punto en el cual su gradiente es el vector cero, sin embargo, utilizaremos los estimadores, los vectores gradientes, MSE n.laDado proporcionados porsabemos, las funciones que para ello de se su requiere minimizar a MSE n entonces, como ya se utilizará dirección opuesta gradiente.
108
Capítulo 4. El Perceptrón
Sea a 'n el vector en M formado por los M pesos pesos del Perceptrón: a 'n,1 a 'n ,2 a ' n , M
a 'n =
(Ecuación 4.3.8)
El vector de pesos a 'n será actualizado mediante la regla: regla: a 'n +1 = a 'n + ∆a'n
(Ecuación 4.3.9)
Donde ∆a'n es el Término de Variación o Cambio en el vector de pesos a 'n y está dado por: por: xn −1 x ∆a'n = µ2εn n− 2 xn− M
(Ecuación 4.3.10)
Claramente el término ∆a'n nos indica la dirección de mínimo crecimiento de MSE n. La constante µ fue introducida en la Sección 3.3 como la proporción del vector gradiente de la función MSE n que se utilizará para actualizar al vector de pesos. Su función es la acelerar el acercamiento del vector de pesos actual, o en términos formales su convergencia, al vector de pesos óptimos de la función MSE (Ecuación 4.3.4). Dado que la elección de µ tiene dellamará iteraciones que el método de entrenamiento efectuará, es que ainfluencia partir de sobre ahoraela número éste se le Coeficiente de Aprendizaje . Este nombre viene del hecho de que buena elección de µ inducirá un rápido aprendizaje por parte de la neurona, pero por otro lado, también puede provocar que ésta aprenda muy lentamente del conjunto de entrenamiento y por tanto requiera un número considerable de presentaciones. En el Algoritmo 4.1 se implementa el método de Descenso Escalonado para el entrenamiento de una neurona de tipo Perceptrón. El algoritmo recibe 6 entradas: • Un arreglo x que contiene las N muestras muestras asociadas a la serie de tiempo. • Un entero M que indica el número de parámetros autorregresivos a determinar en la serie de tiempo dada. • El Coeficiente de Aprendizaje µ. Por lo regular es un valor en el intervalo (0, 1). • El número T de de presentaciones del conjunto de entrenamiento a efectuar. • Un entero nInt que se usará para actualizar al Coeficiente de Aprendizaje.
109
A rtificial Una Introducción al Cómputo Neuronal Artificial
Algoritmo 4.1. Implementación del método de Descenso Escalonado para el entrenamiento de un Perceptrón y determinación de Parámetros Autorregresivos en una señal.
Procedure TrainPerceptron (Integer N N , Array x x[1, …, N ], ], Integer M M , Real µ, Integer T, Integer nInt ) // Se inicializa inicializa el vector de pesos con con valores aleatorios aleatorios en en (-1, 1). a = new Array[1,…, M M ] for i = 1 until M M do
a[i] = Random( ) end-of-for
for i = 1 until T do Integer n = M + + 1 while n ≤ N N do // calcul calcula valoractuales pruales proporciona oporcionado por la xneurona neurona // Se usando loas el los pesos act y las do muestras muestras n-1 , xn-2 , …, xn-M . Real x ' = 0 M do for k = 1 until M x’ = x’ + a[k] * x[n – k]
end-of-for Real εn = x[n] – x ' // Se calcula calcula el cambio cambio o variación variación a aplicar aplicar // sobre el vector vector de pesos. pesos. ∆ = new Array[1,…, M M ] for k = 1 until M M do ∆[k] = 2 * µ ∗ εn * x[n - k]
end-of-for // Se obtiene obtiene el nuevo vector vector de pesos. pesos. for k = 1 until M M do
a[k] = a[k] + ∆[k] end-of-for // Se determina determina si µ debe ser actualizado. if n n mod nInt = = 0 then
µ = µ / 1.01
end-of-if n=n+1 end-of-for
110
Capítulo 4. El Perceptrón
// Se calcula MSE MSE . Real MSE = 0 for n = M + 1 until N N do 0 M Real for k x= '1=until M do x’ = x’ + a[k] * x[n – k] end-of-for MSE = MSE + Pow( x x[n] – x ' , 2) end-of-for MSE = MSE / ( N N – – M ) Print(MSE) Print(µ) end-of-while // Se retorna el vector de pesos final. final.
return a end-of-procedure
Veamos como es que procede el Algoritmo 4.1. En primer lugar, se inicializa el vector de pesos a con valores aleatorios tomados del intervalo (-1, 1). Después se tiene el ciclo for principal que se encarga de controlar las T presentaciones del conjunto de entrenamiento. Dentro de esta estructura de repetición encontramos un ciclo while que controla la presentación de los vectores de entrada al Perceptrón y de la actualización del vector de pesos a. En párrafos anteriores mencionamos que a la neurona se le presentan vectores de entrada de tamaño M . Sin embargo, nuestra implementación, por cada iteración del ciclo while, forma una subsecuencia de M muestras consecutivas las cuales toma del vector de entrada x. Cada una de esas M muestras muestras es multiplicada por su correspondiente peso, el cual se toma del vector a. Finalmente los M productos productos obtenidos se suman. Es claro que hemos implementado la Ecuación 4.3.2. Contamos entonces con la salida proporcionada por la neurona: x’. Se calcula el error εn mediante la diferencia de la salida de la neurona con la muestra esperada, la cual se encuentra en el arreglo de entrada x en la posición n. Ahora se calcula el cambio o variación a aplicar sobre el vector de pesos. Para ello se requiere usar la misma subsecuencia de M muestras muestras que se presentaron a la neurona. Cada uno de sus componentes es multiplicado por 2, el coeficiente de aprendizaje y el error εn. El resultado, en la implementación, es almacenado en el arreglo ∆. Por ultimo, a cada elemento del vector de pesos a le es sumado su correspondiente elemento del vector ∆. Con ello se obtiene un nuevo vector de pesos. Mencionamos que el objetivo del Coeficiente de Aprendizaje µ es el de permitir la aceleración de la convergencia del vector de pesos. Uno de los parámetros de entrada del
Algoritmo 4.1 es precisamente µ. Este valor de entrada se considerará de hecho un
111
A rtificial Una Introducción al Cómputo Neuronal Artificial
Coeficiente de Aprendizaje inicial ya que conforme avance la ejecución de algoritmo éste se irá modificando. Las modificaciones a aplicar harán que el valor de µ disminuya progresivamente. Justifiquemos esta manera de proceder. Recordemos primeramente que el lugar geométrico descrito por las funciones MSE n (Ecuación 4.3.5), y de hecho también por MSE (Ecuación la ), es un en hiperparaboloide enpesos el espacio 4.3.44.1 ( M M +1)-Dimensional. +función 1)-Dimensional. El Algoritmo genera primer lugar uninmerso vector de inicial con valores aleatorios. Este vector de pesos puede verse como un punto en el dominio tanto de MSE n como de MSE . Cuando éste se evalúa es que entonces nos colocamos en algún punto del espacio M +1 y que de hecho forma parte de la hipersuperficie del hiperparaboloide. Ahora bien, estableceremos la suposición de que el punto en el que nos encontramos se encuentra alejado del único mínimo global. A partir de este momento, se utiliza la regla de actualización de pesos ( Ecuación 4.3.9). En el momento en que el vector de pesos es actualizado es que entonces estamos posicionados en otro nuevo punto sobre la hipersuperficie. La idea es que mientras supongamos que estamos alejados del mínimo global tendremos que aplicar un coeficiente de aprendizaje con un valor inicial “alto” que nos permita acercarnos rápidamente al mínimo. Es claro que después de varias iteraciones podríamos suponer que llegamos a una situación en la que ya nos encontramos lo suficientemente cerca del mínimo global. Sin embargo, el seguir usando el coeficiente de aprendizaje inicial podría ser contraproducente ya que en lugar de permitir que nos acerquemos cada vez más, podríamos estarnos alejando. Es aquí donde se debe actualizar a µ, con un valor más pequeño que el que tenía inicialmente, a fin de que las actualizaciones del vector de pesos, y por lo tanto los posicionamientos sobre el hiperparaboloide, sean cada vez más precisos en términos de su progresivo acercamiento al mínimo global. El Algoritmo 4.1 implementa el proceso antes mencionado utilizando también el valor de entrada nInt . Este valor determina un intervalo, de acuerdo al número de iteraciones efectuadas por el ciclo while, en el cual el valor de µ se conserva. Después de nInt iteraciones del ciclo while éste se actualiza. Su valor se reduce al dividirlo, en nuestra implementación, por 1.01.
Una vez que el Algoritmo 4.1 termina la ejecución del ciclo while, se procede a calcular el valor de la función MSE ( (Ecuación 4.3.4) usando los pesos actuales en el vector a y el conjunto de entrenamiento en el vector de entrada x. Este cálculo es únicamente con fines de medir el desempeño de la neurona una vez que se ha efectuado una presentación del conjunto de entrenamiento. Cuando las T presentaciones presentaciones del conjunto de entrenamiento han sido ejecutadas, el Algoritmo 4.1 finaliza su ejecución retornando los últimos valores para los pesos, los cuales se encuentran en el vector a.
Aplicaremos el método de Descenso Escalonado, implementado en el Algoritmo 4.1, para entrenar a un Perceptrón de manera que sus pesos correspondan con los 7 parámetros autorregresivos de la serie de tiempo presentada en la Figura 4.18. Como
sabemos, tal serie fue generada usando la Ecuación 4.3.1 y los siguientes valores:
112
Capítulo 4. El Perceptrón
• • • •
M = = 7 a1 = -0.15 a2 = 0.1 a3 = -0.3
• • • • • • • • • • • •
a4 = -0.2 a5 = -0.1 a6 = -0.5 a7 = 0.3 c1 = -3 c2 = 1 c3 = 6 c4 = -8 c5 = -1 c6 = -4 c7 = 2 noise(n) ∈ {-7, -6, -5, …, 5, 6, 7}
• N = 2,000 muestras.
Las 2,000 muestras serán guardadas en el arreglo de entrada x. El Perceptrón únicamente recibirá la información asociada a tales muestras (véase la Figura 4.19). Ahora bien, para la ejecución del Algoritmo 4.1, establecemos los siguientes valores de entrada: • µ = 0.0003 • nInt = = 500 • T = = 100 Es decir, el conjunto de entrenamiento será presentado 100 veces. Se tendrá un coeficiente de aprendizaje inicial µ = 0.0003 el cual será actualizado cada 500 iteraciones del ciclo while en el Algoritmo 4.1. Una vez finalizada la ejecución del algoritmo esperaremos, idealmente, que para los pesos a '1 a a '7 en la neurona se tenga: • a '1 ≈ a1 = -0.15 • a '2 ≈ a2 = 0.1 • a '3 ≈ a3 = -0.3 • a '4 ≈ a4 = -0.2 • a '5 ≈ a5 = -0.1 • a '6 ≈ a6 = -0.5 • a '7 ≈ a7 = 0.3
La Tabla 4.5, junto con las Figuras 4.20 y 4.21, describen el desempeño de la neurona y la evolución del coeficiente de aprendizaje conforme se van efectuando las presentaciones del conjunto de entrenamiento. Recordemos que el desempeño se mide en función del resultado proporcionado por la función MSE (Ecuación 4.3.4). Nótese como es
Ecuación 4.3.4 altos: se inicia que de la primer a la quinta presentación los valores de MSE son bastante son
113
A rtificial Una Introducción al Cómputo Neuronal Artificial
con 2.90865 × 1017 y se termina en 381,223. Para este intervalo el valor de µ inició en 0.0003 (el valor de entrada) y terminó en 0.000245863. En las presentaciones del conjunto de entrenamiento 10 a 40 el desempeño del Perceptrón mejora considerablemente ya que MSE se se ubicó entre 30 y 20. En la presentación 40 el Coeficiente de Aprendizaje µ tiene valor 0.0000610522, es decir, eleshecho 4.9138 pequeño queaplicadas su valora original de entrada. Esto viene a sustentar de veces que lasmás modificaciones µ permiten un ajuste cada vez más preciso del vector de pesos. A partir de la presentación 50 se observa que el error MSE está está por debajo de 20. Una vez finalizada la presentación 100 del conjunto de entrenamiento se tiene el error final MSE = 18.5939. El Coeficiente de Aprendizaje termina con valor final µ = 0.00000560495: el cual es 53.5231 veces más pequeño que el valor original 0.0003. a1' Xn-1
a2' Xn-2
a3'
s a d a r t n E
Xn-3
a4' Xn-4 '
a5
'
xn =
7
1 a x '
k
k =
n−k
a d i xn l a S
'
Xn-5 '
a6 Xn-6 '
a7 Xn-7
Figura 4.19. Representación esquemática del Perceptrón que se utilizará para determinar los Parámetros Autorregresivos en una Señal de Séptimo Orden (Véase el texto para detalles).
Una vez finalizada la ejecución del Algoritmo 4.1 tenemos los siguientes pesos en la neurona que de hecho son los parámetros autorregresivos identificados: • a '1 = -0.165747 • a '2 = 0.0845436 • a '3 = -0.27829 • a '4 = -0.17541 • a '5 = -0.116675 • a '6 = -0.495401 • a '7 = 0.28155
Comparémoslos Figura 4.18: ahora con los parámetros utilizados para generar la serie de tiempo de la
114
Capítulo 4. El Perceptrón
• a1 - a '1 = -0.15 – (-0.165747) = 0.015747 • a2 - a '2 = 0.1 – 0.0845436 = 0.0154564 • a3 - a '3 = -0.3 – (-0.27829) = -0.02171 • a4 - a '4 = -0.2 – (-0.17541) = -0.02459 • a5 - a '5 = -0.1 – (-0.116675) = 0.016675 • a6 - a '6 = -0.5 – (-0.495401) = -0.004599 • a7 - a '7 = 0.3 – 0.28155 = 0.01845
Lo que en consecuencia nos dice que el promedio de los errores al cuadrado existente entre los parámetros reales y aquellos identificados durante el entrenamiento del Perceptrón es 0.000314638. Ello implica que hemos obtenido aproximaciones bastante cercanas a las esperadas. Tabla 4.5. Desempeño del aprendizaje de un Perceptrón entrenado mediante Descenso Escalonado y el Algoritmo 4.1 (véase el texto para detalles). T -ésima -ésima Presentación N 1 2
Conjunto de del Entrenamiento 1 2 3 4 5 10 20 30 40 50 60 70
MSE = N − M n M ε n = +1
2.90865 × 1017 1.42666 × 1015 7.17163 × 1012 2.07356 × 108 381,223 26.2274 22.5903 20.9588 20.0612 19.5134 19.1554 18.9167
0.000288294 0.000277045 0.000266235 0.000255846 0.000245863 0.000201496 0.000135335 0.0000908984 0.0000610522 0.0000410059 0.0000275418 0.0000184985
80 90 100
18.7727 18.6672 18.5939
0.0000124246 0.00000834501 0.00000560495
µ
Los pesos identificados a '1 a a '7 se utilizan para generar la señal correspondiente. Para este fin se utilizará la siguiente fórmula: fórmula: ck si n = k , k ∈ {1, 2, ..., M } M x 'n = a ' x s i N ≥ n > M k n − k k =1
(Ecuación 4.3.11)
Nótese la similitud de ésta con la Ecuación 4.3.1, la cual fue utilizada para generar la serie M
de tiempo original (Figura 4.18). En el caso actual, las muestras, para obtener al estimado x 'n , son tomadas del conjunto de entrenamiento. Ello implica que de hecho la
115
A rtificial Una Introducción al Cómputo Neuronal Artificial
sumatoria usada para generar a x 'n es la sumatoria de salida del Perceptrón. Por esa misma razón hemos omitido el término de ruido o perturbación ya que la neurona fue entrenada con muestras a las cuales ya se les había aplicado la función noise(n). Finalmente, agregamos el hecho de que la Función de Activación utilizada fue la Función Identidad. Por tanto, el caso cuando N ≥ n > M en la Ecuación 4.3.11 no haceT más que enviar como entrada al Perceptrón el vector [ x xn-1 xn-2 xn-3 … xn- M M ] y obtener la salida correspondiente x 'n . La Figura 4.22 muestra la señal generada al aplicar el Perceptrón bajo la Ecuación 4.3.11. En la Figura 4.23 se presenta la señal generada por el Perceptrón (en gris) sobrepuesta con la señal original (en negro). Debido a que los parámetros autorregresivos identificados cuentan con errores respecto a los originales, es que es fácil detectar pequeñas diferencias entre las señales. Sin embargo, es también claro que el error es en realidad pequeño. MSE 28
26
24
22
20
20
40
60
80
100
T
Figura 4.20. Evolución del valor MSE ( (Ecuación 4.3.4) a lo largo de las T = = 100 presentaciones del conjunto de entrenamiento para un Perceptrón entrenado mediante el Algoritmo 4.1 (Véase el texto para detalles).
116
Capítulo 4. El Perceptrón
µ
0.0003
0.00025
0.0002
0.00015
0.0001
0.00005
20
40
60
80
100
T
Figura 4.21. Evolución del Coeficiente de Aprendizaje µ a lo largo de las T = = 100 presentaciones del conjunto de entrenamiento para un Perceptrón entrenado mediante el Algoritmo 4.1 (Véase el texto para detalles).
En la Sección 4.2 reconocimos a las limitaciones del Perceptrón en términos del número de problemas que es capaz de modelar y resolver. Sin embargo, esta Sección ha presentado una aplicación interesante para la cual se ha proporcionado una solución, la cual si bien es aproximada, es bastante cercana a la óptima. Al mismo tiempo, hemos presentado un mecanismo de ajuste de pesos basado en el método de Descenso Escalonado. Es evidente que las operaciones aplicadas son realmente sencillas: sumas, restas y multiplicaciones. Por ello contamos con una unidad de cómputo neuronal cuya implementación algorítmica es realmente simple, tal como lo muestra el Algoritmo 4.1. En los siguientes dos Capítulos comenzaremos a considerar el uso de más de una neurona, lo cual da a lugar a la especificación de Redes Neuronales Artificiales y la solución de problemas mediante éstas. Será en ese punto cuando veamos que las limitaciones de una única neurona logran ser superadas al considerar varias neuronas para la solución de un problema.
117
A rtificial Una Introducción al Cómputo Neuronal Artificial
xn
n 500
1000
1500
2000
Figura 4.22. Serie de tiempo de 7 parámetros autorregresivos generada por un Perceptrón bajo la Ecuación 4.3.11 (véase el texto para detalles).
118
Capítulo 4. El Perceptrón
xn
n 500
1000
1500
2000
Figura 4.23. En color gris, la serie de tiempo presentada en la Figura 4.22. En color negro, la serie de tiempo presentada en la Figura 4.18 (véase el texto para detalles).
119
A rtificial Una Introducción al Cómputo Neuronal Artificial
120
Una Introducción al Cómputo Neuronal Artificial
5. La Red Madaline
A rtificial Una Introducción al Cómputo Neuronal Artificial
122
Capítulo 5. La Red Madaline
La Red Madaline ( Many Many Adaline Adaline) es una Red Neuronal Artificial formada por varias neuronas del tipo Adaline (Capítulo 3) las cuales se encuentran agrupadas en capas. En el Capítulo 1 comentamos que fue propuesta por Bernard Widrow en 1960. Existen varios mecanismos ajuste deRule los pesos lasfue neuronas que conforman a una Madaline. Uno de ellos para es la elMadaline II, lade cual originalmente propuesta por red Widrow junto con Rodney Winter en 1988. En la Sección 5.2 haremos mención de una metodología para el ajuste de pesos que toma algunos elementos de la Madaline Rule II. Por lo mientras, en la siguiente Sección describiremos las bases que forman el procesamiento de un vector de entrada para producir la correspondiente salida.
5.1 Estructura Básica Consideremos una red Madaline formada por 5 neuronas. Véase la Figura 5.1. Tal como comentamos previamente las neuronas estarán organizadas en capas. En el caso de la red que hemos definido en la Figura 5.1 tenemos la siguiente estructura: • Las neuronas 1 y 2 forman la Capa de Entrada. • Las neuronas 3 y 4 forman una Capa Interna o Capa Oculta. • La neurona 5 forma la Capa de Salida. Adaline 1
z1 = w1,0 +
x1
3
1 w1, x i
i
y1 = s ig ig n( z1 )
i=
z3 = w3,0
+ w3,1 y1 + w3, 2 y2
Adaline 3
y3 = s ig ig n( z3 ) z5 = w5,0
x2
+ w5,1 y3 Adaline 2
x3
z2 = w2 ,0 + 3
1 w2, x
i i
i=
y2 = s ig ig n( z2 )
z4 = w4 ,0
+ w4,1 y1 + w4, 2 y2
Adaline 4
+ w5,2 y4
Adaline 5
y5 = s ig ig n( z5 )
y5
y4 = s ig ig n( z4 )
Figura 5.1. Una red Madaline formada por 5 neuronas.
T La red de la Figura 5.1 recibirá como entrada un vector en 3 : [ x x1 x2 x3] . Los escalares x1, x2 y x3 se envían tanto a la neurona 1 como a la neurona 2. Sabemos, por la Sección 3.1, que las neuronas 1 y 2 producirán como salida los escalares y1 y y2 respectivamente. Ahora bien, los valores y1 y y2 formarán a su vez en un vector en 2 : T [ y y1 y2] . Este vector será enviado como entrada a las dos neuronas que forman la capa oculta. Las neuronas 3 y 4 producen entonces las salidas y3 y y4 respectivamente. De nueva cuenta formamos un vector en 2 cuyos componentes son los escalares y3 y y4. El vector [ y y3 y4]T es enviado como entrada a la única única neurona en la capa de salida, es decir, la neurona 5. Finalmente, la neurona 5 procesa sus entradas y produce la salida y5. Este escalar es de hecho la salida final que proporciona la red.
El proceso acabamos de describir, paradesde la redladecapa la Figura ser visto 5.1, puede como una serie de que mapeos de vectores que inicia de entrada. Ésta recibe un
123
A rtificial Una Introducción al Cómputo Neuronal Artificial
vector en 3 el cual es mapeado, por las neuronas 1 y 2, en un vector en 2 . Posteriormente este vector es mapeado en un nuevo vector, también en 2 , por la acción de las neuronas en la capa oculta. Finalmente, la única neurona en la capa de salida mapea a su vector de entrada en un vector en . En general, es claro entonces que la dimensionalidad va directamente en formada función por del mnúmero de neuronas presentes en cada de capalosde mapeos la red. Consideremos una red capas ocultas. Sean: • p: número de neuronas en la capa de entrada • n : número de neuronas en la -ésima -ésima capa oculta, 1 ≤ ≤ m. • q: número de neuronas en la capa de salida. Suponiendo que los vectores de entrada están en n tenemos entonces la siguiente secuencia de mapeos entre las capas de neuronas:
Capa de entrada
Primer capa oculta
n p n1
Segunda capa oculta
Tercer capa oculta
m -ésima
Capa de salida
capa oculta
n2
nm
q
q Considerando únicamente dimensionalidad dered losmapea vectores de entrada en la salida final, es que se la dice también que una vectores de yn adelos . vectores
Esta secuencia de mapeos de vectores entre las capas también nos permite determinar el número de conexiones existentes en la red. Dado que los n componentes del vector de entrada se propagan todos a las p neuronas en la capa de entrada es que entonces tenemos np conexiones. Sabemos que cada neurona en la capa de entrada contribuye con un escalar de salida de manera que en esta capa se forma un vector de p componentes. Este vector es propagado hacia todas las n1 neuronas que forman a la primera capa oculta. Por lo tanto se tienen pn1 conexiones entre la capa de entrada y la primera capa oculta. La -ésima -ésima capa oculta se forma por n neuronas. Las salidas de estas neuronas forman un vector de n componentes el cual a su vez es propagado a la siguiente capa oculta la cual se forma por n +1 +1 neuronas. El número de conexiones entre estas dos capas ocultas estará dado por n ⋅n +1 +1. Por último, se tiene que la última capa oculta se formará por nm neuronas. Sus salidas forman un vector de nm componentes los cuales son todos propagados hacia las q neuronas en la capa de salida. Se tienen entonces nmq conexiones. Sea CM (n, p, m, q, n1, …, nm) el número de conexiones presentes en una red Madaline. De acuerdo a la descripción anterior tendremos que:
m −1
CM ( n, p, m, q, n1 , …, nm ) = np + pn1 +
1 n ⋅n
+1
+ nm q
(Ecuación 5.1.1)
=
Por ejemplo, para la red Madaline de la Figura 5.1 tenemos que la Ecuación 5.1.1 nos indica que existen 12 conexiones:
CM ( 3, 2,1,1, 2 ) = 3 ⋅ 2 + 2 ⋅ 2 +
0
1 n ⋅n
+1
+ 2 ⋅1 = 6 + 4 + 0 + 2 = 12
=
124
Capítulo 5. La Red Madaline
5.2 Ajuste de Pesos en una Red Madaline En el Sistema Nervioso Central se tiene que los seres humanos no estamos conscientes funcionamiento de como las neuronas en las “capas ocultas” nuestranired neuronal en del procesos, por ejemplo, el aprendizaje. Realmente no sedeconocen se pueden interpretar las salidas proporcionadas por tales neuronas. En realidad, solo estamos conscientes de las entradas que recibe nuestra red, que pueden provenir de los órganos sensoriales por ejemplo, y de las salidas que ésta proporciona y que pueden percibirse al final como una acción ejecutada. En el caso de una Red Neuronal Artificial se presenta una situación similar ya que el aprendizaje de una red sólo se mide en términos de las entradas y las salidas finales. Las salidas de las neuronas en las capas de entrada y las capas ocultas no se interpretan, aunque si son accesibles y por ello mismo se aplican modificaciones a los pesos de estas neuronas ya que sus salidas contribuyen a los valores de las salidas finales de la red. Esta actualización de pesos es consistente, por ejemplo, con la Ley de Aprendizaje Hebbiano (Sección 1.2), sin embargo, desde el punto de vista biológico, realmente no sabemos de manera precisa en qué momento se dan las modificaciones entre las conexiones de las neuronas ni tampoco que tanto se refuerzan o debilitan éstas. éstas. A continuación describiremos una metodología, la cual está basada en la propuesta de Widrow y Winter para el ajuste de pesos en una red Madaline. Se trata de un método de entrenamiento inspirado en la Madaline Rule II. Veremos que en realidad es una metodología bastante intuitiva y por tanto fácil de comprender. Sin embargo, también veremos que pueden existir problemas con su eficiencia. Pero no por ello nos dejará de ser útil para comprender los retos y perspectivas presentes al momento de entrenar una red formada por más de una neurona. Por eso mismo la metodología a detallar es una buena introducción antes de proceder al Algoritmo de Retropropagación, el cual se discutirá en el siguiente Capítulo. Considérese el conjunto de entrenamiento de la Tabla 5.1. Éste será presentado a la red Madaline de la Figura 5.2. Tal red se forma por 5 neuronas tipo Adaline. Se reciben como entrada vectores en 2 . La salida final de la red está dada por un escalar. Dado que todas las neuronas envían el resultado de sus respectivas sumatorias de salida a la función sign, es que entonces, a partir de la capa de entrada, todos los vectores generados tienen sus componentes en {-1, 1}. Tabla 5.1. Conjunto de entrenamiento a presentar a una red Madaline. Salida Entrada Esperada x1 x2 d -2 0 1 -1 0 -1
01 2
11 3
1 -1 1
125
A rtificial Una Introducción al Cómputo Neuronal Artificial
z1 = w1,0
x1
+ w1,1 x1 + w1,2 x2
Adaline 1
z3 = w3, 0
y1 =
+ w3,1 y1
s ig ig n( z1 )
+ w3, 2 y2
Adaline 3
y3 = s ig ig n( z3 ) z5 = w5,0
z2 = w2,0
x2
+ w2 1, x1 + w2 ,2 x2
Adaline 2
z4 = w4 ,0
y2 =
+ w4,1 y1
s ig ig n( z2 )
+ w4, 2 y2
Adaline 4
+ w5,1 y3 + w5,2 y4
Adaline 5
y5 = s ig ig n( z5 )
y5
y4 = s ig ig n( z4 )
Figura 5.2. Una red Madaline formada por 5 neuronas que efectúa un mapeo de vectores en 2 a vectores (escalares) en . Tabla 5.2. Pesos iniciales de las neuronas en la red Madaline presentada en la Figura 5.2. w j,0 w j,1 w j,2 Neurona 1 0.5 -0.23 -0.3 Neurona 2 -0.16 -0.46 -0.26 Neurona 3 0.75 0.22 0.78 Neurona 4 0.37 -0.59 -0.28 Neurona 5 0.76 -0.96 0.38
Supongamos que las neuronas de la red de la Figura 5.2 cuentan con los pesos iniciales mostrados en la Tabla 5.2. Veamos que sucede cuando enviamos como entrada al primer vector en el conjunto de entrenamiento de la Tabla 5.1: x1 = -2, x2 = 0. Para éste se espera que la red proporcione la salida final d = 1. Como sabemos, el vector es recibido inicialmente por las neuronas en la capa de entrada, es decir, los Adalines 1 y 2. Determinemos sus correspondientes salidas: • Neurona 1: o z1 = -2(-0.23) + 0(-0.3) + 0.5 = 0.96 o y1 = sign(0.96) = 1 • Neurona = -2(-0.46) + 0(-0.26) – 0.16 = 0.76 o z22:
o
y2 = sign(0.76) = 1
y 1 Esto da lugar a la generación del vector 1 = . Éste ahora es enviado como entrada a y 1 2
las neuronas 3 y 4 que forman la única capa oculta: • Neurona 3: o z3 = 1(0.22) + 1(0.78) + 0.75 = 1.75 o y3 = sign(1.75) = 1 • Neurona 4: o z4 = 1(-0.59) + 1(-0.28) + 0.37 = -0.5 o y4 = sign(-0.5) = -1
126
Capítulo 5. La Red Madaline
y 1 Por ultimo, el vector generado por las salidas de la capa oculta, 3 = , se envía a la y −1 4
única neurona en la capa de salida: • Neurona o z55: = 1(-0.96) + -1(0.38) + 0.76 = -0.58
y5 = sign(-0.58) = -1 En este punto nos es claro que la red proporciona una salida diferente a la esperada. Se deberá efectuar un ajuste de pesos de manera que para el vector de entrada [-2 0]T se obtenga la salida d = = 1. o
Veamos como es que nuestra metodología procede para ajustar los pesos de la red de la Figura 5.2 de tal forma que para la entrada [-2 0]T se obtenga la salida d = 1. En primer lugar debemos considerar que las neuronas a ajustar serán aquellas en las capas ocultas y de salida, y en particular, se inicia con las neuronas en la capa oculta. Considérense las neuronas 3 y 4 de la Figura 5.2, suponemos que sus pesos son los presentados en la Tabla 5.2. Sea S el conjunto dado por: por:
S = w j ,0 +
2
1 w , y ji
i=
i
: j = 3, 4
(Ecuación 5.2.1)
Es decir, S se forma por los valores absolutos de las Sumatorias de Salida, sin aplicar la función sign, de las neuronas 3 y 4. El vector que se les envía es el vector generado por la capa de entrada una vez que ha procesado al vector de entrada en cuestión, es decir, el vector [-2 0]T . Por lo tanto, específicamente S tendrá tendrá los siguientes valores: S = = {1.75, 0.5} S Ahora bien, se seleccionará capade oculta, cuyo valor el más pequeño. Tenemos que, paraaquella nuestroneurona, ejemplo,deselatrata la neurona 4. Laenidea sea es ajustar primero los pesos a las neuronas cuyos valores absolutos de sus Sumatorias de Salida sean cercanos al cero. Debido a que las Sumatorias de Salida de estas neuronas son pequeñas en comparación con las de las neuronas restantes en la capa, también será más sencillo modificar sus pesos. De hecho, el objetivo es que la neurona seleccionada invierta su salida. Si la neurona proporcionó una salida 1 (-1), entonces se espera que su contribución a la solución del problema mejore, y en particular a obtener la salida final de la red correcta, al hacer que su salida ahora sea -1 (1). Asignemos los siguientes nuevos pesos a la neurona 4: • w4,0 = -0.39 • w4,1 = 0.58 • w4,2 = -0.60 Veamos en primer lugar si la salida de la neurona se invierte, para ello le enviamos el
vector generado porT la capa de entrada al procesar al vector en el Conjunto de Entrenamiento [-2 0] :
127
A rtificial Una Introducción al Cómputo Neuronal Artificial
• z4 = 1(0.58) + 1(-0.60) - 0.39 = -0.41 • y4 = sign(-0.41) = -1
Es claro que la salida no se invirtió. Se asignan los nuevos pesos: • w4,0 = 0.9017 • w4,1 = -0.71 • w4,2 = 0.97
Se verifica si la salida se ha invertido: • z4 = 1(-0.71) + 1(0.97) + 0.9017 = 1.1617 • y4 = sign(1.16) = 1 Los nuevos pesos efectivamente permiten que la salida de la neurona 4 ahora sea igual a 1. Usando a éstos, se recalcula la salida final de la red y se verifica si se obtiene la salida correcta d = 1. El vector de entrada para la neurona 5 será ahora [1 1]T cuyo segundo componente es precisamente la nueva salida de la neurona 4: • z5 = 1(-0.96) + 1(0.38) + 0.76 = 0.18 • y5 = sign(0.18) = 1 Con el reajuste de pesos aplicado a la neurona 4 hemos obtenido la salida esperada para el 2 = 0. Por lo tanto esta neurona preserva sus nuevos pesos. En la x1 = -2, vector 5.3 de entrada Tabla se presentan los xpesos actuales de la red Madaline de la Figura 5.2.
Tabla 5.3. Pesos de las neuronas en la red Madaline presentada en la Figura 5.2 una vez que se ha aplicado un ajuste sobre la neurona 4 (Véase el texto para detalles). w j,0 w j,1 w j,2 0.5 -0.23 -0.3 Neurona 1 Neurona 2 -0.16 -0.46 -0.26 0.22 0.78 Neurona 3 0.75 Neurona 4 0.9017 -0.71 0.97 Neurona 5 0.76 -0.96 0.38
La idea ahora es presentar a la red un nuevo vector de entrada. En el caso en que dado un vector de entrada la red proporcione la salida correcta entonces es obvio que no se aplicará ninguna modificación. Si por otro lado, se obtiene salida final incorrecta y a todas las neuronas en la capa oculta se les ha invertido su salida sin obtener la salida final esperada, entonces se procede a efectuar modificaciones de pesos en las neuronas de la siguiente capa oculta. Si todas las capas ocultas han sido procesadas sin obtener la salida final correcta, entonces se procede a modificar los pesos de las neuronas en la capa de salida. Procedamos a describir el mecanismo para el entrenamiento de una red Madaline. Sea h un índice para enumerar las capas de la red de manera que tomará valores desde 1 hasta m+1, donde m es el número de capas ocultas. Si h = m+1 entonces estamos haciendo referencia a la capa de salida; si 1 ≤ h ≤ m entonces hacemos referencia a la
h-ésima
X 1 X 2, …, X N los vectores de entrada en el conjunto capa oculta. Sean los vectores de entrenamiento. Considérese al i-ésimo ,vector de entrada, X i, 1 ≤ i ≤ N N . X i es presentado a
128
Capítulo 5. La Red Madaline
la red y se obtiene la correspondiente salida final. Asumamos que la salida de la red con X i es incorrecta. Se procede a recorrer cada una de las capas de la red comenzando desde la primer capa oculta, h = 1, hasta la capa de salida, h = m+1. Para cada Adaline j en la h-ésima capa de la red actualmente procesada se calcula: ( j ) = w j ,0 + w j ,i yi
(Ecuación 5.2.2)
i =1
Ahora, sea S el el conjunto de valores A( j j) ordenados de manera ascendente. Procesaremos a cada elemento de S de de manera secuencial. Consideremos a la neurona Adaline asociada al elemento A( j j) de S actualmente actualmente procesado. Se modifican los pesos de la neurona de manera que su salida se invierta. Se recalcula nuevamente la salida de la red cuando X i le es presentado: • Si la salida final de la red es ahora correcta entonces se fijan los nuevos pesos a la neurona de manera definitiva, las restantes neuronas de la capa actual y las restantes capas de la red ya no son consideradas. Se procede a presentar al siguiente vector de X i+1. • entrada: Si la salida de la red sigue siendo incorrecta entonces a la neurona actual le son
reasignados sus pesos originales. Se analizan las restantes neuronas de la capa actual y de las siguientes capas de la red hasta encontrar una neurona que al invertir su salida permita que la red proporcione la salida correcta. Veamos algunas propiedades y conceptos asociados al procedimiento que acabamos de describir. En primer lugar, aquella neurona a la cual se le ha invertido su salida, y además hace que la red proporcione la salida final correcta, se le denotará, tal y como establecieron Windrow y Winter en la Madaline Rule II, Neurona de Disturbancia Mínima. Nótese que es posible que al invertir la salida de una neurona se obtenga la salida esperada para el vector de entrada actual. Pero también es posible que debido a este cambio otros vectores en el conjunto de entrenamiento dejen de ser reconocidos. Consideremos nuevamente a la red presentada en la Figura 5.2. Dados los pesos iniciales de la Tabla 5.2 y el vector de entrada [-2 0]T determinamos que la neurona de disturbancia mínima era la neurona 4 ubicada en la primer, y única, capa oculta. Al invertir la salida de esta neurona obtuvimos la salida correcta por parte de la red. Ahora bien, de acuerdo a la Tabla 5.1 el siguiente vector a presentar es [-1 0]T . Para éste se espera que la red proporcione como salida d = = -1. Usando los pesos de la Tabla 5.3 tenemos que la red procesa a [-1 0]T como sigue: • Neurona 1:
z1 = -1(-0.23) + 0(-0.3) + 0.5 = 0.73 y1 = sign(0.73) = 1 • Neurona 2: o o
o o
z2 = -1(-0.46) + 0(-0.26) – 0.16 = 0.3 y2 = sign(0.3) = 1
129
A rtificial Una Introducción al Cómputo Neuronal Artificial
• Neurona 3:
z3 = 1(0.22) + 1(0.78) + 0.75 = 1.75 y3 = sign(1.75) = 1 • Neurona 4: o o
4 1(-0.71) + 1(0.97) + 0.9017 = 1.1617 z y4 = = sign(1.1617) = 1 • Neurona 5: z5 = 1(-0.96) + 1(0.38) + 0.76 = 0.18 y5 = sign(0.18) = 1 Lo cual nos indica que se tiene una salida final incorrecta. De acuerdo a la manera de proceder previamente establecida, la primera neurona cuyos pesos se modificarán será nuevamente la neurona 4. Su salida debe ser invertida. Consideremos los siguientes nuevos pesos (que no son más que aquellos presentados en la Tabla 5.3 pero con signo opuesto): • w4,0 = -0.9017 • w4,1 = 0.71 • w4,2 = -0.97 Ahora se tiene que: • z4 = 1(0.71) + 1(-0.97) - 0.9017 = -1.1617 • y4 = sign(-1.1617) = -1 Y para la neurona en la capa de salida: • z5 = 1(-0.96) + (-1)(0.38) + 0.76 = -0.58 • y5 = sign(-0.58) = -1 Lo cual hace que para el vector de entrada [-1 0]T ya se cuente con su correspondiente salida correcta. El problema ahora es que para el vector [-2 0]T la red ha dejado de proporcionar la salida esperada d = = 1. o o
o o
El ejemplo anterior nos proporciona evidencia de que es factible que una Neurona de Disturbancia Mínima pueda permitir el aprendizaje de algunos vectores de entrada, pero también puede hacer que otros vectores que ya habían sido reconocidos por la red dejen de serlo. Paracada ello, una en vezel identificada la Neurona dea la Disturbancia Mínima, presentar unoesdeposible, los vectores conjunto de entrenamiento red y contabilizar el número de vectores de entrada para los que se obtiene una salida incorrecta. Si el número de vectores no reconocidos aumenta respecto al número que se tenía antes de modificar los pesos de la neurona, entonces los pesos originales de tal neurona son restaurados y se busca otra neurona en la capa actual y en las capas restantes, si es necesario. La idea de esta modificación es forzar a que se busque una Neurona de Disturbancia Mínima que permita el mayor aprendizaje posible. Sin embargo se debe aceptar entonces un compromiso respecto a la eficiencia del algoritmo. Sea nh el número de neuronas en la capa h, 1 ≤ h ≤ m + 1. Entonces, en el peor de los casos, para la h-ésima capa se tendrían que determinar, a lo más, nh N ⋅ N salidas salidas finales de la red. Nótese que el enfoque para lograr el aprendizaje que se ha planteado se basa en la
idea de identificar a una neurona “culpable”. Se parte del principio de que existe una neurona en las capas ocultas o de salida que hace que para el vector de entrada actual la red
130
Capítulo 5. La Red Madaline
no proporcione la salida correcta. Precisamente la neurona “culpable” es la Neurona de Disturbancia Mínima. Sin embargo este razonamiento abre las posibilidades de considerar la existencia de más de una neurona “culpable”. Intuitivamente se entiende que pueden existir problemas en los cuales para algunos vectores de entrada se deban aplicar correcciones los pesos dos o más neuronas mismo tiempo. aY la de vez hecho, posible modificar el en proceso antesde descrito a fin de queal se identifiquen dosesneuronas “culpables”. Cada neurona puede estar en una capa diferente. Una vez que dos neuronas han sido seleccionadas se modifican sus pesos de manera que se inviertan sus salidas y se verifica la salida final de la red. Esto abre más posibilidades ya que también es posible, por lo tanto, identificar a la vez tripletas, cuartetos, quintetos, etc. de neuronas “culpables”. El punto fundamental, al considerar tales subconjuntos de neuronas, es que debe elegirse de todos los posibles subconjuntos aquel que maximice el aprendizaje de la red de manera que al modificar sus pesos el número de vectores de entrada correctamente reconocidos aumente respecto al número que se tenia previo a la modificación. Sea M el el número total de neuronas en las capas ocultas y de salida en una red Madaline:
M = q +
m
1 n
(Ecuación 5.2.3)
=
Recordemos que q es el número de neuronas en la capa de salida y n es el número de neuronas en la -ésima -ésima capa oculta, 1 ≤ ≤ m. El número de subconjuntos de k neuronas tomadas del conjunto formado por las M neuronas neuronas en las capas ocultas y de salida está dado
M : k
por el bien conocido Coeficiente Binomial M M ! = k k !( M − k ) !
(Ecuación 5.2.4)
Supongamos la situación extrema en que analizamos primero si una única neurona “culpable” es la que no permite proporcionar la salida correcta final de la red. Asumamos que no hemos logrado identificar la única Neurona de Disturbancia Mínima. Entonces procedemos a determinar si son dos las neuronas “culpables”. Asumamos nuevamente que la red no proporciona la salida final correcta. Ahora determinemos si son tres las neuronas “culpables”, y así sucesivamente. Ello implica que el número total de subconjuntos a analizar es a lo más: M M M M M M + + . . . + + . . . + =
(Ecuación 5.2.5)
1 2
k
M
k =1
k
131
A rtificial Una Introducción al Cómputo Neuronal Artificial
El Teorema del Binomio nos dice que el desarrollo de (a + b) M , donde a, b ∈ y M ∈ + ∪ {0 {0}} está dado por: M M − k k (a + b) = k a b k = 0 M
M
(Ecuación 5.2.6)
Haciendo a = 1 y b = 1 en el Teorema del Binomio tenemos el valor de la suma presentada en la Ecuación 5.2.5: M M M M M − k k M M k − 0 = k 1 1 − 1 = (1 + 1) − 1 = 2 − 1 (Ecuación 5.2.7) k =0 k =0 M
El índice inferior de la sumatoria asociada al Teorema del Binomio es k = = 0 y por tanto el M
coeficiente binomial correspondiente es el cual evidentemente denota al número de 0 subconjuntos de 0 elementos: 1. Dado que este término no nos es de utilidad es por ello que lo restamos al formar la Ecuación 5.2.7. = 16 neuronas en sus capas Por ejemplo, si contásemos con una red Madaline con M = ocultas y de salida entonces tendríamos que analizar a los más 2 M - 1 = 65,535 subconjuntos de neuronas “culpables” a fin de hacer que el vector de entrada actual sea reconocido correctamente sin afectar el desempeño actual de la red. En general, suponiendo que contamos con un conjunto de entrenamiento formado por N vectores de entrada entonces el número total de evaluaciones a efectuar durante el entrenamiento de la Red Madaline, en el peor de los casos, sería N ⋅(2 M – 1). Es claro que el enfoque basado en la determinación de un subconjunto de neuronas “culpables” nos genera un problema de índole combinatoria. La metodología que hemos descrito en esta Sección para el entrenamiento de una red Madaline, y la cual toma varios elementos de la Madaline Rule II, deja claros algunos retos que se deben superar si efectivamente se desea un ajuste bastante bueno de los pesos de las neuronas en la red a fin de que ésta solucione y modele un problema dado. Por el momento adelantamos, tal como se verá en el siguiente Capítulo, que una de las novedades del Algoritmo de Retropropagación radica en no buscar un subconjunto de neuronas “culpables”, sino que asume desde un principio que si un vector de entrada no es reconocido correctamente ello se debe a que todas las neuronas contribuyen a esa falla de reconocimiento. El error que existe entre la salida final de la red y la salida esperada es entonces distribuido y usado para ajustar los pesos de todas las neuronas. Pero antes de presentar el Algoritmo de Retropropagación, veremos, en la siguiente Sección, como es que una red Madaline es capaz de dar solución al problema del modelado de la compuerta
XOR.
132
Capítulo 5. La Red Madaline
5.3 Modelado de Funciones Booleanas Antes de abordar el modelado de la función XOR mediante una red Madaline, consideremos primero un procedimiento para determinar a una función Booleana al partir únicamente estadosdey de que xésta arroja para cada uno. Por ejemplo, sea f una función de quesus depende las los tresvalores variables 1, x2 y x3. Los valores que ésta proporciona para cada uno de sus 8 posibles estados son presentados en la Tabla 5.4. Tabla 5.4. Estados y salidas para una función Booleana de 3 variables. x1 x2 x3 f ( x x1, x2, x3) 1 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 0 0 0
La pregunta a plantear ahora es: ¿cómo se expresa a f en en términos de las variables x1, x2 y x3? El procedimiento a definir permitirá determinar a f como una función de las variables dadas y los bien conocidos conectivos de conjunción, disyunción y negación. Nótese que son tres los estados para las cuales f proporciona como valor 1. Éstos se presentan en la Tabla 5.5. Tabla 5.5. Estados para los cuales la función Booleana de la Tabla 5.4 tiene salida 1. x1 x2 x3 f ( x x1, x2, x3) 1 1 1 1 0 1 0 1 0 0 1 1
De la Tabla 5.5, considérese el estado (0, 0, 1). Los siguientes razonamientos deben ser sumamente claros: • Si x1 = 0 entonces ¬ x1 = 1. • Si x2 = 0 entonces ¬ x2 = 1. • Si x3 = 1 entonces (obviamente) x3 = 1. Recordemos que buscamos que con el estado (0, 0, 1) la función f proporcione proporcione el valor 1. Por lo tanto, si x1, x2 y x3 son iguales a 0, 0 y 1, respectivamente, entonces se tiene que la función Booleana ¬ x1 ∧ ¬ x2 ∧ xx3
arroja el valor 1. Esta función la construimos a partir de los consecuentes de las 3
condicionales que planteamos uniéndolas mediante el operador AND. De hecho, es fácil
133
A rtificial Una Introducción al Cómputo Neuronal Artificial
comprobar que con cualquier otro estado diferente de (0, 0, 1), la función anterior siempre proporciona el valor 0.
tomemos de la Tabla 5.5 el estado (0, 1, 0): • Si xAhora 1 = 0 entonces ¬ x1 = 1. • Si x2 = 1 entonces x2 = 1. • Si x3 = 0 entonces ¬ x3 = 1.
Tomemos los consecuentes de las tres condicionales anteriores y unámoslos mediante el operador de conjunción. Tenemos entonces la siguiente función Booleana: ¬ x1 ∧ x x2 ∧ ¬ x3
Tal función proporciona el valor 1 únicamente con el estado (0, 1, 0). Finalmente, consideremos el estado (1, 1, 1) de la Tabla 5.5. Procedemos tal y como lo hicimos con los dos estados anteriores: • Si x1 = 1 entonces x1 = 1. • Si x2 = 1 entonces x2 = 1. • Si x3 = 1 entonces x3 = 1. Construimos en consecuencia la siguiente función Booleana: x1 ∧ x x2 ∧ x x3
Claramente el estado (1, 1, 1) es el único que hace que la función proporcione el valor 1. A partir de los 3 estados con los cuales la función f de de la Tabla 5.4 arroja el valor 1 x1 x2 x3 hemos obtenidoNOT 3 funciones los operadores y AND: Booleanas expresadas en términos de las variables , y y • ¬ x1 ∧ ¬ x2 ∧ x x3 • ¬ x1 ∧ x x2 ∧ ¬ x3 • x1 ∧ x x2 ∧ x x3 Ahora uniremos a esas tres funciones Booleanas utilizado el operador OR, de manera que obtenemos una nueva función Booleana:
(¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3)
Recordemos que dos funciones Booleanas son Lógicamente Equivalentes si sus correspondientes tablas de verdad son iguales. Para la función f su tabla de verdad es precisamente la Tabla 5.4. Ahora calcularemos la tabla de verdad de la función que
acabamos de construir. Véase la Tabla 5.6.
134
Capítulo 5. La Red Madaline
x1 x2 x3
1 1 1 1 0 0 0 0
1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0
Tabla 5.6. Tabla de verdad asociada la función Booleana (¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3). (¬ x1 ∧ ¬ x2 ∧ x x3) ¬ x1 ∧ ¬ x2 ∧ x x3 ¬ x1 ∧ x x2 ∧ ¬ x3 x1 ∧ x x2 ∧ x x3 ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3 ) 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0
Es claro que ambas funciones arrojan los mismos valores para los mismos estados. Entonces podemos concluir que la función f (Tabla 5.4) es lógicamente equivalente a la x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3). Por lo tanto: función Booleana (¬ x1 ∧ ¬ x2 ∧ x f ( x x1, x2, x3) = (¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3)
(Ecuación 5.3.1)
Hemos ilustrado un procedimiento mediante el cual es posible obtener para cualquier función Booleana, dada únicamente su tabla de verdad, aquella función Booleana que le es lógicamente equivalente pero que estará dada en términos de sus variables involucradas y las compuertas lógicas AND, OR y NOT. Ahora consideremos la compuerta lógica XOR. Su correspondiente tabla de verdad se presenta en la Tabla 5.7. Tabla 5.7. Estados y salidas para la función Booleana XOR. x1 x2 x1 ⊗ x x2 0 0 0 01 1
10 1
11 0
Determinemos su correspondiente expresión en términos de las compuertas AND, OR y NOT. Son dos los estados para los cuales la función tiene valor 1 (Véase la Tabla 5.7): • (0, 1): Si x1 = 0 entonces ¬ x1 = 1. Si x2 = 1 entonces x2 = 1. Por lo tanto, para el estado (0, 1) se tiene la función Booleana ¬ x1 ∧ x x2. • (1, 0): Si x1 = 1 entonces x1 = 1. Si x2 = 0 entonces ¬ x2 = 1. Para el estado (1, 0) obtenemos la función Booleana x1 ∧ ¬ x2. Al conectar las dos funciones que obtuvimos mediante una disyunción se tiene:
(¬ x1 ∧ x x2) ∨ ( x x1 ∧ ¬ x2)
135
A rtificial Una Introducción al Cómputo Neuronal Artificial
Tal función Booleana no es más que la expresión de la compuerta XOR en términos de las compuertas AND, OR y NOT. Por lo tanto: x1 ⊗ xx2 = (¬ x1 ∧ x x2) ∨ ( x x1 ∧ ¬ x2)
(Ecuación 5.3.2)
En la Sección 4.2 comentamos que el modelado de la compuerta XOR representa el ejemplo clásico de un problema que es caracterizado como linealmente no separable. Por ello mismo, un único Perceptrón, e incluso una neurona tipo Adaline, no será capaz de representarlo en términos de un umbral Z ( x x1, x2) = 0, geométricamente una recta en el plano, que separe a los estados con salida 1 de los estados con salida 0. Sin embargo, la Ecuación 5.3.2, que expresa al XOR en términos de las compuertas AND, OR y NOT es interesante. Recordemos que las funciones Booleanas con una variable son todas linealmente separables, mientras que de aquellas con dos variables únicamente el XOR y XNOT no lo son. Es decir, la Ecuación 5.3.2 expresa a una compuerta lógica no linealmente separable en términos de compuertas que si son linealmente separables. Para tales compuertas podemos garantizar la existencia de sus correspondientes neuronas artificiales que las modelan adecuadamente. Esto tiene como consecuencia que una función Booleana puede ser modelada mediante una red neuronal usando neuronas que implementen efectivamente las funciones Booleanas “básicas” AND, OR y NOT. La forma en que se organizarán tales neuronas es especificada precisamente por el orden en que se aplicarán las conjunciones, disyunciones y negaciones. Ahora construiremos una red Madaline que modele a la compuerta lógica XOR. La red recibirá un vector de entrada formado por dos componentes. El vector será enviado en primer lugar a dos neuronas en la capa de entrada: una neurona implementa la función Booleana ¬ x ∧ xx mientras que la otra implementa la función x ∧ ¬ x (véase la Ecuación 1 que 2 hemos omitido el usar neuronas que implementen 1 2 el operador de 5.3.2). Nótese negación, sin embargo es posible hacerlo. Ahora bien, cuando las dos neuronas proporcionan sus correspondientes salidas se forma un nuevo vector, también de dos componentes, que es enviado a una neurona que modela al operador OR. Esta neurona de hecho proporciona la salida final de la red. Ello implica, por un lado, que tenemos una neurona en la capa de salida, y por otro lado, que nuestra red no cuenta con capas ocultas. Utilizaremos entonces una red Madaline de 3 neuronas para modelar al operador XOR. Dado que las neuronas a utilizar son de tipo Adaline, y por ende se utilizará la función sign, entonces para los estados ( x x1, x2) y para las salidas proporcionadas por las funciones Booleanas a utilizar reemplazaremos el valor 0 por el valor -1. Consideremos en
x1 ∧ ¬ x2. La Tabla 5.8 muestra cada uno de los estados primer lugar a lasalidas funciónesperadas Booleanapara de entrada y las éstos. En la Figura 5.3 se tiene la disposición de los
136
Capítulo 5. La Red Madaline
estados en el plano cuando sus valores son considerados coordenadas. Los puntos negros representan estados con salida -1 mientras que el único punto blanco representa al estado con salida 1. La sumatoria de salida de la neurona 1, que modelará la función x1 ∧ ¬ x2, está dada por Z 1( x x1, x2) = w1,0 + x1w1,1 + x2w1,2
(Ecuación 5.3.3)
Nuestro objetivo es determinar los valores de sus pesos w1,0, w1,1 y w1,2 de tal forma que la recta Z 1( x x1, x2) = 0 separe al punto blanco de los puntos negros. Además, queremos que Z 1(1, -1) sea un número positivo mientras que con el resto de los estados se obtenga un valor negativo. Esto es con la finalidad de que al aplicar la función sign se obtengan las salidas 1 o -1 tal como se tienen en la Tabla 5.8. En la Figura 5.3 se observa que una opción razonable es que la recta Z 1( x x1, x2) = 0 sea aquella que pase por los puntos (0, -1) y (1, 0). Por elementos bien conocidos de geometría analítica tenemos: 0 − (−1) 1(−1) − 0(0) + 1− 0 1− 0 ⇔ x2 = x1 − 1 ⇔ x1 − x2 − 1 = 0
x2 = x1
(Ecuación 5.3.4)
Es decir, tenemos que los valores de los pesos de la neurona 1 están dados por w1,0 = -1, T w1,1 = 1 y w1,2 = -1. El vector normal de la recta Z 1( x x1, x2) = x1 − x2 − 1 = 0 es [1 -1] . Éste apunta precisamente al punto blanco por lo que se satisface que Z 1(1, -1) > 0 mientras que para los puntos negros se tendrá que Z 1(1, -1) < 0. Contamos ya con una neurona Adaline que modela la función Booleana x1 ∧ ¬ x2. Tabla 5.8. Estados y salidas para la función Booleana x1 ∧ ¬ x2 (el valor 0 ha sido sustituido por -1). x1 x2 ¬ x2 x1 ∧ ¬ x2 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1
137
A rtificial Una Introducción al Cómputo Neuronal Artificial
1 (-1,1)
(1,1)
-1
1
(-1,-1)
(1,-1)
-1 Z1 (x 1, x 2) = 0
Figura 5.3. El umbral Z 1( x x1, x2) = 0 asociado a la neurona que modelará la función Booleana x1 ∧ ¬ x2.
Consideremos ahora a la función Booleana ¬ x1 ∧ x2. Sus estados y salidas se presentan en la Tabla 5.9. La Figura 5.4 presenta la disposición de los estados en plano (puntos blancos: estados con salida 1, puntos negros: estados con salida -1). Buscaremos los valores de los pesos para la sumatoria de salida de la neurona 2: Z 2( x x1, x2) = w2,0 + x1w2,1 + x2w2,2
(Ecuación 5.3.5)
La Figura 5.4 muestra que una opción es buscar la ecuación de la recta Z 2( x x1, x2) = 0 que pase por los puntos (-1, 0) y (0, 1): x2 = x1
0 −1
+
−1(1) − 0(0)
⇔ x2 =−x11 −+01
−1 − 0
⇔ x1 − x2 + 1 = 0
(Ecuación 5.3.6)
El vector normal de la recta obtenida es [1 -1]T . Éste apunta precisamente al estado (1, -1) cuya salida es -1. Requerimos que el vector normal apunte al único estado blanco. Para ello simplemente multiplicamos ambos lados de la ecuación de la recta por -1. Se tiene el nuevo lugar geométrico: − x1 + x2 − 1 = 0
(Ecuación 5.3.7)
De esta forma tenemos que los valores de los pesos de la neurona 2, que se encarga de
x2, son w2,0 = -1, w2,1 = -1 y w2,2 = 1. modelar la función Booleana ¬ x1 ∧ x
138
Capítulo 5. La Red Madaline
Tabla 5.9. Estados y salidas para la función Booleana ¬ x1 ∧ x x2 (el valor 0 ha sido sustituido por -1). x1 x2 ¬ x1 ¬ x1 ∧ x x2 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1
1 (-1,1)
(1,1)
-1
1
(-1,-1)
(1,-1)
-1 Z 2 (x 1 , x 2) = 0
Figura 5.4. El umbral Z 2( x x1, x2) = 0 asociado a la neurona que modelará la función Booleana ¬ x1 ∧ x x2.
Ahora requerimos una neurona Adaline que modele la compuerta lógica OR. Sus estados y salidas presentan en la(puntos la Tabla blancos: 5.10 mientras Figura 5.5 muestra disposición de los seestados en plano estadosque conlasalida 1, puntos negros: estados con salida -1). De nueva cuenta requerimos un umbral Z 3( y y1, y2) que separe a los estados blancos del único estado negro. Calculamos la ecuación de la recta que pasa por los puntos (-1, 0) y (0, -1): y2 = y1
−1 − 0 0(0) − (−1)(−1) + 0 − (−1) 0 − (−1)
⇔ y2 = − y1 − 1 ⇔ − y1 − y2 − 1 = 0
( Ecuación 5.3.8)
El vector normal de la recta está orientado hacia el punto negro, para el cual se desea una
salida negativa. Por lo tanto, multiplicamos la ecuación anterior por -1 y obtenemos la
139
A rtificial Una Introducción al Cómputo Neuronal Artificial
orientación deseada de manera que para todo punto blanco Z 3( y y1, y2) proporciona un valor positivo. Tenemos entonces que para la neurona 3 se tiene Z 3( y y1, y2) = y1 + y2 + 1
(Ecuación 5.3.9)
Tabla 5.10. Estados y salidas para la función Booleana OR (el valor 0 ha sido sustituido por -1). y1 y2 y1 ∨ y2 -1 -1 -1 -1 1 1 1 -1 1 1 1 1
1 (-1,1)
(1,1)
-1
1
(-1,-1)
(1,-1)
-1
Z (y , y ) = 0 3
1 2
Figura 5.5. El umbral Z 3( y y1, y2) = 0 asociado a la neurona que modelará la función Booleana OR.
Contamos con las tres neuronas requeridas para formar una red Madaline que modele la compuerta XOR. En párrafos anteriores ya habíamos planteado la manera en la cual estas deberían ser conectadas. Recordemos que x1 ⊗ x2 = (¬ x1 ∧ x2) ∨ ( x x1 ∧ ¬ x2) (Ecuación 5.3.2). Véase la Figura 5.6. Las neuronas 1 y 2 reciben el vector de entrada T [ x x1 x2] el cual es de hecho uno de los estados de la compuerta lógica. La primer neurona calcula el valor correspondiente a x1 ∧ ¬ x2 mientras que la segunda calcula ¬ x1 ∧ xx2. Se tienen entonces las respectivas salidas y1 y y2. Lo único que resta es efectuar una disyunción
entre El operador OR está modelado por la neurona 3. En este punto tenemos que la salidaéstas. y3 es de hecho la salida final de la neurona.
140
Capítulo 5. La Red Madaline
Adaline 1
x1
z z1 = = x − x x2 − − 11 x1 −
y1 = sign( z1 ) Adaline 3
z3 = y1 + y2 + 1
y3 = sign( z3 )
y3
Adaline 2
x2
z 2 = − x1 + x 2 − 1
y2 = sign( z 2 )
Figura 5.6. Una red Madaline formada por 3 neuronas que resuelve el problema del modelado de la compuerta XOR.
En la Sección 4.2 planteamos que si un problema es linealmente separable entonces existe un umbral Z ( x x1, x2, …, xn) = 0 que particiona al espacio n-Dimensional en tres regiones: • El conjunto de puntos de n que están por encima del umbral. • El conjunto de puntos de n que están por debajo del umbral. • El conjunto de puntos de n que están sobre el umbral. Para las tres neuronas que forman la red Madaline de la Figura 5.6 tenemos bien identificados sus respectivos umbrales (Figuras 5.3, 5.4 y 5.5) los cuales particionan al espacio bidimensional. En la Figura 5.7.a se muestra, en color gris, la región de 2 que está por encima del umbral Z 1( x x1, x2) = x1 − x2 − 1 = 0. En tal región se ubica el estado (1, -1) el cual tiene salida 1. La Figura 5.7.b muestra la región por encima del umbral Z 2( x x1, x2) = − x1 + x2 − 1 = 0 . En ésta se localiza el estado (-1, 1), también con salida 1. Finalmente, la Figura 5.7.c muestra la región por encima del umbral Z 3( y y1, y2) = y1 + y2 + 1 = 0 en donde se localizan los estados de salida 1: (-1, 1), (1, 1) y (1, -1). Lo que haremos ahora es presentar a las tres regiones que hemos descrito al mismo tiempo en el plano. Véase la Figura 5.7.d. En esta misma figura presentamos los estados de la compuerta XOR. La intersección entre las tres regiones, mostrada en gris obscuro en la figura, forma dos conjuntos convexos disjuntos abiertos. El estado (-1, 1) se ubica en uno de los conjuntos mientras que el estado (1, -1) se ubica en el otro. Ambos son estados con salida 1. La unión de los dos conjuntos resultantes es evidentemente un conjunto no convexo también abierto. Este conjunto en cuestión y los estados de la compuerta XOR se presentan ahora en la Figura 5.8. En nuestra discusión respecto al Problema de Representación (Sección 4.2) argumentábamos que si un elemento de cómputo neural daba solución al problema del modelado de la función XOR entonces debíamos aceptar que los estados con salida 1 deberían estar contenidos en un conjunto no convexo (abierto o cerrado) que los separara de los estados con salida -1. Una neurona Adaline o Perceptrón no puede generar este tipo de regiones. Pero acabamos de probar que mediante el uso de una
Red Neuronal es posible que los umbrales, y las regiones que éstos definen, den lugar precisamente a las regiones no convexas requeridas para efectivamente dar solución al
141
A rtificial Una Introducción al Cómputo Neuronal Artificial
problema en cuestión, en nuestro caso, el problema del XOR. La Figura 5.8 muestra que los umbrales de las neuronas de la red Madaline de la Figura 5.6 permiten establecer las condiciones bajo las cuales se particiona al plano en dos regiones no convexas. Formalmente éstas son: • RC12 = {(a1 , a2 ) ∈ 2 : Z3 (a1 , a2 ) ≥ 0 ∧ ( Z1 (a1 , a2 ) ≥ 0 ∨ Z 2 (a1 , a2 ) ≥ 0) 0 )} • RC22 = {(a1 , a2 ) ∈ 2 : Z3 (a1 , a2 ) < 0 ∨ ( Z3 (a1 , a2 ) ≥ 0 ∧ ( Z1 (a1 , a2 ) < 0 ∧ Z 2 (a1 , a2 ) < 0))}
Textualmente tenemos que un punto (a1, a2) estará en la región RC 12 si en primer lugar éste se ubica sobre o por encima del umbral Z 3 (Ecuación 5.3.9). Si esta condición se cumple entonces sólo se debe determinar si (a1, a2) satisface el estar sobre o por encima del umbral Z 1 ( Ecuación 5.3.3) o bien sobre o por encima del umbral Z 2 ( Ecuación 5.3.5). El conjunto de puntos que cumplen las condiciones que acabamos de describir están en la región gris de la Figura 5.8. Es claro que los estados con salida 1 se ubicarán en la región RC 12 . Por otro lado, analizando las condiciones establecidas para que un punto ( a1, a2) se ubique en la 2 2 RC
2 1 RC 2 RC 2
región es claro que ésta es complementaria a la región Conjuntos se puede demostrar sin problema que RC 12 ∪ estados con salida -1 estarán en RC 22 .
. Aplicando Álgebra de = 2 . Finalmente, los
Procedamos ahora a modelar, mediante una Red Madaline, a la función Booleana descrita originalmente en la Ecuación 5.3.1: f ( x x1, x2, x3) = (¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3)
Analizaremos en primer lugar a las funciones Booleanas que la componen: • ¬ x1 ∧ ¬ x2 ∧ x x3 • ¬ x1 ∧ x x2 ∧ ¬ x3 • x1 ∧ x x2 ∧ x x3
La idea es que si las tres son linealmente separables entonces la capa de entrada de la correspondiente red Madaline se formará únicamente por tres neuronas. Cada una recibirá T un vector de entrada [ x x1 x2 x3] que contiene el estado a procesar. Debido al uso de la función sign y a fin de diferenciar adecuadamente los estados y sus salidas reemplazaremos el valor Booleano 0 por el valor -1.
142
Capítulo 5. La Red Madaline
(-1,1)
-1
1
1
(-1,-1)
1
(1,1)
-1
(1,1)
1
-1
(1,-1)
(-1,1)
(-1,-1) -1
(1,-1)
Z1 (x1 ,x 2)=0
Z2(x 1,x 2) = 0
a)
1
b)
(-1,1)
(1,1)
1
-1
(-1,-1)
-1
(-1,1)
-1
(1,-1)
1
(1,1)
(-1,-1)
1
-1
(1,-1)
Z3 (y1 ,y 2)=0
c) d) Figura 5.7. a), b) y c) En gris: Regiones del plano por encima de los umbrales asociados a las neuronas que modelan las funciones Booleanas x1 ∧ ¬ x2, ¬ x1 ∧ x x2 y OR. d) Las tres regiones anteriores sobrepuestas. sobrepuestas. En gris obscuro: sus intersecciones.
(-1,1)
-1
1
(1,1)
(-1,-1)
1
-1
(1,-1)
Figura 5.8. Partición del plano inducida por la Red Neuronal de la Figura 5.6 (Véase el texto para detalles).
143
A rtificial Una Introducción al Cómputo Neuronal Artificial
Consideremos en primer lugar a la función ¬ x1 ∧ ¬ x2 ∧ xx3. Por la forma en la que fue construida sabemos que el único estado con el cual proporciona la salida 1 es (-1, -1, 1). En la Figura 5.9.a se presentan los estados de esta función caracterizados de manera que un estadoesnegro es un estado con salida -1 y un Requerimos estado blancoun(elplano único) es separe de salida Esta función claramente linealmente separable. que al 1.estado (-1, -1, 1) de los restantes. Para ello determinaremos la ecuación del plano usando los tres puntos no colineales (-1, -1, 0), (0, -1, 1) y (-1, 0, 1). Estos puntos, también en la Figura 5.9.a, forman un triángulo, presentado en gris, inmerso en el plano considerado. La ecuación, por elementos bien conocidos de Álgebra Lineal, se obtiene al resolver el siguiente determinante: 1 −1 −1 0 1 =0 0 −1 1 1 −1 0 1 1 ⇔ − x1 − x2 + x3 − 2 = 0 x1
x2
x3
(Ecuación 5.3.10)
Verifiquemos si el plano está bien orientado. Al sustituir el estado (-1, -1, 1) en el lado izquierdo de la Ecuación 5.3.10 tenemos que −(−1) 1) − (−1) 1) + 1 − 2 = 1 > 0
Por lo tanto el vector normal del plano apunta en dirección del estado (-1, -1, 1) lo cual indica que se cuenta con la orientación correcta. Recordemos que la orientación es x1, x2, x3) = − x1 − x2 + x3 − 2 será después importante ya que el valor proporcionado por Z 1( x sometido a la función sign, de manera que se busca que la neurona proporcione valores tal yentonces como seque presentan ende la la tabla de verdad la funcióna que se está ¬ modelando. x1 ∧ ¬ x2 ∧Tenemos los pesos neurona 1, quederepresenta la función xx3, están dados por: w1,1 = -1, w1,2 = -1, w1,3 = 1 y w1,0 = -2. Para el caso de la función ¬ x1 ∧ x2 ∧ ¬ x3 se tiene que únicamente con el estado (-1, 1, -1) ésta proporciona la salida 1. Véase la Figura 5.9.b. La función es evidentemente linealmente separable. Se requiere un plano que separe al estado blanco (-1, 1, -1) de los restantes estados negros. Usaremos de nueva cuenta tres puntos no colineales: (-1, 0, -1), (0, 1, -1) y (-1, 1, 0):
144
Capítulo 5. La Red Madaline
x1
x2
−1
0 1
0
1 −1 1 =0 −1 1 x3
−1 1 0 1 ⇔ x1 − x2 + x3 + 2 = 0
(Ecuación 5.3.11)
Veamos si el plano obtenido está correctamente orientado. Para ello sustituimos el lado izquierdo de la Ecuación 5.3.11 con los valores (-1, 1, -1): −1 −1 + ( −1) + 2 = −1 < 0
Se ha obtenido un número negativo, por lo tanto únicamente multiplicamos ambos lados de la ecuación por -1 a fin de que esté orientado tal como requerimos. Se obtiene entonces la ecuación final del plano: − x1 + x2 − x3 − 2 = 0
(Ecuación 5.3.12)
Tenemos entonces una neurona 2 tipo Adaline que modela correctamente a la función Booleana ¬ x1 ∧ x2 ∧ ¬ x3 y cuyos pesos están dados por w2,1 = -1, w2,2 = 1, w2,3 = -1 y w2,0 = -2. Veamos ahora el caso de la función Booleana x1 ∧ xx2 ∧ xx3. La Figura 5.9.c permite apreciar claramente que es linealmente separable. Los vértices del triángulo en gris, de la Figura 5.9.c, muestran los puntos a utilizar para definir el plano que separará al estado blanco (1, 1, 1) de los restantes estados negros. Los tres puntos a usar son: (0, 1, 1), (1, 1, 0) y (1, 0, 1). Entonces tenemos: x1
x2
x3
1 1 =0 1 1 ⇔ − x1 − x2 − x3 + 2 = 0 0 1 1
1 1 0
1 0 1
(Ecuación 5.3.13)
Verifiquemos si el plano está orientado correctamente: −1 − 1 − 1 + 2 = −1 < 0
El plano requiere ser reorientado. Al multiplicar por -1 en ambos lados de la Ecuación
5.3.13 tenemos el plano final: x1 + x2 + x3 − 2 = 0
(Ecuación 5.3.14)
145
A rtificial Una Introducción al Cómputo Neuronal Artificial
Por tanto, la neurona 3 que modela la función x1 ∧ x2 ∧ x3 tendrá por pesos: w2,1 = 1, w2,2 = 1, w2,3 = 1 y w2,0 = -2. Tenemos ya bien definidas las 3 neuronas que formarán la capa de entrada de nuestra red Madaline. Las neuronas 1, 2 y 3 proporcionarán respectivamente como salida los escalares y1, y2 y y3. Estos formarán un vector de entrada para una neurona que modela a la función y1 ∨ yy2 ∨ yy3. La salida de esta neurona será la salida final de la red. Por lo tanto es claro que no requeriremos de capas ocultas. Apreciando la Figura 5.9.d se tiene que la función y1 ∨ yy2 ∨ yy3 es linealmente separable. Siete de sus estados son de salida 1 (blancos) mientras que el estado (-1, -1, -1) es el único de salida -1 (negro). Por lo tanto, usaremos los puntos (-1, 0, -1), (-1, -1, 0) y (0, -1, -1) para encontrar la ecuación del plano que separa al único estado negro de los estados blancos: 1 −1 0 −1 1 =0 −1 −1 0 1 0 −1 −1 1 ⇔ y1 + y2 + y3 + 2 = 0 y1
y2
y3
(Ecuación 5.3.15)
Verifiquemos si el plano determinado está correctamente orientado: −1 + (−1) + (−1) + 2 = −1 < 0
Recordemos que el estado (-1, -1, -1) es de salida -1. Por lo tanto la Ecuación 5.3.15 no requiere modificación alguna. Tenemos que los pesos de la única neurona de salida de nuestra red Madaline son: w2,1 = 1, w2,2 = 1, w2,3 = 1 y w2,0 = 2. En la Figura 5.10 se presenta la red que precisamente nos permite modelar la función de la Ecuación 5.3.1.
146
Capítulo 5. La Red Madaline
x 2
(-1,1,-1)
(1,1,-1)
x 3
(-1,1,-1)
x 2 (0,1,-1)
(1,1,-1)
x 3
(-1,1,0)
(1,1,1)
(-1,1,1)
(1,1,1)
(-1,1,1)
(-1,0,-1) (-1,0,1)
x 1
(1,-1,-1)
(-1,-1,-1) (-1,-1,0)
x 1
(-1,-1,-1)
(1,-1,-1)
(-1,-1,1)
(-1,-1,1) (0,-1,1)
a)
(1,-1,1)
(1,-1,1)
b)
x 2
(-1,1,-1)
(1,1,-1)
x 3
(-1,1,-1)
y 2
(1,1,-1)
y 3
(1,1,0)
(1,1,1)
(-1,1,1)
(-1,1,1)
(0,1,1)
(-1,-1,-1)
(1,0,1)
x 1
(1,1,1)
(-1,0,-1)
y 1
(-1,-1,-1)
(1,-1,-1)
(0,-1,-1)
(1,-1,-1)
(-1,-1,0)
(-1,-1,1)
c)
(1,-1,1)
(-1,-1,1)
d)
(1,-1,1)
Figura 5.9. Visualización en el espacio 3D de los estados y las salidas de las funciones Booleanas a) ¬ x1 ∧ ¬ x2 ∧ x x3, b) ¬ x1 ∧ x x2 ∧ ¬ x3, c) x1 ∧ x x2 ∧ x x3, y d) y1 ∨ y y2 ∨ y y3. Los triángulos en gris están inmersos en los planos que separan a los estados negros de los estados blancos. Sus vértices son utilizados para determinar sus correspondientes ecuaciones y orientaciones (véase el texto para detalles).
147
A rtificial Una Introducción al Cómputo Neuronal Artificial
Adaline 1
x1
z1 = − x1 − x2
+ x3 − 2
y1 = sign( z1 )
Adaline 2
x2
z2 = − x1 + x2
− x3 − 2
y2 = sign( z2 )
Adaline 4 z4 = y1 + y2
+ y3 + 2
y4 = si gn gn( z4 )
y4
Adaline 3
x3
z3 = x1 + x2
+ x3 − 2
y3 = sign( z3 )
Figura 5.10. Red Madaline que modela a la función Booleana f ( x x1, x2, x3) = (¬ x1 ∧ ¬ x2 ∧ x x3) ∨ (¬ x1 ∧ x x2 ∧ ¬ x3) ∨ ( x x1 ∧ x x2 ∧ x x3).
En esta Sección hemos descrito pasos sea a seguir a finendetérminos que, en primer lugar, una función Booleana, dada su una tablaserie de de verdad, descrita de las variables involucradas y los conectivos lógicos AND, OR y NOT. Posteriormente, en segundo lugar, y basado en el hecho de que tales conectivos son linealmente separables, es que hemos establecido una metodología para construir una red Madaline que dé solución al problema del modelado de funciones Booleanas no linealmente separables como el XOR. En la Sección 4.2 determinamos que una función Booleana de n variables tiene exactamente 2n posibles estados. Un punto interesante es que si estos estados son considerados puntos en el espacio n-Dimensional entonces es fácil apreciar que tales puntos corresponden con los vértices de un Hipercubo n-Dimensional. Véase la Figura 5.11. Cuando n = 1 se tienen funciones Booleanas de una variable con 2 estados: -1 y 1. Estos dos puntos sobre la línea recta definen a un hipercubo unidimensional, es decir, un segmento. Véase la Figura 5.11.a. Cuando n = 2 estamos considerando funciones Boolenas de dos variables con 4 posibles estados: (-1, -1), (1, -1), (-1, 1) y (1, 1). Estos cuatro puntos describen a un hipercubo bidimensional, o mejor dicho, un cuadrado centrado en el origen (Figura 5.11.b). Si ahora consideramos a las funciones Booleanas de n = 3 variables entonces tenemos que los estados corresponden a los 8 vértices de un cubo centrado en el origen (Figura 5.11.c). Nótese que en párrafos anteriores utilizamos elementos visuales para determinar de manera inmediata las rectas o planos requeridos para separar a los estados con salida 1 de los estados con salida -1. O de manera equivalente, buscábamos rectas o planos que nos permitieran particionar de manera adecuada a nuestros cuadrados o cubos, respectivamente. Ahora consideremos el caso de una función Booleana con n = 4 variables. Ello implica que debemos tomar en cuenta 24 = 16 posibles estados. Tales estados corresponden
a los vértices de un hipercubo tetradimensional. Véase la Figura 5.11.d. Si la correspondiente función es linealmente separable debemos determinar un hiperplano tridimensional inmerso en el espacio de 4 dimensiones que separe apropiadamente a los
148
Capítulo 5. La Red Madaline
estados. Cuando n = 5 entonces lidiamos con una función con 5 variables y 2 5 = 32 estados. El objetivo en esta instancia es encontrar un hiperplano tetradimensional inmerso en el espacio de 5 dimensiones. La situación que claramente surge es el hecho de que el número de estados crece de manera exponencial conforme consideramos más variables. Una 10
función de 10 variables cuenta con Conceptualmente 2 = 1,024 estados que corresponden los vértices Booleana de un hipercubo de 10 dimensiones. el problema es claro, adada una función de n variables determinar el hiperplano (n-1)-Dimensional inmerso en n que demuestre que la función es efectivamente linealmente separable. Es claro que el uso de auxiliares visuales también se complica. Existen metodologías variadas para visualizar espacios hiperdimensionales, sin embargo, debe entenderse que lo que se “ve” son únicamente proyecciones, “sombras”, de los elementos inmersos en tales hiperespacios, por lo que existirá pérdida de información. Ahora bien, es posible dejar a un lado la visualización y concentrarnos en una búsqueda de hiperplanos basada en el hecho de que los vértices de un hipercubo serán siempre particionados en dos conjuntos: los vértices que corresponden a estados con salida 1 y los vértices que corresponden a estados con salida -1. Esto en un momento puede original un problema de índole combinatoria. En 2 se 3
4 se requieren recta (un en se requieren dos tres puntos puntos para para definir definir una un plano (un hiperplano hiperplano unidimensional), bidimensional), en requieren cuatro puntos para determinar la ecuación de un hiperplano tridimensional. Es claro que, en general, en n se requieren exactamente n puntos para definir un hiperplano (n-1)-Dimensional. Considerando que en nuestro caso los puntos se tomarían de los 2 n vértices de nuestros hipercubos, entonces tendríamos que el número de posibilidades analizar es a lo más
2n (2 n ) ! = n ( 2 − n ) ! n ! n
(Ecuación 5.3.16)
Retomando el caso n = 10, tendríamos en consecuencia que el número de subconjuntos de 10 vértices, para formar hiperplanos candidatos, tomados del conjunto de 1,024 vértices del hipercubo de 10 dimensiones es: 210 (210 ) ! 1, 024! = = 334,265,867,498,622,145,619,456 = 10 ( 2 − 1 0 ) ! 1 0 ! ( 1 , 0 02 2 4 − 1 0 ) ! 1 0 ! 10
En la práctica es claro que hemos de considerar el modelado de funciones con cientos de variables de entrada.
149
A rtificial Una Introducción al Cómputo Neuronal Artificial
x 2 (-1,1)
-1
(1,1)
x 1
x 1
1
(-1,-1)
a)
(1,-1)
b) (-1,1,-1)
x 2
(1,1,-1)
x 3
(1,1,1)
(-1,1,1)
x 1
(-1,-1,-1)
(1,-1,-1)
(-1,-1,1)
(1,-1,1)
c)
x 2 x 4
(1,1,-1,-1)
(-1,1,-1,-1)
x 3
(-1,1,-1,1) (-1,1,1,-1)
(1,1,1,-1)
(-1,1,1,1)
(1,1,1,1) (-1,-1,-1,-1)
(-1,-1,-1,1)
(-1,-1,1,-1) (-1,-1,1,1)
d)
(1,1,-1,1)
(1,-1,-1,-1)
(1,-1,1,-1)
x 1
(1,-1,-1,1)
(1,-1,1,1)
Figura 5.11. Los estados de las funciones Booleanas de 1 a 4 variables vistos como los vértices de hipercubos. a) Un hipercubo 1D: un segmento (2 vértices/estados). b) Un hipercubo 2D: un cuadrado (4 vértices/estados). c) Un hipercubo 3D: un cubo (8 vértices/estados). d) Un Hipercubo 4D (16 vértices/estados).
150
Capítulo 5. La Red Madaline
Los resultados anteriores vienen a establecer que la metodología presentada en esta Sección, si bien es sumamente intuitiva e ilustrativa en lo que concierne al problema del ajuste de pesos de una red Madaline, en la práctica puede no ser muy recomendada. Lo que si reconocer es que nos haneuronas proporcionado contundentes paraBooleanas verificar quedebemos efectivamente el uso de varias permiteelementos el modelado de funciones no linealmente separables, tales como el XOR. También nos ha permitido visualizar, al menos en el caso 2D, las particiones del plano que inducen los umbrales asociados a cada neurona y las correspondientes reglas de separación entre estados con salida 1 y estados con salida -1. Este Capítulo nos ha planteado claramente los retos a considerar en lo que atañe a las metodologías para el ajuste de pesos en Redes Neuronales Multicapa. En el siguiente Capítulo presentaremos por fin al Algoritmo de Retropropagación, que representa una solución eficiente y fácil de implementar para el ajuste de pesos en redes formadas por neuronas del tipo Perceptrón.
151
A rtificial Una Introducción al Cómputo Neuronal Artificial
152
Una Introducción al Cómputo Neuronal Artificial
6. Redes de Perceptrones
A rtificial Una Introducción al Cómputo Neuronal Artificial
154
Capítulo 6. Redes de Perceptrones
Hemos llegado al punto en el cual estamos listos para abordar el estudio de las Redes Neuronales formadas por Perceptrones. En particular, hemos de considerar el análisis y justificación del popular Algoritmo de Retropropagación, el cual representa una de las opciones más eficientes y fáciles de implementar para el entrenamiento de este tipo de Redes Neuronales. Procederemos en primer lugar al reconsiderar, en la Sección 6.1, a la neurona de tipo Perceptrón al describir la Regla de Rosenblatt para la actualización de sus pesos. Posteriormente, en la Sección 6.2, presentaremos la Demostración del Teorema de Convergencia del Perceptrón. Este importante resultado servirá como punto de partida para entender los fundamentos detrás del proceso de ajuste de pesos por parte del Algoritmo de Retropropagación. En la Sección 6.3 describiremos el mecanismo de corrección de pesos, propiamente por el Algoritmo de Retropropagación, en una Red compuesta por Perceptrones bajo la suposición de que ésta se forma por una única capa oculta. También justificaremos de manera formal for mal las reglas r eglas de actualización establecidas y analizaremos los aspectos relacionados con la convergencia de los pesos de las neuronas que forman la red. En la Sección 6.4 presentaremos la versión generalizada del Algoritmo de Retropropagación en el sentido de dar solución al problema del ajuste de pesos para redes formadas por más de dos capas ocultas. Será hasta la Sección 6.5 en donde haremos mención de un ejemplo de aplicación del Algoritmo de Retropropagación para la solución/modelado de un problema mediante redes formadas por Perceptrones.
6.1 La Regla de Rosenblatt Mencionábamos en las Secciones 1.4 y 4.2, que en 1958 el psicólogo Frank Rosenblatt presenta a la neurona tipo Perceptrón. De hecho, en ese mismo año, Rosenblatt introdujo un mecanismo de aprendizaje, un algoritmo de entrenamiento, para el Perceptrón que hoy en día se conoce como Regla de Rosenblatt. El punto fundamental es que la Regla viene acompañada con un Teorema que sustenta el hecho de que los pesos correctos de la neurona siempre encontrados el supuesto de que efectivamente talesy pesos paraserán resolver el problema dado.bajo Planteamos en primer lugar la Regla de existen Rosenblatt posteriormente, en la siguiente Sección, efectuaremos la demostración de tal Teorema. Considérese un Perceptrón que recibe como entrada un vector E en en n dado por: I 1 I 2 E = I n
(Ecuación 6.1.1)
Supongamos que la neurona proporciona como salida un escalar O∈ . Sea g una función continua y diferenciable en (-∞, ∞). Se tiene que g es de hecho la Función de Activación (Véase la Sección 4.1). Cada uno de los componentes del vector de entrada E estará
155
A rtificial Una Introducción al Cómputo Neuronal Artificial
asociado a un único peso de la neurona. La relación entre el vector E y y los pesos, de manera que se produce a partir de éstos un escalar ent , está dada por la ya conocida Sumatoria de Salida del Perceptrón: ent =
n
1 w I j
j
(Ecuación 6.1.2)
j =
La salida O del Perceptrón se produce al aplicar la Función de Activación g sobre el escalar ent : n O = g(ent ) = g w j I j j =1
(Ecuación 6.1.3)
La Figura 6.1 presenta esquemáticamente a todos los elementos del Perceptrón que hemos descrito. W1
I1 s a d I2 a r t n E
In
W2 n
ent =
1
w j I j
ent
O = g (en e nt )
j =
a d i O l a S
Wn
Figura 6.1. Representación Esquemática de un Perceptrón.
Sea T la la salida que se espera proporcione el Perceptrón para el vector de entrada E . Sabemos que el proceso de ajuste de los pesos w j de la neurona busca minimizar la diferencia entre la salida proporcionada por ésta y la salida esperada. Es decir, se busca optimizar: optimizar: n Err = = T – – O = T – – g w j I j j =1
(Ecuación 6.1.4)
Ahora bien, definamos los elementos detrás de la Regla de Rosenblatt. Primeramente, se debe contar con un conjunto de pesos iniciales para la neurona. Por lo regular éstos son inicializados con valores aleatorios, comúnmente en el intervalo (-1, 1)
(Sección 4.3). Tenemos que el proceso de aprendizaje se dividirá en Épocas. En cada Época se presentan a la neurona todos los vectores de entrada en el conjunto de entrenamiento. Es claro que la noción de Época es la misma que la de Presentación del
156
Capítulo 6. Redes de Perceptrones
Conjunto de Entrenamiento que planteamos desde la Sección 3.3.1. Por cada vector de entrada E , se determina la diferencia entre la salida generada por el Perceptrón O y la salida esperada T ( (Ecuación 6.1.4). De acuerdo a esa diferencia es que los pesos son actualizados. Nótese que el valor de Err = T – O puede ser positivo o negativo. Es claro que si el error, Err , es positivo entonces la salida O de la neurona debe ser incrementada. Por otro lado, si el error es negativo entonces la salida O de la neurona debe reducirse. De manera más específica, y observando la Ecuación 6.1.2, se tiene que el escalar de entrada I j se multiplica con el j-ésimo peso w j. Tenemos entonces el siguiente par de observaciones: • Si I j es positivo y el peso w j aumenta su valor entonces la salida O también aumentará su valor. • Si I j es negativo y el peso w j aumenta su valor entonces la salida O disminuirá su valor. En ambos casos podemos concluir que para obtener el ajuste apropiado del peso w j se tiene que precisamente el valor de w j debe ser incrementado. Esto es interesante porque ya sea que la salida O se requiera aumentar o reducir, los pesos deben ser actualizados mediante una suma. Para tal efecto Rosenblatt propuso la siguiente regla de actualización de pesos: w j = w j + α⋅ Err Err I ⋅ I j
j = 1, 2, …, n
(Ecuación 6.1.5)
Donde α es la bien conocida constante positiva denominada, en la Sección 4.3, Coeficiente de Aprendizaje. La Ecuación 6.1.5 es de hecho la Regla de Rosenblatt. Nótese su similitud con la regla de actualización presentada en la Sección 4.3 la cual estaba basada en búsqueda del vector gradiente mediante Descenso Escalonado. El Algoritmo 6.1 es una implementación de la Regla de Rosenblatt. Éste recibe cuatro entradas: • Una matriz E de tamaño N × n, donde N es el número de vectores de entrada en el conjunto de entrenamiento y n su dimensionalidad. Cada renglón de la matriz es precisamente un vector de entrada. • Un arreglo T de N elementos. Contiene los escalares que se espera la neurona
proporcione como salida (dados los correspondientes vectores de entrada). • El coeficiente de aprendizaje α. • Un entero L que indica el número de épocas, o presentaciones del conjunto de entrenamiento, que el algoritmo efectuará. El Algoritmo 6.1 efectúa los procedimientos antes mencionados al inicializar un vector de pesos W con valores aleatorios. Posteriormente, en cada presentación del conjunto de entrenamiento, cada vector de entrada en la matriz E es enviado a la neurona donde se calcula el valor de su sumatoria de salida el cual es guardado en la variable ent . Se invoca entonces a la Función de Activación g la cual debe ser continua y diferenciable en (- ∞, ∞) por razones que clarificaremos en las siguientes Secciones. Se tiene entonces la salida O de la neurona. Se aplica la Ecuación 6.1.4 para obtener el error existente entre la salida O y la
salida esperada T . Por último, se tiene la actualización del vector de pesos W haciendo haciendo uso del valor actual en la variable Err , el coeficiente de aprendizaje α y cada uno de los componentes del vector de entrada actual.
157
A rtificial Una Introducción al Cómputo Neuronal Artificial
Algoritmo 6.1. Implementación de la Regla de Rosenblatt para el entrenamiento de un Perceptrón.
Procedure RosenblattRule (Matrix E E [1, [1, …, N ][1, ][1, …, n], Array T [1, [1, …, N ], ], Real α, Integer L L) // Se asignan asignan valores aleatorios aleatorios en en (-1, 1) al vector vector de pesos. pesos. W = new Array[1,…,n] for j = 1 until n do
W[j] = Random( ) end-of-for // Se lleva a efecto efecto la t-ésima t-ésima época. época. for t = 1 until LL do for k = 1 until N N do // El k-ésimo k-ésimo vector de entrada es enviado a la la neurona. neurona.
Real ent = 0 for j = 1 until n do ent = ent + W[j] * E [k][j] end-of-for // Se aplica la función de activación activación // y se obtiene obtiene la salida de la neurona. neurona.
Real O = g(ent) // Se calcula calcula el error entre entre la salida salida esperada // y la salida de la neurona. neurona. Real Err = T [k] [k] – O // Se actualiza actualiza el vector vector de pesos. pesos. for j = 1 until n do W[j] = W[j] + α * Err * E [k][j] [k][j]
end-of-for end-of-for end-of-for // Se retorna como salida salida el vector de pesos obtenido. obtenido.
return W end-of-procedure Como se podrá observar, la Regla de Rosenblatt es, desde el punto de vista algorítmico, muy simple. Pero es más interesante el hecho de que precisamente Rosenblatt demostró que un Perceptrón convergerá a un conjunto de pesos que modela adecuadamente a los elementos del conjunto de entrenamiento siempre y cuando éstos representen una función linealmente separable. A tal proposición se le conoce como el Teorema de Convergencia del Perceptrón. En la siguiente Sección abordaremos precisamente la
demostración del enunciado.
158
Capítulo 6. Redes de Perceptrones
6.2 Teorema de Convergencia del Perceptrón Perceptrón Teorema: Teorema: Si existe un vector de pesos W* tal que para todo vector de entrada E y su correspondiente salida T, en el conjunto de entrenamiento, se tiene que g(W* E) ⋅ = T entonces para cualquier vector inicial de pesos se tiene que la regla de aprendiza aprendizaje je del Perceptró Perceptrón n convergerá a un vector de pesos (no necesariamente W*) tal que la neurona proporcionará la salida correcta para todo vector de entrada en el conjunto de entrenamiento. Además, la convergencia se tendrá en un número finito de pasos.
El enunciado establece en primer que debemos suponer la existencia un vector de pesos W * tal que mediante éstelugar el Perceptrón siempre proporcionará la de salida correcta para todo vector de entrada en el conjunto de entrenamiento. Ahora bien, debemos demostrar que para cualquier vector de pesos inicial W , y al aplicar la Regla de Rosenblatt tal como lo especifica el Algoritmo 6.1, encontraremos un vector de pesos tal que con éste la neurona proporcionará siempre la salida correcta para todo vector de entrada en el conjunto de entrenamiento. También debemos probar que el número de pasos requeridos, para encontrar a tal vector de pesos, es finito. El enunciado nos dice también que el vector de pesos que encontremos no necesariamente es igual al vector de pesos W * que presuponemos existe. Esto implica que de hecho los vectores de pesos que se obtienen mediante la Regla de Rosenblatt no son únicos, y en consecuencia, pueden existir vectores de pesos diferentes que nos permiten resolver el mismolidiar problema. Esto es consistente con el hecholos de que los problemas con los cuales puede un Perceptrón son únicamente linealmente separables. Efectivamente, esta es una presuposición que debemos tomar en cuenta ya que aunque no se menciona de manera explícita en el enunciado del Teorema, si la requeriremos para efectuar su demostración. La sumatoria de salida del Perceptrón, en términos geométricos, describe a un hiperplano que separará a los vectores de entrada en dos conjuntos. En este sentido, por ejemplo, vale la pena recordar el modelado de funciones Booleanas linealmente separables. Nuestros hiperplanos separaban a los vectores de entrada que correspondían a los estados con salida 1 de los vectores de entrada que correspondían a los estados con salida -1. Nos debe ser claro entonces que es posible la existencia de diferentes hiperplanos, y en consecuencia diferentes vectores de pesos, que nos permitan cumplir con este mismo fin haciendo que la neurona proporcione siempre las salidas correctas.
Habiendo efectuado la mención de las consideraciones a tomar en cuenta, ahora procederemos a demostrar el Teorema de Convergencia del Perceptrón.
159
A rtificial Una Introducción al Cómputo Neuronal Artificial
En primer lugar asumamos que los vectores de entrada para la neurona fueron originados por dos clases linealmente separables. Llamemos a estas clases C 1 y C 2. Sea χ1 el subconjunto de los vectores de entrada que pertenecen a la clase C 1 y sea χ2 el subconjunto de los vectores de entrada que pertenecen a la clase C 2. Es claro que el conjunto de entrenamiento estará dado por χ1 ∪ χ2. Dados los conjuntos χ1 y χ2 para entrenar al Perceptrón, se tiene que el entrenamiento se encarga de ajustar su vector de pesos W tal tal que C 1 y C 2 sean linealmente separables, o en otras palabras, el hiperplano asociado a la sumatoria de salida de Perceptrón separe apropiadamente a C 1 y C 2. Se espera que, una vez finalizado el entrenamiento, el vector de pesos W , para todo vector de entrada E , satisfaga las siguientes dos condiciones: • Si E ∈ C 1 entonces W ⋅ ⋅ E > > 0. ⋅ E < 0. • Si E ∈ C 2 entonces W ⋅
Es decir, que los vectores en la clase C 1 serán aquellos hacia los cuales apunte el vector normal del hiperplano definido por la sumatoria de salida del Perceptrón. O bien, los vectores de entrada en C 1 estarán por encima del hiperplano, y en consecuencia, los vectores en C 2 estarán por debajo de tal hiperplano. Nótese que hemos establecido las propiedades que deberá cumplir el vector de pesos W una vez finalizado el entrenamiento. Ahora se debe establecer una metodología para su construcción. Considérese el siguiente procedimiento: procedimiento: a) Sea W k k el vector de pesos que actualmente tiene la neurona. b) Considérese al k -ésimo -ésimo vector de entrada, E k k , en el conjunto de entrenamiento. Si E k k es correctamente clasificado ello implica que la neurona determinó acertadamente que
E k k ∈ χ1 o bien que E k k ∈ χ2. Por lo tanto, se aplicará una “corrección” a W k k y se obtendrá el vector de pesos “actualizado” W k k +1 +1: b.1) W k+1 k+1 = W k k c) De lo contrario, si E k k fue clasificado de manera incorrecta por el Perceptrón, entonces el vector de pesos W k k debe ser apropiadamente corregido y se obtiene por lo tanto el nuevo vector de pesos W k+1 k+1. Debemos manejar dos posibilidades de acuerdo al signo de la sumatoria de salida W k k ⋅ E E k k: E k c.1) E k k ∈ χ2 pero W k k ⋅ E k > 0, lo que implica que el vector fue incorrectamente
ubicado en χ1. Entonces aplicamos la corrección: W k+1 k+1 = W k k – E k k c.2) E k k ∈ χ1 pero W k k E ⋅ E k k < 0, lo que implica que el vector fue incorrectamente
ubicado en χ2. Entonces: W k+1 k+1 = W k k + E k k
160
Capítulo 6. Redes de Perceptrones
Asúmase, sin pérdida de generalidad, que se tiene el vector inicial de pesos W 1 = 0, es decir, el vector cero. Es claro que para todo vector de entrada E k k , k = = 1, 2, 3, …, Card (χ1), contenido precisamente en la clase χ1, se tiene que el Perceptrón, equipado con los pesos en W 1, clasifica incorrectamente a los vectores en χ1 ya que para ⋅ E k k > 0, lo cual evidentemente no se cumple (lo mismo todos éstos se esperaría que W 1 E E 1 = 0, pero sabemos en sucede con los vectores en la clase χ2). Nótese que de hecho W 1⋅ E que clase E 1 debe ser ubicado. Usaremos entonces la regla de corrección W k+1 k+1 = W k k + E k k . Lo que haremos es que a partir del vector de pesos inicial W 1 = 0 obtendremos, usando los vectores de entrada en χ1, un vector W k k+1 + 1 que permita que la neurona los clasifique correctamente. El vector W k k +1 +1 se obtiene de manera iterativa: • • • • •
Vector de pesos inicial: Primer corrección: Segunda corrección: Tercer corrección:
W 1 = 0 W 2 = W 1 + E 1 W 3 = W 2 + E 2 W 4 = W 3 + E 3
= (0) + E 1 = E 1 = ( E E 1) + E 2 = ( E E 1 + E 2) + E 3
…
-1 + E k -1 -1 = ( E -2) + E k-1 E 1 + E 2 + … + E k -2 • (k -1)-ésima corrección: W k = W k -1 • k --ésima ésima corrección: W k = ( E E 1 + E 2 + … + E k k +1 +1 = W k k + E k k k -2 -2 + E k k -1 -1) + E k k
Recordemos que se presupone la existencia del vector de pesos W* el cual garantiza que la neurona clasificará correctamente a todos los vectores de entrada y que se asume que las clases C 1 y C 2 son linealmente separables. Entonces, se tiene que para todo vector E k k en el conjunto de entrenamiento el vector W * efectivamente satisface las siguientes dos condiciones: • Si E k k ∈ χ1 entonces W * E ⋅E k k > 0. • Si E k k ∈ χ2 entonces W * E ⋅E k k < 0.
En un problema linealmente separable tenemos que las salidas del Perceptrón deben permitir inferir a cual de las dos clases, C 1 o C 2, pertenece un vector de entrada. Por ello mismo, la salida de la neurona nos dice si un vector E está en χ1 ⊂ C 1 o bien si está en χ2 ⊂ C 2. En este punto cabe hacer la aclaración de que C 1 y C 2 son particiones del espacio n-Dimensional de tal forma que cuentan con un número infinito de elementos. C 1 es el conjunto de todos los puntos en n que están por encima del umbral definido por la sumatoria de salida del Perceptrón, y por otro lado, C 2 es el conjunto de todos los puntos que están por debajo del umbral. De allí que hemos establecido, incluso en párrafos anteriores, que χ1 ⊂ C 1 y χ2 ⊂ C 2. Ahora definamos al conjunto χ'2 de la siguiente manera: manera:
n χ'2 = {(-1) E E ∈ : E ∈ χ2}
161
A rtificial Una Introducción al Cómputo Neuronal Artificial
Es claro que χ'2 se conforma por todos los vectores en χ2 pero con dirección opuesta. Es entonces evidente que los vectores en χ'2 están en C 1 (los vectores en χ2 están en C 2). Esto tiene como consecuencia que el conjunto de entrenamiento del Perceptrón puede ser redefinido como: como: χ1 ∪ χ'2
Recordemos que el vector pesos W * satisface las condiciones: • W * E ⋅ E k k > 0 si E k k ∈ χ1 ⋅E k • W * E k < 0 si E k k ∈ χ2 Pero ahora, con la redefinición del conjunto de entrenamiento como χ1 ∪ χ'2 tenemos entonces que las condiciones anteriores son equivalentes a la única condición: • W * E ⋅ E k k > 0 si E k k ∈ χ1 ∪ χ'2 Ello se debe a que si E k k está en χ'2 entonces W * E ⋅E k E’k donde E’k está en k > 0, pero E k k = (-1) E’ χ2 y por tanto W* E’ ⋅ E’k < 0. Entonces tenemos que únicamente se requiere una sola regla de
actualización, expresada en términos de una suma, para efectuar correcciones asociadas a vectores ubicados en χ1 o bien en χ2. El objetivo del conjunto χ'2 es únicamente el de permitir unificar las reglas de corrección especificadas en los pasos c.1 y c.2 del procedimiento de actualización del vector de pesos presentado previamente. A partir de este punto supondremos que todos los vectores de entrada están en χ1 ∪ χ'2. Se usará al vector de pesos W * para asegurar que la regla de actualización de pesos, efectivamente permite encontrar un vector de pesos tal que la neurona clasifique correctamente a todos los vectores de entrada del conjunto de entrenamiento. Sea γ 1 definido como: como: γ 1 = min {W * ⋅E k }
(Ecuación 6.2.1)
Es decir, γ 1 es el mínimo escalar elegido a partir de todos los productos punto entre W * y cada vector de entrada E k k en el conjunto de entrenamiento. Previamente se verificó que dado el vector de pesos inicial W 1 = 0 el vector W k k +1 +1 estaba dado por: por: W k E 1 + E 2 + … + E k-1 k+1 + 1 = W k k + E k k = ( E k-1) + E k k
(Ecuación 6.2.2)
Al efectuar un producto punto con el vector W* en ambos lados de la Ecuación 6.2.2 se tiene:
W *⋅W k E 1 + E 2 + … + E k-1 k +1 +1 = W *⋅( E k-1 + E k k)
(Ecuación 6.2.3)
162
Capítulo 6. Redes de Perceptrones
En el lado derecho de la Ecuación 6.2.3 haremos uso de la propiedad distributiva del producto punto de vectores. Por lo tanto obtenemos: W *⋅W k ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅ E k k -1 ⋅ E k k k +1 +1 = W * E -1 + W * E
(Ecuación 6.2.4)
Por la definición de γ 1 (Ecuación 6.2.1) se tiene que: W *⋅W k ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅ E k k-1 ⋅ E k k ≥ γ 1k k +1 +1 = W * E - 1 + W * E ⇔ W *⋅W k k +1 +1 ≥ γ 1k
Ello se debe a que cada término del lado derecho de la Ecuación 6.2.4 es mayor o igual a γ 1. Se tienen en total k términos términos y en consecuencia W *⋅W k k +1 +1 ≥ γ 1k . Si elevamos al cuadrado ambos lados de la desigualdad tenemos que ésta claramente se preserva: W * ⋅W
k +1
≥ γ 1k
⇔ (W * ⋅W k +1 )
2
≥ γ 12 k 2
Ahora bien, por la desigualdad de Cauchy-Schwarz (Sección 2.4) tenemos que: 2 2 ||W *|| *||2⋅||W k k +1 +1|| ≥ (W *⋅W k k+1 + 1)
Entonces: Entonces: 2
W * ⋅ W k +1
2
2
≥ (W * ⋅W k +1 ) ≥ γ 12 k 2
Al aplicar la propiedad transitiva del operador ≥ relacionamos directamente al extremo izquierdo con el extremo derecho de la desigualdad: 2
W * ⋅ W k +1
2
≥ γ 12 k 2
Nótese que el vector de pesos W * es diferente del vector cero. De lo contrario, con cualquier vector de entrada E se tendría que W * E ⋅ E = 0, lo que contradice los supuestos establecidos respecto a W * en párrafos anteriores. De la desigualdad anterior multiplicamos 1 ambos lados por 2 y obtenemos: W * 2
W k +1 ≥
γ 12 k 2 W *
2
163
A rtificial Una Introducción al Cómputo Neuronal Artificial
Esta desigualdad nos indica que la magnitud al cuadrado del vector de pesos que se está calculando crece con un factor k 2, donde k es el número de veces que éste ha sido actualizado. La misma desigualdad es también una Cota Inferior. Ésta nos dice que una vez efectuadas k actualizaciones del vector de pesos, su magnitud al cuadrado será mayor o 2 k 2 igual al cociente γ 1 2 . W *
Ahora se debe establecer una Cota Superior para el vector de pesos a fin de verificar que los valores de sus componentes no crecen indefinidamente. De la Ecuación 6.2.2 tenemos que, dado el vector de pesos inicial W 1 = 0, el vector W k k +1 por: +1 esta dado por: W k E 1 + E 2 + … + E k k +1 +1 = ( E k-1 - 1) + E k k ⇔ W k k+1 + 1 = W k k + E k k
Sabemos que W k k+1 + 1 surge de aplicar una corrección al vector de pesos W k k . Ello implica que con el vector de entrada E k k se obtuvo W k k⋅ E k k < 0 (recuérdese que si el vector hubiese sido clasificado correctamente se habría obtenido W k k ⋅ E k k > > 0). Tenemos entonces que: W k k +1 +1 = W k k + E k k 2 2 ⇔ ||W k k +1 +1|| = ||W k k + E k k || 2 2 2 ⇔ ||W k k +1 +1|| = ||W k k|| + 2W k k ⋅Ε k k + ||Ε k k ||
(Ecuación 6.2.5)
La Ecuación 6.2.5 surge del hecho de que para cualesquiera vectores u y v en n el cuadrado de la magnitud de su suma, ||u + v||2 es igual a ||u||2 + 2u⋅v + ||v||2 (nótese la analogía existente entre esta expresión con el desarrollo del binomio (a + b)2 = a2 + 2ab + b2, a, b ∈ ). Dado que presuponemos que W k k ⋅Ε k k < 0 entonces es claro que -2W k k ⋅Ε k k > 0. Al sumar precisamente -2W k k ⋅Ε k k en ambos lados de la Ecuación 6.2.5 se obtiene: 2 2 2 ||W k k+1 + 1|| - 2W k k ⋅Ε k k = ||W k k || + ||Ε k k ||
(Ecuación 6.2.6)
Recalcamos que - 2W k k ⋅Ε k k es un número positivo. Entonces debe ser claro que: 2 2 2 2 ||W k k +1 +1|| ≤ ||W k k +1 +1|| - 2W k k⋅ Ε k k = ||W k k|| + ||Ε k k ||
Y por transitividad se tiene la siguiente desigualdad: 2 2 2 ||W k k +1 +1|| ≤ ||W k k || + ||Ε k k ||
Recordemos que el vector W surge de la corrección aplicada al vector de pesos W con el
k 1
k
k -1 E k -1. Es más, W W k -2 con vector surge actualizar al vector el vector de entradade E k hasta llegardea la actualización del vector de pesos inicial k -2 -entrada 2, y así sucesivamente
164
Capítulo 6. Redes de Perceptrones
W 1 usando
el vector de entrada E 1. Tomando esto en cuenta, desarrollemos el lado derecho de la desigualdad anterior:
Wk
2
+ E k
2 2
= Wk −1 + Ek −1 + Ek
2
(Wk = Wk −1 + Ek −1 )
2
2
= Wk −1 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek = Wk − 2 + Ek − 2 2
= Wk − 2
2
2
2
+ 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek
2
2
(Wk −1 = Wk −2 + Ek −2 ) 2
2
Wk − 2
= W2
2
Wk − 2
2
2
2
2
2
2
2
+ 2Wk −1 ⋅ Ek −1 + E k −1 + Ek
2
+ 2Wk − 2 ⋅ Ek − 2 + Ek − 2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek 2
+ ... + 2
+ 2Wk − 2 ⋅ Ek − 2 + Ek −2
2
(W3 = W2 + E 2 )
+ ... +
= W1 + E1 + 2W2 ⋅ E2 + E2 2
2
+ 2Wk − 2 ⋅ Ek − 2 + Ek − 2
2
Wk − 2
+ ... +
+ 2W2 ⋅ E2 + E2 2
= W2 + E 2
+ 2Wk − 2 ⋅ Ek − 2 + Ek − 2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek
=
2
2
2
2
+ 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek
2
(W = W1 + E1 ) 2
2
= W1 + 2W1 ⋅ E1 + E1 + 2W2 ⋅ E2 + E 2 + ... + W k − 2
2
k −1
k
= W1 + 2W j ⋅ E j + E j 2
2
+ 2Wk − 2 ⋅ Ek − 2 + E k − 2 j =1
2
+ 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek
j =1
k−
k
j =1
j =1
= 1 2W j ⋅ E j + E j
2
(Dado que W1 = 0)
Concretizando:
Wk
2
+ Ek
2
k −1
k
j =1
j =1
= 2W j ⋅ E j + E j
2
(Ecuación 6.2.7)
Ahora bien, supongamos que para todo vector de pesos W j, j = 1, …, k , se obtuvo que éste
clasificaba incorrectamente al vector E j, es decir, en su momento se detectó que W j⋅ E j < 0 (si el vector hubiese sido clasificado correctamente se habría obtenido W j⋅ E j > 0). Ello
165
A rtificial Una Introducción al Cómputo Neuronal Artificial
implica por un lado que tuvo que aplicarse una corrección a W j a fin de obtener su versión actualizada W j+1. Pero por otro lado tenemos que entonces en la Ecuación 6.2.7 la suma k −1
1 2W
j
j =
⋅ E j
es de hecho un número negativo. Recordemos que la Ecuación 6.2.7 es el lado derecho de la desigualdad: 2 2 2 ||W k k +1 +1|| ≤ ||W k k || + ||Ε k k ||
⇔ Wk +1
2
≤ Wk
2
+ Ek
2
k −1
k
j =1
⇔ Wk +1
2
2
= 2W j ⋅ E j + E j j =1
k −1
k
j =1
j =1
≤ 2W j ⋅ E j + E j
2
⋅ j < 0 para j = 1, 2, …, k , entonces Ahora bien, incorporando la observación de que W j E podemos establecer: Wk +1
2
k −1
1 2W
≤
k
⋅ Ej + Ej j
k
2
≤
j =1
j =
1 E
2 j
j=
Y aplicando la propiedad transitiva del operador ≤ tenemos: Wk +1
2
k
≤ E j
2
j =1
Sea γ 2 una constante positiva definida como: como:
{
γ 2 = max E k
2
}
(Ecuación 6.2.8)
Es decir, γ 2 es la mayor magnitud al cuadrado presente en los vectores de entrada del conjunto de entrenamiento. La siguiente desigualdad es claramente evidente: Wk +1
2
k
≤ Ei i =1
2
≤ k γ γ 2
2
⇔ W
k +1
γ 2 ≤ k γ
166
Capítulo 6. Redes de Perceptrones
Tenemos entonces que la magnitud al cuadrado del vector de pesos W k k +1 +1 crece linealmente 2 con el número de iteraciones. Y en otras palabras, tenemos que W k +1 está acotada superiormente por el producto k γ γ 2 . Dado que γ 2 depende directamente de los vectores de entrada y k es el número de iteración, entonces hemos demostrado que la magnitud del vector de pesos no diverge y en consecuencia sus componentes tampoco divergen. Contamos ya con una Cota Superior y una Cota Inferior para el vector de pesos del Perceptrón en la k -ésima -ésima iteración: iteración: k 2γ 12 W *
2
≤ Wk +1
2
≤ k γ 2
La Cota Inferior nos dice el valor mínimo esperado para la magnitud al cuadrado del vector 2 2 k γ 1 de pesos. En este caso es 2 . Mientras que la Cota Superior nos dice que el vector de W * pesos no crece de manera indefinida y que de hecho su magnitud al cuadrado es a lo más k γ γ 2 . El último punto de la demostración de nuestro Teorema requiere determinar el número de iteraciones k necesarias para que la magnitud al cuadrado del vector de pesos del Perceptrón sea igual tanto a su Cota Superior como a su Cota Inferior. ¿Por qué buscamos igualar a las Cotas? Ello se debe a que queremos encontrar en que iteración los pesos han convergido. Si el número k existe entonces hemos probado que el entrenamiento de la neurona requiere de un número finito de iteraciones de tal forma que se tiene la convergencia del vector de pesos de manera que se da solución al correspondiente problema linealmente separable. Para tal efecto sea k = = k . Por lo tanto, al igualar las Cotas 2 Superior e Inferior para W k +1 se tiene:
( )
2
k γ 12 W *
2
= k γ 2
(Ecuación 6.2.9)
Realmente sólo se requieren unas manipulaciones simples para encontrar el valor de k :
167
A rtificial Una Introducción al Cómputo Neuronal Artificial
( k )
2
γ 12
W *
= k γ 2
2 2
⇔ k γ 1 2 = γ 2 W *
⇔ k =
γ 2 W *
2
γ 12
(Ecuación 6.2.10)
Por la Ecuación 6.2.1 tenemos que γ 1 = min {W * ⋅E k } . Sabemos que el producto punto si puede proporcionar en un momento dado el valor 0. Sin embargo, en el inicio de nuestra demostración planteamos la suposición de que el vector W *, *, que presuponemos existe, corresponde a un hiperplano que está colocado de manera tal que W * E ⋅ E k k > 0 si E k k ∈ C 1 o bien que W * E ⋅ E k k < 0 si E k k ∈ C 2. Por lo tanto podemos garantizar que para todo vector en el conjunto de entrenamiento W * E ⋅ E k k ≠ 0 y en consecuencia γ 1 ≠ 0. Entonces, la Ecuación indica elquenúmero de iteraciones requerido de manera quepara el vector de pesos 6.2.10 nospermita resultante el Perceptrón proporcione la salida correcta todo vector de entrada en el conjunto de entrenamiento. Con este punto ya validado tenemos debidamente probado el Teorema de Convergencia del Perceptrón.
6.2.1 Discusión Discusión La Regla de Rosenblatt descrita en la Sección 6.1, y expresada en la Ecuación 6.1.5, nos dice que el j-ésimo peso de un Perceptrón, w j, debe ser actualizado en función de: • Un Coeficiente de Aprendizaje α; • El error Err existente entre la salida O proporcionada por la neurona y la salida T esperada; • decir: Y finalmente, por el j-ésimo componente del vector de entrada E : I j. Es w j = w j + α⋅ Err Err I ⋅ I j
j = 1, 2, …, n
O en términos vectoriales, donde W es es el vector de pesos de la neurona: W = = W + + α⋅ Err Err E ⋅ E
Donde, por la Ecuación 6.1.4, Err = T – O y a su vez, por la Ecuación 6.1.3, la salida O está dada por:
O = g (W ⋅ E )
La Función de Activación g se asume continua y diferenciable en (- ∞, ∞).
168
Capítulo 6. Redes de Perceptrones
Ahora bien, consideremos algunos puntos que se establecen en el Teorema de Convergencia y que, de primera vista, pueden contrastar con lo previamente mencionado: • El Teorema hace alusión a la Función de Activación g únicamente en su enunciado, pero no la utilizamos en la demostración. • Tampoco se hace mención del error existente entre la salida de la neurona y la salida esperada, es decir, el valor Err . • Nunca se menciona al Coeficiente de Aprendizaje α. Ni en el enunciado ni en la demostración. • El enunciado del Teorema establece que la convergencia se debe garantizar para cualquier vector de pesos inicial, sin embargo, en la demostración utilizamos únicamente como vector de pesos inicial a W 1 = 0 (el vector cero). El objetivo de esta Sección es el de analizar uno a uno los puntos antes enunciados a fin de clarificar las aparentes diferencias entre lo que se enuncia y demuestra en el Teorema de Convergencia y lo establecido por la Regla de Rosenblatt. Analicemos primerdelugar la aparente En ausencia de la4.1 Función de Activación en la demostración del en Teorema Convergencia. la Sección comentamos que el rolg de la Función de Activación es el de mantener las salidas de las neuronas dentro de ciertos límites. O desde otra perspectiva, la Función de Activación simplemente aplica un escalamiento al valor de W E ⋅ E . Recordemos que el Perceptrón solo es capaz de resolver problemas de clasificación binaria: el vector de entrada forma parte de una clase A o de una clase B, donde A y B son disjuntas. El valor de W ⋅ E E se se debe interpretar de manera que se determine en qué clase ha ubicado la neurona a su vector de entrada. Si la función g aplica un escalamiento sobre W E ⋅ E entonces el valor escalado, g(W E ⋅ E ), ), debe interpretarse también de manera pueda inferirse correctamente a que clase pertenece el vector de entrada. La elección de g depende del problema en consideración. Y de hecho g podría ser la Función Identidad en donde tenemos que no se aplica escalamiento alguno al valor de W E ⋅ E . En este sentido, la demostración del Teorema podría asumirse que trabaja específicamente usando como Función de Activación a la Función Identidad. Dado que el Teorema utiliza el signo de W E ⋅ E para decidir si un vector de entrada fue correctamente clasificado, entonces si se deseara incorporar una Función de Activación g diferente a la Identidad simplemente habría que considerar el rango de valores arrojados por g(W E ⋅ E ) y establecer los intervalos bajo los cuales se determina una clasificación correcta o incorrecta del vector de entrada E . Ahora veamos la razón por la cual la Ecuación 6.1.4, Err = T – O, no es mencionada. El Teorema de Convergencia parte de la suposición de que el problema a resolver es efectivamente linealmente separable. Por ello mismo se asume la existencia de un vector de pesos W * que permite la separación lineal efectiva de los elementos del conjunto de entrenamiento en dos clases. Recordemos, tal como se estableció en la Sección
6.1, que el valor de Err T O puede ser positivo o negativo. Si el error, Err , es positivo O salida entonces entonces la salida la de la neurona debe ser debe incrementada. otro lado,elsiobjetivo el errordel es negativo O de la neurona reducirse. Por En concreto, valor Err es es simplemente indicarnos como deberán ser modulados los pesos de la neurona:
169
A rtificial Una Introducción al Cómputo Neuronal Artificial
si éstos se aumentan o se reducen. En la demostración del Teorema de Convergencia tenemos que precisamente por contar con el vector de pesos W * es que podemos determinar si el vector de pesos actual W en el Perceptrón clasifica correcta o incorrectamente. De acuerdo a la demostración tenemos que si, dado el vector de entrada E , W E ⋅ E > 0 pero W * E ⋅ E < 0 o bien, en el otro caso posible, si W E ⋅ E < 0 pero W * E ⋅ E > 0, entonces un ajuste de pesos era requerido. El ajuste simplemente consistía en aumentar o reducir los pesos. Tenemos entonces que el vector W * hace precisamente la función del valor Err : nos indica el criterio de actualización de pesos a utilizar. En la práctica realmente nunca contamos con el vector de pesos W *, *, de lo contrario, no se requeriría entrenar al Perceptrón porque precisamente ya contamos con su vector de pesos óptimo. Al no contar con W * es que requerimos de un criterio para determinar si los pesos deben ser aumentados o reducidos durante el entrenamiento y ese es precisamente el papel de la Ecuación 6.1.4. Para efectos de la demostración del Teorema, y para enfatizar el hecho de que se están tratando problemas linealmente separables, es que se presupone la existencia de W *, *, pero hemos visto que su papel es equivalente al del valor Err . ¿Por qué está ausente el Coeficiente de Aprendizaje α en la demostración del Teorema de Convergencia? Primeramente veamos algunas propiedades de la Regla de Rosenblatt, tal como la planteamos en la Sección 6.1. Vectorialmente, ésta está dada por: W = = W + + α⋅ Err Err E ⋅ E
Ya habíamos hecho patente la similitud de esta regla de actualización con la presentada en la Sección 4.3, la cual estaba basada en búsqueda de vector gradiente mediante Descenso Escalonado. Para la Regla de Rosenblatt consideremos la siguiente Función de Error: ME =
1
N
(T N 1
k
− Ok )2
(Ecuación 6.2.11)
k =
Donde T k k es la salida esperada para el k -ésimo -ésimo vector de entrada E k k y Ok es la salida proporcionada por la neurona al presentarle precisamente E k k . Nótese que el lugar geométrico descrito por la Ecuación 6.2.11 es también dependiente de la Función de Activación utilizada. Si g es la Función Identidad entonces sabemos que ME es un hiperparaboloide. A partir de la función ME podemos obtener funciones de error que no dependen de todo el conjunto de entrenamiento (formado por N vectores de entrada). Es decir, y tal como lo hicimos en el método de Descenso Escalonado, podemos considerar únicamente el k -ésimo -ésimo término de la sumatoria de la Ecuación 6.2.11: 2
n
2
ME k k = (T k k Ok )
= Tk − g w j I j
j =1
(Ecuación 6.2.12)
170
Capítulo 6. Redes de Perceptrones
Donde los escalares w j e I j forman parte del vector de pesos actual W y del vector de entrada E k k, respectivamente. Es claro que la Ecuación 6.2.12 no es más que el cuadrado de la función Err presentada originalmente en la Ecuación 6.1.4. La función ME k k , o de manera equivalente, Err 2, es un estimador para la función ME (Ecuación 6.2.11). Por lo tanto, la minimización de Err 2 = ME k k es también un estimador para la minimización de ME . 2 Ahora requerimos el vector gradiente de Err . El vector gradiente, como bien sabemos, nos indica la dirección para maximizar a Err 2. En consecuencia, nos movemos en la dirección opuesta para minimizarla. La Regla de Rosenblatt como tal no calcula un vector gradiente para determinar hacia que región, del lugar geométrico asociado a la función ME , nos debemos mover. Pero es claro que la interpretación que se da al signo de la función Err nos nos indica precisamente como debemos movernos. Si Err > > 0 entonces debemos movernos de manera que la salida de la neurona aumente. Si Err < < 0 entonces nos movemos de tal forma que el valor de salida de la neurona se reduce. Ahora bien, Err es es un escalar, mientras que el gradiente es un vector. Tal vector, en el método de Descenso Escalonado, está dado, en parte, en función del vector de entrada actual E k k . Por lo tanto, tenemos que el valor de Err para tal fin, en la Regla de Rosenblatt, es multiplicado por el vector de entrada actual. Al final es claro que el vector Err ⋅ E ⋅ cumple cumple con la misma función que el vector gradiente de 2 Err . Ahora bien, en el entrenamiento del Perceptrón mediante Descenso Escalonado (Sección 4.3) establecimos que la función del Coeficiente de Aprendizaje es la de establecer la velocidad de aprendizaje por parte de la neurona. Sabemos que la elección de este valor influye sobre el número de iteraciones que el método de entrenamiento efectuará. Un número reducido de iteraciones puede verse como un rápido aprendizaje. En términos geométricos, el Coeficiente de Aprendizaje define, en parte, el tamaño del desplazamiento que efectuará el vector de pesos actual cuando es actualizado y por tanto colocado en otra región del lugar geométrico definido por la función de error ME . El valor del Coeficiente influye en gran medida en que tan rápido nos acercaremos, o alejaremos inclusive (si éste fue mal elegido), de manera progresiva a la minimización de la función ME . Debe ser claro que la función del Coeficiente α es la misma en la Regla de Rosenblatt: permitir la aceleración de la convergencia del vector de pesos. Por tanto, hemos posicionado a la Regla como métodogradientes de minimización función ME (Ecuación La elRegla no 6.2.11).que calculaun vectores a lo largo de de la la búsqueda pero se puede apreciar término de actualización α⋅ Err cumple precisamente con la función de ir dirigiéndola. Err E ⋅ E cumple Ahora bien, retomemos el punto referente al rol del Coeficiente del Aprendizaje en el Teorema de Convergencia. En párrafos anteriores mencionamos que en la práctica, a diferencia de las presuposiciones del Teorema, sólo contamos con un vector de pesos inicial, que por lo general es inicializado de manera aleatoria. Nótese que por lo regular tampoco analizamos las propiedades geométricas y topológicas asociadas al lugar geométrico relacionado con la función ME : la función que precisamente buscamos minimizar. El Coeficiente de Aprendizaje representa un parámetro que se nos proporciona para acelerar la convergencia de los pesos y también para modular la precisión con que se
explora a la función ME . El Teorema de Convergencia, contando ya desde un principio con existencia del vector de pesos óptimo W *, únicamente establece que efectivamente se puede lograr la convergencia del vector de pesos, y que el número de iteraciones requerido
171
A rtificial Una Introducción al Cómputo Neuronal Artificial
es finito. El Teorema no considera el problema de minimizar tal número de iteraciones. Es decir, no lidia con la cuestión de la velocidad de aprendizaje. Sin embargo, nótese que es posible asumir que el Coeficiente de Aprendizaje utilizado en la demostración es α = 1. En conclusión debemos entender que el rol del Coeficiente de Aprendizaje queda fuera de los objetivos del Teorema de Convergencia, pero su importancia en la práctica se hace evidente cuando se entrena al Perceptrón a fin de modelar problemas particulares. Por último, hagamos mención de la cuestión relacionada al vector de pesos inicial. El enunciado del Teorema indica claramente que la convergencia se alcanza partiendo de cualquier vector de pesos inicial. Sin embargo, la demostración establece que el vector de pesos inicial utilizado es W 1 = 0: el vector cero. Pero precisamente al establecer el uso del vector cero se hace mención que esta aplicación no produce pérdida de generalidad en la demostración del Teorema. El vector cero, como vector de pesos inicial, permite que la identificación de las cotas Superior e Inferior para el vector de pesos en la k -ésima -ésima iteración sean fáciles de calcular e interpretar. Gracias a ello sabemos, por la Cota Inferior, que la magnitud al cuadrado del vector de pesos crece con un factor k 2, mientras que por otro lado, la Cota Superior nos dice que el vector de pesos no crece de manera indefinida y que de hecho su magnitud al cuadrado es a lo más k γ γ 2 . Si la prueba fuese efectuada considerando cualquier vector de pesos W 1, y debido a que W 2 = W 1 + E 1, donde, recalcamos, W 1 no necesariamente es el vector cero, entonces la Ecuación 6.2.4 tendría la siguiente forma: W *⋅W k ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅E k ⋅ E k k k +1 +1 = W *⋅W 1 + W * E k -1 -1 + W * E
(Ecuación 6.2.13)
Nótese que γ 1k sigue sigue acotando inferiormente a la suma W * E ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅ E k k -1 ⋅ E k k -1 + W * E
Por lo tanto ahora tendríamos: W *⋅W k ⋅ E 1 + W * E ⋅ E 2 + … + W * E ⋅ E k k-1 ⋅ E k k ≥ W *⋅W 1 + γ 1k k +1 +1 = W *⋅W 1 + W * E - 1 + W * E ⇔ W *⋅W k k+1 + 1 ≥ W *⋅W 1 + γ 1k
Por la desigualdad de Cauchy-Schwarz: 2
W* ⋅W
2 k +1
2
≥ (W * ⋅W k +1 ) ≥ ( γ 1 k + W * ⋅W1 )
2
⇔ W * ⋅ W k +1 2
( γ 1 k + W * ⋅W 1 )
2
2
≥ ( γ 1 k + W * ⋅W1 )
2
2
2
γ 12 k 2 + 2γ 1 k (W * ⋅W1 ) + (W * ⋅W1 )
⇔ W k +1
≥
W*
2
W *
2
172
Capítulo 6. Redes de Perceptrones
Se ha obtenido entonces la Cota Inferior para el cuadrado de la magnitud del vector de pesos en la k -ésima -ésima iteración y partiendo de cualquier vector de pesos inicial W 1. Es claro que cuando W 1 = 0 entonces γ 12 k 2 + 2γ 1 k (W * ⋅0 ) + (W * ⋅0 ) 2 W*
2
=
γ 12 k 2 W *
2
Que es precisamente la Cota Inferior presentada en la demostración del Teorema de Convergencia. Es evidente que esta Cota Inferior, considerando cualquier vector de pesos inicial, es tan válida como la que se proporcionó en la demostración del Teorema de Convergencia. De manera similar podemos obtener la correspondiente Cota Superior. Pero debe apreciarse que éstas, al contar con más términos, puede que dificulten su manipulación y hagan que la demostración se extienda de manera innecesaria sobre todo si se requiere que las cotas sean tan ajustadas como sea posible. Finalmente, ya sea que se use únicamente el vector de pesos inicial W 1 = 0 o bien que éste sea cualesquiera, se llega a la misma conclusión: se tiene probada la convergencia de los pesos de la neurona, que éstos están debidamente acotados para cada iteración y que el número de iteraciones requeridas para alcanzar la convergencia es finito.
6.3 Retropropagación Retropropagación El lector se debe estar cuestionando acerca de la razón para revisitar al Perceptrón al considerar la Regla de Rosenblatt para su entrenamiento y su correspondiente Teorema de Convergencia. La razón es sencilla: la Regla de Rosenblatt representa el punto de partida para los fundamentos a adoptar en el Algoritmo de Retropropagación en lo que respecta al ajuste de pesos en una red formada por Perceptrones. Contrastemos este punto con el mecanismo de ajuste de pesos para una red Madaline presentado en la Sección 5.2. En tal procedimiento establecimos el principio de búsqueda de una neurona o neuronas “culpables”. éstas existían entonces sus pesos de tal forma que suSi salidas permitan que lamodificábamos salida final dedelamanera red sea“abrupta” la correcta, es decir, la esperada. ¿Qué queremos decir cuando usamos el término “abrupto”? Nos referimos a que los pesos originales de una neurona eran desechados por completo y sustituidos por otros nuevos. Sin embargo, la Regla de Rosenblatt, y también el método de Descenso Escalonado (Sección 4.3), realizan una actualización de pesos, pero ésta es gradual. Los pesos originales son en parte conservados al serles aplicada una modificación que no los reemplaza por completo por otros. Dado que esta modificación se aplica por cada vector de entrada en el conjunto de entrenamiento, es que entonces la modificación es gradual. Precisamente el principio del ajuste gradual de pesos fue adoptado por Rumelhart, Hinton y Williams al presentar, en 1986, al Algoritmo de Retropropagación
( Back-Propagation Back-Propagation Algorith Algorithm m). Como a cualquier otro método de entrenamiento, se le presenta a la red un vector del conjunto de entrenamiento. Si ésta calcula una salida que coincida con la esperada entonces no se hace nada. Pero, si existen diferencias entre la
173
A rtificial Una Introducción al Cómputo Neuronal Artificial
salida de la red y la salida esperada entonces los pesos deben ser ajustados de manera que el error sea disminuido. Pero Rumelhart y compañía dieron un paso más que resulta ser una de las novedades del algoritmo. Cuando un error entre la salida de la red y la esperada ha sido identificado, entonces éste se distribuye y se utiliza para ajustar a todos los pesos de todas las neuronas que forman las capas ocultas y de salida de la red. El ajuste aplicado en ese momento busca hacer más pequeño el error entre la salida esperada y la salida producida por la red, pero tampoco busca eliminarlo por completo en ese momento. Es decir, se tiene por un lado un ajuste gradual de pesos que en consecuencia también reduce gradualmente los errores, y por otro lado, no se busca identificar una sola o varias neuronas culpables: a todas las neuronas se les atribuye una contribución al error generado y es por ello que a todas se les deben ajustar sus respectivos pesos. Al mecanismo de entrenamiento se le llama de Retropropagación debido a que inicialmente el error de salida de la red es identificado a nivel de su capa de salida. Se dice entonces que las salidas de las neuronas en esta capa se interpretan al compararlas con las salidas esperadas. Por ello mismo los pesos en la capa de salida son los primeros en ser modificados. Previamente mencionamos que las salidas de las capas ocultas realmente no se pueden interpretar, aunque si son accesibles y también contribuyeron en su momento a la salida errónea de la red. Por ello mismo una vez modificados los pesos en la capa de salida se procede a modificar los pesos en las neuronas de la última capa oculta, posteriormente los pesos de las neuronas en la penúltima capa oculta y así sucesivamente hasta llegar a la modificación de pesos en la primera capa oculta. Es decir, a diferencia de la propagación de un vector de entrada de la capa de entrada hacia las ocultas y finalmente a la de salida, la actualización de pesos implica una Retropropagación, que va en el sentido opuesto. Analizaremos en primer lugar, en la siguiente Sección, la instancia del Algoritmo de Retropropagación bajo redes de Perceptrones formadas únicamente por una única capa oculta. Posteriormente, en la Sección 6.4, veremos el caso general con varias capas ocultas.
6.3.1 Retropropagación en una Red de una Sola Capa Oculta Oculta Considérese la Red de Perceptrones, de una sola capa oculta, presentada en la Figura 6.2. Sean: • n1: el número de neuronas en la capa de entrada. • n2: el número de neuronas en la capa oculta. • n3: el número de neuronas en la capa de salida. Por la Figura 6.2 es claro que la red recibirá un vector de entrada X en en n1 y proporcionará como salida un vector en n3 . Sea g la función de activación utilizada en todas las neuronas. Se asume que ésta es continua y diferenciable en (- ∞, ∞). En nuestro caso, supondremos que el número de neuronas en la capa de entrada es el mismo que de componentes de los vectores de entrada: n1. Nótese también que cada neurona en la capa de
entrada recibe únicamente un componente del vector de entrada y que la salida de cada una de estas neuronas se propaga las neuronas capa oculta. ser se claro que las neuronas que forman la capa adetodas entrada contarán de conlaun único pesoDebe el cual multiplica por el único escalar que reciben y el resultado es sometido a la Función de Activación g.
174
Capítulo 6. Redes de Perceptrones
Por lo general, el rol de las neuronas de la capa de entrada es el de simplemente recibir su correspondiente escalar y propagarlo de manera inmediata a todas las neuronas de la capa oculta. Ello quiere decir que podría considerarse que el valor de su único peso es igual a 1 y que estas neuronas, en particular, cuentan con la Función Identidad como Función de Activación. Por lo mismo de que su función es la de recibir y propagar el vector de entrada, sin alterar los valores de sus componentes, es que estas neuronas no serán consideradas en el proceso de ajuste de pesos. Realmente nos interesará ajustar los pesos de las neuronas en las capas oculta y de salida que son las que se encargan de dar solución al problema que se esté considerando. Finalmente, y como bien sabemos, la salida de cada neurona en la capa oculta se propaga a todas las neuronas en la capa de salida.
x 1
I 1
x 2
x k
x n 1
a1
o1
a j j j
oi
a n 2
o n3
I 2
I k
I n1 Figura 6.2. Una red de Perceptrones con una única capa oculta (Véase el texto para detalles).
Sea T un un vector en n3 . El vector T será será de hecho un vector de salida esperada, en donde T i será su i-ésimo componente. Sea Oi la salida proporcionada por la i-ésima neurona en la capa de salida de la red. Como ya mencionamos en la Sección anterior, la Retropropagación, para el ajuste de los pesos, en este tipo de red comprende dos fases:
• Fase 1: Actualización de los pesos en las Neuronas en la Capa de Salida. • Fase 2: Actualización de los pesos en las Neuronas en la Capa Oculta.
175
A rtificial Una Introducción al Cómputo Neuronal Artificial
Describamos en primer lugar el ajuste de pesos en las Neuronas de la Capa de Salida. Considérese a la i-ésima neurona en esta capa, i = 1, 2, …, n3. Dado que ésta es una neurona de tipo Perceptrón tenemos que su Sumatoria de Salida está dada por: n2
enti =
1 w , a ji
j
(Ecuación 6.3.1)
j =
Nótese que esta neurona recibe como entrada un vector de n2 componentes que se forma precisamente por las salidas de las neuronas en la capa oculta (Véase la Figura 6.2). Por lo tanto, cada j-ésimo peso de nuestra i-ésima neurona en consideración, w j,i, se multiplicará por el j-ésimo componente del vector de entrada, es decir, por la salida generada por la j-ésima neurona en la capa oculta: a j. La salida final Oi está dada por la aplicación de la función de activación g sobre el valor ent i de la Sumatoria de Salida: Oi = g(ent i)
(Ecuación 6.3.2)
Ahora bien, suponiendo que debemos aplicar una corrección a nuestro Perceptrón, tenemos entonces que aplicar la siguiente regla a cada uno de sus n2 pesos. Es decir, la actualización del j-ésimo peso, w j,i, j = 1, 2, …, n2, estará dada por: w j,i = w j,i + α⋅a j⋅∆i
(Ecuación 6.3.3)
Donde: • w j,i: j-ésimo peso de la i-ésima neurona de la capa de salida. •• α aprendizaje. a j: Coeficiente Salida de la jde -ésima neurona en la capa oculta. A ∆i, llamado el Término de Variación o Cambio de la i-ésima neurona de la Capa de
Salida, se le define de la siguiente manera: ∆i = Err i ⋅ g’(ent i) Err i es
(Ecuación 6.3.4) 6.3.4)
la diferencia entre el i-ésimo componente del vector de salida esperada y la salida proporcionada por la i-ésima neurona en la capa de salida. Es decir: decir:
Err i = T i - Oi
(Ecuación 6.3.5)
176
Capítulo 6. Redes de Perceptrones
Por otro lado, g’ no es más que la derivada de la función de activación. Dado que g se asume continua y diferenciable en cualquier punto, es que g’ no tendrá problemas de indefinición y por tanto el ajuste de pesos será posible para cualquier neurona de cualquier capa. En particular, g’ será evaluada, en el caso de las neuronas en la capa de salida, tal como lo indica la Ecuación 6.3.4, con el valor de la Ecuación 6.3.1: n2 g '(enti ) = g ' w j ,i a j j =1
(Ecuación 6.3.6)
Ahora procedamos a describir la manera en que los pesos de las neuronas en la capa oculta son actualizados. Consideremos a la j-ésima neurona en la capa oculta, 1 ≤ jj ≤ n2. Véase la Figura 6.2. Ahora bien, la actualización del k -ésimo -ésimo peso en la j-ésima neurona, wk j, j, de la capa oculta se da mediante la aplicación de la regla: wk,j = wk,j + α⋅ I I k k ⋅∆ j
(Ecuación 6.3.7)
Donde I k k es es la salida de la k -ésima -ésima neurona en la capa de entrada y α es el Coeficiente de aprendizaje (el mismo utilizado para actualizar a las neuronas en la capa de salida). Recordemos que, en base a lo establecido en párrafos anteriores, el valor I k k no es más que el valor del k -ésimo -ésimo componente del vector de entrada X . Es decir, I k k = xk (véase la Figura 6.2). El término ∆ j, denominado Término de Variación o Cambio de la j-ésima neurona en la Capa Oculta, está dado por: n3
∆ j = g '(ent j ) ⋅ w j ,i ∆ i
(Ecuación 6.3.8)
i =1
Se requiere la derivada de la Función de Activación g, es decir, g’. Está será evaluada con el valor proporcionado por la sumatoria de salida de la neurona que se está actualizado: n1
1 w , I
ent j =
k j k
(Ecuación 6.3.9)
k =
Tomando como referencia a la Figura 6.2, la sumatoria se conforma por n1 términos debido a que cada uno de éstos es la salida que proporciona cada una de las neuronas en la capa de entrada. Es decir, cada neurona en la capa oculta recibe un vector de entrada en n1 . Ahora bien, en Secciones y párrafos anteriores mencionábamos que uno de los principios del Algoritmo de Retropropagación es el de distribuir el error de la red entre todas las neuronas que la conforman y utilizarlo para el ajuste de sus pesos. Previamente vimos como tal error era utilizado para actualizar los pesos de las neuronas en la capa de salida ( Ecuaciones
6.3.3 a 6.3.5). Ahora debemos ver como es que el error de la red es también utilizado para actualizar los pesos de las neuronas en la capa oculta. Es claro que para toda neurona en la capa oculta su salida, el escalar a j, es enviado a todas las neuronas en la capa de salida
177
A rtificial Una Introducción al Cómputo Neuronal Artificial
(véase la Figura 6.2) y en particular se relacionará específicamente con su j-ésimo peso: w j ,i . Al final, el producto w j ,i ⋅ a j contribuye al valor de la Sumatoria de Salida de las neuronas en la capa de salida (véase la Ecuación 6.3.1), y en consecuencia, a la salida final de Porque tanto, claro que las neuronas capa oculta son en parte porlaelred. error se es produce en cada uno de en los laPerceptrones de salida conresponsables los que se conectan. Ahora observemos la sumatoria presente en el término ∆ j (Ecuación 6.3.8): n3
1 w , ∆ j i
i
i=
∆i es precisamente el Término de Variación o Cambio que se utilizó para actualizar a la
neurona en la capa de salida y a su vez, tal como lo muestra la Ecuación 6.3.4, cuenta con el error existente entre la salida Oi proporcionada por la neurona y la salida T i i-ésima
esperada. en Es laclaro de la aplicada actualización, o corrección, sobreEsto las neuronas capaque de entonces salida seráparte también a las neuronas en laaplicada capa oculta. también tiene como consecuencia que para aplicar la regla de actualización de la Ecuación 3.6.7 se requiere haber actualizado primeramente a las neuronas en la capa de salida mediante la Ecuación 6.3.3 y preservar los valores ∆i. De allí el término Retropropagación. Dado que las Ecuaciones 6.3.4 y 6.3.8 requieren que la Función de Activación sea continua y diferenciable en (-∞, ∞), resulta obvio que funciones como sign (Sección 3.1) no pueden ser consideradas. En la Sección 4.1 comentamos que por lo regular se usan las siguientes funciones y sus correspondientes derivadas: 1 • Función Sigmoide: 1 + Tanh( z ) • Función :
2
• Función Tanh( z/2 z/2): • Función Tanh( z z):
g ( z ) = 1 + e − z g ( z) =
e2 z
e − z
,
, 1 + e2 z 2 g ( z) = −1 , 1 + e− z 1 − e −2 z g (z) = , 1 + e−2 z
g '( z ) =
(1 + e− z ) 2 2e2 z g '( z ) = (1 + e2 z )2 2e− z g '( z ) = (1 + e− z ) 2 4e2 z g '( z ) = (1 + e2 z )2
Debido a que el Algoritmo de Retropropagación requiere en primer lugar obtener la
salida producida por la red cuando un vector de entrada le es presentado, entonces es que debemos implementar el mecanismo mediante el cual precisamente tal vector de entrada es procesado. El Algoritmo 6.2 implementa la propagación de un vector de entrada hacia cada una de las capas de la red. El algoritmo recibe como entrada 6 parámetros:
178
Capítulo 6. Redes de Perceptrones
• Tres enteros n1, n2 y n3 que denotan, respectivamente, el número de neuronas en la capa
de entrada, el número de neuronas en la capa oculta y el número de neuronas en la capa de salida. • Una matriz W_hidden de tamaño n2 × n1. Esta matriz contiene los pesos de las neuronas en la capa oculta. Recordemos que tal capa se forma por n2 neuronas y cada una de estas cuenta con n1 pesos. Por ello mismo, la información referente a la j-esima neurona está contenida en el j-ésimo renglón de la matriz. • Una matriz W_output de tamaño n3 × n2. Contiene la información referente a las n3 neuronas que forman la capa de salida. Los n2 pesos del i-ésimo Perceptrón están localizados precisamente en el i-ésimo renglón de esta matriz. • Un vector X en en n1 . Es el vector de entrada que se presentará a la red.
El Algoritmo 6.2 procede de la siguiente manera: • Cada componente del vector de entrada X es es enviado a su respectiva neurona en la capa
de entrada. Dado que estamos considerando el hecho de que el rol de estas neuronas es el de simplemente propagar a X por haciala la oculta,noentonces en una consecuencia tendremos que el vector I generado generado capacapa de salida es más que copia del vector de entrada X . • El vector I es es presentado a las neuronas en la capa oculta. Para la j-ésima neurona en esta capa, j = 1, …, n2:
Se calcula su sumatoria de salida:
o
n1
1 w , I
ent j =
k j k
.
k =
Se determina su salida a j = g(ent j).
o
• Las salidas de las neuronas en la capa oculta forman un vector a de n2 componentes.
Ahora el vector a será enviado como entrada a las neuronas en la capa de salida. Para la i-ésima neurona en la capa de salida, i = 1, …, n3:
Se calcula su sumatoria de salida:
o
n2
enti =
1 w , a ji
j
.
j =
Se determina su salida Oi = g(ent i).
o
• Las salidas de las neuronas en la capa de salida forman un vector O de n3 componentes.
Este vector es precisamente la salida final que la red proporciona.
El Algoritmo 6.2 proporciona como salida el vector O y también al vector a, el vector generado por la capa oculta, debido a que éste último es requerido por el Algoritmo de
Retropropagación. Nótese que nuestro algoritmo invoca a un procedimiento g, que no es más que la implementación de la Función de Activación.
179
A rtificial Una Introducción al Cómputo Neuronal Artificial
Algoritmo 6.2. Propagación de un vector de entrada en una red de Perceptrones con una única capa oculta.
Procedure Propagation 2 n1], (Integer n1, Integer n2, Integer n3,[1,…, W_hidden [1,…,n X ][1,…, Matrix W_output [Matrix 1,…,n3][1,…, n2], Array X [1,…,n1]) [1,…, I = new Array[1,…,n1] a = new Array[1,…,n2] O = new Array[1,…,n3]
// Cada componente componente del del vector de entrada es es enviado a su respectiva respectiva neurona neurona // en la capa de entrada. entrada. for k = 1 until n1 do I[k] = X [k] [k]
end-of-for // El vector I es enviado enviado como entrada entrada a cada cada neurona en la capa oculta. oculta. for j = 1 until n2 do n1
wk , j I k . // Se calcula, para la j-ésima neurona en la capa oculta, ent j = k =1 Real ent_j = 0 for k = 1 until n1 do ent_j = ent_j + W_hidden[j][k] * I[k] end-of-for // Se obtiene, para la j-ésima neurona en la capa oculta, // su salida a j = g(ent j). a[j] = g(ent_j) end-of-for // El vector a es enviado enviado como entrada entrada a cada cada neurona en en la capa de de salida. for i = 1 until n3 do n2
w j ,i a j . // Se calcula, para la i-ésima neurona en la capa de salida, enti = j =1 Real ent_i = 0 for j = 1 until n2 do ent_i = ent_i + W_output [i][j] [i][j] * a[j] end-of-for // Se obtiene, para la i-ésima neurona en la capa de salida, // su salida Oi = g(ent i). O[i] = g(ent_i) end-of-for // Se retornan como salida el vector a generado por las salidas de las neuronas // en la capa oculta y el vector O que corresponde a la salida final de la red.
return {a, O} end-of-procedure
180
Capítulo 6. Redes de Perceptrones
El Algoritmo 6.3 representa la implementación del método de Retropropagación para el entrenamiento de una red de Perceptrones con una única capa oculta. Se reciben en total 8 entradas: • Un entero N : el número de elementos en el conjunto de entrenamiento. • Tres enteros n1, n2 y n3 que denotan, respectivamente, el número de neuronas en la capa de entrada, el número de neuronas en la capa oculta y el número de neuronas en la capa de salida. • Un entero L: el número de veces que el conjunto de entrenamiento será presentado a la red. O en otras palabras, el número de épocas a aplicar. • Un número real positivo α: el Coeficiente de Aprendizaje. • Una matriz X de N × n1: contiene los N vectores de entrada del conjunto de entrenamiento. Cada vector cuenta con n1 componentes. Por tanto, el n-ésimo vector de entrada estará localizado en el renglón n de X . • Una matriz T de N × n3: contiene los vectores que se espera la red proporcione. El n-ésimo vector de salida esperada se ubica en el renglón n de la matriz T y y cuenta con n3 componentes. En esencia,el yAlgoritmo de acuerdo al mecanismo de Retropropagación descrito en los párrafos anteriores, de la siguiente manera: 6.3 funciona • Se inicializan los pesos de todas las neuronas en las capas oculta y de salida. Por lo regular los valores iniciales asignados están en el intervalo (-1, 1). • Repetir en L ocasiones: en el conjunto de entrenamiento: en o Para cada vector X Se obtiene el vector de salida O de la red al presentarle X . Se obtiene el vector de salida esperada T asociado asociado al vector X . Para cada neurona i en la capa de salida, i = 1, 2, …, n3: • Se calcula Err i = T i - Oi.
n2
• Se calcula la sumatoria de salida enti = w j ,i a j . j =1
• Se obtiene el término ∆i = Err i ⋅ g’(ent i). El valor de ∆i deberá estar
disponible para la actualización de las neuronas en la capa oculta. • Para cada peso j en la neurona i, j = 1, 2, …, n2, se aplica la actualización: w j,i = w j,i + α⋅a j⋅∆i
Para cada neurona j en la capa oculta, j = 1, …, n2:
n1
• Se calcula su sumatoria de salida: ent j = wk , j I k . k =1 n3
• Se obtiene el término ∆ j = g '(ent j ) ⋅ w j ,i ∆ i
i =1
• Para cada peso k en la neurona j, k = 1, 2, …, n3, se usa la actualización: wk,j = wk,j + α⋅ak ⋅∆ j
181
A rtificial Una Introducción al Cómputo Neuronal Artificial
El Algoritmo 6.3 requiere la derivada de la Función de Activación evaluada en ent i o ent j, dependiendo de la capa de neuronas procesada. Para ello se invoca a la función g_derivative que precisamente implemente la derivada requerida. Por otro lado, dado que se requiere el vector de salida O proporcionado por la red usando los pesos actuales, es que entonces se invoca al Algoritmo 6.2 que se encarga de presentar al vector de entrada actual a la red y obtener la correspondiente salida. El Algoritmo 6.2 también retorna el vector a que se forma con las salidas de las n2 neuronas en la capa oculta. Recordemos que este vector es requerido para el cálculo de las sumatorias de salida de las neuronas en la capa de salida. El último punto a considerar es el relacionado a los valores de salida proporcionados por las neuronas en la capa de entrada. Tal como comentamos previamente, estas neuronas reciben únicamente un componente del vector de entrada actual. También sabemos que a esta capa se le puede especificar o no un procesamiento de tales entradas. En nuestro caso, vemos a la capa de entrada con la única función de recibir el vector de entrada y propagar sus componentes, sin alterarlos, a todas las neuronas de la capa oculta. Es por ello que en la especificación del Algoritmo 6.3, y particularmente al calcular las sumatorias de salida de las de la capa oculta y al aplicar de actualización sus pesos, al k neuronas -ésimo componente -ésimo del n-ésimo vectorladeregla entrada como el valorsobre del término I k k. se usará Algoritmo 6.3. Método de Retropropagación R etropropagación para el entrenamiento de una Red de Perceptrones con una única capa oculta.
Procedure BackPropagation (Integer N N , Integer n1, Integer n2, Integer n3, Integer L L, Real α, Matrix X X [1,…, [1,…, N N ][1,…, ][1,…,n1], Matrix T [1,…, [1,…, N N ][1,…, ][1,…,n3]) W_hidden = new Matrix[1,…,n2][1,…,n1] W_output = new Matrix[1,…,n3][1,…,n2] ∆ = new Array[1,…,n ] 3 // Los pesos de de las neuronas neuro nas en la capa capa oculta se se inicializan inicializan // aleatoriamente en (-1, 1). for j = 1 until n2 do for k = 1 until n1 do W_hidden[j][k] = Random( ) end-of-for end-of-for // Los pesos de de las neuronas neuronas en la capa capa de salida salida se inicializan inicializan // aleatoriamente en (-1, 1). for i = 1 until n3 do for j = 1 until n2 do
W_output[i][j] = Random( )
end-of-for end-of-for
182
Capítulo 6. Redes de Perceptrones
// Se efectuarán en total L épocas o presentaciones del conjunto de entrenamiento. L do for t = 1 until L for n = 1 until N N do n-ésimo vector de de entrada, X n , es enviado enviado a la red. // El n-ésimo // Se utilizarán los pesos actuales de las neuronas. {a, O} = Propagation(n1, n2, n3, W_hidden, W_output, X [n]) [n]) // El vector a corresponde a las salidas de las neuronas // en la capa oculta, el vector O es la salida de las neuronas // en la capa de salida. for i = 1 until n3 do // Se procede a actualizar los pesos de la i-ésima neurona // de la capa de salida. // Se obtiene la diferencia entre la salida esperada y la salida // proporc proporcionada ionada por por la neurona. neurona. Real Err_i = T [n][i] [n][i] – O[i] n2
// Se calcula enti = w j ,i a j . j =1
Real ent_i = 0 for j = 1 until n2 do ent_i = ent_i + W_output[i][j] * a[j] end-of-for // Se obtiene el término ∆i = Err i ⋅ g’(ent i). ∆[i] = Err_i * g_derivative(ent_i) // Se aplica la regla de actualización w j,i = w j,i + α⋅a j⋅∆i // a cada peso de la neurona. for j = 1 until n2 do W_output[i][j] = W_output[i][j] + α * a[j] * ∆[i] end-of-for end-of-for for j = 1 until n2 do // Se procede a actualizar los pesos de la j-ésima neurona // de la capa oculta. // Se calcula
n1
1 w , I
ent j =
k j k
.
k =
Real ent_j = 0 for k = 1 until n1 do ent_j = ent_j + W_hidden[j][k] * X [n][k] [n][k] end-of-for
n3
// Se calcula ∆ j = g '(ent j ) ⋅ w j ,i ∆ i . i =1
Real ∆_j = 0
183
A rtificial Una Introducción al Cómputo Neuronal Artificial
for i = 1 until n3 do ∆_j = ∆_j + W_output[i][j] * ∆[i] end-of-for ∆_j = ∆_j * g_derivative(ent_j) // Se aplica la regla de actualización wk,j = wk,j + α⋅ I I k k ⋅∆ j // a a cada peso de la neurona. for k = 1 until n1 do W_hidden[j][k] = W_hidden[j][k] + α * X [n][k] [n][k] * ∆_j end-of-for end-of-for end-of-for end-of-for // Se retornan como salida los pesos de las neuronas en las capas oculta // y de salida. salida. return {W_output, W_hidden} end-of-procedure
6.3.2 Justificación del Algoritmo de Retropropagación Retropropagación La Sección anterior tuvo el objetivo de plantear algorítmicamente al método de Retropropagación para el entrenamiento de una Red de Perceptrones con una única capa oculta. Ahora proporcionaremos las bases Matemáticas que sustentan al Algoritmo de Retropropagación. De hecho, lo ubicaremos como un método de búsqueda de vector gradiente, y específicamente, como un método de Descenso Escalonado. El Algoritmo de Retropropagación constituye un procedimiento para el cálculo del vector gradiente de la siguiente Función de Error: 1 n3 E = (Ti − Oi ) 2 2 i =1
(Ecuación 6.3.10)
Cada término de la sumatoria en la Ecuación 6.3.10 contiene la diferencia entre la salida Oi proporcionada por la i-ésima neurona de la capa de salida y el i-ésimo escalar, T i, del vector de salida esperada. Es claro que la función E calcula calcula únicamente la suma de las diferencias
al cuadrado existentes entre los correspondientes escalares de un vector de salida esperada particular y las salidas de las neuronas en la capa de salida. Nótese que esta función no considera en su totalidad al conjunto de entrenamiento, el cual se forma por N elementos. Únicamente considera al -ésimo elemento, 1 ≤ ≤ N , es decir, la pareja formada por el
184
Capítulo 6. Redes de Perceptrones
-ésimo vector de entrada y su correspondiente vector de salida esperada. Es posible
definir a la Función de Error en términos de todo el conjunto de entrenamiento. Propiamente tendríamos en esta instancia la suma de todos los errores al cuadrado, SSE (Sum of Squared Errors), producidos por la red al presentarle todo el conjunto de entrenamiento: n3 SSE = (T i , − Oi , ) 2 =1 i =1 N
(Ecuación 6.3.11)
Donde T i , es el i-ésimo escalar del -ésimo vector de salida esperada y Oi , es la salida de la i-ésima neurona en la capa de salida cuando se presenta a la red el -ésimo vector de entrada del conjunto de entrenamiento. Sin embargo, tenemos conocimiento de que si bien es posible abordar la minimización de esta función, es claro que tendremos un proceso ineficiente, dado que precisamente se requiere en todo momento considerar al conjunto de entrenamiento por completo. Es claro que la función E de de la Ecuación 6.3.10 forma parte SSE ya de la función quecomo calcula suma de errores al cuadrado Por lo tanto, la función E puede puede verse ununa estimador para la función SSE . Yespecífica. en consecuencia, como bien sabemos, el vector gradiente de la función E es es a su vez un estimador para el vector gradiente de la función SSE . La ventaja esencial de trabajar con la Ecuación 6.3.10 radica en el número reducido de operaciones a efectuar comparado con el número de operaciones requeridas al manipular la función SSE .
Dado que Oi = g(ent i), por la Ecuación 6.3.2, entonces tenemos que la Función de Error ahora tiene la forma: 1 n3 E = (Ti − Oi ) 2 2 i =1
n3
T − g (en ent ) ) 2 1 (
=1
i
i
2
(Ecuación 6.3.12)
i=
Dado que ent i es la Sumatoria de Salida de la i-ésima neurona de la capa de salida ahora se obtiene al aplicar la Ecuación 6.3.1 sobre la Ecuación 6.3.12: 2
n2 1 n3 E = Ti − g w j ,i a j 2 i =1 j =1
(Ecuación 6.3.13)
Donde, como ya sabemos, g es la Función de Activación, w j,i es el j-ésimo peso de la
i-ésima
neurona de la capa de salida y a j es la salida proporcionada por la j-ésima neurona en la capa oculta. Podemos sustituir al término a j por la aplicación de la Función de Activación g sobre ent j, la sumatoria de salida de la j-ésima neurona en la capa oculta (Ecuación 6.3.9). Sin embargo, por el momento debe ser claro que la Función de Error
185
A rtificial Una Introducción al Cómputo Neuronal Artificial
tiene como variables a optimizar precisamente a todos los pesos de todas las neuronas que conforman a nuestras capas de salida y oculta. El objetivo, como siempre, es minimizarla: encontrar los valores de los pesos que hagan tan pequeño como sea posible el error existente entre el vector de salida O y el vector de salida esperada T . Ahora determinaremos al vector gradiente de la Función de Error. Recordemos que los componentes de tal vector serán sus derivadas parciales respecto a cada una de sus variables involucradas: los pesos en las neuronas de salida y los pesos en las neuronas en la capa oculta. Sea w j,i el j-ésimo peso de la i-ésima neurona en la capa de salida. Inicialmente calcularemos
∂ E : ∂w j ,i
∂ E ∂ 1 n3 = (Ti − Oi )2 ∂w ∂w 2 j ,i
j ,i
i =1
La sumatoria considera a todas las neuronas en la capa de salida. Sin embargo, es sólo una, en particular la i-ésima neurona, la que cuenta con el peso w j,i. Por lo tanto, todos los términos de la suma, excepto el i-ésimo, son eliminados por ser constantes respecto a w j,i: 1 (Ti − Oi )2 ∂w j ,i 2 2 ∂ 1 = Ti − g ( enti ) ) ( ∂w j ,i 2 =
∂
(Por la Ecuación 6.3.2)
n2 1 = Ti − g w j ,i a j ∂w j ,i 2 j =1 ∂
2
n2 ∂ n2 = Ti − g w j ,i a j T − g w a i j ,i j ∂ w j =1 j ,i j =1 n2 n2 ∂ = Ti − g w j ,i a j − g w j ,i a j j =1 ∂w j ,i j =1 n2 = Ti − g w j ,i a j ⋅
(Por la Ecuación 6.3.1) Aplicación de la Regla de la Cadena
(T i es constante respecto a w j,i)
j
1
n2 g w a − ' j ,i j ∂ w∂ j =1 j ,i
n2
1
Aplicación de la Regla de la Cadena
w j ,i a j
j=
186
Capítulo 6. Redes de Perceptrones
n2 = Ti − g w j ,i a j ⋅ j =1 n2 g w a − j , i j ' ∂ w∂ ( w1,i a1 + ... + w j ,i a j + ... + wn2 ,i an2 ) j =1 j ,i Todos los términos de la última sumatoria son n2 n2 ∂ = Ti − g w j ,i a j − g ' w j ,i a j w j ,i a j ∂ w j = 1 j = 1 constantes respecto a j ,i w j ,i excepto el j -ésimo n2 n2 = Ti − g w j ,i a j − g ' w j ,i a j a j j =1 j =1 = Ti − g ( enti ) − g ' ( enti ) a j (Por la Ecuación 6.3.1)
= [Ti − Oi ] − g ' ( enti ) a j = Erri − g ' ( enti ) a j = −a j ∆i
(Por la Ecuación 6.3.2) (Por la Ecuación 6.3.5) (Por la Ecuación 6.3.4)
Concretizando tenemos entonces que: ∂ E = − a j ∆ i ∂w j ,i
(Ecuación 6.3.14)
Se ha obtenido la dirección de máximo crecimiento de la función de error E respecto respecto a la variable (peso) w j,i. Sea wk,j el k -ésimo -ésimo peso de la j-ésima neurona en la capa oculta. Ahora procederemos a calcular la derivada parcial de la función E , Ecuación 6.3.10, respecto a wk,j: ∂ E ∂ 1 n3 = (Ti − Oi ) 2 ∂wk , j ∂wk , j 2 i =1
Recordemos que cada término de la sumatoria corresponde al error producido por cada neurona en la capa de salida. Ahora bien, obsérvese la Figura 6.2. El peso respecto al cual
estamos derivando a la función E está contenido únicamente en la j-ésima neurona de la capa SinEllo embargo, mismo pesoparte es propagado todas neuronas en la capa oculta. de salida. se debeeste a que forma del j-ésimohacia escalar dellasvector producido como salida en la capa oculta y el cual, a su vez, es enviado como entrada a todas las
187
A rtificial Una Introducción al Cómputo Neuronal Artificial
neuronas en la capa de salida. Por lo tanto, el peso wk j, j está presente en todos los términos de la sumatoria que forma a la función E . Eso quiere decir que entonces ninguno de los términos de tal sumatoria puede ser visto como constante respecto a wk j ,j: 1 n3 ∂ = (Ti − Oi ) 2 2 i =1 ∂wk , j n3
= (Ti − Oi ) i =1
∂ ∂wk , j
n3
= − (Ti − Oi ) i =1
(Ti − Oi )
∂ ∂wk , j
(Aplicación de la Regla de la Cadena)
Oi
(T i es constante respecto a wk j ,j)
n2 = − (Ti − Oi ) g w j ,i a j (Por la Ecuación 6.3.2) ∂ w i =1 k, j j =1 n3 n2 ∂ n2 = − (Ti − Oi )g ' w j ,i a j w j ,i a j (Aplicación de la Regla de la Cadena) i =1 j j =1 ∂wk , j =1 n3 n2 ∂ = − (Ti − Oi )g ' w j ,i a j ( w1,i a1 + ... + w j ,i a j + ... + wn2 ,i an2 ) ∂ w i =1 j =1 k, j n3
El término
∂
n2
1 w , a j i
j
corresponde a la Sumatoria de Salida de la i-ésima neurona de la capa
j =
de salida. Para esta neurona en particular se tiene que la variable wk j, j aparece únicamente en uno de sus términos. Tal término es el que corresponde a la salida proporcionada, a j, por la j-ésima neurona de la capa oculta, que es precisamente la neurona que nos interesa por contener al peso wk j, j (Véase la Figura 6.2). Por lo tanto, todos los términos de la sumatoria n2
w a
w
j
1 son constantes respecto a excepto el -ésimo. Ahora bien, recordemos que la sumatoria con índice i es la que se encarga de procesar una a una las neuronas en la capa de j =
j ,i
j
k j ,j
salida. En consecuencia, se garantiza que para toda neurona en la capa de salida el j-ésimo término de su sumatoria de salida es debidamente preservado y el resto eliminado por ser constante respecto a wk j, j: n3
n2
∂
= − (Ti − Oi )g ' w j ,i a j
∂wk , j
j =1 n3 n2 = − (Ti − Oi )g ' w j ,i a j w j ,i ⋅ i =1
w j ,i a j
n1
i =1
∂ ∂wk , j
j =1
Dado que a j = g wk , j I k k =1
n1 g wk , j I k k =1
188
Capítulo 6. Redes de Perceptrones
n2 = − (Ti − Oi )g ' w j ,i a j wj ,i ⋅ i =1 j =1 n1 ∂ n1 g ' wk , j I k ∂w wk , j I k k =1 k =1 k, j n3
Aplicación de la regla de la cadena
n2 = − (Ti − Oi )g ' w j ,i a j wj ,i ⋅ i =1 j =1 n1 ∂ g ' wk , j I k ( w1, j I1 + ... + wk , j I k + ... + wn1 , j I n1 ) ∂ w = k 1 k, j n3
n2 = − (Ti − Oi )g ' w j ,i a j wj ,i ⋅ i =1 j =1
Todos los términos de la última sumatoria son
n3
g '
n1
w, I 1
k j k
k =
∂ wk , j I k ∂wk , j
constantes respecto a wk , j excepto el k -ésimo
n2 n1 = − (Ti − Oi )g ' w j ,i a j w j ,i ⋅ g ' wk , j I k I k i =1 k =1 j =1 n3
n1 = − Erri ⋅g ' ( enti ) w j ,i ⋅ g ' wk , j I k I k i =1 k =1 n3
n1 = − ∆i ⋅w j ,i ⋅ g ' wk , j I k I k i =1 k =1 n3
n3
= − ∆i ⋅w j ,i ⋅ g ' ( ent j ) I k
Por la Ecuación 6.3.5, Err i , y la Ecuación 6.3.1, ent i
(Por la Ecuación 6.3.4)
(Por la Ecuación 6.3.9)
i =1
(Por la Ecuación 6.3.8)
= −∆ j ⋅ I k
En resumen tenemos: ∂ E
∂wk , j
∆ j I k
(Ecuación 6.3.15)
Esta derivada parcial representa la dirección de máximo crecimiento de la función E respecto a wk,j.
189
A rtificial Una Introducción al Cómputo Neuronal Artificial
Las derivadas parciales de la función E ( ( Ecuación 6.3.10) forman los componentes de su vector gradiente:
δ E δ w 1,1 δ E δ wn ,1 2 δ E δ w1,n3
Derivadas parciales respecto a los pesos de la pr imer neurona en la capa de salida Derivadas parciales respecto a los pesos de la n3 -ésima δ E neurona en la capa de salida δ w n2 ,n3 ∇ E = δ E δ w1,1 Derivadas parciales respecto a los pesos de la primer δ E neurona en la capa oculta δ w n1 ,1 E δ δ Derivadas parciales respecto w1,n2 a los pesos de la última δ E neurona en la capa oculta δ wn ,n 1 2
(Ecuación 6.3.16)
Es precisamente su posición en el vector ∇ E la la que claramente nos indica si un componente está asociado a una neurona en la capa de salida o pertenece a una neurona en la capa
oculta. Al sustituir en ∇ E con con las Ecuaciones 6.3.14 y 6.3.15 se obtiene:
190
Capítulo 6. Redes de Perceptrones
−a1∆1 − an2 ∆1 −a ∆ 1 n3 a − ∆ n n ∇ E = 2 3 − I 1∆1 − I n1 ∆1 − I 1∆ n2
(Ecuación 6.3.17)
− I ∆ n1 n2
El vector gradiente representa la dirección de máximo crecimiento de la función E . Entonces, para actualizar adecuadamente los pesos de todas las neuronas en la capa de salida y la capa oculta se requiere utilizar la dirección opuesta de ∇ E tal que el error se minimice, es decir, requerimos a -∇ E . Recordemos que las reglas de actualización de pesos w j,i = w j,i + α⋅a j⋅∆i y wk,j = wk,j + α⋅ I I k k ⋅∆ j hacen que nos movamos a una posición en el dominio de la función E . Tal dominio se forma por todos posibles valores que pueden tomar los pesos. Dado que en cada actualización nos cada movemos en dirección a lalugar del gradiente de E , entonces el objetivo es acercarnos vez más a aquellacontraria región, del geométrico descrito por la función E , en donde los pesos minimizan el error de la red tanto como sea posible. El tamaño de los desplazamientos efectuados va también en función del Coeficiente de Aprendizaje α. Por ello, su elección de es vital importancia. Sabemos que es una constante positiva con valor por lo regular en (0, 1). Sin embargo, éste influye sobre la rapidez con la que nos acerquemos, o alejemos inclusive, de las regiones de E en donde los pesos permiten un buen aprendizaje. Ahora bien, tenemos bien claro que el objetivo del Algoritmo de Retropropagación es el de determinar aquellos pesos con que deben ser equipadas las neuronas que forman
una Red de Perceptrones a fin de que un problema dado sea modelado tan bien como sea posible. El cuestionamiento que nos plantearemos ahora tiene que ver con determinar si tales pesos3existen o biena si es posible encontrarlos. Enpunto el caso la geométrico, neurona Adaline (Capítulo ), la función optimizar describía, desde el de de vista a un hiperparaboloide. La buena noticia era que para este lugar geométrico podíamos garantizar
191
A rtificial Una Introducción al Cómputo Neuronal Artificial
la existencia de un único mínimo global. Por lo tanto, los pesos que optimizaban a la neurona, de manera que se obtenía el mejor aprendizaje, existen. Realmente el problema, en el caso de la neurona Adaline, era contar con una buena elección de pesos iniciales y un buen coeficiente de aprendizaje. En las Secciones 6.1 y 6.2 analizamos como es que el Teorema de Convergencia del Perceptrón nos garantiza que es posible encontrar un conjunto de pesos, precisamente para el Perceptrón, de manera que un problema linealmente separable es efectivamente modelado por la neurona. Ahora nos preguntamos: ¿existirá algún resultado similar para el caso de una Red de Perceptrones entrenada mediante el Algoritmo de Retropropagación? Consideremos a la más pequeña de todas las Redes de Perceptrones con una capa oculta. Véase la Figura 6.3. Es claro que para esta red tenemos que n1 = n2 = n3 = 1. Por ello mismo, solo debemos considerar el ajuste de dos pesos: el peso de la única neurona en la capa de salida y el peso de la única neurona en la capa oculta. Como siempre, asumimos que la función de la neurona en la capa de entrada es la de simplemente enviar el único escalar de entrada, sin modificarlo, a la neurona de la capa oculta.
x1
I 1
a1
o1
Figura 6.3. Una Red de Perceptrones de una sola capa oculta con una neurona en cada una de sus capas. capas.
Ahora procederemos a desarrollar tanto como sea posible a la Ecuación 6.3.10 considerando nuestra red de la Figura 6.3 (para distinguir al peso de la neurona en la capa de salida del peso de la neurona en la capa oculta usaremos la notación w para la primera y w para la segunda): E =
1 1 (T − O ) 2 i i 2 i =1 Dado que únicamente se tiene una neurona en la capa de salida
1 2
= (T1 − O1 )2 2
1 1 = T1 − g w j ,1a j 2 j =1
1
2
(Por la Ecuación 6.3.2) Sólo se tiene una neurona
2
(T1
g ( w1,1a1 ) )
en la capa oculta 2
= 1 (T1 − g ( w1,1 ⋅ g ( w1,1 I1 ) ) )
( Dado que a1 = g ( w1,1I1 ) )
2
192
Capítulo 6. Redes de Perceptrones
=
I1 = x1 dado que la neurona en la capa de entrada no efectúa ningun procesamiento
1 (T − g ( w1,1 ⋅ g ( w1,1 x1 ) ) ) 2 1 2
2 1 = T12 − 2 ⋅ T1 ⋅ g ( w1,1 ⋅ g ( w1,1 x1 ) ) + g ( w1,1 ⋅ g ( w1,1 x1 ) ) 2
Resumiendo, tenemos para la red de la Figura 6.3:
E =
2 1 2 T1 − 2 ⋅ T1 ⋅ g ( w1,1 g ( w1,1 x1 ) ) + g ( w1,1 g ( w1,1 x1 ) ) 2
(Ecuación 6.3.18)
En este punto tenemos que el lugar geométrico descrito por la Ecuación 6.3.18 está en relación directa con la Función de Activación g que se utilice. Por ejemplo, sea g = Tanh, entonces la Ecuación 6.3.18 toma la forma:
E =
2 1 2 T − 2 ⋅ T ⋅ g w g w x + g w g w x ( ) ( ) 1 ( 1 1,1 1,1 1 ) ( 1,1 1,1 1 ) 2
T12 − 2 ⋅ T1 ⋅ Tanh ( w1,1 ⋅ Tanh ( w1,1 x1 ) ) 1 = 2 2 + Tanh ( w ⋅ Tanh ( w x ) ) 1 , 1 1 , 1 1 −2( ) 1− e 1,1 1 −2 w1,1⋅ −2( 1,1 1 ) 1+ e 1− e T12 − 2 ⋅ T 1 ⋅ −2( 1,1 1 ) 1 −e −2 w1,1⋅ −2( ) 1+ e 1,1 1 1+ e 1 = 2 −2( ) 1− e 1,1 1 2 −2 w1,1⋅ −2( 1,1 1 ) e 1 + 1− e + −2( ) 1− e 1,1 1 − 2 w ⋅ 1,1 −2( ) 1 + e 1+ e 1,1 1 w
x
w
x
w
x
w
x
w
x
w
x
w
x
w
x
(Por la Ecuación 4.1.9)
(Ecuación 6.3.19)
Recordemos que para evaluar a la función E requerimos de un vector de entrada y su correspondiente vector de salida esperada en el conjunto de entrenamiento. Por la estructura
193
A rtificial Una Introducción al Cómputo Neuronal Artificial
de la red sabemos que el vector de entrada tiene sólo un componente, así también el vector de salida esperada. Supongamos que para el vector de entrada x1 = 0.2 se espera que la red proporcione la salida T 1 = 0.5. Sustituyendo tales valores en la Ecuación 6.3.19 tenemos: 2 −2 ( ⋅0. 0 .2 ) −2 ( ⋅0.2 ) 1− e 1,1 1− e 1,1 w1,1 ⋅ −2 w1,1 ⋅ − 2 −2 ( 1,1⋅0.2 ) 1 − e 1+ e−2 ( 1,1⋅0.0 .2 ) 1 1 − e 1+e 2 E = (0.5) − 2 ⋅ (0.5) ⋅ −2 ( 1,1⋅0. 0 .2 ) + −2 ( 1,1⋅0 .2 ) e e 1 − 1 − 2 −2 w1,1 ⋅ −2 w1,1 ⋅ −2 ( 1,1⋅0.2 ) −2 ( 1,1⋅0.2) 1 + e 1+ e 1 + e 1+e w
w
w
w
w
w
w
w
(Ecuación 6.3.20)
La Figura 6.4 muestra la correspondiente gráfica de la función E para para el caso de la red de la Figura 6.3 y con el vector de entrada x1 = 0.2 y con salida esperada T 1 = 0.5. Visualmente, debe ser evidente que no se aprecia un punto sobre la superficie que tenga la propiedad de ser un único mínimo global. Mencionábamos previamente que la presencia de un único mínimo global era una propiedad sumamente valiosa de las funciones de error asociadas, por ejemplo, a la neurona Adaline.
Figura 6.4. Gráfica de la función de Error asociada a la red de Perceptrones de la Figura 6.3 (véase el texto para detalles).
194
Capítulo 6. Redes de Perceptrones
Reconsideremos la Ecuación 6.3.18. Sustituyamos en ella a la Función Identidad. Por lo tanto obtendremos: 2 1 2 E = 2 T1 − 2 ⋅ T1 ⋅ g w1,1 g ( w1,1 x1 ) + g w1,1 g ( w1,1 x1 ) ( ) ( ) 2 1 = T12 − 2 ⋅ T1 ⋅ι ( w1,1 ⋅ι ( w1,1 x1 ) ) + ι ( w1,1 ⋅ι ( w1 ,1 x1 ) ) 2 2 1 = (T12 − 2T1w1,1w1,1 x 1 + w1,1w1,1 x1 ) 2 1 = (T12 − 2T1w1,1w1,1 x1 + w12.1w12,1 x12 ) (Ecuación 6.3.21) 2
Utilizando nuevamente el vector de entrada x1 = 0.2 y la salida esperada T 1 = 0.5 tenemos: 1 2 2 E = 2 ( 0.25 − 0.2w1,1w1,1 + 0.04w1.1w1,1 ) = 0.125 − 0.1w1,1w1,1 + 0.02 w12.1w12,1
(Ecuación 6.3.22)
La gráfica de la Ecuación 6.3.22 se presenta en la Figura 6.5. Es claro que, al menos en términos visuales, no se aprecia un punto sobre la función E que que corresponda a un mínimo global. Sin embargo, la ventaja de utilizar a la Función Identidad como Función de Activación es que podemos manipular de manera más sencilla a la función de error y por tanto analizar si este punto existe o no y si es el caso, determinar si es único.
Figura 6.5. Gráfica de la Ecuación E = 0.125 − 0.1w1,1w1,1 + 0.02w12.1w12,1 .
195
A rtificial Una Introducción al Cómputo Neuronal Artificial
Procedamos a calcular las dos derivadas parciales de la función E (Ecuación 6.3.22): δ E δ = 0.125 − 0.1w1,1w1,1 + 0.02w12,1w12,1 ) ( δ w1,1 δ w1,1
=
δ −0.1w1,1w1,1 + 0.02w12,1w12,1 ) ( δ w1,1
= − 0.1
δ δ w1,1
w1,1w1,1,1 + 0.02
δ 2 2 w1,1w1,1,1 δ w1,1
= − 0.1w1,1 + 0.04w1,1w12,1
(Ecuación 6.3.23)
δ E δ 2 2 1 , 1 1 , 1 1 δ w1,1 = δ w1,1 ( 0.125 − 0.1w w + 0.02w ,1w1,1 )
=
δ −0.1w1,1w1,1 + 0.02w12,1w12,1 ) ( δ w1,1
= − 0.1
δ δ w1,1
w1,1w1,1,1 + 0.02
δ 2 2 w1,1w1,1,1 δ w1,1
= − 0.1w1,1 + 0.04w12,1w1,1
(Ecuación 6.3.24)
Las Ecuaciones 6.3.23 y 6.3.24 forman precisamente los componentes del vector gradiente de la función de error E . Nuestro objetivo, y también el del algoritmo de Retropropagación, es determinar aquellos de losa pesos quealeligualar vector las gradiente sea parciales, el vector cero (o tan cerca comovalores sea posible éste). que Por hacen lo tanto, derivadas previamente obtenidas, a cero tenemos el siguiente sistema de ecuaciones no lineales: −0.1w1,1 + 0.04w1,1w12,1 = 0 2 −0.1w1,1 + 0.04w1,1w1,1 = 0
Una solución obvia e inmediata es w1,1 = w1,1 = 0 . Al sustituir tales valores en la Ecuación
6.3.22 tenemos: E (0, 0) 0) = 0.125 − 0.1(0)(0) + 0.02(0)
2
(0)2 = 0.125
196
Capítulo 6. Redes de Perceptrones
Veamos que de hecho la solución w1,1 = w1,1 = 0 no es la única. Nótese en el sistema que el peso w1,1 puede ser expresado en términos del peso w1,1 usando la primer ecuación: −0.1w1,1 + 0.04 w1,1w12,1 = 0 ⇔ 0.04 w1,1w12,1 = 0.1w1,1 ⇔ w1,1 =
2.5 w1,1
, w1,1 ≠ 0
(Ecuación 6.3.25)
De hecho, si despejamos a w1,1 de la Ecuación 6.3.25 obtenemos la misma expresión que si hubiésemos manipulado desde un principio la segunda ecuación de nuestro sistema: −0.1w1,1 + 0.04 w12,1w1,1 = 0
⇔ 0.04 w12,1w1,1 = 0.1w1,1 ⇔ w1,1 =
2.5 w1,1,11
, w1.1 ≠ 0
(Ecuación 6.3.26)
En cualquier caso, hemos verificado que el conjunto de puntos, en los cuales la función E tiene a su vector gradiente igual a cero, es infinito. Usemos la Ecuación 6.3.26 para generar algunos pesos. Por ejemplo, sea w1,1 = 1, entonces w1,1 = 2.5. Al evaluar el punto (1, 2.5) en la Ecuación 6.3.22, la función de error, se obtiene: E (1, 2. 2 .5) = 0.125 − 0.1(1)(2.5) + 0.02(1)2 (2.5)2 = 0.125 − 0.25 + 0.125 = 0
Si w1,1 = -1 entonces w1,1 = -2.5 y la función E nos proporciona: E ( −1, −2.5) = 0.125 − 0.1(−1)(−2.5) + 0.02(−1) 2 (−2.5)2 = 0.125 − 0.25 + 0.125 = 0
Se nos ha presentado una situación interesante para meditar. Previamente, con el punto (0, 0) la función E nos proporcionó el valor 0.125. Sin embargo, acabamos de encontrar dos puntos para los cuales la función E proporciona proporciona el valor cero. Los tres puntos tienen la propiedad de que los correspondientes vectores gradientes son cero. Por la comparación anterior podríamos hipotetizar entonces que el punto (0, 0) es en realidad un mínimo local. Sin embargo, para caracterizarlo como tal, y de manera contundente, es que
tendríamos que recurrir al bien conocido análisis de puntos críticos. Del estudio, sabemos que el punto además de poder ser caracterizado como mínimo local también podría ser un máximo inclusiveesunelpunto ensilladura. Las tres caracterizaciones tienen en común que el vector ogradiente vectordecero.
197
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora bien, por la manera en la que el método de Descenso Escalonado procede, y en consecuencia también el algoritmo de Retropropagación, tenemos que si el punto (0, 0) fuese caracterizado como mínimo local entonces es posible que el algoritmo dirija la búsqueda hacia éste y que de hecho allí finalice. Ello se debe a que, bajo la suposición de que (0, 0) fuese un mínimo local, es claro que dentro de cierta vecindad de este punto los vectores gradientes apuntaran en dirección opuesta a éste, buscando maximizar a la función E . Pero dado que utilizamos, para movernos sobre la función, a la dirección opuesta del gradiente, es que entonces nos acercaremos más a (0, 0) el cual suponemos es un mínimo. Claramente estamos minimizando a la función E , pero no de manera óptima. Esta afirmación se sustenta en el hecho de que hemos demostrado que existen al menos otros dos puntos, (1, 2.5) y (-1, -2.5), para los cuales la función puede ser minimizada aún más. La Figura 6.6 muestra la grafica de la Ecuación 6.3.26 sobrepuesta en la superficie definida por la Ecuación 6.3.22 (hemos resaltado también al punto (0, 0) para el cual sabemos que E (0,0) (0,0) = 0.25). Este es el conjunto de puntos, o más bien pesos, para los cuales la función de error E retornará el valor cero. Ello se verifica algebraicamente al 2.5 sustituir con el punto w1,1,11 , w1,1 en la Ecuación 6.3.22: 2
2.5 2.5 2 2.5 E , w1,1 = 0.125 − 0.1 w1,1 + 0.02 w w w1,1 w 1,1 1,1 1,1 = 0.125 − 0.25 + 0.125 =0
Ello implica que entonces el algoritmo de Retropropagación debería dirigir su búsqueda a alguno de estos pesos, y no hacia el punto (0, 0), ya que es en éstos donde precisamente se tendrá el mejor aprendizaje posible. Hemos señalado entonces un posible problema que se podría presentar durante el ajuste de pesos mediante el algoritmo de Retropropagación: que éste se quede “estancado” o “atrapado” en un mínimo local. Debe apreciarse con claridad que la función de error, y en consecuencia su geometría y topología, dependen en gran medida de la red de Perceptrones asociada. El número de neuronas en las capas oculta y de salida determina el número de pesos a ajustar. Ello quiere decir que podemos contar con una amplísima variedad de funciones de error, en muchas de las cuales es sumamente probable que exista más de un mínimo local. Es también posible que las funciones cuenten con más de un mínimo global, como es el caso de la Ecuación 6.3.22. Sin embargo, el problema radica en que la presencia de mínimos locales aumenta la probabilidad de que los pesos se ajusten en términos de
éstos y no en términos de un mínimo global. También se debe tomar en cuenta que los valores iniciales de los pesos, en el algoritmo de Retropropagación, establecen el punto de partida de la búsqueda a efectuar la función de error. iniciales de pesos sean cercanos a un mínimo localsobre también aumentan las Valores expectativas de que éste que sea alcanzado. Pero también debe ser claro que valores iniciales de pesos que estén alejados de
198
Capítulo 6. Redes de Perceptrones
un mínimo local no garantizan que éste no sea alcanzado ya que entonces entra en consideración la elección del Coeficiente de Aprendizaje. Recordemos que el coeficiente define el tamaño de las traslaciones, o “saltos”, que efectuaremos sobre la función de error y en consecuencia puede que nos lleve al mínimo local, o lo suficientemente cerca de éste, para que la búsqueda sea atraída hacia él.
Figura 6.6. El conjunto de puntos, resaltados en negro, para los cuales el vector gradiente de la función E = 0.125 − 0.1w1,1w1,1 + 0.02w12.1w12,1 es el vector cero.
Sabemos que el lugar geométrico descrito por la Función de Error va en relación directa con la dimensionalidad de los vectores de entrada y de los vectores de salida esperada en el conjunto de entrenamiento, el número de neuronas en la capa oculta, la Función de Activación elegida, y por último, los valores específicos de los componentes de los vectores que forman al conjunto de entrenamiento. Entonces, es lógico suponer que podemos encontrar un muy variado conjunto de posibles lugares geométricos asociados a las Funciones de Error cada uno con sus propiedades particulares respecto a sus puntos críticos: mínimos, máximos, puntos de ensilladura. Sin embargo, es también posible que algunos de tales lugares geométricos no cuenten con puntos críticos, y de nuestro interés particular, se tenga ausencia de mínimos. Por ejemplo, recordemos que la Función de Error
asociada a nuestra red con una única neurona en cada capa ( Figura 6.3) y usando la Función Identidad como Función de Activación está dada por la Ecuación 6.3.21: E =
1 2 2 2 2 T1 − 2T1w1,1w1,1 x1 + w1,1w1,1 x1 ) ( 2
199
A rtificial Una Introducción al Cómputo Neuronal Artificial
Ahora bien, si consideramos al vector de entrada x1 = 0 y a la salida esperada T 1 = 1 entonces la Ecuación 6.3.21 toma la siguiente forma: E = =
1 2
La cual es evidentemente un plano. De manera inmediata se puede apreciar que su vector gradiente en cualquier punto es precisamente el vector cero. Sin embargo, ninguno de sus puntos es un punto crítico en el sentido de que no puede ser caracterizado como un mínimo, máximo o punto de ensilladura. Aunque también debe ser claro que cualquier punto sobre el plano sirve para minimizar de manera óptima a la Función de Error para los elementos en consideración del conjunto de entrenamiento. En este sentido la búsqueda por Descenso Escalonado, no importa hacia donde se mueva, siempre encontrará un punto que permite minimizar a la Función de Error. Ahora consideremos la situación en la cual el lugar geométrico descrito por la Función de Error es similar al presentado en la Figura 6.7. Supongamos punto marcado el última único punto crítico, un máximo, que se cuenta. Ahoraque bien,el precisamente poresesta propiedad es que no importacon en eldonde se ubiquen los pesos iniciales ( w1,1 , w1,1 ) porque el Descenso Escalonado procederá efectuando la búsqueda siempre en dirección contraria al máximo global dado que nuestro objetivo es minimizar a la función. Por cada par de nuevos pesos encontrados se determinará que el valor de E se se reduce. El problema es que esta búsqueda no garantiza una convergencia de los pesos. Ello se debe precisamente a que por cada nuevo par de pesos se encontrará que es posible minimizar aún más a la Función de Error. Si se estableciera que el algoritmo de Retropropagación itere sucesivamente y además que se detenga una vez que un vector gradiente de valor cero haya sido encontrado, entonces tendremos que teóricamente el algoritmo tendrá una ejecución que requerirá un número infinito de pasos. Recordemos que la función de la Figura 6.7 si cuenta con un punto en donde el gradiente es el vector de cero, pero trata deanteriores un máximo por nuestra manera de proceder siempre alejaremos éste. Lossepuntos dany lugar a una segunda observación respectonos al ajuste de pesos mediante el algoritmo de Retropropagación. Es posible que regiones en las funciones de error no cuenten con puntos críticos, y en particular que no tengan valores mínimos. Hemos visto que existen casos de Funciones de Error en donde las búsquedas de pesos conducirán a una situación en la cual precisamente los pesos no convergerán y el Algoritmo de Retropropagación efectuará una búsqueda que en teoría podría no terminar. En esta Sección hemos establecido, por un lado, los fundamentos detrás del Algoritmo de Retropropagación para el ajuste de pesos en una red de Perceptrones. Pero por otro lado, también hemos señalado los posibles problemas que se pueden presentar y
que en conjunto permiten establecer que la convergencia de los pesos de las neuronas, y en específico, la convergencia hacia un mínimo global que permita obtener el mejor ajuste posible, no está garantizada. En un caso es posible que los pesos obtenidos correspondan a un mínimo local. En otro caso es probable que la función de error a optimizar, debido a sus propiedades geométricas y topológicas, hagan que los pesos se ajusten continuamente de
200
Capítulo 6. Redes de Perceptrones
manera que no se tenga la convergencia. Estos dos escenarios deben ser tomados siempre en cuenta al momento de entrenar a una red neuronal. Es por ello mismo que por lo regular el ajuste de pesos se efectúa asignando pesos iniciales aleatorios y con un número fijo de presentaciones del conjunto de entrenamiento. Una vez que tal número de presentaciones ha sido alcanzado se evalúa a todo el conjunto de entrenamiento y se calcula el error total de aprendizaje de la red. A este proceso se le llama Corrida. La idea es que una vez que una corrida ha sido finalizada, se efectúe una nueva inicialización aleatoria de pesos y se ejecuten las presentaciones establecidas del conjunto de entrenamiento con el correspondiente cálculo del error total del aprendizaje de la red. Es decir, efectuar una nueva corrida. Se procede de manera que se efectúan varias corridas y de todas éstas se elige aquella que reporte el menor error total de aprendizaje. El fundamento detrás de este proceder se sustenta en que por cada corrida se explora una región diferente de la Función Error. El objetivo es que mediante estas exploraciones se pueda determinar, de manera empírica, cuales corridas corresponden a ajustes basados en mínimos locales o qué corridas corresponden a potenciales ajustes que no convergerán. Se espera que aquella corrida con el menor error de aprendizaje sea la que más cerca está de un mínimo global.
Figura 6.7. Una Función de Error E con con un único punto crítico: un máximo (punto remarcado).
6.4 Retropropagación en una Red con Múltiples Capas Ocultas Ocultas Ahora consideraremos el caso del ajuste de pesos, mediante el Algoritmo de
Retropropagación, para una red de Perceptrones formada por dos o más capas ocultas. Como veremos más adelante el principio para el ajuste de pesos sigue la misma idea para el caso oculta, ya que ajustan primer los pesosendelalas neuronas en la con capauna de única salida.capa Posteriormente se se ajustan losenpesos de lugar las neuronas última capa oculta. Dado que estas neuronas son responsables por el error producido en la capa de
201
A rtificial Una Introducción al Cómputo Neuronal Artificial
salida es que parte del ajuste aplicado en la capa de salida también les es aplicado. Después se efectúa el ajuste de pesos en las neuronas en la penúltima capa oculta. Es claro que las salidas de estas neuronas influyen sobre el error producido por las salidas de las neuronas en la última capa oculta. Por lo tanto, parte del ajuste aplicado en la última capa oculta, y en consecuencia también parte de la corrección efectuada en la capa de salida, es también aplicado sobre las neuronas en la penúltima capa oculta. Se procede de esta forma hasta considerar por último el ajuste de pesos en la primera capa oculta. Se deben tomar también en cuenta las correcciones efectuadas a los pesos en las restantes capas ocultas ya que éstas son aplicadas a estas neuronas. En concreto, tenemos que los errores producidos por la red, y los ajustes de pesos aplicados, son distribuidos entre todas las neuronas en las capas ocultas y de salida. El objetivo como siempre es minimizar el error tanto como sea posible.
x 1
I 1
x 2
I 2
a 1,1
I k
x p
I p
a m,1
O1 O2
a 1,k 1,k 1 x k
a ,1
a ,k
a m,k m Oi
a 1,n1
a ,n
a m,n m,n m
Oq
Figura 6.8. Una de red de Perceptrones formada por m capas ocultas, m ≥ 2 (Véase el texto para detalles).
A fin de establecer las reglas de actualización de pesos a utilizar para las neuronas en cada capa hemos de introducir notación apropiada. En primer lugar consideremos los términos básicos. Véase la Figura 6.8. Sean: Sean: • p: número de neuronas en la capa de entrada. • m: número de capas ocultas. ≤ m. • n : número de neuronas en la -ésima -ésima capa oculta, 1 ≤ • q: número de neuronas en la capa de salida. • I k: salida de la k -ésima -ésima neurona en la capa de entrada, 1 ≤ k ≤ p p.
k
• a,k : salida de la k -ésima neurona en la -ésima -ésima capa oculta, 1 ≤ ≤ m, 1 ≤ k ≤ n . i i-ésima neurona en la capa de salida, 1 ≤ i ≤ q. •De : salidaade O acuerdo la laFigura 6.8, tenemos que el papel de las neuronas en la capa de entrada
sigue siendo el mismo que el que les dimos en las dos Secciones anteriores: simplemente
202
Capítulo 6. Redes de Perceptrones
cada una recibe un componente del vector de entrada y se encarga de propagarlo a todas las neuronas en la primer capa oculta. Por ello mismo tenemos que estas neuronas pueden tener a su único peso igualado a uno y como Función de Activación a la Función Identidad. Bajo esta última suposición, la cual consideraremos también en esta Sección, el proceso de actualización de pesos no considera a las neuronas en la capa de entrada. Por la notación establecida tenemos que nuestra red recibirá un vector de entrada en p . Las neuronas en la capa de entrada propagan sus componentes a todas las neuronas en la primera capa oculta. En este punto se produce como salida un vector en n1 . Todos sus componentes son propagados hacia todas las neuronas en la segunda capa oculta. Esta capa produce entonces un vector de salida en n2 . Se prosigue de esta manera al propagar todos los componentes del vector de salida en n , producido por la -ésima -ésima capa oculta, hacia todas las neuronas de la ( +1)-ésima capa oculta. La última capa oculta producirá un vector en n cuyos componentes son enviados a todas las neuronas en la capa de salida. Finalmente esta capa produce la salida de la red: un vector en q . Tenemos entonces la secuencia de mapeos:
m
Capa de entrada
Primer capa oculta
p p n1
Segunda capa oculta
Tercer capa oculta n2
( +1) ésima capa oculta
-ésima
capa oculta
Última capa oculta
n
Capa de salida nm
q
Como ya tenemos conocimiento, las salidas producidas por las capas ocultas, aunque son accesibles, no se les puede dar una interpretación. Por ello, también se dice que simplemente la red neuronal efectúa un mapeo de un vector en p hacia un vector en q . Ahora redefinamos algunas notaciones previamente establecidas a fin de que éstas reflejen el hecho de que se está bajo el contexto de una red neuronal formada por más de una capa oculta. Sean: • wk ,i : k m -ésimo peso de la i-ésima neurona en la capa de salida, 1 ≤ i ≤ q, 1 ≤ k m ≤ nm. • Sea wk−1 , k , el k -1 -ésima capa oculta, -ésima -ésima neurona en la -1-ésimo peso de la k m
1 ≤ k -1 -1 ≤ n -1 -1, 1 ≤ k ≤ n , 1