Está en la página 1de 126

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á María de la Luz,
mi hermana Edna
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 amigos
Thelma García,
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: aguila@mixteco.utm.mx, ricardo.perez.aguila@gmail.com
Web site: http://ricardo.perez.aguila.googlepages.com

iii
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
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 y Perceptrón. En el caso del Perceptrón se presentan el Problema
de Representación y el Teorema de Convergencia a fin de plantear los alcances y
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
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 who will genuinely love the parent or
 parents it imprints on, with a love that will never end ...
 But a mecha with a mind, with neuronal 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
Capítulo 1. Introducción

Dentritas
(Entradas)

Región
Pre-sináptica
Axón (Salidas)

Núcleo

Figura 1.1. Componentes principales de una Neurona Biológica.

Las neuronas pueden ser clasificadas en 3 tipos de acuerdo al rol que cumplen
dentro de una Red 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
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 se ha Despolarizado, es decir, se ha liberado del impulso nervioso, inicia un
proceso rápido que la coloca en un estado de Reposo. En esta fase se reacomodan y
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 Neurotransmisor
Sináptica

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.

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
precisamente por los neurotransmisores involucrados, los cuales en ocasiones son
clasificados en Neurotransmisores Excitadores y Neurotransmisores Inhibidores. 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

Neurona i+1
Dentritas Dentritas
Neurona i Neurona i+1

Región
Pre-sináptica
Axón i+1 Neurona i+3

Neurona i

Dentritas
Neurona i+2

Axón i
Axón i+3

Región
Pre-sináptica
Neurona i Región
Pre-sináptica
Neurona i+2
Neurona i +3

Neurona i+2

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
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. El resultado obtenido es un único valor el cual es
distribuido en m  salidas (las sinapsis). Estas salidas pueden conectarse con el 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.

W1

W2
Salida 1

Núcleo Salida 2

Wn
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+1,1
W i,n

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.

1.2 Principios del Diseño de Redes Neuronales 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 McCulloch y Walter Pitts en 1943 al proponer la idea de analizar el Cómputo
Neuronal (Biológico) por medio de operaciones elementales (sumas, multiplicaciones y
lógica básica). Establecieron cinco principios como punto de 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
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á” a la neurona durante un tiempo, independientemente de las sinapsis
excitadoras que se hayan activado en ese 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
utilizado en la actualidad: la Ley de Aprendizaje Hebbiano ( Hebbian Rule,  Hebbian
 Learning Law). Esta ley se cita de la siguiente 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 persistente toma parte en la excitació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.
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.
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 2. Preliminares Matemáticos

f f

X1 X1
x0 x0
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 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
función f ( x1, x2) =  x22 − x12 . 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) nos indica que la razón de cambio en dirección


4
del vector   , el cual es paralelo al eje  X 1, es 4. El segundo componente de ∇ f (-2,3) nos
0 
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
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 ( x1,  x2) =  x22 − x12  cuando nos movemos, a partir de un punto dado, en la dirección

 −3 −3 
del vector  ?
 18 18 

Si se requiere la razón de cambio de f   en la dirección del vector arbitrario y unitario


u, entonces se debe recurrir a la Derivada Direccional de  f   en la Dirección de u. Se le
denota por Du f ( 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 
u 
= ∇ f  ⋅  
2
(Ecuación 2.1.2)

 
 un 
δ  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 nos movemos, a partir
del punto ( 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
partiendo del punto ( x1, …, xn).

Sea el vector unitario

 −3 
 18 
u1 = 
 −3 
 18 

Ahora deseamos conocer la derivada direccional de  f ( x1, x2) =  x22 − x12  en el punto (-2,3) en
la dirección de u1. Por lo tanto, al aplicar la Ecuación 2.1.2, se 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 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.

Consideremos el vector unitario

 −1
u2 =  
0

La derivada direccional de  f  en el punto (-2,3) en la dirección de u2 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 una
razón de cambio -4. Nuevamente, la función decrece al moverse en esa dirección.

Ahora sea el vector unitario

 2 
− 13 
u3 = 
 3 
 13 

27
Una Introducción al Cómputo Neuronal Artificial

La derivada direccional de  f  en el punto (-2,3) en la dirección de u3 es:

 Du3 f (−2,3) = ∇f ( −2,3) ⋅ u3

 2 

 4  13 
= ⋅
6  3 
 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
4
crece aunque más “lento” que usando la dirección   .
0 

Plantearemos dos observaciones:


• Dado un punto ( x1, …,  xn) es claro que es posible determinar una cantidad enorme de
derivadas direccionales de  f  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 el vector
unitario u también puede ser expresado como:

 Du f ( x1, …, xn) = ∇ f ( x1, …, xn)⋅u (Por la Ecuación 2.1.2)


= ||∇ f ( x1, …, xn)|| ||u|| cos θ (recuérdese que || u|| = 1)
= ||∇ f ( x1, …, xn)|| cos θ (Ecuación 2.1.3)

Donde θ es el ángulo formado por los vectores ∇ f  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 ( x1, …,  xn) = ||∇ f ( 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 su
máximo crecimiento. Esta propiedad es sumamente útil si se requieren identificar máximos
en la función f .

Previamente establecimos que para  f ( x1,  x2) =  x22 − x12   su vector gradiente en el
4
punto (-2, 3) era ∇ f (-2,3) =   . La magnitud del vector gradiente está dada por:
6 

||∇ f (-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 consecuencia 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.

Ahora nos plantearemos una nueva pregunta: ¿Cómo encontrar aquel vector cuya
dirección, y partiendo del punto ( x1, …, xn), nos indique la mínima razón de cambio de  f ?

Sabemos por la Ecuación 2.1.3 que:

 Du f ( x1, …, xn) = ||∇ f ( 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 ( x1, …, xn) = -||∇ f ( x1, …, xn)||

Entonces, es claro que la dirección opuesta a la del vector gradiente nos indica hacia donde
 f   tiene su mínima razón de cambio. Esta propiedad es sumamente útil si se requieren
identificar mínimos en la función  f .

 4
Para f ( x1, x2) =  x22 − x12  su vector gradiente en el punto (-2, 3) era ∇ f (-2,3) =   con
6
magnitud || ∇ f (-2, 3)|| = 52 . Por lo tanto, partiendo del punto (-2, 3) y en la dirección dada
 4
por el vector (-1)     se tiene la mínima razón de cambio de  f , - 52 . Cualquier otra
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.

29
Una Introducción al Cómputo Neuronal Artificial

2.2 Regresión 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 Matemáticos a fin de presentar una bien conocida metodología
de estimación: la Regresión Lineal. Primero, presentaremos el caso particular cuando los
datos son pares de la forma ( x, d ), donde x es la única variable de entrada y d  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:
• 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 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á:

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 ( 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
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:

1  N  2
 J  =  ε 
2 N  i =1 i
(Ecuación 2.2.5)

Donde N  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 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 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 precisamente el vector cero. Por lo tanto, el
primer paso es determinar ∇ J . Ello implica encontrar las derivadas parciales de  J   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 a la variable b:

δ J  δ  1  N  2
=  ε i
δ b δ b 2 N  i =1
1  N  δ  2
2 N 
= ε i
i =1 δ b

1  N  δ  2
= 
2 N i =1 δ b
( di − wx1,i − b ) (Por la Ecuación 2.2.3)
1  N  δ 
= 
2 N i =1
2 ( di − wx1,i − b ) ( d i − wx1,i − b )
δ b
(Regla de la Cadena)

1  N 
 di y wx1,i son constantes 
= (d i − wx1,i − b ) ( −1)  
 N  i =1  respecto a b 

32
Capítulo 2. Preliminares Matemáticos

1  N 
=  ( wx1, + b − d )  
 N  i =1
i i

 wx i b d  
 N 
=   1, + − i 
i =1   N N N  
 N
 x1,i N
b N 
d i
= w + −
i =1  N i =1 N i =1 N 

Por lo tanto tenemos que:

δ  J  N
 x1,i N
b N 

= w + − i (Ecuación 2.2.6)
δ b i =1 N i =1 N i =1 N  

Ahora determinaremos la derivada parcial de  J  respecto a la variable w:

δ J  δ  1  N  2
=  ε i
δ w δ w 2 N  i =1
1  N  δ  2
2 N 
= ε i
i =1 δ w

1  N  δ  2
= 
2 N i =1 δ w
( di − wx1,i − b ) (Por la Ecuación 2.2.3)

1  N  δ 
= 
2 N i =1
2 ( di − wx1,i − b ) ( d i − wx1,i − b )
δ w
(Regla de la Cadena)

1  N   di y b son constantes 


=  ( di − wx1,i − b ) ( − x1,i )  
 N i =1  respecto a w 
1  N 
= 
 N  1
( wx1,2 + bx1, − d x1, )
i=
i i i i

 wx1,2i bx1,i d i x1,i 


 N 
=  + − 

i =1   N N N  
2
 N
 x1,i N
x1,i N 
d i x1, i
= w + b −
i =1  N i =1 N i =1 N 

Es decir:
2
δ  J   N
 x1,i N
x1,i N 
dx
= w + b −  i 1, i (Ecuación 2.2.7)
δ w i =1 N i =1 N i =1 N  

33
Una Introducción al Cómputo Neuronal Artificial

δ  J  δ  J 
Ahora tanto   como   son igualadas a cero y se cuenta con el siguiente
δ b δ w
sistema de ecuaciones:

  N  x1,i N b N  d i
 w + − =0 (Ecuación 2.2.8)
 i =1  N i =1 N i =1 N 


  N  x 2
 w 1,i + b x1,i −  d i x1, i = 0
N N 
(Ecuación 2.2.9)
 i =1  N i =1 N i =1 N 

Hagamos:
 N
 x1,i N 
d i
 x = 1  N
i=
d  = 1 N 
i=

 N
 x1,2i N 
d i x1,i
2
 x = 1  N
i=
xd  = 1
i= N 

Entonces al sustituir en las Ecuaciones 2.2.8 y 2.2.9 el sistema se reescribe como:

 wx + b − d =  0 (Ecuación 2.2.10)


 2
 wx + bx − xd =  0 (Ecuación 2.2.11)

Procedemos a resolver el sistema de ecuaciones lineales. Para la Ecuación 2.2.10


tenemos:

wx + b − d =  0
⇔ b = d − wx

Sustituyendo el valor de b en la Ecuación 2.2.11:

wx 2 + (d − wx ) x − xd =  0
2
⇔ wx 2 + d ⋅ x − w ( x ) − xd =  0

34
Capítulo 2. Preliminares Matemáticos

2
⇔ wx 2 − w ( x ) = xd − d ⋅ x

 xd − d ⋅ x
⇔ w= 2 (Ecuación 2.2.12)
2
 x − x ( )

Al sustituir el valor de w (Ecuación 2.2.12) en la Ecuación 2.2.10 tenemos finalmente:

b = d − wx
 xd − d ⋅ x
=d− 2 x
 x − x
2
( )
2
 xd ⋅ x − d ⋅ x ( )
= d − 2
 x 2 − ( x )

( )
2 2
d x2 − x ( ) − xd ⋅ x + d ⋅ ( x )
= 2
 x − x
2
( )
2
d ⋅ x − xd ⋅ x
= 2
 x − x
2
( )

Es decir:

d ⋅ x2 − xd ⋅ x
b= 2 (Ecuación 2.2.13)
2
 x − x ( )

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 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
Una Introducción al Cómputo Neuronal Artificial

Tabla 2.1. Un conjunto de 11 observaciones.


 x1,i d i
-5 -10.5
-4 -8.5
-3 -4.5
-2 -2.5
-1 0.5
0 4.5
1 6.5
2 10.5
3 12.5
4 16.5
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
• d  = 3.9545
•  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 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
nuestro conjunto de datos. Sustituyendo w = 2.9818 y b = 3.9545, los valores encontrados
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 a 0.122314.

37
Una Introducción al Cómputo Neuronal Artificial

Figura 2.5. El paraboloide asociado a la función de error


2 2
 J  = 5w  + 0.5b  – 29.81w – 3.95b + 52.397

2.3 Regresión Lineal con Múltiples 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 + 1 w x ,
k =
k ik   (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    (Ecuación 2.3.2)
 k =1 
= di − (b + w1 xi ,1 + w2 xi ,2 + ... + wP xi, P )

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:


2
1  N  P

 J = 
2 N  i =1 
d i − 
k = 0
wk xi , k 

  (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 
 =0
δ 
 1 w
 

 δ  J 
 δ w = 0
 P

Es decir, se buscará la solución de ∇ J  = 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

se ajuste lo mejor posible a nuestro conjunto de mediciones ( xi, d i),  xi ∈  P +1 , 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á 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 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 a w j:

39
Una Introducción al Cómputo Neuronal Artificial

2
δ J  δ  1  N  P

=  
δ w j δ w j 2 N  i =1 
di −  wk xi , k 
k = 0 
  (Por la Ecuación 2.3.4)
2
1  N δ   P

=  d −  w x
2 N i =1 δ w j  i k =0 k i ,k   

1  N  P
 δ   P

=  2
2 N i =1  d i − 
k =0
w x
k i ,k  
 δ w j 
d i − 
k = 0
wk xi , k 

 

1 
 N P
  δ  P 
=   di −  wk xi ,k   − 0 wk xi , k  (di es constante respecto a w j )
  δ w j   
 N i =1  k =0 k = 
 Todas las variables wk  son 
1  N
 P
  
=   di −  wk xi ,k  ( − xi , j )  constantes respecto a w j excepto 
 N  i =1  
k = 0
 
 aquella para la cual k = j 
1 
 N P

= −  xi , j  d i −  wk xi , k   
 N  i =1  k = 0 

Concretizando:

δ  J  1  N  P

= −  xi , j  d i −  wk xi , k    (Ecuación 2.3.5)
δ w j N  i =1  k = 0 

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:

 1  N  P

 −  xi , j  d i −  wk xi , k  =  0 j = 0,1, 2,...P
  N  i =1  k = 0 

Consideremos la  j-ésima ecuación:

1  N
 P

− 
 N  1i=
 xi , j  d i −

0 w x ,
k =
k i k  =  0

 N
 P
 (Al multiplicar ambos lados
⇔  xi , j  di −  wk xi , k  =  0
i =1  k = 0  por - N ).
 N
 P

⇔   xi , j d i − xi , j  wk xi, k   = 0
i =1  k = 0 

40
Capítulo 2. Preliminares Matemáticos

 N N
 P
 (La sumatoria principal es
⇔  xi , j d i −   xi , j  wk xi, k  =  0
i =1 i =1  k = 0  expresada como dos sumatorias)
 N
N P

⇔  xi , j d i =   xi , j  wk xi, k    (Ecuación 2.3.6)
i =1 i =1  k = 0 

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 :
 N
 P
 P P P P

  i , j  k i , k  1, j  k 1, k 2, j  k 2, k 3, j  k 3, k
i =1 
 x
k =0
w x

= x
k =0
w x + x
k =0
w x + x
k =0
w x + ... + x N , j  wk x N , k
k =0
 
 
P P P P
= wk x1, j x1, k + 0 wk x2, j x2, k + 0 wk x3, j x3, k + ... + 0 w x k N, j xN ,k  
k =0 k= k= k=  

= ( w0 x1, j x1,0 + w1 x1, j x1,1 + w2 x1, j x1,2 + ... + wP x1, j x1, P )+


( w0 x2, x2,0 j + w1 x2, j x2,1 + w2 x2, j x2,2 + ... + wP x2, j x2, P )+
( w0 x3, x3,0 j + w1 x3, j x3,1 + w2 x3, j x3,2 + ... + wP x3, j x3, P )+

( w0 x  N , j xN ,0 + w1 x N , j x N ,1 + w2 x N , j x N,2 + ... + wP x N , j x N, 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 
= w0  xi , j xi ,0 + w1  xi , j xi,1 + w2  xi, j xi,2 + ... + wP  xi, j xi, P
i =1 i =1 i =1 i =1
P N 
=  wk  xi , j xi , k  
k =0 i =1

Es decir, el lado derecho de la Ecuación 2.3.6 queda ahora expresado como:


 N
 P
 P N 

  i , j  wk xi , k   =
i =1 
 x
k = 0 
0 w 1 x , x ,
k=
k
i=
i j i k   (Ecuación 2.3.7)

41
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=
i j i
k=
k
i=
i j i k   (Ecuación 2.3.8)

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=
i j i
k=
k
i=
i j i k  

=
 N N 
1 P N 
=
 N  k =0
 w 1 x , x , k
i=
i j i k  

P
1 N 
=  wk x, x, i j i k  
k =0  N  i =1
1  N P
1 N 

 N
1 i=
 xi , j di = 0
k=
wk
N  i =1
x, x, i j i k   (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:
 N 

1  N 
 Rk , j =
 N  i =1
x, x, i j 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:

 R0,0 R0,1  R0, P 


 R R1,1  R1, P 
 R =  
1,0
(Ecuación 2.3.11)
     
 
 RP,0 RP ,1  RP, P 

Sea ℘ j igual al lado izquierdo de la Ecuación 2.3.9:

1  N 
℘ j =  x , d
 N  i =1
i j i j = 0,1,2,..., P (Ecuación 2.3.12)

42
Capítulo 3. La Neurona Adaline

Establezcamos primero puntos de conexión con la Teoría presentada en la Sección


2.3. Contaremos con  N  pares  X i, d i) en donde X i es un vector en  1  tal que
 pares ( X  P+

 xi ,0 = 1
  x 
 i ,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 .

 el vector de pesos de la neurona. Éste también estará en  P +1 :


Sea W  el

 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
     a P z        d
       i
     r
      t
     n
       E
   z = w0 + 1 w x ,
k =
k i k 
       l
     a
       S
WP
Xi,P

Figura 3.4. Estructura de la neurona Adaline


omitiendo el uso de la función sign.

53
Una Introducción al Cómputo Neuronal Artificial
A rtificial

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 = 0 w x ,
k =
k ik   (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:

ε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
2 N  
 J (W ) = ε i (Ecuación 3.2.3)
i =1

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 = 0 w x ,
k =
k ik  

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
1 4 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
1 4 1 4 1
•  R1,0 =  xi ,0 xi,1 =  xi,1 =
4 i =1 4 i =1 2
1 4 1 4 2 1
•  R1,1 =  xi ,1 xi,1 =  xi,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
4
1 1 1
•  R2,1 =  xi ,1 xi ,2,2 = ( 0 + 0 + 0 + 1) =
4 i =1 4 4
1 4 1 4 2 1
•  R2,2 =  xi ,2 xi,2 =  xi,2 =
4 i =1 4 i =1 2

55
Una Introducción al Cómputo Neuronal Artificial
A rtificial

Por lo tanto:
 1 1
1 2 2
 
1 1 1
 R = 
2 2 4
1 1 1 

 2 4 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 

W  = −2 4 0   0  =  −1
    
 
 −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:

w02 w12 w22 w0 w1 w0 w2 w1w2 w2 w0 1


 J (W ) = + + + + + − − +
2 4 4 2 2 4 4 2 4

Calculemos el error de entrenamiento asociado a los pesos identificados al sustituirlos


precisamente en la ecuación anterior:

(1)2 (−1) 2 (0)2 (1)(−1)


1) (1)(0) (−1)
1)(0) 0 1 1
 J (W ) = + + + + + − − +
2 4 4 2 2 4 4 2 4
=0

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
Una Introducción al Cómputo Neuronal Artificial
A rtificial

3.3.1 Descenso Escalonado: Caso una entrada – una 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:

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:

1  N 2 1 N 
 J (W ) = 
2 N i =1
ε i = 
2 N  i =1
(di − ( w0 xi ,0 + w1xi ,1)) 2

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
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)

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
3.3.1 para la actualización del vector de pesos de la neurona. Véase la Figura 3.7. Dado un
vector de pesos iniciales W 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 m). Se modifica al vector W m  de manera proporcional usando - ∇ J (W m) de
donde se obtiene un nuevo vector de pesos W m+1. Este proceso terminará cuando el vector

59
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(W1)

J(W)
W1

∇J(W3) ∇J(W2)
W2
W3

...
Wm+1 Wm

∇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) 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.

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}  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 x[1, …, N ][0,1], Array d [1, …, N ], Real δ, Real α, Integer maxIt )
 // Se asignan valores aleatorios al vector de pesos iniciales.
W = new Array[0,1]
W[0] = Random( )
W[1] = Random( )
m=0
while (m < maxIt ) do
 // Se calcula el vector gradiente en el punto dado por W.
∇J_W = GetGradientVector( x, d, W , N )
 // Se obtiene la magnitud del vector gradiente.
Real mag = ∇J_W[0]2 + ∇J_W[1]2
 // Si la magnitud del vector gradiente es menor o igual a δ 
 // entonces se retorna como salida el vector de pesos actual.
if  (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 el vector de pesos.
W[0] = W[0] + ∆wm[0]
W[1] = W[1] + ∆wm[1]
m=m+1
end-of-while
 // Si se alcanzó el número máximo de iteraciones entonces se retorna como
 // salida al último vector de pesos calculado.
return W
end-of-procedure

Hace falta especificar a la función GetGradientVector   la cual es invocada en el


Algoritmo 3.1. Ésta recibe como entrada el conjunto de entrenamiento de la neurona y el
vector de pesos actual. Tal como indica su nombre, su objetivo es calcular al vector

61
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 ):
δ  J (W )  N
 x1,i N 
d i
• = w1  + w0 − 
δ w0 i =1 N i =1 N 
2
δ  J (W )  N
 x1,i N
x1,i N 
dx
• = w1  + w0  −  i 1, i
δ w1 i =1 N i =1 N i =1 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 vector de pesos se aproximará cada vez más a sus valores
óptimos ubicados en el mínimo de la función  J (W ).

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
 x1,2i N
x1,i N 
d i x1, i
1  N 1 N 1 N
i=
,
i=
,
i=
, y 1
i= N 
. 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  N
 P
 1 N N P

δ w j
=−
N
1
i=
 xi , j  d i −

0
k=
wk xi , k  = −


N   1
i=
xi, j d i − 1 0 w x ,
i=
xi , j
k=
k i k  ,    j = 0, 1, …, P
  

 N 
Es posible precalcular la sumatoria 1  x , d    ya que únicamente depende del conjunto de
i=
i j i

 N P
entrenamiento. Sin embargo no es así con la sumatoria doble 1  x , 0 w x ,
i=
i j
k =
k i k  debido
  a que
depende también de los pesos w0, w1, …, wP.

62
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 
 x 
∇ J (W )m = −2ε m 
m ,1 

  
 
 xm , P 

se deben efectuar, por cada componente de ∇ J (W ) m , 2 multiplicaciones. Entonces tenemos
en total 2(P+1) operaciones. Cada componente 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 del vector de pesos entonces
tenemos que se realizan  N (7P + 8) operaciones. Por último, el conjunto de entrenamiento
completo es presentado en T  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 (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 R0,1  R0, P 


 R R1,1  R1, P 
 R =  
1,0
     
 
 RP ,0 RP ,1  RP, P 

75
Una Introducción al Cómputo Neuronal Artificial

Donde cada uno de sus elementos está dado por ( Ecuación 2.3.10):

1  N 
k = 0,1,2,..., P
 Rk , j = x, x,
 N  1
i=
i j i 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):

1  N 
℘ j =  x , d
 N  i =1
i j i j = 0,1,2,..., P

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 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:
-1
 R ℘ = 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, N  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

1  N 

cada uno de sus P+1 componentes la suma ℘ j =  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
sumados y la suma total dividida por  N . Entonces se efectúan  N  productos,  N   sumas y una
división: 2 N  + 1 operaciones. Este 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, P) ( Least Squares Operations) la cual está dada por:

2 3
 LSO( N , P) = (P + 1) (2 N  + 1) + (P + 1)(2 N  + 1) + (P + 1)  + (P + 1)2 (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 de presentaciones),  N   (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) < LSO( N , P)
⇔ TN (7P + 8) < (P + 1)2(2 N  + 1) + (P + 1)(2 N  + 1) + (P + 1)3 + (P + 1)2

77
Una Introducción al Cómputo Neuronal Artificial

La idea ahora es acotar a T  en función de  N  y P (lo cual en realidad será muy sencillo):

TN (7 P + 8) < ( P + 1) 2 (2 N + 1) + ( P +1)(2 N +1) + ( P +1) 3 + ( P +1) 2


( P + 1)2 (2 N + 1) + (P +1)(2 N +1) + (P + 1)3 + ( P + 1) 2
 T  <
 N (7 P + 8)
P3 + 2 NP 2 + 5P 2 + 6 NP + 8P + 4N + 4 
=
7 N P + 8 N 

Nótese que el denominador 7 NP + 8 N  nunca se hace cero ya que  N  > 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
tamaño  N   = 100 y dimensionalidad P = 20. Entonces al sustituir en la cota superior para T 
tenemos que:

(2 0)3 + 2(100)(20)2 + 5(20)2 + 6(100)(20) + 8(20) + 4(100) + 4


= 6.93
7(100)(20) + 8(100)

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:

(20)3 + 2(1, 000)(20)2 + 5(20)2 + 6(1, 000)(20) + 8(20) + 4(1, 000) + 4


= 6.3119
7(1,000)(20) + 8(1, 000)

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, 000)(20)2 + 5(20)2 + 6(10, 000)(20) + 8(20) + 4(10, 000) + 4


= 6.25
7(10, 000)(20) + 8(10, 000)

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 2 2
P + 2 NP + 5P + 6 NP + 8P + 4 N + 4 
lim
 N →∞ 7 NP + 8 N 
(2 NP 2 + 6 NP + 4 N ) + ( P 3 + 5P 2 + 8P + 4)
= lim
 N →∞ 7 NP + 8 N 
2 3 2
(2 NP + 6 NP + 4 N ) P + 5P + 8P + 4
= lim + lim
 N →∞  N (7 P + 8) N →∞ N (7 P + 8)
2P 2 + 6P + 4 3 2
 N  P + 5P + 8P + 4 1
= lim + lim
7 P + 8  N→∞  N 
 7P + 8  N 
N →∞

1 0

2P 2 + 6P + 4
=
7P + 8

2P 2 + 6P + 4
Ello quiere decir que la expresión  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:

 2P 2 + 6P + 4 
T ( P) =   (Ecuación 3.3.11)
 7P + 8 

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(20) + 8 

Tenemos entonces que el número máximo de presentaciones a efectuar, para conjuntos de


entrenamiento de tamaño  N  suficientemente grande, es 6.

79
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, 800)2 + 6(76, 800) + 4 


T (76,800) =   = 21,943
 7(76,800) + 8 

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  → ∞). 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(21943, 1000, 76800) = (21,943)(1,000)(7(76,800) +8) =11,796,732,344,000
 ((76,800 + 1) 2 )(2(1,000) +1) + 
 
•  LSO(1000, 76800) =  (76,800 + 1)(2(1,000) +1) +  = 464,811,264,618 ,404
 (76,800 + 1) 3 + (76, 800 + 1) 2 
 
 LSO(1000, 76800) 464,811,264,618,404
• = = 39.4016
SDO(21943, 1000, 76800) 11,796,732,344,000
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:

 2(1)2 + 6(1) + 4 
T (1) =  =0
 7(1) + 8 

El valor T (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) =  =1
 7(2) + 8 

80
Capítulo 3. La Neurona Adaline

Recordemos que usando la desigualdad SDO(T ,  N, P) <  LSO( 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.
Ello quiere decir que el efectuar T (P) presentaciones no garantiza de ninguna manera que el
vector de pesos final sea 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
Capítulo 4. El Perceptrón

X3

X2

 z( x1, x2, x3) = w1 x1 + w2 x2 + w3 x3 = 0

X1

Figura 4.9. El lugar geométrico asociado a  z( x1, x2, x3) = 0.

Siguiendo una serie de razonamientos similares a aquellos referentes al Perceptrón


de dos entradas, tenemos que para cualquier punto ( 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( x1,  x2,  x3) = 0. Se tiene entonces que el umbral  z( x1,  x2,  x3) = 0 divide a    en tres
regiones:
• Región 1: El conjunto de puntos por encima del umbral.
3
o  R1  = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 > 0}
• Región 2: El conjunto de puntos por debajo del umbral.
3
o  R2  = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 < 0}
• Región 3: El conjunto de puntos inmersos en el umbral.
3
o  R3  = {( x1, x2, x3): w1 x1 + w2 x2 + w3 x3 = 0}
Debe ser claro que 3  =  R13 ∪  R23 ∪  R33 .

En general tenemos que para un Perceptrón con n entradas, el umbral

 z( 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:
• La Región 1 contendrá a todos los puntos ( x1, …, xn) que están ubicados por encima del
hiperplano  z( x1, …, xn) = 0:
 R1  = {( x1, …, xn): w1 x1 + … + wn xn > 0}
n
o

• La Región 2 contendrá a todos los puntos ( x1, …, xn) que están ubicados por debajo del
hiperplano  z( x1, …, xn) = 0:
 R2  = {( x1, …, xn): w1 x1 + … + wn xn < 0}
n
o

• La Región 3 contendrá a todos los puntos ( x1, …,  xn) inmersos en el hiperplano


 z( x1, …, xn) = 0:
o  R3n  = {( x1, …, xn): w1 x1 + … + wn xn = 0}

95
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( 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ón únicamente puede resolver aquellos problemas que pueden ser
reducidos a un Problema de Separación (Clasificación) 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( 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) (1,1)

(0,0)
x1
(1,0)

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( 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
en el cual para una entrada formada por n  escalares ( x1, …,  xn) se espera una salida que
ú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( x1, …,  xn) = 0 o bien por encima de éste. Las entradas con salida esperada α2 se ubicarán
estrictamente por debajo del hiperplano  z( 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
(Ecuación 4.2.1). Sin embargo, es posible considerar este tipo de rectas al agregar un
término de sesgo o predisposición, tal como sucede en la neurona Adaline. Otra opción 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.

x2

(0,1) (1,1)

(0,0)
x1
(1,0)

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
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 1 0 1
C 0 1 1
D 1 1 0

x2

(0,1) (1,1)

(0,0)
x1
(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( 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} = {0,1} ×{0,1} × ... ×{0,1} → {0,1}


n

n

98
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 Presentación 1  N 

del Conjunto  MSE  =  ε n2


 N − M  n = M +1
µ
de Entrenamiento
1 2.90865 × 1017 0.000288294
15
2 1.42666 × 10 0.000277045
12
3 7.17163 × 10 0.000266235
8
4 2.07356 × 10 0.000255846
5 381,223 0.000245863
10 26.2274 0.000201496
20 22.5903 0.000135335
30 20.9588 0.0000908984
40 20.0612 0.0000610522
50 19.5134 0.0000410059
60 19.1554 0.0000275418
70 18.9167 0.0000184985
80 18.7727 0.0000124246
90 18.6672 0.00000834501
100 18.5939 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:

 ck  si n = k , k ∈{1, 2,..., M }  


  M 
 x 'n =  (Ecuación 4.3.11)
 a 'k xn −k  si N ≥n>M  
 k =1

Nótese la similitud de ésta con la Ecuación 4.3.1, la cual fue utilizada para generar la serie
de tiempo original (Figura 4.18). En el caso actual, las  M   muestras, para obtener al
estimado  x 'n , son tomadas del conjunto de entrenamiento. Ello implica que de hecho la

115
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 hace más que enviar como
entrada al Perceptrón el vector [ xn-1  xn-2  xn-3 …  xn- M ]T  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
Una Introducción al Cómputo Neuronal Artificial

xn

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

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
Una Introducción al Cómputo Neuronal Artificial
A rtificial

120
Una Introducción al Cómputo Neuronal Artificial

5. La Red Madaline
Una Introducción al Cómputo Neuronal Artificial
A rtificial

122
Capítulo 5. La Red Madaline

La Red Madaline ( Many Adaline) es una Red Neuronal Artificial formada por varias
 Many Adaline
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 para el ajuste de los pesos de las neuronas que conforman a una red Madaline.
Uno de ellos es la Madaline Rule II, la cual fue originalmente propuesta por 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 Adaline 3
 z1 = w1,0 +  z3 = w3,0
 y1 =  y3 =
 x1 3 + w3,1 y1
1
i=
w1,i xi ig n( z1 )
s ig
+ w3,2 y2
ig n( z3 )
s ig
Adaline 5
 z5 = w5,0
 x2  y5 =
+ w5,1 y3  y5
ig n( z5 )
s ig
+ w5,2 y4
Adaline 2 Adaline 4
 z2 = w2,0 +  z4 = w4 ,0
 x3  y2 =  y4 =
3 + w4,1 y1
1
i=
w2,i xi ig n( z2 )
s ig
+ w4,2 y2
ig n( z4 )
s ig

Figura 5.1. Una red Madaline formada por 5 neuronas.

La red de la Figura 5.1  recibirá como entrada un vector en 3 : [ x T 


 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 :

[ 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]   es enviado como entrada a la ú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 que acabamos de describir, para la red de la Figura 5.1, puede ser visto
como una serie de mapeos de vectores que inicia desde la capa de entrada. Ésta recibe un

123
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 de los mapeos va directamente en función del número de neuronas
presentes en cada capa de la red. Consideremos una red formada por m capas ocultas. Sean:
•  p: número de neuronas en la capa de entrada
• n : número de neuronas en la  -é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 Primer Segunda Tercer m -ésima Capa
de capa capa capa capa de
entrada oculta oculta oculta oculta salida
nm
 n   p  n1  
n2
   
q

Considerando únicamente la dimensionalidad de los vectores de entrada y de los vectores


en la salida final, es que se dice también que una red mapea vectores de  n  a  q .

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
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 neuronas. El número de conexiones entre estas dos capas ocultas estará dado por n ⋅n +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 + nmq (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:
0
CM ( 3, 2,1,1, 2 ) = 3 ⋅ 2 + 2 ⋅ 2 + 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 del funcionamiento de las neuronas en las “capas ocultas” de nuestra red
neuronal en procesos, por ejemplo, como el aprendizaje. Realmente no se conocen ni 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.

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
0 1 1
1 1 -1
2 3 1

125
Una Introducción al Cómputo Neuronal Artificial

Adaline 1 Adaline 3
 z1 = w1,0  z3 = w3,0
 y1 =  y3 =
 x1 + w1,1 x1 + w3,1 y1
s ig n( z1 ) s ig n( z3 )
+ w1,2 x2 + w3,2 y2
Adaline 5
 z5 = w5,0
 y5 =
+ w5,1 y3  y5
s ig n( z5 )
+ w5,2 y4
Adaline 2 Adaline 4
 z2 = w2,0  z4 = w4,0
 x2  y2 =  y4 =
+ w2 ,1 x1 + w4,1 y1
s ig n( z2 ) s ig n( z4 )
+ w2,2 x2 + w4,2 y2

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:
o  z2 = -2(-0.46) + 0(-0.26) – 0.16 = 0.76

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
 y2  1
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  −14  
única neurona en la capa de salida:
• Neurona 5:
o  z5 = 1(-0.96) + -1(0.38) + 0.76 = -0.58

o  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.

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:

 2 
S =  w j ,0 + 1 w , y
ji i : j = 3, 4  (Ecuación 5.2.1)
 i= 

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á los siguientes valores:

S  = {1.75, 0.5}

Ahora bien, se seleccionará aquella neurona, de la capa oculta, cuyo valor en S   sea el más
pequeño. Tenemos que, para nuestro ejemplo, se trata de la neurona 4. La idea 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 por la capa de entrada al procesar al vector en el Conjunto de
Entrenamiento [-2 0]T :

127
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
vector de entrada x1 = -2, x2 = 0. Por lo tanto esta neurona preserva sus nuevos pesos. En la
Tabla 5.3 se presentan los pesos 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
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.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 capa oculta. Sean los vectores X 1, X 2, …, X  N  los vectores de entrada en el conjunto
de entrenamiento. Considérese al i-ésimo vector de entrada, X i, 1 ≤ i ≤ 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 conjunto de valores  A( j) ordenados de manera ascendente. Procesaremos a
cada elemento de S   de manera secuencial. Consideremos a la neurona Adaline asociada al
elemento A( j) de S  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
entrada: X i+1.
• 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:
o  z1 = -1(-0.23) + 0(-0.3) + 0.5 = 0.73

o  y1 = sign(0.73) = 1

• Neurona 2:
o  z2 = -1(-0.46) + 0(-0.26) – 0.16 = 0.3

o  y2 = sign(0.3) = 1

129
Una Introducción al Cómputo Neuronal Artificial

Consideremos en primer lugar a la función ¬ x1 ∧ ¬ x2 ∧  x3. 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 estado negro es un estado con salida -1 y un estado blanco (el único) es de salida 1. Esta
función es claramente linealmente separable. Requerimos un plano que separe al 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:

 x1 x2 x3 1
−1 −1 0 1
=0
0 −1 1 1
−1 0 1 1
⇔ − x1 − x2 + x3 − 2 = 0 (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 − 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
importante ya que el valor proporcionado por  Z 1( x1,  x2,  x3) = − x1 − x2 + x3 − 2  será después
sometido a la función sign, de manera que se busca que la neurona proporcione valores tal
y como se presentan en la tabla de verdad de la función que se está modelando. Tenemos
entonces que los pesos de la neurona 1, que representa a la función ¬ x1 ∧ ¬ x2 ∧  x3, 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 x3 1
−1 0 −1 1
=0
0 1 −1 1
−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 ∧  x2 ∧  x3. 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 1
x3
0 1 1 1
=0
1 1 0 1
1 0 1 1
⇔ − x1 − x2 − x3 + 2 = 0 (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
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 ∨  y2 ∨  y3. 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 ∨ y2 ∨ y3 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:

 y1 y2 y3 1
−1 0 −1 1
=0
−1 −1 0 1
0 −1 −1 1
⇔  y1 + y2 + y3 + 2 = 0 (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

x2 x2
x3 x3
(-1,1,-1) (1,1,-1) (-1,1,-1) (0,1,-1) (1,1,-1)

(-1,1,0)
(1,1,1) (1,1,1)
(-1,1,1) (-1,1,1)
(-1,0,-1)

x1 x1
(-1,0,1) (-1,-1,-1)
(1,-1,-1) (1,-1,-1)
(-1,-1,-1)
(-1,-1,0)
(-1,-1,1) (-1,-1,1)
(0,-1,1) (1,-1,1) (1,-1,1)

a) b)
x2 y2
x3 y3
(-1,1,-1) (1,1,-1) (-1,1,-1) (1,1,-1)
(1,1,0)

(1,1,1) (1,1,1)
(-1,1,1) (-1,1,1)
(0,1,1) (-1,0,-1)

x1 y1
(-1,-1,-1) (1,0,1) (-1,-1,-1)
(1,-1,-1) (1,-1,-1)
(0,-1,-1)
(-1,-1,0)
(-1,-1,1) (-1,-1,1)
(1,-1,1) (1,-1,1)

c) d)
Figura 5.9. Visualización en el espacio 3D de los estados y las salidas de las funciones Booleanas
a) ¬ x1 ∧ ¬ x2 ∧ x3, 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 utilizados para determinar
sus correspondientes ecuaciones y orientaciones (véase el texto para detalles).

147
Una Introducción al Cómputo Neuronal Artificial

Adaline 1

 z1 = − x1 − x2  y1 =
 x1
+ x3 − 2 sign( z1 )

Adaline 2 Adaline 4

 x2  z2 = − x1 + x2  y2 =  z4 = y1 + y2  y4 =  y4


− x3 − 2 + y3 + 2
sign( z2 ) si gn( z4 )

Adaline 3

 x3  z3 = x1 + x2
 y3 =
+ x3 − 2 sign( z3 )

Figura 5.10. Red Madaline que modela a la función Booleana


 f ( x1, x2, x3) = (¬ x1 ∧ ¬ x2 ∧ x3) ∨ (¬ x1 ∧ x2 ∧ ¬ x3) ∨ ( x1 ∧ x2 ∧ x3).

En esta Sección hemos descrito una serie de pasos a seguir a fin de que, en primer
lugar, una función Booleana, dada su tabla de verdad, sea descrita en términos 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 25 = 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
función Booleana de 10 variables cuenta con 210  = 1,024 estados que corresponden a los
vértices de un hipercubo de 10 dimensiones. Conceptualmente el problema es claro, dada
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
requieren dos puntos para definir una recta (un hiperplano unidimensional), en  3 se
requieren tres puntos para definir un plano (un hiperplano bidimensional), en  4 se
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  (2n )!
 = n (Ecuación 5.3.16)
 n  (2 − n)!n !

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!


  = 10
= = 334,265,867,498,622,145,619,456
10
  (2 − 10)!10! (1, 024 − 10)!10!

En la práctica es claro que hemos de considerar el modelado de funciones con cientos de


variables de entrada.

149
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 [1, …, N ][1, …, n], Array T [1, …, N ], Real α, Integer L)
 // Se asignan valores aleatorios en (-1, 1) al vector de pesos.
W = new Array[1,…,n]
for j = 1 until n do
W[j] = Random( )
end-of-for
 // Se lleva a efecto la t-ésima época.
for t = 1 until L do
for k = 1 until N do
 // El k-ésimo vector de entrada es enviado a la 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
 // y se obtiene la salida de la neurona.
Real O = g(ent)
 // Se calcula el error entre la salida esperada
 // y la salida de la neurona.
Real Err = T [k] – O
 // Se actualiza el vector de pesos.
for j = 1 until n do
W[j] = W[j] + α * Err * E [k][j]
end-of-for
end-of-for
end-of-for
 // Se retorna como salida el vector de pesos 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

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 aprendizaje del Perceptró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 lugar que debemos suponer la existencia de un


vector de pesos W * tal que mediante éste el Perceptrón siempre proporcionará la 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 mismo problema. Esto es consistente con el hecho de que los problemas con los
cuales puede lidiar un Perceptrón son únicamente los 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
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 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.
• Si E ∈ C 2 entonces W ⋅ E 
   < 0.

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:

a) Sea W k el
  vector de pesos que actualmente tiene la neurona.
b) Considérese al k -ésimo vector de entrada, E k,  en el conjunto de entrenamiento. Si  E k es
 
correctamente clasificado ello implica que la neurona determinó acertadamente que
 E k  ∈ χ1 o bien que E k  ∈ χ2. Por lo tanto, se aplicará una “corrección” a W k y
  se obtendrá
el vector de pesos “actualizado” W k+  1:
b.1) W k+1 = W k 
c) De lo contrario, si E k fue
  clasificado de manera incorrecta por el Perceptrón, entonces el
vector de pesos W k   debe ser apropiadamente corregido y se obtiene por lo tanto el
nuevo vector de pesos W k+1. Debemos manejar dos posibilidades de acuerdo al signo de
la sumatoria de salida W k⋅   E k: 
c.1) E k  ∈ χ2  pero W k⋅   E k   > 0, lo que implica que el vector fue incorrectamente
ubicado en χ1. Entonces aplicamos la corrección:
 W k+1 = W k –
   E k 
c.2)  E k  ∈ χ1  pero W k ⋅ E k   < 0, lo que implica que el vector fue incorrectamente
ubicado en χ2. Entonces:
 W k+1 = W k +
   E 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   = 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
todos éstos se esperaría que W 1⋅ E k   > 0, lo cual evidentemente no se cumple (lo mismo
sucede con los vectores en la clase χ2). Nótese que de hecho W 1⋅ E 1 = 0, pero sabemos en
que clase  E 1 debe ser ubicado. Usaremos entonces la regla de corrección W k+1 = W k  +  E 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+  1  que permita que la neurona los clasifique
correctamente. El vector W k+  1 se obtiene de manera iterativa:

• Vector de pesos inicial: W 1 = 0


• Primer corrección: W 2 = W 1 + E 1 = (0) + E 1 = E 1
• Segunda corrección: W 3 = W 2 + E 2 = ( E 1) + E 2
• Tercer corrección: W 4 = W 3 + E 3 = ( E 1 + E 2) + E 3
• …
• (k -1)-ésima corrección: W k  = W k-  1 + E k-  1 = ( E 1 + E 2 + … + E k-  2) + E k-1
• k -ésima corrección: W k+  1 = W k +
   E k  = ( E 1 + E 2 + … + E k-  2 + E k-  1) + E 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 en
 
el conjunto de entrenamiento el vector W * efectivamente satisface las siguientes dos
condiciones:

• Si E k  ∈ χ1 entonces W * ⋅E k >


  0.
• Si E k  ∈ χ2 entonces W * ⋅E 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:

χ'2 = {(-1) E ∈  n : E ∈ χ2}

161
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:

χ1 ∪ χ'2

Recordemos que el vector pesos W * satisface las condiciones:


• W *⋅ E k >
  0 si E k  ∈ χ1
• W *⋅ E k <
  0 si E 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 k >
  0 si E k  ∈ χ1 ∪ χ'2

Ello se debe a que si  E k está


  en χ'2 entonces W * ⋅E k >
  0, pero  E k =
  (-1) E’k  donde E’k  está en
χ2 y por tanto W*⋅ 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:

γ 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 en
  el conjunto de entrenamiento.

Previamente se verificó que dado el vector de pesos inicial W 1 = 0 el vector W k+  1
estaba dado por:

W k+  1 = W k +


   E k =
  ( E 1 + E 2 + … + E k-1) + E 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+  1 = W *⋅( E 1 + E 2 + … + E k-1 + E 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+  1 = W *⋅ E 1 + W *⋅ E 2 + … + W *⋅ E k-  1 + W *⋅ E k  (Ecuación 6.2.4)

Por la definición de γ 1 (Ecuación 6.2.1) se tiene que:

W *⋅W k+  1 = W *⋅ E 1 + W *⋅ E 2 + … + W *⋅ E k-  1 + W *⋅ E k  ≥ γ 1k 


⇔ W *⋅W k+  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 y en consecuencia W *⋅W k+  1 ≥ γ 1k . Si elevamos al cuadrado
ambos lados de la desigualdad tenemos que ésta claramente se preserva:

W * ⋅W k +1 ≥ γ 1k 
2
⇔ (W * ⋅W k +1 ) ≥ γ 12 k 2

Ahora bien, por la desigualdad de Cauchy-Schwarz ( Sección 2.4) tenemos que:

||W *||2⋅||W k+  1||2 ≥ (W *⋅W k+  1)2

Entonces:
2 2 2
W * ⋅ W k +1 ≥ (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 2
W * ⋅ W k +1 ≥ γ 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   = 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 γ 12 k 2
W k +1 ≥ 2
W *

163
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
γ 12 k 2
igual al cociente 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+  1 esta dado por:

W k+  1 = ( E 1 + E 2 + … + E k-  1) + E k 


⇔ W k+  1 = W k +
   E k 

Sabemos que W k+  1 surge de aplicar una corrección al vector de pesos W k.  Ello implica que
con el vector de entrada  E k   se obtuvo W k E 
⋅    k   < 0 (recuérdese que si el vector hubiese sido
clasificado correctamente se habría obtenido W k⋅  E    k >
  0). Tenemos entonces que:

W k+  1 = W k +   E k 


⇔ ||W k+  1||  = ||W k   + E k|  |2
2

⇔ ||W k+  1||2 = ||W k||  2 + 2W k⋅  Ε k +


  ||Ε k||  2 (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 <   0 entonces es
claro que -2W k ⋅Ε k >
  0. Al sumar precisamente -2 W k⋅  Ε k en
  ambos lados de la Ecuación 6.2.5
se obtiene:

||W k+  1||2 - 2W k⋅  Ε k =


  ||W k||  2 + ||Ε k||  2 (Ecuación 6.2.6)

Recalcamos que - 2 W k⋅  Ε k es


  un número positivo. Entonces debe ser claro que:

||W k+  1||2 ≤ ||W k+  1||2 - 2W k⋅  Ε k =


  ||W k||  2 + ||Ε k||  2

Y por transitividad se tiene la siguiente desigualdad:

||W k +1||2 ≤ ||W k ||2 + ||Ε k| |2

Recordemos que el vector W k   surge de la corrección aplicada al vector de pesos W k-  1 con el
vector de entrada  E k-  1. Es más, W k-  1  surge de actualizar al vector W k -2  con el vector de
entrada  E k-  2, y así sucesivamente hasta llegar a la actualización del vector de pesos inicial

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:

2 2
Wk + E k 
2 2
= Wk −1 + Ek −1 + Ek (Wk = Wk −1 + Ek −1 )    
2 2 2
= Wk −1 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek    
2 2 2
= Wk − 2 + Ek − 2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek (Wk −1 = Wk −2 + Ek −2 )    
2 2 2 2
= Wk − 2 + 2Wk − 2 ⋅ Ek −2 + Ek −2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek    

=  
2
= W2 + E 2 + ... +
2 2 2 2
Wk − 2 + 2Wk − 2 ⋅ Ek −2 + Ek −2 + 2Wk −1 ⋅ Ek −1  +  E
  k −1 + Ek  (W3 = W2 + E 2 )
2 2
= W2 + 2W2 ⋅ E2 + E2 +  ... +
2 2 2 2
Wk − 2 + 2Wk − 2 ⋅ Ek −2 + Ek −2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek    
2 2
= W1 + E1 + 2W2 ⋅ E2 + E2 +  ... +
2 2 2 2
Wk − 2 + 2Wk − 2 ⋅ Ek −2 + Ek −2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek (W
  2 = W1 + E1 )  
2 2 2
= W1 + 2W1 ⋅ E1 + E1 + 2W2 ⋅ E2 + E 2 +  ... +
2 2 2 2
W k − 2 + 2Wk − 2 ⋅ Ek − 2 + E k −2 + 2Wk −1 ⋅ Ek −1 + Ek −1 + Ek    
k −1 k 
2
= W1 +  2W j ⋅ E j +  E j
2
 
 j =1 j =1

k −1 k 
2
=  2W j ⋅ E j +  E j (Dado que W1 = 0)  
 j =1 j =1

Concretizando:

k −1 k 
2
=  2W j ⋅ E j +  E j
2 2
Wk + Ek   (Ecuación 6.2.7)
 j =1 j =1

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
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:

||W k +1||2 ≤ ||W k ||2 + ||Ε k| |2


k −1 k 
2
=  2W j ⋅ E j +  E j
2 2 2
⇔ Wk +1 ≤ Wk + Ek  
 j =1 j =1

k −1 k 
2
≤  2W j ⋅ E j +  E j
2
⇔ Wk +1  
 j =1 j =1

Ahora bien, incorporando la observación de que W  j⋅  E  j  < 0 para  j  = 1, 2, …, k , entonces
podemos establecer:
k −1 k k 
2 2
 2W j ⋅ E j +  E j 1 E
2
Wk +1 ≤ ≤ j  
 j =1 j =1 j=

Y aplicando la propiedad transitiva del operador ≤ tenemos:



2
≤  E j
2
Wk +1
 j =1

Sea γ 2 una constante positiva definida como:


2
{
γ 2 = max  E k  } (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:



≤  Ei
2 2
Wk +1 ≤ k γ 2
i =1
2
⇔ Wk +1 ≤ k γ 2

166
Capítulo 6. Redes de Perceptrones

Tenemos entonces que la magnitud al cuadrado del vector de pesos W k+  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 iteración:

k 2γ 12 2
2 ≤ Wk +1 ≤ k γ 2
W *

La Cota Inferior nos dice el valor mínimo esperado para la magnitud al cuadrado del vector
k 2γ 12
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  γ 1
2

2 = k γ 2 (Ecuación 6.2.9)


W *

Realmente sólo se requieren unas manipulaciones simples para encontrar el valor de k :

167
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
 j =
ji j (Ecuación 6.3.1)

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.
• α: Coeficiente de aprendizaje.
• a j: Salida de la  j-é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) (Ecuación 6.3.4)

 Err i es
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:

 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  (Ecuación 6.3.6)
  j =1 

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 ≤  j ≤ n2.
Véase la Figura 6.2. Ahora bien, la actualización del k -ésimo peso en la  j-ésima neurona,
wk , j, de la capa oculta se da mediante la aplicación de la regla:

wk,j = wk,j + α⋅ I k⋅∆


   j (Ecuación 6.3.7)

Donde  I k es
  la salida de la k -é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 no  es más que el
valor del k -ésimo componente del vector de entrada  X . Es decir,  I 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

ent j = 1 w , I
k =
k j k    (Ecuación 6.3.9)

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
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 la red. Por tanto, es claro que las neuronas en la capa oculta son en parte responsables
por el error que se produce en cada uno de los Perceptrones de salida con los que se
conectan. Ahora observemos la sumatoria presente en el término ∆ j (Ecuación 6.3.8):

n3

1 w , ∆
i=
 j i i

∆i  es precisamente el Término de Variación o Cambio que se utilizó para actualizar a la


i-ésima 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
esperada. Es claro que entonces parte de la actualización, o corrección, aplicada sobre las
neuronas en la capa de salida será también aplicada a las neuronas en la capa oculta. Esto
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 e
− z
• Función Sigmoide: g ( z) = , g '( z ) =
1 + e− z (1 + e− z ) 2
2 z
1 + Tanh( z ) e 2e2 z
• Función : g ( z) = , g '( z ) =
2 1 + e2 z (1 + e2 z )2
2 2e− z
• Función Tanh( z/2): g ( z) = −1 , g '( z ) =
1 + e− z (1 + e− z ) 2
1 − e −2 z 4e2 z
• Función Tanh( z): g (z) = , g '( z ) =
1 + e−2 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  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 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   hacia la capa oculta, entonces en consecuencia
tendremos que el vector  I   generado por la capa de salida no es más que una copia del
vector de entrada  X .
• El vector  I   es presentado a las neuronas en la capa oculta. Para la  j-ésima neurona en
esta capa, j = 1, …, n2:
n1

o Se calcula su sumatoria de salida: ent j = 1 w , I


k =
k j k  . 
o Se determina su salida a j = g(ent  j).

• 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:

n2

o Se calcula su sumatoria de salida: enti =  w j ,i a j .


 j =1

o Se determina su salida Oi = g(ent i).

• 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
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
(Integer n1, Integer n2, Integer n3, Matrix W_hidden [1,…,n2][1,…,n1],
Matrix W_output [1,…,n3][1,…,n2], Array X [1,…,n1])
I = new Array[1,…,n1]
a = new Array[1,…,n2]
O = new Array[1,…,n3]
 // Cada componente del vector de entrada es enviado a su respectiva neurona
 // en la capa de entrada.
for k = 1 until n1 do
I[k] = X [k]
end-of-for
 // El vector I es enviado como entrada a cada neurona en la capa oculta.
for j = 1 until n2 do
n1

 // Se calcula, para la j-ésima neurona en la capa oculta, ent j = 1 w , I


k =
k j k  . 

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 como entrada a cada neurona en la capa de salida.
for i = 1 until n3 do
n2

 // Se calcula, para la i-ésima neurona en la capa de salida, 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, 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 cuenta
con n3 componentes.
En esencia, y de acuerdo al mecanismo de Retropropagación descrito en los párrafos
anteriores, el Algoritmo 6.3 funciona de la siguiente manera:
• 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:
o Para cada vector  X  en el conjunto de entrenamiento:
 Se obtiene el vector de salida O de la red al presentarle  X .
 Se obtiene el vector de salida esperada T  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 = 1 w , I


k =
k j k  . 
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
Capítulo 6. Redes de Perceptrones

q
 n δ   m

= −  (Ti − Oi ) g   wk ,i ⋅ am, k    (Por la Ecuación 6.4.2)


i =1 δ wk −1 ,k , m  k  =1 m  m m
m m

q
 n  m

= −  (Ti − Oi )g '   wk ,i ⋅ am, k  ⋅   m m


i =1  k  =1  m

nm
(Regla de la Cadena)
δ 
δ wk
1 w km , i ⋅ am,k m  
m−1 , k m , m k m =

nm

La sumatoria w
k m =1
km , i ⋅ am ,k    es precisamente la Sumatoria de Salida de cada una de las
m

neuronas en la capa de salida ( Ecuación 6.4.1). De sus nm  términos realmente sólo nos
ocupa aquel que se relaciona con la neurona en la última capa oculta que contiene al peso
de interés wk 1 ,k ,m . Por lo tanto, todos los términos de la sumatoria son constantes respecto
m− m

wk 1 ,k , m  excepto el antes mencionado:


m− m

q
 n  m

= −  (Ti − Oi )g '   wk ,i ⋅ am, k  ⋅   m m


i =1  k  =1  m

δ 
wkm , i ⋅ am , km  
δ wk m−1 , km , m

q
 n  m

= −  (Ti − Oi )g '   wk ,i ⋅ am, k  ⋅  


i =1  k  =1 
m m
 El término wk ,i es constante 
 
m m

wkm ,i
δ 
⋅ am ,k  respecto a wk −1 ,k ,m .
m m 
 
δ wk m−1 , km ,m
m

q
 n  m

= −  Erri ⋅g '   wk ,i ⋅ am, k  ⋅   m m


i =1  k  =1  m
(Por la Ecuación 6.4.9)
δ 
wkm ,i ⋅ am ,k  
δ wk m−1 , km , m
m

q
δ 
= −  Erri ⋅g ' ( enti ) wk m ,i
⋅ a m, k   (Por la Ecuación 6.4.1)
i =1 δ wk m−1 ,km ,m
m

q
δ 
= −  ∆i ⋅wk m ,i
⋅ am , k   (Por la Ecuación 6.4.10)
i =1 δ wk m−1 ,km ,m
m

209
Una Introducción al Cómputo Neuronal Artificial
A rtificial

= −  ∆ i wk ,i ⋅
 Por la Ecuación 6.4.4, 
m
i =1

 n −1   haciendo  = m 
δ  m

g   wk −1 ,k ,m ⋅ am −1, k −1  
 
δ wk −1 ,k ,m  k  −1 =1
m m m 
m m m

q
 n −1 m
= −  ∆ i wk ,i g '   wk −1 ,k ,m ⋅ am −1, k −1   ⋅
m m m m
i =1  k  −1 =1 m  (Regla de la Cadena)
nm−1
δ 
δ wk
1 w
k m−1 =
km−1 , k m , m ⋅ am −1,k m−1  
m−1 , k m , m

nm−1

La Sumatoria de Salida 1 w
k m−1 =
km−1 , km , m ⋅ am −1,k m−1  
  corresponde a la neurona en la última capa

oculta en la cual está contenido el peso que nos interesa: wk 1 ,k , m . Ello implica que m− m

respecto a wk 1 ,k ,m  todos los términos son constantes excepto el k m−1 -ésimo:


m− m

q
 n −1 m 
= −  ∆ i wk ,i g '   wk m m−1 ,km ,m ⋅ a m −1, k −1   ⋅
m
i =1  k  −1 =1 m 
δ 
wkm−1 , km ,m ⋅ am−1, km−1  
δ wk m−1 , km , m
q
 n −1 m 
= −  ∆ i wk ,i g '   wk m m−1 , k m , m
⋅ am −1, k −1  am −1, k
m m−1  
i =1  k  −1 =1 m 
q
 Por la Ecuación 6.4.3, 
= −  ∆i wk ,i g ' ( ent k m ,m
) am −1, km−1    haciendo  = m 
 
m
i =1

Resumiendo:
q
δ  E 
= − ∆i wk ,i g ' ( ent k ,m )a m −1, km−1   (Ecuación 6.4.12)
δ wk m−1 ,km ,m i =1
m m

Definamos ahora al Término de Variación o Cambio Asociado a la  k m-ésima


Neurona en la Última Capa Oculta como:
q

∆k m ,m =  ∆ i ⋅ wk ,i ⋅ g ' ( ent k  , m )
m m
(Ecuación 6.4.13)
i =1

El término ∆ k ,m  hace explícito el hecho de que los cambios o correcciones aplicados a las
m

neuronas en la capa de salida, el primer conjunto de neuronas ajustadas por el Algoritmo de

210
Capítulo 6. Redes de Perceptrones

Retropropagación, también influyen sobre las correcciones a aplicar sobre la k m-ésima


neurona en la última capa oculta, 1 ≤ k m ≤ nm.

Sustituyendo la Ecuación 6.4.13  sobre la Ecuación 6.4.12  tenemos entonces


expresada de manera concisa la derivada parcial de la Función de Error  E   respecto al
k m-1-ésimo peso en la k m-ésima neurona de la última capa oculta:

δ  E 
= −∆ k ,m ⋅ am −1, k −1   (Ecuación 6.4.14)
δ wk m−1 ,km ,m
m m

x1 I1 a1,1 a -1,1     a ,1


    a +1,1
   
am,1 O1

x2 I2 O2
a1,k1 a -1,k -1
       
a ,k
   
   
a +1,k +1
   
   
am,k m
xk Ik Oi

xp Ip a1,n1 a -1,n -1
   
a ,n
   
   
a +1,n +1
   
am,nm Oq
       

Figura 6.11. 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  , . − 

Procedamos a determinar el valor de la derivada parcial de la Función de Error  E 


respecto al k -1
-1-ésimo peso de la k -ésima neurona en   -ésima
   -ésima capa oculta, es decir, wk 1 ,k  , .
  
− 

Suponemos que este peso corresponde a una neurona ubicada en cualquier capa oculta
excepto la primera y la última: 1 <    < m. Véase la Figura 6.11. Como en los casos
anteriores, partimos de la Ecuación 6.4.7:

δ E  δ  1 q

2
= (Ti − Oi )
δ wk−1 ,k , δ wk−1 ,k  , 2  i =1

Recordemos que el peso wk 1 ,k  ,   es propagado, por medio de la salida de su neurona


− 

correspondiente, hacia todas las neuronas en la (  +1)-ésima


+1)-ésima capa oculta. A su vez, este
mismo peso es propagado hacia todas las neuronas en la (  +2)-ésima+2)-ésima capa oculta. Tal
propagación continúa hasta llegar a las neuronas en la capa de salida. En concreto, tenemos
que el peso wk 1 ,k  ,   está presente en todas las neuronas de la red, excepto aquellas en la
− 

211
Una Introducción al Cómputo Neuronal Artificial
A rtificial

capa de entrada, y las capas ocultas 1 a   -1.


-1. De la capa oculta    sólo
  sólo nos interesa la k -ésima   
q

1 (T − O )
2
neurona. Por lo tanto, tenemos que para la sumatoria i i , que considera a todas
i=

las neuronas en la capa de salida, ninguno de sus términos es constante respecto a wk −1 , k  ,
,
por lo tanto éstos se preservan:

1 q δ 
= 
2
(Ti − Oi )
2 i =1 δ wk 1 ,k  , − 
q
δ 
=  (Ti − Oi ) (Ti − Oi ) (Regla de la Cadena)
i =1 δ wk−1 , k  ,
q
δ   T i  es constante 
= − (Ti − Oi ) Oi  
i =1 δ wk−1 ,k  ,  respecto a wk−1 ,k  , 
q
 n δ  m 
= − ( Ti − Oi ) g   wk ,i ⋅ a m, k    (Por la Ecuación 6.4.2)
i =1 δ wk−1 ,k  ,  k  =1 m
m m

q
 n m 
= − (Ti − Oi ) ⋅ g '   wk ,i ⋅ a m, k m m
⋅  
i =1  k  =1 m  (Regla de la Cadena)
nm
δ 
δ wk−1 ,k  ,
w
k m =1
km , i ⋅ am ,k m  

= − Erri ⋅ g ' ( ent i ) ⋅  Por la EcEcua


uaci
ción
ón 6.4
6.4.9
.9, 
i =1  
δ  nm  Err i , y por la Ecuación 
δ wk−1 , k  ,
1 w
k m =
km ,i ⋅ am ,k m  
 6.4.1, ent 
 i


q nm
δ 
= − ∆ i w km ,i ⋅ am , k   (Por la Ecuación 6.4.10)
i =1 δ wk−1 ,k  , k m =1
m

Nótese que los pesos de las neuronas en la capa de salida, wk ,i , son constantes respecto al m

peso que nos ocupa, wk 1 ,k  ,  y además éste último forma parte de las salidas, am,k  , de las
−  m

neuronas en la última capa oculta:

q nm
δ 
= − ∆i  wk m ,i
am, km  
i =1 k m =1 δ wk−1 ,k  ,

212
Capítulo 6. Redes de Perceptrones

q nm

= − ∆i  wk ,i ⋅
 Por la Ecuación 6.4.4, 
m
i =1 k m =1

 haciendo  = m 
δ  n −1 m   
g   wk −1 ,k ,m ⋅ am −1, k −1  
δ wk−1 , k  ,  k  −1 =1 m 
m m m

q n m  n −1 m 
= − ∆i  wk ,i g '   wk −1 ,k ,m ⋅ am −1, k −1   ⋅
m m m m
i =1 k =1 m  k  −1 =1 m  (Regla de la Cadena)
nm−1
δ 
δ wk−1 ,k  ,
w
k m−1 =1
km−1 , km , m ⋅ am −1,k m−1  

q nm

= − ∆i  wk ,i g ' ( ent k  , m ) ⋅
 Por la Ecuación 6.4.3, 
m m
i =1 k m =1

nm−1  haciendo  = m 
δ   
δ wk−1 ,k  ,
w
k m−1 =1
km−1 , k m , m ⋅ am −1,k m−1  

Supongamos que existe más de una capa entre la última capa oculta y la capa en donde la
neurona con el peso wk 1 ,k  ,   reside. Por lo tanto, los pesos de todas las neuronas en la
− 

última capa oculta son constantes respecto al peso en consideración wk 1 ,k  ,   ya que no − 

existen conexiones directas con la neurona que precisamente contiene a wk 1 ,k  , . Pero el − 

peso wk 1 ,k  ,  está contenido en las salidas de las neuronas de la ( m-1)-ésima capa oculta. En
− 
nm−1

consecuencia, todos los términos de la sumatoria w


k m−1
km−1 , k m , m ⋅ am −1,k m−1  
 se conservan:

q nm

= − ∆i  wk ,i g ' ( ent k  , m ) ⋅
m m
i =1 k m =1

nm−1
δ 
1 w
k m−1 =
km−1 , k m , m ⋅
δ wk−1 ,k  ,
am −1, km−1  

nm nm−1
δ 
= −  ∆k m ,m 1 w k m−1 , k m , m ⋅ am−1, km−1   (Por la Ecuación 6.4.13)
km =1 k m−1 = δ wk−1 ,k  ,
nm nm−1

= −  ∆k ,m w k m−1 , k m , m ⋅
 Por la Ecuación 6.4.4, 
m
km =1 k m−1 =1
 haciendo  = m −1 
δ   n −2 m   
g   wk ,km −1 , m −1
⋅ am −2, k 
−2  
δ wk−1 ,k  ,  k  −2 =1
m
m −2 m

213
Una Introducción al Cómputo Neuronal Artificial
A rtificial

nm nm−1

= −  ∆k m ,m 1 w k m−1 , k m , m ⋅
km =1 k m−1 =

 n −2 m 
g '   wk m−2 , k m−1 , m −1
⋅ am −2, km−2   ⋅ (Regla de la Cadena)
 k  −2 =1
m 
nm−2
δ 
δ wk−1 ,k  ,
1 w
k m−2 =
km−2 , k m−1 , m −1 ⋅ am −2, k m−2  

nm nm−1

= −  ∆k ,m w k m−1 , k m , m ⋅g ' ( ent k − 1,m −1 ) ⋅


 Por la Ecuación 6.4.3, 
m m
km =1 k m−1 =1

nm−2  haciendo  = m − 1 
δ   
δ wk−1 ,k  ,
1 w
k m−2 =
km−2 , k m−1 , m −1 ⋅ am −2, k m−2  

Los pesos de todas las neuronas en la (m-1)-ésima capa oculta son todos constantes
respecto al peso wk 1 ,k  ,   ya que no existen conexiones directas con la neurona que
− 

precisamente contiene a wk 1 , k  , . Pero el peso wk 1 ,k  ,  está contenido en las salidas de las
−  − 

neuronas de la (m-2)-ésima capa oculta. De nueva cuenta tenemos que todos los términos
nm−2

de la sumatoria 1 w
k m−2 =
km−2 , k m−1 , m −1 ⋅ am −2, k m−2
 se
 
preservan:

nm nm−1

= −  ∆k m ,m 1 w k m−1 , k m , m ⋅ g ' ( entk −1 ,m −1 ) ⋅


m
km =1 k m−1 =

nm−2
δ 
1 w
k m−2 =
km−2 , k m−1 , m −1 ⋅
δ wk−1 ,k  ,
am −2, km−2  

En ese punto haremos una pausa ya que conviene introducir nueva notación.
Reconsideremos al Término de Variación o Cambio asociado a la k m-ésima neurona en la
última capa oculta, presentado originalmente en la Ecuación 6.4.13:
q

∆k m ,m =  ∆ i ⋅ wk ,i ⋅ g '(entk  ,m )
m m
i =1

Este término representa parte de la corrección a aplicar a las neuronas en la última capa
oculta. Dado que las salidas de estas neuronas influyen sobre el error que tuvieron en su
momento las neuronas en la siguiente capa, en este caso la capa de salida, es que entonces
parte de la corrección que se les aplicó a éstas últimas también debe ser aplicada a la última

214
Capítulo 6. Redes de Perceptrones

capa oculta, de allí la presencia de los términos ∆i y wk ,i . Ahora bien, obsérvense los m

términos ∆ k m ,m , wk m−1 , km , m y g ' ( entk  m−1 , m −1 )   en la última expresión que obtuvimos para la
derivada parcial de la Función de Error E  respecto a wk  −1 , k  , 
:

nm nm−1 nm−2
δ E  δ 
= −  ∆k ,m  wkm−1 ,k m ,m ⋅ g ' ( entk m−1,m −1 ) ⋅  wk m−2 ,k m−1 ,m −1 ⋅ am −2, k m−2  
δ wk−1 ,k , km =1
m
k m−1 =1 k m−2 =1 δ wk−1 ,k  ,  

Recordemos que en este punto estamos procesando a las neuronas que forman a la
(m-1)-ésima capa oculta. Las salidas de estas neuronas influyen en el error que en su
momento tuvieron las salidas de la siguiente capa, es decir, las salidas de las neuronas en la
m-ésima capa oculta, la última capa oculta de hecho. Las neuronas de la última capa fueron
corregidas en su momento al usar su correspondiente Término de Variación o Cambio:
∆ k ,m . Además de ∆ k ,m , debe ser claro que para corregir a las neuronas de la capa actual,
m m

la (m-1)-esima, también requerimos de los pesos wk 1 ,k ,m  (los cuales residen en la siguiente m− m

capa) y de g ' ( entk  1,m−1 ) . Todos estos términos pueden ser agrupados bajo la sumatoria
m−

con índices inferior k m y superior nm. Es decir tendríamos la sumatoria:

nm

1 ∆
k m =
km , m ⋅ wk −1 , k
m m ,m ⋅ g ' ( ent k −1 , m −1 )
m

Nótese la similitud de ésta con la sumatoria de la Ecuación 6.4.13. Así como la sumatoria
q

1 ∆ ⋅ w
i=
i km ,i ⋅ g '(ent k  ,m )  se definió como el Término de Variación o Cambio ∆ k
m m ,m  para la
k m-ésima neurona en la última capa oculta, ahora podemos definir a la sumatoria
nm

1 ∆
k m =
km , m ⋅ wk −1 ,k
m m ,m ⋅ g ' ( ent k −1 ,m −1 )  como el Término de Variación o Cambio ∆ k
m m−1 , m −1  para la

k m-1-ésima neurona en la penúltima capa oculta. Pero como veremos más adelante,
tendremos que definir para cada neurona en cada capa oculta su correspondiente Término
de Variación o Cambio. La buena noticia es que las expresiones que se obtienen serán
similares a las que hemos obtenido para ∆ k 1 ,m−1  y para ∆ k ,m . Por ello mismo, definiremos m− m

al Término de Variación o Cambio para la  k -ésima Neurona en la     -  ésima Capa   

Oculta, 1 ≤   < m, como:

n +1

∆ k , = g '(ent k , )  ∆ k+1, +1 ⋅ wk  , k+1 ,+1   (Ecuación 6.4.15)


k +1 =1

215
Una Introducción al Cómputo Neuronal Artificial

El caso cuando    = m ya está cubierto por la Ecuación 6.4.13. Teniendo ya a la mano esta
nueva definición, podemos proseguir con nuestra derivada parcial de la Función de Error  E 
respecto al peso wk 1 ,k  , . Aplicaremos la Ecuación 6.4.15 cuando sea requerido:
− 

nm nm−1
δ  E 
= −  ∆k ,m w k m−1 , k m , m ⋅ g ' ( ent k −1 ,m −1 ) ⋅
δ wk−1 ,k  , km =1
m
k m−1 =1
m

nm−2
δ 
1 w
k m−2 =
km−2 , km−1 , m −1 ⋅
δ wk−1 ,k  ,
am − 2, km−2  

nm−1 nm−2

= −  ∆k , m −1 w k m−2 , k m−1 , m −1 ⋅
km−1 =1
m−1
k m−2 =1  Por la Ecuación 6.4.15, 
 haciendo  = m − 1 
δ   
am − 2, k m−2
δ wk−1 , k  ,
nm−1 nm−2

= −  ∆k m−1 , m −1 w k m−2 , k m−1 , m −1 ⋅


km−1 =1 k m−2 =1  Por la Ecuación 6.4.4, 
 haciendo  = m − 2 
δ   n −3 m   
g   wk , km −2 , m − 2
⋅ am −3, k 
−3  
δ wk−1 , k  ,  k  −3 =1
m
m−3 m

nm−1 nm−2

= −  ∆k m−1 , m −1 1 w k m−2 , k m−1 , m −1 ⋅


km−1 =1 k m−2 =

 n −3 m 
g '   wk m−3 , km−2 , m − 2
⋅ am −3, k m
⋅
−3  
(Regla de la Cadena)
 k  −3 =1
m 
nm−3
δ 
δ wk−1 ,k  ,
1 w
k m−3 =
km−3 , k m−2 , m − 2 ⋅ am −3, k m−3  

nm−1 nm−2

= −  ∆k , m −1 w k m−2 , k m−1 , m −1 ⋅g ' ( entk −2 , m −2 ) ⋅


 Por la Ecuación 6.4.3, 
m−1 m
km−1 =1 k m−2 =1

nm−3  haciendo  = m − 2 
δ   
δ wk−1 , k  ,
1 w
k m−3 =
km−3 , k m−2 , m − 2 ⋅ am −3, k m−3  

Los pesos de todas las neuronas en la (m-2)-ésima capa oculta son todos constantes
respecto al peso wk 1 , k  ,   ya que no existen conexiones directas con la neurona que
− 

precisamente contiene a wk 1 ,k  , . Pero el peso wk 1 ,k  ,  está contenido en las salidas de las
−  − 

neuronas de la (m-3)-ésima capa oculta. De nueva cuenta, todos los términos de la


nm−3

sumatoria 1 w
k m−3 =
km−3 , k m−2 , m − 2 ⋅ am −3, k m−3
 se
 
preservan:

216
Capítulo 6. Redes de Perceptrones

nm−1 nm−2

= −  ∆k m−1 , m −1 w k m−2 , k m−1 , m −1 ⋅ g ' ( entk −2 , m −2 ) ⋅


m
km−1 =1 k m−2 =1

nm−3
δ 
1 w
k m−3 =
km−3 , k m−2 , m − 2
δ wk−1 ,k  ,
am −3, km−3  

nm−2 nm−3

=− 1 ∆
k m −2 =
k m −2 , m − 2 1 w
k m−3 =
k m−3 , k m−2 , m − 2 ⋅
 Por la Ecuación 6.4.15, 
 haciendo  = m − 2 
δ   
am −3, k m−3
δ wk−1 , k  ,

nm−2 nm−3

=− 1 ∆ km−2 , m − 2 1 w k m−3 , k m−2 , m − 2 ⋅


k m −2 = k m−3 =  Por la Ecuación 6.4.4, 
 haciendo  = m − 3 
δ   n −4 m   
g   wk −4 , k −3 , m − 3
⋅ am −4, k 
−4  
δ wk−1 , k  ,  k  −4 =1
m
m k m

nm−2 nm−3

=− 1 ∆
k m −2 =
k m −2 , m − 2 1 w
k m−3 =
k m−3 , k m−2 , m − 2 ⋅

 n −4 m 
g '   wk m −4 , k −3 , m − 3
k
⋅ am −4, k m
⋅
−4  
(Regla de la Cadena)
 k  −4 =1
m 
nm−4
δ 
δ wk−1 ,k  ,
w
k m−4 =1
km−4 , k k −3 , m − 3 ⋅ am −4, k m−4  

nm−2 nm−3

=− ∆
km−2 =1
k m −2 , m − 2 w
k m−3 =1
k m−3 , k m−2 , m − 2 ⋅g ' ( entk −3 , m −3 ) ⋅
m
 Por la Ecuación 6.4.3, 
nm−4  haciendo  = m − 3 
δ   
δ wk−1 ,k  ,
1 w
k m−4 =
km−4 , k k −3 , m − 3 ⋅ am−4, k m−4  

Los pesos de todas las neuronas en la (m-3)-ésima capa oculta son todos constantes
respecto al peso wk 1 ,k  ,   ya que asumimos no existen conexiones directas con la neurona
− 

que contiene a wk 1 , k  , . Pero el peso wk 1 ,k  ,  está contenido en las salidas de las neuronas de
−  − 

la (m-4)-ésima capa oculta. Tal como hemos procedido en párrafos anteriores, todos los
nm−4

términos de la sumatoria w
k m−4 =1
km−4 , k k −3 , m −3 ⋅ am −4, k m−4
 se preservan:
 

217
Una Introducción al Cómputo Neuronal Artificial

nm−2 nm−3

=− ∆
km−2 =1
k m −2 , m − 2 w
k m−3 =1
k m−3 , k m−2 , m − 2 ⋅ g ' ( ent k −3 , m −3 ) ⋅
m

nm−4
δ 
1 w
k m−4 =
km−4 , k k −3 , m − 3 ⋅
δ wk−1 , k  ,
am −4, km−4  

nm−3 nm−4

=− ∆
km−3 =1
km−3 , m − 3 w
k m−4 =1
k m−4 , k m−3 , m −3 ⋅
 Por la Ecuación 6.4.15, 
 haciendo  = m − 3 
δ   
am − 4, k m−4
δ wk−1 , k  ,

En este punto de nuestro desarrollo debe ser claro que mientras la capa oculta que contiene
a la neurona en donde reside el peso wk 1 ,k  ,   no haya sido alcanzada aún tendremos la− 

secuencia de aplicaciones de la Ecuación 6.4.4, Regla de la Cadena, Ecuación 6.4.3, Regla


de la Derivada de una Suma, y finalmente Ecuación 6.4.15 donde obtenemos el Término
de Variación o Cambio asociado a cada neurona en la capa oculta actualmente procesada.
Supongamos que la capa oculta donde se encuentra el peso wk 1 ,k  ,   está suficientemente − 

alejada de la última capa oculta de la red. Por lo tanto, la secuencia de aplicaciones antes
descrita nos lleva a obtener una expresión que contiene los Términos de Variación o
Cambio asociados a la (m-4)-ésima capa oculta:

=
nm−4 nm−5
δ 
=− 1 ∆
km−4 =
km−4 , m − 4 1 w
k m−5 =
k m−5 , k m−4 , m − 4 ⋅
δ wk−1 ,k  ,
am −5, k m−5  

Nuevamente aplicamos a la expresión anterior, en este orden, la Ecuación 6.4.4, Regla de


la Cadena, Ecuación 6.4.3, Regla de la Derivada de una Suma y finalmente Ecuación
6.4.15. Por lo tanto obtenemos:

=
nm−5 nm−6
δ 
=− 1 ∆
km−5 =
k m −5 , m − 5 1 w
k m−6 =
km−6 , k m−5 , m −5 ⋅
δ wk−1 ,k  ,
am −6, k m−6  

218
Capítulo 6. Redes de Perceptrones

• Para los pesos de las neuronas en la capa de salida:

wkm ,i  = wkm ,i  + α⋅∆i⋅ am,k m (Ecuación 6.4.18)

• Para los pesos de las neuronas en la última capa oculta:

wkm−1 ,km , m  = wkm−1 ,km , m  + α⋅ ∆ km ,m ⋅ am −1,k m−1 (Ecuación 6.4.19)

• Para los pesos de las neuronas en la   -ésima capa oculta, 1 <    < m:

wk−1 ,k  ,  = wk−1 , k  ,  + α⋅ ∆ k  , ⋅ a −1,k −1 (Ecuación 6.4.20)

• Para los pesos de las neuronas en la primera capa oculta:

wk ,k 1 ,1  = wk ,k 1 ,1  + α⋅ ∆ k 1 ,1 ⋅Ι k  (Ecuación 6.4.21)

Donde α es nuestro bien conocido Coeficiente de Aprendizaje.

Realmente lo que nos queda por hacer es especificar al Algoritmo de


Retropropagación para el ajuste de pesos en una Red Neuronal de Perceptrones con al
menos 2 capas ocultas. Como ya mencionamos al inicio de esta Sección, el proceso de
ajuste de los pesos se dividirá en 4 fases. Dado un vector de entrada, tenemos en primer
lugar que se ajustarán los pesos de las neuronas en la capa de salida, aplicando la Ecuación
6.4.18. Una vez finalizada esta etapa se procederá al ajuste de los pesos en las neuronas en
la última capa oculta. Se deberá utilizar la Ecuación 6.4.19. La fase 3 comprende el ajuste
de los pesos de las neuronas en las capas ocultas intermedias, comenzando a partir de la
penúltima capa oculta y terminando en la segunda capa oculta. Las neuronas de cada capa
son procesadas y actualizadas haciendo uso de la regla presentada en la Ecuación 6.4.20.
Por último, en la cuarta fase tendremos que ajustar los pesos de las neuronas en la primera
capa oculta aplicando la Ecuación 6.4.21. Como ya se comentó con anterioridad, es
sumamente importante, a fin de no afectar la eficiencia del Algoritmo de Retropropagación,
el guardar, conforme se van calculado, los valores de:
• ∆i: al actualizar los pesos de las neuronas en la capa de salida.
• ∆ k ,m : al actualizar los pesos de las neuronas en la última capa oculta.
m

• ∆ k  , : al actualizar los pesos de las neuronas en las capas ocultas intermedias, 1 <    < m.

Ya que, como se ha visto, éstos son requeridos para la actualización de los pesos en las
capas ocultas. Las 4 fases descritas se ejecutan por cada elemento del conjunto de
entrenamiento. A su vez, el conjunto de entrenamiento es presentado tantas veces se
requiera. Otra opción es establecer una Función de Error que permita medir el desempeño
de la red una vez que se ha efectuado una presentación del conjunto de entrenamiento y si
el error obtenido es menor o igual a un error mínimo aceptable entonces se finaliza el
entrenamiento.

225
Una Introducción al Cómputo Neuronal Artificial

De manera más específica tenemos entonces que la secuencia de pasos a efectuar


por el Algoritmo de Retropropagación es la siguiente:

• Inicializar los pesos de todas las neuronas de manera aleatoria con valores en (-1, 1).
• Repetir hasta que la red proporcione salidas con un error aceptable o bien hasta que el
número requerido de presentaciones del conjunto de entrenamiento haya sido
alcanzado:

o Para cada vector χ en el conjunto de entrenamiento:

 Obtener la correspondiente salida O de la red.


 Obtener el vector de salida esperada T  asociado al vector de entrada χ.
 Para i = 1 hasta q:
• Calcular  Err i = T i – Oi

 Fase 1 - Actualización de pesos en las neuronas de la capa de salida:


• Para cada neurona i en la capa de salida, i = 1, 2, …, q:
o Obtener ∆i.
o Para k m = 1 hasta nm:
 wk ,i  = wk ,i  + α⋅∆i⋅ am ,k 
m m m

 Fase 2 - Actualización de pesos en las neuronas de la última capa oculta:


• Para cada neurona k m en la última capa oculta, k m = 1, 2, …, nm:
o Obtener ∆ k ,m . m

o Para k m-1 = 1 hasta nm-1:


 wk 1 ,k ,m  = wk 1 ,k ,m  + α⋅ ∆ k ,m ⋅ am −1,k  1
m− m m− m m m−

 Fase 3 - Actualización de pesos en las neuronas en la ( m-1)-ésima capa oculta


hasta la segunda capa oculta:
• Para    = m-1 hasta 2:
o Para cada neurona k  en la  -ésima capa oculta, k  = 1, 2, …, n :
        

 Obtener ∆ k  , . 

 Para k -1 = 1 hasta n -1:


     

• wk 1 , k  ,  = wk 1 ,k  ,  + α⋅ ∆ k  , ⋅ a −1,k  1
−  −   −

 Fase 4 - Actualización de pesos en las neuronas de la primer capa oculta:


• Para cada neurona k 1 en la primer capa oculta, k 1 = 1, 2, …, n1:
o Para k  = 1 hasta p:
 wk , k 1 ,1  = wk , k 1 ,1  + α⋅ ∆ k 1 ,1 ⋅Ι k 

226
Capítulo 6. Redes de Perceptrones

Sabemos que cuando el Algoritmo de Retropropagación ha finalizado es que se


cuenta con una Corrida. Debe tenerse en consideración, tal como comentamos en la
Sección anterior, que no es posible, aún en el caso de 2 o más capas ocultas, garantizar el
aprendizaje óptimo en términos de que los pesos encontrados efectivamente minimizan a
nuestra función de error. Es posible que éstos correspondan a un mínimo local. Otra
situación que puede presentarse es que el lugar geométrico descrito por la función de error
carezca de puntos críticos y en particular de mínimos. En este sentido la convergencia de
los pesos nunca tendrá lugar. Por ello mismo, es que por lo regular se recomienda efectuar
más de una corrida. La idea detrás de este proceder, como ya comentamos antes, es la de
efectuar una exploración en diferentes regiones de la función de error. Aunque ello no
garantiza que se encontrarán los pesos óptimos, es una manera empírica de identificar si los
resultados obtenidos para una corrida, es decir los pesos encontrados, corresponden a
mínimos locales o globales.

6.5 Aplicación: Predicción de Señales


Recordemos que en los Capítulos 1 y 4 establecimos al problema de la Predicción
de Señales como el modelado de una serie de tiempo de manera que sea posible determinar
cómo se comportará en el futuro. En la Sección 4.3 este problema fue abordado como una
aplicación de la Neurona tipo Perceptrón. En ese caso se asumía que la señal se ajustaba a
un modelo de Serie de Tiempo de  M -ésimo Orden de Parámetros Autorregresivos. El
objetivo era determinar a los  M   parámetros que definían a la señal. Tales parámetros, como
se recordará, estaban representados por los pesos de la neurona. Una vez que se finalizaba
el entrenamiento es que recurríamos a inspeccionar tales pesos y éstos se utilizaban para
generar una nueva señal, junto con los vectores en el conjunto de entrenamiento, y
determinar si la aproximación obtenida era lo suficientemente buena al compararla con la
señal original. En esta Sección veremos como es que una Red de Perceptrones puede
proporcionarnos una solución interesante pero ahora partiremos de una suposición
diferente: no tenemos conocimiento alguno respecto a qué modelo se ajusta la señal. Sólo
contamos con las muestras que la forman y nada más. En particular, trabajaremos con un
Red formada por exactamente dos capas ocultas. En primer lugar recordaremos algunos
conceptos planteados en la Sección 4.3. Posteriormente aplicaremos las reglas de
actualización definidas en la Sección anterior, pero las haremos instancias de nuestro caso
con m  = 2 capas ocultas. Definiremos entonces al Algoritmo de Retropropagación
específico para el entrenamiento de una Red formada por dos capas ocultas y lo
aplicaremos a fin de que nuestra red modele la señal dada.

Sea K   el número de muestras que conforman a nuestra señal. Cada muestra es de
hecho un número  xn que es el valor de la señal en el momento n. Supondremos que el valor
de cualquier muestra  xn  tiene influencia de los valores de las muestras que le preceden y
tendrá influencia sobre los valores que le prosiguen. Sabemos que este razonamiento parte
de hecho de que los elementos de una serie de tiempo no son independientes entre sí. Por
ejemplo, el comportamiento actual de la Bolsa de Valores depende en gran medida de los
comportamientos de la misma en días previos. O bien, tenemos conocimiento que por lo

227
Una Introducción al Cómputo Neuronal Artificial

regular un sismo de gran magnitud en un día dado incide sobre la actividad sísmica en días
posteriores, de donde se tienen las llamadas  Réplicas. En este sentido tenemos que las K 
muestras, a fin de formar el conjunto de entrenamiento, serán usadas para formar
subsecuencias de la serie de tiempo. Tales subsecuencias serán de tamaño  M ≥ 1 y cada una
dará lugar a un vector de entrada para nuestra red neuronal:
  xn −1 
 x 
 n−2 
 xn −3 
 
  
 xn − M  

La idea ahora es que dado un vector de entrada formado por la subsecuencia  xn-M , …,  xn-2,
 xn-1, la Red Neuronal proporcione como salida un estimado para la muestra  xn. A tal
estimado lo denotaremos por  xn’. La idea, como siempre, es ajustar los pesos de la red de tal
forma que la diferencia entre  xn y xn’ sea tan pequeña como sea posible.

Dado que tenemos K   muestras entonces los vectores de entrada, en  M  , estarán
dados por:
  x M   xM +1   x M + 2   xK −1 
 x  x   x  x 
  M −1   M    M +1   K −2 
 x M − 2  ,  xM −1  ,   x M   ,  ,  xK −3 
       
           
  x1   x2    x3   xK − M  

Los respectivos vectores de salida esperada, en este caso en  , serán entonces:


[ x M +1 ] , [ xM +2 ] , [ xM +3 ] ,  , [ xK  ]

La señal con la que trabajaremos se conforma por K   = 2,000 muestras. Véase la
Figura 6.13. Dado que K   = 2,000 entonces podemos formar K  –  M   vectores de entrada. En
nuestro caso trabajaremos con  M   = 7. Ello implica que contaremos con 1,993 vectores de
entrada, pero nuestro conjunto de entrenamiento se conformará únicamente por los
primeros 1,000 vectores. Los restantes 993 vectores serán utilizados, una vez finalizado el
entrenamiento, como Conjunto de Evaluación. Un conjunto de evaluación es un conjunto
de vectores los cuales se “ ocultan ” a la red y que se utiliza para medir su desempeño
usando entradas que no fueron presentadas durante su entrenamiento. Para estas entradas
tenemos también identificadas las salidas esperadas. La idea es determinar la robustez de
nuestra red cuando información nueva le sea proporcionada. También sirve para establecer
si el ajuste pesos no se sesgó a favor de una simple “ memorización ” de los vectores en el
conjunto de entrenamiento. Véase entonces en la Figura 6.14 la sección de la señal que se
presentará a la red durante el entrenamiento y la sección que se utilizará para efectos de
evaluación.

228
Capítulo 6. Redes de Perceptrones

α
1.2

0.8

0.6

0.4

0.2

0 t
1 50 100 150 200 250 300 350 400 450 500

Figura 6.15. Evolución del Coeficiente de Aprendizaje α (t ) = 1  a lo largo


1 + t 
de 500 presentaciones del conjunto de entrenamiento. En la última instancia se tiene α(500) ≈ 0.0019.

Una inspección de la codificación del Algoritmo 6.5  permitirá apreciar que se


calcula un Error Global una vez que se ha efectuado una presentación del conjunto de
entrenamiento. El cálculo de este error requiere que se presente a todos los vectores en el
conjunto de entrenamiento utilizando los pesos actuales de las neuronas pero sin
modificarlos. Utilizando el Algoritmo 6.4, cada vector de entrada es presentado y se
obtiene el correspondiente vector de salida O proporcionada por la red. Posteriormente se
calcula la Distancia Euclidiana entre el vector O  y el correspondiente vector T   de salida
esperada. La idea es que si el error es mínimo entonces las distancias serán pequeñas. Las
distancias se suman y finalmente se dividen entre el tamaño N   del conjunto del
entrenamiento. Es decir, nuestro Error Global no es mas que el promedio de las Distancias
Euclidianas entre de los vectores de salida esperada y los vectores proporcionados por la
red. Esta función de error se utiliza para medir el aprendizaje de la red conforme el proceso
de entrenamiento se efectúa.

Retornemos a nuestro caso de estudio, es decir, el modelado de la señal presentada


en la Figura 6.13. Sabemos que ésta se conforma por K  = = 2,000 muestras. El tamaño de las
subsecuencias a considerar, para formar los vectores de entrada, es  M = 7. Ya comentamos
que tendremos un conjunto de entrenamiento formado por  N  =   = 1,000 vectores de entrada y
un conjunto de evaluación compuesto por 993 vectores. La estructura de la red que

237
Una Introducción al Cómputo Neuronal Artificial
A rtificial

consideraremos se presenta en la Figura 6.16. Tenemos  p  = 7 neuronas de entrada, las


cuales sabemos no efectúan ningún procesamiento y cuya finalidad es la de distribuir a los
vectores de entrada hacia todas las neuronas en la primer capa oculta. Se tienen n1 = 8
neuronas en la primer capa oculta y n2 = 5 neuronas en la segunda capa oculta. Recordemos
que la red recibirá un vector en  7   que contiene una subsecuencia de la señal

[ x
 xn-1  xn-2  xn-3  xn-4  xn-5  xn-6  xn-7]  y proporcionará como salida un escalar que corresponde
a la predicción  xn’ para la muestra  xn. Por ello mismo tendremos sólo una neurona en la
capa de salida, q = 1. Nótese como es que todos los valores de la señal se encuentran dentro
del intervalo [0, 1]. Por lo tanto la Función de Activación que utilizaremos será la Función
Sigmoide ( Ecuación 4.1.4), la cual, como apreciamos en el Capítulo 4, tiene su codominio
en (0,1):
1
g ( z) =
1 + e− z

a1,1

x1 I1 a1,2
a2,1
x2 I2 a1,3
a2,2
x3 I3
a1,4
x4 a2,3 O1
I4
a1,5
x5 I5 a2,4

x6 a1,6
I6
a2,5
x7 I7 a1,7

a1,8

Figura 6.16. Una Red de Perceptrones con dos capas ocultas.


Se utilizará para modelar a la serie de tiempo presentada en la Figura 6.13.

Al aplicar el Algoritmo 6.5  con  L  = 500 presentaciones del conjunto de


entrenamiento se obtuvieron los pesos presentados en la Tabla 6.1. En la Figura 6.17 se
presenta una gráfica con la evolución del Error Global de la red conforme el entrenamiento
avanzaba. Nótese como es que en las primeras 50 presentaciones del conjunto de
entrenamiento se tuvieron los cambios más drásticos en cuanto a los errores obtenidos. Una
vez efectuada la primer presentación ( t   = 1) el error global fue de 0.1059. Después de la
segunda presentación ( t   = 2) éste fue de 0.0685. Recordemos que el Coeficiente de

238
Capítulo 6. Redes de Perceptrones

1 1
Aprendizaje en estos dos casos fue de y , respectivamente. En la tercer presentación
2 3
(t   = 3) del conjunto de entrenamiento se tuvo un error global de 0.0547. Al presentar al
conjunto por décima ocasión ( t   = 10) se contó con un error 0.0496. En la presentación
t  =
  = 20 el error fue de 0.0488. En la presentación t  =
  = 50, con un Coeficiente de Aprendizaje
1
α  = = ≈ 0.0196 , el error global obtenido fue de 0.0478. El error Global Final, una vez
51
efectuadas las 500 presentaciones del conjunto de entrenamiento, fue de 0.0458.
Recordemos que durante el entrenamiento, a la red le fue presentada únicamente
información referente a las primeras 1,000 muestras de 2,000 que forman la señal.
Tabla 6.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.
Pesos Neuronas Primer Capa Oculta
Neurona a1,1  Neurona a1,2 Neurona a1,3 Neurona a1,4
w1,1,1 = -0.4341 w1,2,1 = 0.0079 w1,3,1 = 0.8405 w1,4,1 = 0.9602
w2,1,1 = -0.2744 w2,2,1 = 0.9458 w2,3,1 = 0.5505 w2,4,1 = -0.6138
w3,1,1 = 0.5131 w3,2,1 = -0.3605 w3,3,1 = 0.8631 w3,4,1 = 0.943
w4,1,1 = -0.9535 w4,2,1 = 0.9001 w4,3,1 = -0.801 w4,4,1 = -0.2488
w5,1,1 = 0.9207 w5,2,1 = -0.5173 w5,3,1 = 0.8127 w5,4,1 = 0.8756
w6,1,1 = 0.5544 w6,2,1 = 0.7269 w6,3,1 = -0.2181 w6,4,1 = -0.6935
w7,1,1 = 0.2594 w7,2,1 = 0.9532 w7,3,1 = -0.8438 w7,4,1 = 0.6746
Neurona a1,5  Neurona a1,6  Neurona a1,7  Neurona a1,8
w1,5,1 = -0.5186 w1,6,1 = -0.5679 w1,7,1 = 0.2224 w1,8,1 = 0.1796
w2,5,1 = -0.1219 w2,6,1 = 0.7864 w2,7,1 = 0.8087 w2,8,1 = -0.771
w3,5,1 = -0.9797 w3,6,1 = 0.8 w3,7,1 = -0.5434 w3,8,1 = -0.0713
w4,5,1 = -0.8753 w4,6,1 = -0.2862 w4,7,1 = -0.7691 w4,8,1 = -0.7065
w5,5,1 = -0.7295 w5,6,1 = -0.1438 w5,7,1 = 0.8699 w5,8,1 = 0.3666
w6,5,1 = -0.7908 w6,6,1 = 0.9134 w6,7,1 = 0.0232 w6,8,1 = -0.3936
w7,5,1 = 0.42148 w7,6,1 = 0.051 w7,7,1 = -0.1974 w7,8,1 = 0.5881

Pesos Neuronas Segunda Capa Oculta


Neurona a2,1  Neurona a2,2  Neurona a2,3  Neurona a2,4  Neurona a2,5
w1,1,2 = -0.7518 w1,2,2 = 0.4526 w1,3,2 = -0.8859 w1,4,2 = 0.1984 w1,5,2 = -0.9319
w2,1,2 = 0.9695 w2,2,2 = 0.6757 w2,3,2 = 0.8004 w2,4,2 = 0.9973 w2,5,2 = -0.6094
w3,1,2 = -0.7666 w3,2,2 = -0.7583 w3,3,2 = 0.9212 w3,4,2 = 0.297 w3,5,2 = -0.8472
w4,1,2 = 0.0777 w4,2,2 = 0.7111 w4,3,2 = 0.5105 w4,4,2 = 0.2689 w4,5,2 = -0.506
w5,1,2 = 0.2479 w5,2,2 = 0.1109 w5,3,2 = 0.1298 w5,4,2 = -0.1319 w5,5,2 = -0.8761
w6,1,2 = -0.68 w6,2,2 = 0.8059 w6,3,2 = -0.6075 w6,4,2 = -0.119 w6,5,2 = -0.7347
w7,1,2 = 0.2831 w7,2,2 = 0.7904 w7,3,2 = -0.5820 w7,4,2 = -0.9137 w7,5,2 = -0.7275
w8,1,2 = -0.0803 w8,2,2 = 0.4877 w8,3,2 = 0.2346 w8,4,2 = -0.2268 w8,5,2 = 0.143

Pesos Neurona Capa de Salida


Neurona O1:
w1,1 = 0.3026
w2,1 = 0.0804
w3,1 = -0.0936
w4,1 = 0.5123
w5,1 = -0.1862

239
Una Introducción al Cómputo Neuronal Artificial
A rtificial

 Error
0.12

0.1

0.08

0.06

0.04

0.02

0 t
1 50 100 150 200 250 300 350 400 450 500

Figura 6.17. 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.

El siguiente paso consiste en evaluar el desempeño de la red considerando a todos


los vectores disponibles: 1,000 de éstos forman el conjunto de entrenamiento mientras que
los restantes 993 forman el conjunto de evaluación. El desempeño lo mediremos utilizando
nuevamente nuestra Función de Error Global: el promedio de las Distancias Euclidianas
entre los vectores proporcionados por la red y los vectores de salida esperada. Para contar
con una apreciación visual es que con las salidas proporcionadas por la red formaremos una
serie de tiempo que no es más que el estimado proporcionado por nuestra red de
Perceptrones. En la Figura 6.18 se muestran tanto la serie de tiempo generada por la red
(en color gris) sobrepuesta a la serie de tiempo original (en color negro). El Error Global
que se obtuvo, considerando ya la totalidad de los 1,993 vectores de entrada, fue de 0.0895.
Si bien es mayor al Error Global que se obtuvo únicamente con el conjunto de
entrenamiento, después de 500 presentaciones, es claro que es menor que el Error Global
obtenido al haber efectuado sólo una presentación ( t  =
  = 1): 0.1059. Apreciando visualmente,
en la Figura 6.18, es claro que nuestra Red de Perceptrones ha sido capaz de capturar en
gran medida las propiedades y comportamiento de la señal original. En áreas como la
Economía, las Ciencias de la Salud y Sismología es donde se cuenta con fuentes de señales
para las cuales se busca una solución que las pueda modelar, y más importante aún, que
permita efectuar predicciones de gran precisión. En la práctica, se tiene un gran nicho de
aplicación e Investigación de las redes formadas por Perceptrones en este contexto.

240
Capítulo 6. Redes de Perceptrones

 xn
1.2

0.8

0.6

0.4

0.2

0 n
1 200 400 600 800 1000 1200 1400 1600 1800 2000

Figura 6.18. 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).

241
Una Introducción al Cómputo Neuronal Artificial
A rtificial

242
Una Introducción al Cómputo Neuronal Artificial

7. Redes de Kohonen
Una Introducción al Cómputo Neuronal Artificial

244
Capítulo 7. Redes de Kohonen

7.1 Redes Neuronales Auto-Organizadas


Una de las principales desventajas de las Redes Neuronales Supervisadas yace en el
hecho de que en algunos problemas las salidas correctas esperadas no pueden ser definidas
a priori. En consecuencia, únicamente se cuenta con el Conjunto de Vectores de Entrada.
Por lo tanto, en estos casos, no es posible medir numéricamente la magnitud del error de
aprendizaje. Recordemos que esta magnitud es esencial para el control del aprendizaje en
algoritmos como el de Retropropagación.

En una Red Neuronal Auto-Organizada  el Conjunto de los Vectores de Entrada


constituyen lo que es llamado el Espacio o Ambiente de la Red. Con cada uno de estos
vectores de entrada es que se producirá una adaptación de los parámetros internos de la red,
es decir, un ajuste apropiado de los pesos de sus neuronas. Si tal adaptación es controlada
correctamente entonces la red producirá su Representación Interna del Espacio o
Ambiente. En este sentido, uno de los modelos más populares de Redes Neuronales
Auto-Organizadas es el propuesto por el finlandés Teuvo Kohonen.

De acuerdo a la Teoría planteada por Kohonen, si un espacio o ambiente será


procesado entonces el factor fundamental a tomar en cuenta, durante el proceso de
entrenamiento, es el relacionado a identificar la Estructura del Espacio. Por ejemplo,
considérese un conjunto no vacío  A. De hecho, el conjunto  A es el espacio o ambiente de la
red. Supongamos que  A  es particionado en 20 regiones disjuntas: a1, a2, …, a20. Véase la
Figura 7.1. La idea es que el conjunto  A puede ser “cubierto” por una Red de Kohonen de
tal forma que cuando un vector de entrada inmerso, por ejemplo, en la región a1 es
evaluado con la red, entonces una y sólo una de sus neuronas se activará. Si un vector de
entrada sobre la región a13  es evaluado, entonces una neurona diferente se ha de activar.
Debido a que en nuestro ejemplo se particionó al conjunto  A  en 20 regiones, es que en
consecuencia nuestra Red de Kohonen debería contar con al menos 20 neuronas. Cada
neurona se especializará en una y sólo una región. Entendamos este proceso como el hecho
de que la Red de Kohonen actúa como una función  f   cuyo dominio es precisamente el
conjunto  A. La función en sí toma forma cuando cada elemento del conjunto de vectores de
entrada es debidamente mapeado a la subregión que le corresponde. Dado que cada región
está asociada a una neurona, que es la que proporciona la salida final, es que entonces
tenemos un mapeo que va de un vector de entrada a una neurona correspondiente en la red.
En términos concretos, la función  f , o mejor dicho, la Red de Kohonen, efectúan una tarea
de clasificación de los vectores de entrada. Las clases se conforman por las regiones
definidas. Estas clases precisamente definen una representación de la estructura del espacio
que forman los vectores de entrada. Obsérvese, en la Figura 7.1, que las clases a1 a a20
forman una malla sobre el conjunto  A. Esta malla es llamada propiamente Mapa o
Esquema del Espacio. El punto importante a estudiar en este Capítulo es que una Red de
Kohonen es capaz de construir mapas para sus espacios o ambientes al utilizar un
mecanismo de entrenamiento no supervisado.

245
Capítulo 7. Redes de Kohonen

Tabla 7.1. 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 finales de los centros
de gravedad de cada clase una vez efectuadas 100 presentaciones del conjunto de entrenamiento
(véase el texto para detalles).
Centro de Gravedad (Vector de Pesos)
Clase (Neurona)  X 1 X  2 Miembros
1 0.48833 0.53633 2
2 0.42424 0.43497 3
3 0.62508 0.43863 8
4 0.56403 0.80818 10
5 0.20741 0.54386 12
6 0.60624 0.16832 12
7 0.86220 0.72777 12
8 0.17727 0.26008 13
9 0.16455 0.84476 14
10 0.91601 0.26776 14

 X 2 (1,1)

(0,0)  X 1
Figura 7.8. 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).

259
Una Introducción al Cómputo Neuronal Artificial

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 0 (fase de inicialización de pesos) t  = 2

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 4 t  = 6

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 8 t  = 10
Figura 7.9. 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).

260
Capítulo 7. Redes de Kohonen

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 20 t  = 30

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 50 t  = 60

(1,1,1) (1,1,1)

 X 3  X 3

(0,0,0) (0,0,0)

 X 1  X 1
t  = 80 t  = 100
Figura 7.10. 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 pesos) asociados a las neuronas que forman
la red (véase el texto para detalles).

261
Capítulo 7. Redes de Kohonen

Tabla 7.3. 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).
Clase Miembros Clase Miembros
1 4 11 27
2 8 12 25
3 28 13 12
4 15 14 14
5 43 15 17
6 12 16 21
7 4 17 16
8 30 18 38
9 2 19 19
10 5 20 0

Tabla 7.4. 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.

271
Una Introducción al Cómputo Neuronal Artificial

Tabla 7.5. 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.

272
Capítulo 7. Redes de Kohonen

Contamos con una Red de Kohonen 1D que nos ha proporcionado una solución al
Problema de la Clasificación Automática de Imágenes. En este punto es conveniente
establecer, y como ya debe ser claro, que la clasificación es estructurada únicamente por la
Red de Kohonen durante el proceso de entrenamiento el cual es un mecanismo no
supervisado. Ello quiere decir, por un lado, que no existe un “ maestro ” u “orientador ” que
le indique a la red la existencia de un porcentaje de error o desacierto como sucede en, por
ejemplo, el Algoritmo de Retropropagación. Es la Red misma la que forma su propia
estructura de clasificación. Esta propiedad es sumamente atractiva, ya que hemos venido
mencionado que existen una gran variedad de aplicaciones en las cuales únicamente
contamos con el conjunto de vectores de entrada y nada más. Por lo tanto, modelos de
Redes No Supervisadas como el de Kohonen pueden llegar a ser muy útiles a fin de
determinar automáticamente una estructura o partición para tales conjuntos de vectores.
Pero por otro lado, debemos tomar en cuenta que la clasificación que nos proporciona una
Red de Kohonen puede llegar a ser puesta a prueba en términos de su utilidad. Las Tablas
7.4 y 7.5 nos proporcionan evidencia de una “ buena” clasificación por parte de la Red para
nuestras imágenes. Pero por lo regular, una vez que se cuenta con una clasificación, ésta es
evaluada por un experto quien decide si es útil o no o bien si ha ayudado a encontrar
patrones y propiedades que no eran visibles a simple vista. En el contexto de la aplicación
que estamos presentando, un Médico Especialista es quien debería juzgar si la clasificación
es apropiada o no. Por ejemplo, se podría requerir que la clasificación proporcione un
mecanismo para agrupar casos médicos con diagnósticos y procedimientos comunes. De
manera que cuando un nuevo caso se presente se recurra a la Red Neuronal a fin de
determinar la clase que le corresponde y utilizar a los casos miembros de esa clase, y que en
consecuencia son similares, como una guía a fin de proceder apropiadamente con el
tratamiento del paciente. Si el Médico Especialista determina que la clasificación no es
apropiada entonces es que se recurre a utilizar otros parámetros de entrenamiento: se
modifican la inicialización de pesos, el número de clases, el número de presentaciones, el
coeficiente de aprendizaje, etc. Esto con el fin de obtener una nueva clasificación y
determinar si es útil o no.

Ahora bien, hemos establecido la posible necesidad de recurrencia a un experto para


determinar la utilidad de la clasificación. Pero también hemos mencionado que se busca
que los vectores de pesos, una vez terminado el entrenamiento, se encuentren
uniformemente distribuidos a lo largo del espacio de la red. Esta propiedad es también un
parámetro a tomar en cuenta para determinar si la clasificación fue apropiada o no. En la
Sección 7.3 vimos ejemplos de mapeos de espacios de 2 y 3 dimensiones. La ventaja era
que podíamos analizar la relación entre el conjunto de entrenamiento y los vectores de
pesos finales, y su distribución, mediante elementos visuales. El problema que tenemos
ahora tiene que ver con el hecho de que hemos trabajado con un conjunto de entrenamiento
formado por 340 vectores inmersos en un espacio de n  = 262,144 dimensiones. ¿Cómo
podemos determinar o inferir si efectivamente los vectores de pesos están uniformemente
distribuidos? Para ello, debemos recurrir al uso de otras herramientas. Sabemos que existe

273
Una Introducción al Cómputo Neuronal Artificial

una relación directa entre los vectores de entrada y los vectores de pesos: ambos tienen el
mismo número de componentes y sus valores están en el intervalo [0, 1]. Existe una
relación uno a uno entre una imagen 2D y su correspondiente vector de entrada. Por lo
tanto, podemos pensar en que un vector de pesos es la representación de una imagen. Tal
imagen se forma poco a poco conforme el proceso de entrenamiento avanza y además
debería considerar las características que tienen en común las imágenes que se agrupan en
su correspondiente clase. Esta última aseveración tiene sustento en el hecho de que un
vector de pesos es actualizado utilizando a la imagen actualmente procesada. El punto
ahora es simplemente considerar que todo vector de pesos puede ser expresado como una
imagen en escala de grises. Visualizando todas las imágenes formadas, y asociadas a los
vectores de pesos, es que podremos apreciar que tan diferentes, o similares, son entre sí. De
esta manera podemos contar con un parámetro para inferir que tan bien distribuidos están
los pesos en el Espacio de la red. La Tabla 7.6  muestra precisamente las 20 imágenes
descritas por nuestros vectores de pesos. Mencionamos antes que la clase 20 no contaba
con miembros. Véase en la Tabla como es que su imagen correspondiente no contiene
información visual alguna. De hecho, todos sus componentes tienen valor 0.5, indicando
que durante el entrenamiento la neurona asociada nunca fue caracterizada como Ganadora.
Por otro lado, obsérvense las imágenes asociadas a los vectores de pesos para las clases 12
y 17. Este par de imágenes guardan una gran similitud con sus correspondientes imágenes
en el conjunto de entrenamiento ( Tablas 7.4 y 7.5).

Como hemos podido apreciar, las Redes de Kohonen usan como parte fundamental
de su proceso de entrenamiento y clasificación a la Distancia Euclidiana sobre el espacio
n-Dimensional. Debido a que cada uno de los vectores de pesos asociados a las clases son
precisamente vectores en  n , entonces es que podemos determinar también la Distancia
Euclidiana entre cualquier par de vectores de pesos. La idea ahora es definir un Mapa de
Falso Color  que representará la distribución de los vectores de pesos en el subespacio
[0,1] × [0,1] × ... × [0,1] . Es claro que la Distancia Euclidiana máxima entre dos vectores será

n

d max= n , mientras que la Distancia Euclidiana mínima será, obviamente, d min = 0. Toda
Distancia Euclidiana d  entre dos vectores de pesos será asociada con una intensidad G en la
escala de grises mediante:

 d  
G

= ⋅ 255 (Ecuación 7.4.14)
 d max 

De esta manera si d   = 0 entonces se tendrá asociada la intensidad correspondiente al color


negro. Por otro lado, si d  = d max = n  entonces se tendrá al color blanco.

274
Una Introducción al Cómputo Neuronal Artificial

Referencias
Libros de Texto
• Inteligencia Artificial: Sistemas Inteligentes con C#.
Nicolás Arrioja Landa Cosio.
Gradi, 2007.

• Introduction to Algorithms.
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein.
MIT Press, Segunda Edición, 2001.

• Neural Networks.
Eric Davalo y Patrick Naïm.
The Macmillan Press Ltd, 1992.

• Principles of Artificial Neural Networks.


Daniel Graupe.
Advanced Series on Circuits and Systems, Vol. 6. World Scientific, Segunda Edición,
2007.

• Elementary Linear Algebra.


Stanley I. Grossman.
Brooks Cole, Quinta Edición, 1994.

• Neural Networks: A Comprehensive Foundation.


Simon Haykin.
Prentice Hall; Segunda Edición, 1998.

• Redes Neuronales Artificiales.


José Hilera y Victor Martínez.
Editorial Alfaomega, 2000.

• Linear Algebra and Its Applications.


David C. Lay.
Addison Wesley, Tercera Edición, 2005.

• Fuzzy-Neuro Approach to Agent Applications.


Raymond S. T. Lee.
Springer-Verlag Berlin Heidelberg, 2006.

279
Una Introducción al Cómputo Neuronal Artificial

• La Mente Humana
C. Rayner
Ediciones Orbis, 1985.

• El Cuerpo Humano (Tomos I y II)


C. Rayner
Ediciones Orbis, 1985.

• Neural Computation and Self-Organizing Maps, An Introduction.


Helge Ritter, Thomas Martinetz y Klaus Schulten.
Addison-Wesley Publishing Company, 1992.

• Neural Networks: A Systematic Introduction.


Raul Rojas.
Springer-Verlag, Berlin, New-York, 1996.

• Artificial Intelligence: A Modern Approach.


Stuart Russell y Peter Norvig.
Prentice Hall Series in Artificial Intelligence, Segunda Edición, 2002.

• Calculus On Manifolds: A Modern Approach To Classical Theorems Of Advanced


Calculus.
Michael Spivak.
Westview Press, 1971.

• Calculus.
Michael Spivak.
Publish or Perish, Segunda Edición, 1980.

• Calculus.
James Stewart.
Brooks/Cole Publishing Company, Tercera Edición, 1995.

Artículos

• Automatic Segmentation and Classification of Computed Tomography Brain Images:


An Approach Using One-Dimensional Kohonen Networks.
Ricardo Pérez-Aguila.
IAENG International Journal of Computer Science, Vol. 37, Issue 1, pp. 27-35.
ISSN: 1819-9224 (online version), 1819-656X (print version).
International Association of Engineers (IAENG), February 2010.

280
Una Introducción al Cómputo Neuronal Artificial

• Brain Tissue Characterization Via Non-Supervised One-Dimensional Kohonen


Networks.
Ricardo Pérez-Aguila.
Proceedings of the XIX International Conference on Electronics, Communications and
Computers CONIELECOMP 2009, pp. 197-201.
ISBN: 978-0-7685-3587-6.
IEEE Computer Society, February, 2009.

• One-Dimensional Kohonen Networks and Their Application to Automatic


Classification of Images.
Ricardo Pérez-Aguila, Pilar Gómez-Gil y Antonio Aguilera.
Proceedings of International Seminar on Computational Intelligence 2006, pp. 95-99.
IEEE – CIS Chapter Mexico. Tijuana Institute of Technology.
October, 2006.

• Non-Supervised Classification of 2D Color Images Using Kohonen Networks and a


Novel Metric.
Ricardo Pérez-Aguila, Pilar Gómez-Gil y Antonio Aguilera.
Progress in Pattern Recognition, Image Analysis and Applications; 10th Iberoamerican
Congress on Pattern Recognition, CIARP 2005; Proceedings. Lecture Notes in
Computer Science, Vol. 3773, pp. 271-284.
ISBN: 3-540-29850-9.
Springer-Verlag Berlin Heidelberg, 2005.

281

También podría gustarte