Está en la página 1de 21

Capítulo IV

Redes Neuronales
Artificiales

_______________________________________________________________________

“Mientras los filósofos discuten si es posible la inteligencia artificial, los


investigadores la construyen”.

C. Fabretti.
Redes Neuronales Artificiales

IV.1 Clases no separables por una línea recta.

Debido a que el Perceptrón simple divide el espacio de características en dos


regiones, puede distinguir clases que son separables por una línea recta. Sin embargo, en
un enorme número de aplicaciones no es suficiente con dividir el espacio característico
en dos regiones. Un ejemplo en el cual se puede observar esta limitante del Perceptrón
simple, es intentar resolver el problema de la operación lógica XOR (OR- exclusiva).

Entradas Salidas
x1 x2 Y
0 0 0
0 1 1
1 0 1
1 1 0

Figura 23. Operación lógica XOR Izquierda: tabla de entradas y salidas de la función
lógica XOR. Derecha: mapa de características representando la salida que debe de
proveer cada par x1, x2.

En la tabla de la figura anterior podemos ver como el par de entradas 00 y 11


producen como salida un cero lógico, mientras que el resto produce un uno lógico. En el
mapa de características se muestra que una línea recta no es suficiente para separar las
clases y poder identificarlas.

Para resolver este problema, se utiliza el recurso que se tiene del Perceptrón, el
cual genera una línea recta separando en dos regiones el espacio característico, y un

53
Redes Neuronales Artificiales

segundo Perceptrón genera otra línea recta, de tal forma que entre ambas dividan el
espacio característico en tres regiones.

La salida de estos Perceptrones se utiliza como entrada para un tercer Perceptrón


ubicado en la capa de salida. Este último integra las salidas de los anteriores y provee
como respuesta un uno lógico si el vector de entrada se encuentra dentro de la región
formada por las dos líneas rectas y provee un cero lógico si el vector de entrada se
encuentra fuera.

Figura 24. Perceptrón para la operación lógica XOR.

La configuración de la figura anterior es un sistema neuronal que puede resolver


el problema de la XOR. Las neuronas 1 y 2 definen las dos líneas rectas que separan el
espacio característico en tres regiones. Y la neurona 3 toma la respuesta de las dos
anteriores y ofrece como respuesta una de dos clases, la que se encuentra dentro del
espacio de las dos líneas y la que se encuentra fuera.

54
Redes Neuronales Artificiales

IV.2 Perceptrones multicapa.

La solución a los problemas de reconocimiento de clases en un espacio


característico, las cuales no son separables por una línea recta, y aún más, problemas de
identificación multiclases son los sistemas Multineuronas o Redes Neuronales
Artificiales. Aunque existen diferentes tipos de RNA’s en base a su estructura, como las
RNA’s de Hopfield, de Hamming, los clasificadores Carpenter-Grossberg, o las RNA de
Kohonen [21], este estudio se centra en el modelo Perceptrón, debido a su simplicidad y
eficiencia en lo que a problemas de clasificación se refiere.

Una RNA consta de una arquitectura genérica en la que las neuronas están
dispuestas en forma de capas. La primera capa se denomina de entrada, posteriormente
se encuentra la capa oculta y al final una capa de salida [22].

Figura 25. Modelo genérico del Perceptrón Multicapa.

En un Perceptrón multicapa las entradas son conectadas solo a las neuronas de la


capa oculta, donde en estas últimas las funciones que definen el nivel de activación y la
salida están dadas por:
n
 n 
NAi = ∑ xi wi yi = f ( NAi ) = f  ∑ xi wi 
i =1  i =1 

55
Redes Neuronales Artificiales

Las neuronas de la última capa son de salida y proporcionan la respuesta de la


red. El nivel de activación y la salida de estas neuronas son definidas mediante:

 n 
y j = f (NAj ) = f  ∑ xij wij 
n
NA j = ∑ xij wij
j =1  j =1 

En el apartado 2.3, se especificó que el potencial eléctrico de una neurona varía


con respecto al tiempo. Por lo que la salida generada, que es una función del nivel de
activación, puede ser definida no sólo mediante una función escalón. Entre las funciones
de activación más utilizadas podemos encontrar las siguientes:

Figura 26. Funciones de activación.

56
Redes Neuronales Artificiales

Como vimos anteriormente, el aprendizaje consiste en ajustar los pesos para que
las salidas producidas por la red sean iguales o lo más parecidas posible a los valores
deseados. Esto implica que lo que se desea es minimizar el error producido por la red.
Para ello, es posible utilizar un procedimiento conocido como algoritmo de
retropropagación [23].

IV.3 Algoritmo de entrenamiento de retropropagación.

Al hablar de redes de retropropagación o redes de propagación hacia atrás


hacemos referencia a un algoritmo de aprendizaje más que a una arquitectura
determinada. Durante mucho tiempo no se dispuso de algoritmos para entrenar redes
multicapa, y como las redes de una capa estaban muy limitadas en cuanto a lo que eran
capaces de representar, el campo de las Redes Neuronales Artificiales estaba estancado.

La invención y perfeccionamiento del algoritmo de retropropagación dio un gran


impulso al desarrollo de este campo, ya que tiene un buen fundamento matemático que
ha expandido enormemente el rango de problemas donde se aplican las RNA’s, sobre
todo aquellos en los que la relación entre entradas y salidas es no lineal y los datos de
entrenamiento son abundantes.

La retropropagación consiste en propagar el error hacia atrás, es decir, de la capa


de salida hacia la capa de entrada, pasando por las capas ocultas intermedias y ajustando
los pesos de las conexiones con el fin de reducir dicho error.

En la figura 27, se observa que el error es una función de los pesos de la red, los
cuales deben ser ajustados. El proceso de ajuste de los pesos en la dirección que se
muestra en dicha figura es llamado descendencia de gradiente.

57
Redes Neuronales Artificiales

Figura 27. Descendencia de gradiente.

El error total que la red produce lo podemos medir en las neuronas de salida [20],
y está definido por:

E=
(d j − yj )
2

Para reducir el error debemos modificar los pesos que se conectan a las neuronas
de salida de la red. Pero, al modificar estos pesos, estamos obligando a que las salidas de
las neuronas de la capa oculta produzcan una respuesta distinta de la que produjeron.
Además, tomemos en cuenta que las salidas de estas neuronas ocultas dependen del
valor de los pesos que conectan las entradas de la red con estas. Por lo que, estos pesos
deben ser también modificados. Entonces, al reducir el error en las neuronas de la capa
de salida de la red debemos también reducir el error en la capa de las neuronas de
entrada. Este error que cada neurona de la capa oculta produce, lo obtendremos al
calcular la modificación de los pesos para reducir el error de la capa de salida. Por lo
tanto, el error es propagado de manera distribuida desde la capa de salida hasta la capa
de entrada. Debido a esta propagación hacia atrás del error es que este algoritmo es
llamado algoritmo de retropropagación del error o simplemente retropropagación.

58
Redes Neuronales Artificiales

A continuación se describen los pasos que integran el algoritmo de


retropropagación:

Paso 1: Inicializar los pesos.


Ajustar todos los pesos a un valor aleatorio pequeño.

Paso 2: Presentar las entradas y las salidas deseadas.


Presentar el vector de entrada x1, x2, ...xn y especificar las salidas deseadas d1,
d2,...dn.

Paso 3: Calcular la salida que genera la red.

yj (t)= f [Σwij(t)yi(t)], donde la salida es una función continua y monótonamente


creciente.

Paso 4: Ajuste de los pesos.

a) Si se trata de un peso de una sinapsis que se conecta con una neurona de la


capa de salida; actualizar el peso utilizando la siguiente expresión:

wij(t+1)= wij(t)+α(dj-yj)f ’ (NAj)yi

Donde:
wij(t+1) es el nuevo valor del peso.
wij(t) es el valor del peso actual.
dj es el valor deseado para la salida de la neurona j.
yi es el valor de la salida en la neurona j antes de actualizar el peso.
α es la tasa de aprendizaje.
f ’ (NAj ) es la derivada de la función de salida de la neurona j.

59
Redes Neuronales Artificiales

yi es el valor de salida de la neurona i de la capa anterior, de cuya


conexión se está ajustando el peso.

b) Si se trata de un peso de alguna sinapsis que se conecta a una neurona de la


capa oculta; actualizar el peso utilizando la siguiente expresión:

wij(t+1)= wi (t)+α f ’ ( NAj )xi•Σ[ (dj - yj ) • f ’ (NAj )wj ]

Donde:
wij(t+1) es el nuevo valor del peso wi .
wi (t) es el valor actual del peso wi .
α es la tasa de aprendizaje.
f ’ (NAi ) es la derivada de la función de salida de la neurona i.
xi es la entrada a la sinapsis de la neurona i.
dj es el valor deseado para la salida de cada una de las neuronas j.
yj es el valor obtenido en las neuronas j.
f ’ (NAj ) es la función de salida de las neuronas j.
wi es el valor del peso de las neuronas j.

Paso 5: volver al paso 2.

Este algoritmo ha sido probado con un gran cantidad de problemas tales como el
de la XOR [17], reconocimiento de voz [24, 25, 26] y reconocimiento de imágenes [17].
Una demostración del poder de este algoritmo fue realizada por Sejnowski [24], en la
cual entrenó un Perceptrón con 120 neuronas en la capa oculta y más de 20,000 pesos
para transformar un mapa de palabras inglesas en texto por medio de los fonemas
correspondientes.

60
Redes Neuronales Artificiales

IV.4 Diseño de una red neuronal para el problema de la XOR lógica.

En la figura 23 se puede observar que es sencillo definir los valores necesarios


para que la función discriminante de la RNA divida el espacio característico en tres
regiones. Sin embargo, el número de iteraciones a realizar con el algoritmo de
retropropagación puede significar un cálculo muy extenso. Es por ello que el diseño de
la RNA se realizó por medio de software en una computadora convencional.

En la actualidad, existen diversos programas destinados al diseño de RNA’s. Un


ejemplo de ello es el Stutgartt Neural Networks Simulator (SNNS), con el cual es
posible diseñar una RNA en forma rápida y sencilla.

El primer paso en el diseño de la red consistió en crear el archivo con los datos
de entrenamiento. Este archivo puede realizarse en cualquier editor de texto con la
extensión PAT y su estructura se muestra en la siguiente figura:

Figura 28. Archivo de entrenamiento xor.pat.

61
Redes Neuronales Artificiales

En la figura 28, se muestra que el archivo de entrenamiento consta de tres partes


fundamentales: el encabezado, las características de la red y los datos de entrada – salida
del conjunto de entrenamiento. El encabezado contiene, como se muestra en dicha
figura, el nombre del programa, la fecha y la hora en que fue realizado el archivo. Las
características indican el número de patrones que contiene el archivo, el número de
unidades de entrada y el número de unidades de salida. Por último, los datos del
conjunto de entrenamiento indican el valor de la entrada y su salida correspondiente.

La estructura de la RNA consta de un número de entradas que son indicadas


mediante vectores. De esta forma la red cuenta con las siguientes características:

Entradas: 1 en X y 2 en Y.
Capa oculta: 1 en X y dos en Y.
Salida: 1 en X y 1 en Y.

La estructura de la red que se realizó en el programa se muestra en la siguiente


figura:

Figura 29. Visualización completa de la RNA.

Una vez establecido el número y el orden de neuronas que constituyen la RNA se


cargó el archivo con el conjunto de entrenamiento para dar paso al aprendizaje de la red.

62
Redes Neuronales Artificiales

Como ya hemos visto anteriormente el algoritmo para entrenar la red es


retropropagación. Para llevar a cabo el entrenamiento fue necesario definir algunos
parámetros como la tasa de aprendizaje, el número de épocas y la forma en que se debía
presentar la información a la red, ya sea en un determinado orden o de forma aleatoria.

Estos parámetros fueron elegidos de la siguiente forma:

Tasa de entrenamiento (Learn): 0.02


Épocas (cycles): 10000
Orden: Shuffle (aleatorio).

Una de las opciones que nos ofrece el SNNS es que podemos observar durante el
entrenamiento de la red el progreso del aprendizaje. En la figura 30, se muestra que en
menos de 2500 épocas la red disminuyó el error casi a cero.

Figura 30. Gráfica del comportamiento del error para el problema de la XOR.

Al finalizar el entrenamiento, la suma del error cuadrático se redujo a 0.00341.


Esto se pudo ver numéricamente en la ventana del administrador de sesión del SNNS.

63
Redes Neuronales Artificiales

Figura 31. Suma del Error cuadrático de la RNA en la ventana del administrador de
sesión.

Para comprobar que la RNA podía resolver el problema de la XOR, se cargo un


archivo de prueba de extensión PAT, en el que los datos de entrada fueron los mismos
que en el archivo de entrenamiento, pero a diferencia de este las salidas fueron definidas
en cero. Con la misma configuración de la red y el valor final de los pesos se comprobó
que las salidas de la RNA fuesen correctas en base a las entradas.

Figura 32. Prueba de la RNA para la XOR.

Una vez realizado el entrenamiento de la red y haber comprobado que


efectivamente aprendió el comportamiento deseado, el siguiente paso consistió en
conocer cuales son los valores de los pesos para cada uno de los nodos o neuronas
artificiales y sus respectivos umbrales. Estos valores de la fuerza de unión entre las

64
Redes Neuronales Artificiales

dendritas y el soma artificial fueron proporcionados por el SNNS en forma de


coordenadas.

Figura 33. Visualización de los pesos de la RNA.

Los resultados de los pesos se muestran a continuación:

w13 = 6.103170 w24 = 4.148270


w14 = 6.111240 w35 = 8.401280
w23 = 6.111240 w45 = -9.068840

Tabla 3. Pesos de la RNA para el problema de la XOR.

Los resultados para cada uno de los umbrales de las neuronas de la red fueron los
siguientes:
θ3 = -2.63774
θ4 = -6.36146
θ5 = -3.83855

65
Redes Neuronales Artificiales

Matemáticamente se comprobaron los resultados de la red como se describió en


el apartado 3.4, calculando el nivel de activación según las entradas y los pesos y
finalmente el valor de la salida en base a la función del nivel de activación.

Nodo No. 3:
Entradas: x0(t)=1, x1(t)=0, x2(t)=0
Pesos: w0(t)= -2.63774, w13(t)= 6.103170, w14(t)= 6.111240
Nivel de Activación NA: (1)( -2.63774) +(0)( 6.103170)
+ (0)( 6.111240) =-2.63774
Salida del Perceptrón y(t)=0, ya que NA ≤ 0
Salida deseada d(t) = 0
Error (d(t)- y(t)) = 0

Nodo No.4:
Entradas: x0(t)=1, x1(t)=0, x2(t)=0
Pesos: w0(t)= -6.36146, w23(t)= 6.111240, w24(t)= 4.148270
Nivel de Activación NA: (1)( -6.36146) +(0)( 6.111240)
+ (0)( 4.148270) =-6.36146
Salida del Perceptrón y(t)=0, ya que NA ≤ 0
Salida deseada d(t) = 0
Error (d(t)- y(t)) = 0

Nodo No. 5:

Entradas: x0(t)=1, x35(t)=0, x45(t)=0


Pesos: w0(t)= -3.83855, w35(t)= 8.401280, w45(t)= -9.068840
Nivel de Activación NA: (1)( -3.83855) +(0)( 8.401280)
+ (0)( -9.068840) = -3.83855
Salida del Perceptrón y(t)=0, ya que NA ≤ 0
Salida deseada d(t) = 0

66
Redes Neuronales Artificiales

Error (d(t)- y(t)) = 0

Haciendo el cálculo respectivo para cada una de las entradas mostradas en la


tabla de la figura 23, puede comprobarse que el perceptrón multicapa distingue
perfectamente entre las dos clases.

Si sustituimos cada uno de los valores de la red en las ecuaciones que representan
el nivel de activación para cada uno de los Perceptrones es posible obtener la gráfica de
sus funciones discriminantes y al dibujarlas en un espacio característico.

Figura 34. Funciones discriminantes para el problema de la XOR.

IV.5 Diseño de una red neuronal para el problema de la XOR lógica


mediante dispositivos electrónicos.

El análisis para construir una RNA partió de la premisa siguiente: “Una red
neuronal es un arreglo de nodos o unidades procesadoras simples, las cuales
representan el cuerpo de las neuronas. Las unidades se encuentran conectadas entre si
y actúan como los axones y las dendritas. Las conexiones entrenan a las unidades

67
Redes Neuronales Artificiales

procesadoras multiplicadas por un factor, el cual es un valor analógico que representa


la fuerza de conexión o sinapsis” [27]. Esto nos lleva a pensar que al igual que en el
modelo matemático, si conectamos tres Perceptrones simples para resolver el problema
de la XOR, podemos reproducir tres neuronas artificiales construidos con amplificadores
operacionales. Tal como el que se muestra en las figuras 20 y 22 para crear una RNA.

Un aspecto muy importante en la construcción de la RNA, consistió en el ajuste


de los valores que corresponden a cada una de la sinapsis de la red. Para realizar dicho
ajuste se utilizaron resistencias variables de 10 kΩ como valor máximo, reduciendo así
el valor de las sinapsis a un 10 % de su valor original. Esta pequeña modificación no
alteró en forma alguna el comportamiento de la red y presentó la ventaja de poder
utilizar una mayor escala en los voltajes de entrada. Por lo tanto los valores de las
resistencias fueron:

Resistencia Valor Resistencia Valor Resistencia Valor


R1 10kΩ R11 10kΩ R21 10kΩ
R2 10kΩ R12 4.148kΩ R22 10kΩ
R3 6.103kΩ R13 10kΩ R23 10kΩ
R4 6.111kΩ R14 10kΩ R24 10kΩ
R5 10kΩ R15 10kΩ R25 10kΩ
R6 10kΩ R16 10kΩ R26 10kΩ
R7 10kΩ R17 10kΩ
R8 10kΩ R18 8.401kΩ
R9 10kΩ R19 10kΩ
R10 6.111kΩ R20 9.068kΩ

Tabla 4. Valores de resistencias para el perceptrón multicapa electrónico.

El diagrama simbólico y de conexión de la RNA construida mediante


amplificadores operacionales se muestra a continuación:

68
Redes Neuronales Artificiales

69
Redes Neuronales Artificiales

70
Redes Neuronales Artificiales

Los valores de los umbrales que corresponden a las figuras 35 y 36 se ajustaron


de la siguiente forma:

Umbral No. 3 = 2.63774


Umbral No. 4 = 6.36146
Umbral No. 5 = 3.83855

IV.6 Pruebas funcionales a la RNA para el problema de la XOR


lógica.

De manera similar a la etapa de pruebas de la sección 3.6, se comprobó la


funcionalidad de la RNA, introduciendo voltajes de entrada para compararlos con la
tabla de la figura 23. A continuación se muestran los resultados obtenidos:

Entradas Salida
Vi1 Vi 2 Vout
0 0 Vsat-
0 V Vsat-
V 0 Vsat-
V V Vsat+

Tabla 5. Resultados obtenidos en el Perceptrón que resuelve el problema de la XOR


lógica.

Donde:

Vi1 representa el voltaje de entrada 1.


Vi2 representa el voltaje de entrada 2.
V representa el voltaje lógico = 5 volts.

71
Redes Neuronales Artificiales

Vout representa el voltaje de salida.


+
Vsat representa el voltaje de saturación positivo del amplificador
operacional.
Vsat- representa el voltaje de saturación negativo del amplificador
operacional.

72