You are on page 1of 52

Mg.

Abraham Gamarra Moreno 165



CAPITULO CUATRO
APRENDIZAJE CON REDES NEURONALES
ARTIFICIALES
Una red neuronal artificial es, bsicamente, el resultado de los intentos por
reproducir mediante computadores el funcionamiento del cerebro humano. Su
principal aplicacin es en torno a las tareas en que los seres humanos
fcilmente superan a los computadores tradicionales, como en procesamiento
de seales, procesamiento de imgenes, procesamiento de voz, en robtica y
otros.
Nuestro cerebro est formado por miles de millones de neuronas
interconectadas entre s en forma variable y compleja. Cada neurona recibe
seales de las otras neuronas, o seales provenientes del exterior de la red,
las procesa, ponderando o dndole distinta importancia a cada una de ellas, y
genera una nica seal de salida que se transmite a las otras neuronas.
La informacin que procesa una red neuronal se encuentra dispersa entre
todas sus interconexiones, lo que la hace fundamentalmente diferente a un
computador tradicional, en que la informacin se encuentra totalmente
localizada y no distribuida como en este caso. Esta cualidad hace que las
redes neuronales posean una gran tolerancia a fallas.

4.1. FUNDAMENTOS BIOLGICOS
La figura 4.1 muestra el modelo biolgico de la neurona, elemento base de las
redes de neuronas.


166 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.1. Modelo de la Neurona Biolgica

Como se aprecia en esta figura, cada neurona en el cerebro est compuesta
bsicamente por un cuerpo, axones y dendritas. Las dendritas forman un
"cepillo filamentoso" muy fino que rodea el cuerpo de la neurona. El axn
puede considerarse como un tubo largo y fino que se subdivide en numerosas
ramas que terminan en pequeos bulbos, los cuales tienen contacto con las
dendritas de las otras clulas. La pequea separacin entre una terminacin y
una dendrita es llamada sinapsis. El axn de una neurona puede formar
conexiones sinpticas con muchas otras neuronas.
Funcionalmente, las dendritas reciben seales desde otras clulas a travs de
los puntos de conexin llamados sinapsis. La fuerza de una conexin dada es
determinada por la eficiencia de la transmisin sinptica. Desde ah las seales
son pasadas al cuerpo de la clula. Las seales que llegan de las dendritas
pueden ser excitatorias o inhibitorias, y si la suma ponderada de stas,
realizada dentro del cuerpo de la neurona, supera su "umbral de activacin"
dentro de un tiempo suficiente, la neurona se disparar, enviando un impulso
nervioso a travs de su axn.
4.2. LA NEURONA ARTIFICIAL
En la figura 4.2 se presenta el esquema tpico de la neurona artificial.
W 1j
W 2j
W nj
Zj= W ij X i
X 1
X 2
X n
Axones Sinapsis Dendritas Cuerpo de la Neurona Axn
Y j
.
:
: F ( Zj )

Figura 4.2: Modelo de la Neurona Artificial

Mg. Abraham Gamarra Moreno 167

El cuerpo de la neurona ser a menudo representada por la suma ponderada
de las entradas, Zj, seguida por una funcin lineal o no lineal, Yj = F( Zj). La
eficiencia sinptica es representada por los "pesos de interconexin", Wij. La
funcin F(Zj) es llamada "funcin de activacin", que usa los valores de
entrada para determinar la actividad de la neurona. El modelo de la neurona es
llamado neurona de McCulloch-Pitts .
4.2.1. PESOS DE INTERCONEXIN
Los pesos de interconexin, representan la fuerza de interconexin entre las
neuronas, y pueden ser positivos (excitatorios) o negativos (inhibitorios);
adems pueden ser fijos o adaptables. Las redes con pesos adaptables usan
leyes de aprendizaje para ajustar los valores de la fuerza de interconexin. Si
la red neuronal usa pesos fijos las tareas a ser ejecutadas deben estar bien
definidas a priori.
4.2.2. FUNCIONES DE ACTIVACIN
Existen distintos tipos de redes neuronales que usan diferentes funciones de
activacin, F(Z), pero la estructura interna de la neurona , es decir la suma
ponderada seguida por la funcin F(Z), es comn en la mayora de las redes.
Entre las funciones de activacin ms usadas y conocidas se encuentran las
que se muestran en la figura 4.3.


Figura 4.3. Funciones de Activacin


168 Tpicos y Aplicaciones de la Inteligencia Artificial

4.3. REDES DE NEURONAS
Una red de neuronas consiste en varios de estos elementos (neuronas)
trabajando juntos. Usualmente estos elementos se organizan en grupos
conocidos con el nombre de capas. Una red tpica consiste en una sucesin de
capas conectadas entre ellas en forma total o aleatoria. Estas redes poseen
dos capas que tienen contacto con el exterior, que son la capa de entrada y la
de salida. Las capas que no se conectan con el exterior reciben el nombre de
capas ocultas. La figura 4.4 presenta el esquema tpico de una red de
neuronas.
4.3.1. REDES MONOCAPA (1 CAPA)
En las redes monocapa, como la red de HOPFIELD y la red BRAIN-STATE-IN-
A-BOX, se establecen conexiones laterales entre las neuronas que pertenecen
a-la nica capa que constituye la red. Tambin pueden existir conexiones
autorrecurrentes (salida de una neurona conectada a su propia entrada),
aunque en algn modelo, como el de HOPFIELD, esta recurrencia no se
utiliza.


:
:
:
:
:
:
Capa de entrada Capa escondida Capa de salida

Figura 4.4 Esquema tpico de una red de neuronas

Una topologa equivalente a la de las redes de 1 capa es la denominada
topologa crossbar (barras cruzadas). Una red de este tipo (por ejemplo, la red
LEARNING MATRIX) consiste en una matriz de terminales (de entrada y
salida) o barras que se cruzan en unos puntos a los que se les asocia un peso.
Esta representacin crossbar suele utilizarse como etapa de transicin cuando
se pretende implementar fsicamente una red monocapa, puesto que es
relativamente sencillo desarrollar como hardware una estructura como la
indicada (por ejemplo, las barras cruzadas seran cables, y los puntos de
conexin, resistencias cuyos valores representaran los pesos de la red).
Mg. Abraham Gamarra Moreno 169

Finalmente, hay que indicar que las redes monocapa se utilizan tpicamente en
tareas relacionadas con lo que se conoce como autoasociacin; por ejemplo,
para regenerar informaciones de entrada que se presentan a la red incompleta
o distorsionada.
En la tabla 4.1 se muestran las caractersticas topolgicas de los modelos de
redes monocapa ms conocidos.
Tabla 4.1. modelos de redes monocapa ms conocidos.
TIPOS DE CONEXIONES MODELO DE RED
BRAIN-STATE-IN-A-BOX
ADDITIVE GROSSBERG (AG)
SHUNTING GROSSBERG (SG)
CONEXIONES
AUTORRE-
CURRENTES
OPTIMAL LINEAR ASOCIATIVE
MEMORY
HOPFIELD
BOLTZMANN MACHINE
CONEXIONES
LATERALES
EXPLCITAS
NO AUTO-
RECURRENTES
CAUCHY MACHINE
CROSSBAR LEARNING MATRIX (LM)


La figura 4.5 muestra el modelo de red neuronal de Hopfield.


Figura 4.5 Red de Hopfield

4.3.2. REDES NEURONALES MULTICAPAS
En el caso de las redes multicapas, sus unidades se clasifican en tres tipos:

170 Tpicos y Aplicaciones de la Inteligencia Artificial

Unidades de entrada: al igual que el caso de la red de una sola capa, estas
unidades son las que reciben el patrn de entrada directamente.
Unidades ocultas o escondidas: estas no reciben entradas directamente y
no poseen realimentacin directa. Ellas permiten tener una representacin
interna del patrn en cuestin.
Unidades de salida: estas son las que entregan el resultado de la red.
Las redes multicapa son aquellas que disponen de conjuntos de neuronas
agrupadas en varios (2, 3, etc.) niveles o capas. En estos casos, una forma
para distinguir la capa a la que pertenece una neurona, consistira en fijarse en
el origen de las seales que recibe a la entrada y, el destino de la seal de
salida. Normalmente, todas las neuronas de una capa reciben seales de
entrada de otra capa anterior, ms cercana a la entrada de la red, y envan las
seales de salida a una capa posterior, ms cercana a la salida de la red. A
estas conexiones se les denomina conexiones hacia adelante o feedforward
(Fig. 4.7).
Sin embargo, en un gran nmero de estas redes tambin existe la posibilidad
de conectar las salidas de las neuronas de capa posteriores a las entradas de
las capas anteriores, a estas conexiones se les denomina conexiones hacia
atrs o feedback (Fig. 4.6).


Figura 4.6. Red feedback

Un modelo de red neuronal multicapa es el Perceptron multinivel o
multicapa (Figura 4.7), el cual es una red de tipo feedforward compuesta de
varias capas de neuronas entre la entrada y la salida de la misma.
Las capacidades del Perceptron con dos tres y cuatro niveles o capas y con
una nica neurona en el nivel de salida, se muestra en la figura 4.8.

Mg. Abraham Gamarra Moreno 171



Figura 4.7 Perceptron multinivel (red feedforward multicapa)


Figura 4.8 Distintas formas de las regiones generadas por un perceptron multinivel

En la segunda columna se muestra el tipo de regin de decisin que se puede
formar con cada una de las configuraciones. En la siguiente columna se indica
el tipo de regin de decisin que se formara para el problema de la XOR. En
las dos ltimas columnas se muestran las regiones formadas para resolver el

172 Tpicos y Aplicaciones de la Inteligencia Artificial

problema de clases con regiones mezcladas y las formas de regiones ms
generales para cada uno de los casos.
El Perceptron bsico de dos capas (la de entrada con neuronas lineales y la de
salida) slo puede establecer dos regiones separadas por una frontera lineal
en el espacio de patrones de entrada.
Un Perceptron con tres niveles de neuronas puede formar cualquier regin
convexa en este espacio. La regin de decisin resultante ser regiones
convexas con un nmero de lados a lo sumo igual al nmero de neuronas de la
segunda capa.
Un Perceptron con cuatro capas puede formar regiones de decisin
arbitrariamente complejas. El proceso de separacin en clases que se lleva a
cabo consiste en la particin de la regin deseada en pequeos hipercubos
(cuadrados para dos entradas de la red).
El anlisis anterior demuestra que no se requieren ms de cuatro capas en una
red de tipo Perceptron, pues, como se ha visto una red con cuatro niveles,
puede generar regiones de decisin arbitrariamente complejas.
El Perceptron es de inters histrico, dado que ha abierto el camino para el
desarrollo de otras redes neuronales, entre ellos el BackPropagation, que se
analizar ms adelante.
4.4. OPERACIN DE UNA RED NEURONAL
Las redes neuronales operan en dos fases: aprendizaje y evocacin o
recuerdo.
El aprendizaje es el proceso en el cual se adaptan o modifican los pesos de las
conexiones en respuesta a un estmulo que ha sido presentado en sus
entradas y opcionalmente a su salida. El estmulo presentado a la salida
corresponde a la salida deseada para una determinada entrada; esta salida
deseada debe ser entregada por un "instructor". En tal caso se habla de un
aprendizaje supervisado o entrenamiento supervisado.
La evocacin o recuerdo se refiere a cmo la red procesa los estmulos
presentados en sus entradas y genera una respuesta en su salida. A menudo
la evocacin o recuerdo es una parte del aprendizaje; esto sucede cuando la
salida deseada debe ser comparada con la salida actual de la red para originar
la seal de error.
4.5. ENTRENAMIENTO DE UNA RED NEURONAL
El entrenamiento de una red es todo el proceso de aprendizaje que realiza una
red neuronal. Su objetivo es lograr que la aplicacin de un conjunto de
entradas produzca el conjunto de salidas deseadas (o uno al menos
consistente).
Mg. Abraham Gamarra Moreno 173

Dicho entrenamiento se realiza aplicando secuencialmente vectores de
entrada (patrones de entrenamiento), a la vez que se ajustan los pesos de la
red de acuerdo a un procedimiento predeterminado (cada modelo define su
procedimiento), los cuales convergen gradualmente a valores tales que cada
vector de entrada produce el vector de salida deseado.
En cuanto a los tipos de aprendizaje, existen dos tipos: el aprendizaje
supervisado y el no supervisado.
4.5.1. ENTRENAMIENTO SUPERVISADO
Se selecciona un nmero suficientemente grande de vectores de entrada con
sus correspondientes vectores de salida. Cada vector de entrada se aplica a la
red calculndose la salida, la que posteriormente se compara con la salida
deseada, determinando el error. Dicho error es realimentado a travs de la red,
modificando los pesos de acuerdo a un algoritmo que lo minimice. Los vectores
del conjunto de entrenamiento se aplican secuencialmente, calculando los
errores y modificando los pesos hasta que el error del conjunto total de
entrenamiento converja a un nivel aceptable.
A continuacin se muestra como se realiza el entrenamiento de una red
neuronal multicapa:
Lo primero que necesitamos son patrones de entrenamiento (cada fila de
la tabla) que contengan el conocimiento de algn dominio en particular.
Para nuestro ejemplo (Tabla 4.2) tenemos patrones que permiten
identificar si un animal es un mamfero (1) o un ave (0).
Ahora necesitamos una red neuronal que permita tomar los patrones de
entrada y de salida para el entrenamiento, tal como se muestra en la figura
4.9.
Los 6 primeros patrones (patrones de entrada) debe suministrar a las neuronas
que estn en la parte superior (neuronas de entrada) y la ltima columna se
debe suministrarse como salida deseada.
Se puede elaborar un programa que permita entrenar la red neuronal y luego
de este entrenamiento, se debe probar si el aprendizaje fue correcto o no.
Para el primer patrn de entrenamiento, la prueba consiste en ingresar el
patrn de entrada (6 primeras columnas) y esperar que se tenga la salida
deseada dada en el entrenamiento (ltima columna que debe ser igual o
cercano a 1), vea la figura 4.10.
Para esta ejecucin se tiene que el valor devuelto por la red neuronal es muy
cercano a 1, tal como se dio en el entrenamiento (la red neuronal aprendi).


174 Tpicos y Aplicaciones de la Inteligencia Artificial

Tabla 4.2 Patrones de entrenamiento que permiten identificar si un animal es un mamfero (1) o un
ave (0)
1 1 0 0 0 1 0
0 0 1 1 1 0 0
0
1
0
0
Nada?
0 1 1 0 0 0
0 1 1 1 0 0
1 0 0 1 1 0
1 0 0 0 1 1
Tiene
plumas?
Pone
huevos?
Vuela? Toma
leche?
Tiene
pelo?
Salida
(1=
Mamifer
o
0=Ave)
Entradas
Entrenamiento de una red neuronal


Entrenamiento de una red
neuronal:
Tiene
Pelo?
Toma
leche?
Vuela?
Pone
Huevos?
Tiene
Plumas?
Nada?
Salida

Figura 4.9 Red neuronal que permite tomar los patrones de la tabla 4.2.

Mg. Abraham Gamarra Moreno 175

Al ejecutar un programa que use el aprendizaje de esta red neuronal, con el
ltimo patrn de entrenamiento, se tiene que la salida tambin es correcta
(figura 4.11).

Figura 4.10 Resultado que muestra un programa que contiene a la red neuronal entrenada de la
figura 4.9.


Figura 4.11 Resultados que muestra otra ejecucin del programa que contiene a la red neuronal
entrenada de la figura 4.9.

Para salidas binarias (0 1), si la salida deseada es 1, un valor aceptable ser
cuando la salida sea mayor que 0.9 (salida>0.9); de la misma manera si la
salida deseada es 0, un valor aceptable ser cuando la salida sea menor que
0.1 (salida<0.1).
Lo que debemos probar ahora es la capacidad de generalizacin de la red
neuronal. Para realizar esta prueba, suministramos a la red neuronal, slo la
caracterstica toma leche y la red neuronal generaliza e identifica a este como
un mamfero (valor cercano o igual a 1). Debemos notar que estas entradas no
han sido dadas en el entrenamiento, por lo que la respuesta que se obtiene, es
por generalizacin, vea la figura 4.12.

176 Tpicos y Aplicaciones de la Inteligencia Artificial



Figura 4.12 Resultados que muestra la genearlizacin del programa que contiene a la red neuronal
entrenada de la figura 4.9.

4.5.2. ENTRENAMIENTO NO SUPERVISADO
El aprendizaje no supervisado ocurre cuando la red es provista slo de los
valores de entrada, y la red ajusta la fuerza de interconexin basada solamente
en los valores de la entrada y la salida de la red en progresin. En otras
palabras, el proceso de entrenamiento extrae las propiedades estadsticas del
conjunto de entrenamiento y agrupa vectores familiares en clases. Puesto que
no es posible determinar el patrn de salida especfico generado por una clase
de vectores en forma previa al entrenamiento, se requiere transformar la salida
generada por la red a una forma que sea comprensible. Este tipo de
entrenamiento fue desarrollado por Kohonen (1984) y otros en lo que se
conoce con el nombre de la teora de la "autoorganizacin".
4.6. TIPOS DE REDES NEURONALES MS IMPORTANTES
La tabla 4.3 muestra el resumen de los tipos de redes ms conocidos,
comentando esquemticamente las aplicaciones ms importantes de cada
una, sus ventajas e inconvenientes y quin o quines fueron sus creadores y
en qu ao.



Mg. Abraham Gamarra Moreno 177



Tabla 4.3. Tipos de redes ms conocidos.
6

Nombre de la
red
Ao Aplicaciones
ms
importantes
Comentarios Limitaciones Inventada/
Desarrollada
por
Avalancha 1967
Reconocimi
ento de habla
continua.
Control
brazos robot.
Ninguna red
sencilla
puede hacer
todo esto.
No es fcil
alterar la
velocidad o
interpolar el
movimiento.
Stephen
Grossberg.
Teora
resonancia
adaptativa
(ART)
1986 Reconocimiento
de patrones
(radar,
Sonar, etc.).
Sofisticada
.
Poco
utilizada.
Sensible a la
translacin,
distorsin y
escala.
Gail
Carpenter,
Stephen
Gressberg.
ADALINE /
MADALINE
1960
Filtrado
de seales.
Ecualizado
r adaptativo.
Modems.
Rpida,
fcil de
implementar
con
circuitos
analgicos
o VLSI.
Slo es
posible
clasificar
espacios
linealmente
separados.
Bernand
Widrow.
Back
propagation
1974-
85
Sntesis
de voz desde
texto.
Control de
robots.
Prediccin
.
Reconocimi
ento de
patrones.
Red ms
popular.
Numerosas
aplicacione
s con
xito.
Facilidad
de
aprendizaje
. Potente.
Necesita
mucho tiempo
para el
aprendizaje y
muchos ejem-
plos.
Paul Werbos,
David
Parker,
David
Rumelhart.

6
Hilera J, Martinez V. Redes Neuronales Artificiales: Fundamentos, modelos y
Aplicaciones. Espaa: Editorial RA-MA; 1995.

178 Tpicos y Aplicaciones de la Inteligencia Artificial



Tabla 4.3. Tipos de redes ms conocidos (continuacin)
Nombre de la
red
Ao Aplicaciones
ms
importantes
Comentarios Limitaciones Inventada/
Desarrollad
a por
Memoria
asociativa
bidireccional
1985 Memoria
heteroasociat
iva de acceso
por
contenido.
Aprendiza.j
e y
arquitectur
a simples.
Baja
capacidad de
almacenamient
o. Los datos
deben ser
codificados.
Bart Kosko.
Mquinas de
Boltzmann y
Cauchy
1985-
86
Reconocimi
ento de
patrones
(imgenes,
sonar y
radar).
Optimizaci
n.
Redes
simples.
Capacidad
de
representac
in ptima
de
patrones.
La mquina de
Boltzmann
necesita un
tiempo muy
largo de
aprendizaje.
Jeffrey
Hinton,
Terry Se-
jnowski,
Harold Szu.
Brain-Estate-in-a-
Box.

1977

Extraccin de
conocimiento
de bases de
datos
Posiblement
e mejor
realizacin
que las
redes de
Hopfield.
Realizacin y
potenciales
aplicaciones
no estudiadas
totalmente.
James
Anderson
Mg. Abraham Gamarra Moreno 179



Tabla 4.3. Tipos de redes ms conocidos (continuacin)

Nombre de la
red
Ao Aplicaciones
ms
importantes
Comentarios Limitaciones Inventada/
Desarrollad
a por
Cerebellatron 1969 Control del
movimiento de
los brazos de
un robot.
Semejante a
Avalancha.
Requiere
complicadas
entradas de
control.
David Marr,
James Al-
bus,
Andres
Pellionez.
Counter-
propagation
1986 Comprensin
de imgenes.
Combinacin
de
Perceptron
y TPM.
Numerosas
neuronas y
conexiones.
Robert
Hecht-
Nielsen
Hopfield 1982 Reconstrucci
n de patrones
y
optimizacin.
Puede
implementar
se en VLSI.
Fcil de
conceptuali
zar
Capacidad y
estabilidad.
John
Hopfield
Neocognitron 1978-
84
Reconocimient
o de
caracteres
manuscritos
Insensible
a la
Translacin
, rotacin
y escala.
Requiere
muchos
elementos de
proceso,
niveles y
conexiones.
K.
Fukushima
Perceptron 1957 Reconocimient
o de
caracteres
impresos
La red ms
antigua.
Construida
en HW.
No puede
reconocer
caracteres
complejos.
Frank
Rosenblatt

180 Tpicos y Aplicaciones de la Inteligencia Artificial

Tabla 4.3. Tipos de redes ms conocidos (continuacin)
Nombre de la
red
Ao Aplicaciones
ms
importantes
Comentarios Limitaciones Inventada/
Desarrollad
a por
Self-
Organizing-Map
(SOM).
Topology-
Preserving-
Map (TPM).
1980-
84
Reconocimient
o de
patrones,
codificacin
de datos,
optimizacin.
Realiza
mapas de
caracterst
icas
comunes de
los
datos
aprendidos.
Requiere
mucho
entrenamiento
.
Teuvo
Kohonen

4.7. APLICACIONES DE LAS REDES NEURONALES
Las redes neuronales son una tecnologa computacional emergente que puede
utilizarse en un gran nmero y variedad de aplicaciones, tanto comerciales
como militares. Se pueden desarrollar redes neuronales en un perodo de
tiempo razonable y pueden realizar tareas concretas mejor que otras
tecnologas convencionales, incluyendo los sistemas expertos. Cuando se
implementan mediante hardware (redes neuronales en chips VLSI), presentan
una alta tolerancia a fallos del sistema y proporcionan un grado de paralelismo
en el proceso de datos muy grande. Eso har posible insertar redes
neuronales de bajo coste en sistemas existentes y recientemente
desarrollados.
Hay muchos tipos diferentes de redes neuronales, cada uno de los cuales tiene
una aplicacin particular ms apropiada. Relacionamos ejemplos de algunas
aplicaciones comerciales separndolas en grupos segn las distintas
disciplinas:
Biologa
Aprender ms acerca del cerebro y otros sistemas.
Obtencin de modelos de la retina.
Empresa
Evaluacin de probabilidad de formaciones geolgicas y petrolferas.
Identificacin de candidatos para posiciones especficas.
Explotacin de bases de datos.
Optimizacin de plazas y horarios en lneas de vuelo.
Reconocimiento de caracteres escritos.

Mg. Abraham Gamarra Moreno 181

Medio ambiente
Analizar tendencias y patrones.
Previsin del tiempo.
Finanzas
Previsin de la evolucin de los precios.
Valoracin del riesgo de los crditos.
Identificacin de falsificaciones.
Interpretacin de firmas.
Manufacturacin
Robots automatizados Y sistemas de control (visin artificial y sensores
de presin, temperatura, gas, etc.)
Control de produccin en lneas de proceso.
Inspecci6n de la calidad.
Medicina
Analizadores del habla para la ayuda de audicin de sordos profundos.
Diagnstico y tratamiento a partir de sntomas y/o de datos analticos
(electrocardiograma, encefalograma, anlisis sanguneo, etc.).
Monitorizacin en ciruga.
Prediccin de reacciones adversas a los medicamentos.
Lectores de rayos X.
Entendimiento de la causa de los ataques epilpticos.
Militares
Clasificacin de las seales de radar.
Creacin de armas inteligentes.
Optimizacin del uso de recursos escasos.
Reconocimiento y seguimiento en el tiro al blanco.


182 Tpicos y Aplicaciones de la Inteligencia Artificial

Podemos buscar hechos comunes en esta lista de aplicaciones; la mayora de
ellas consisten en realizar un reconocimiento de patrones: buscar un patrn en
una serie de ejemplos, clasificar patrones, completar una seal a partir de
valores parciales o reconstruir el patrn correcto partiendo de uno
distorsionado. Muchos de los ejemplos tienen que trabajar con datos
sensoriales y de percepcin (seales visuales, auditivas y otras) y, otros
realizan filtrado o mapeo de seales de entrada. En general, los ejemplos
mostrados indican que son caractersticos ms de las personas que de los
ordenadores convencionales.
4.8. LA RED BACKPROPAGATION
6

En 1986, Rumelhart, Hinton y Williams, basndose en los trabajos de otros
investigadores formalizaron un mtodo para que una red neuronal aprendiera
la asociacin que existe entre los patrones de entrada a la misma y las clases
correspondientes, utilizando ms niveles de neuronas que los que utiliz
Rosenblatt para desarrollar el Perceptron. Este mtodo, conocido en general
como backpropagation (propagacin del error hacia atrs), est basado en la
generalizacin de la regla delta y, a pesar de sus propias limitaciones, ha
ampliado de forma considerable el rango de aplicaciones de las redes
neuronales.
El algoritmo de propagacin hacia atrs. o retropropagacin, es una regla de
aprendizaje que se puede aplicar en modelos de redes con ms de dos capas
de clulas. Una caracterstica importante de este algoritmo es la
representacin interna del conocimiento que es capaz de organizar en la capa
intermedia de las clulas para conseguir cualquier correspondencia entre la
entrada y la salida de la red. Ya se ha mostrado en este captulo que en
muchos casos, como la resolucin del problema de la OR exclusiva, es
imposible encontrar los pesos adecuados para establecer la correspondencia
entre la entrada y la salida mediante una red sin capas intermedias. Con una
capa de neuronas ocultas, s es posible establecer dicha correspondencia.
De forma simplificada, el funcionamiento de una red backpropagation
(backpropagation net, BPN) consiste en un aprendizaje de un conjunto
predefinido de pares de entradas-salidas dados como ejemplo, empleando un
ciclo propagacin-adaptacin de dos fases: primero se aplica un patrn de
entrada como estmulo para la primera capa de las neuronas de la red, se va
propagando a travs de todas las capas superiores hasta generar una salida,
se compara el resultado obtenido en las neuronas de salida con la salida que
se desea obtener y se calcula un valor del error para cada neurona de salida.
A continuacin, estos errores se transmiten hacia atrs, partiendo de la capa
de salida, hacia todas las neuronas de la capa intermedia que contribuyan
directamente a la salida, recibiendo el porcentaje de error aproximado a la
participacin de la neurona intermedia en la salida original. Este proceso se
repite, capa por capa, hasta que todas las neuronas de la red hayan recibido
un error que describa su aportacin relativa al error total. Basndose en el
valor del error recibido, se reajustan los pesos de conexin de cada neurona.
de manera que en la siguiente vez que se presente el mismo patrn, la salida
est ms cercana a la deseada; es decir, el error disminuya.
Mg. Abraham Gamarra Moreno 183

La importancia de la red backpropagation consiste en su capacidad de
autoadaptar los pesos de las neuronas de las capas intermedias para aprender
la relacin que existe entre un conjunto de patrones dados como ejemplo y sus
salidas correspondientes. Para poder aplicar esa misma relacin, despus del
entrenamiento, a nuevos vectores de entrada con ruido o incompletas, dando
una salida activa si la nueva entrada es parecida a las presentadas durante el
aprendizaje. Esta caracterstica importante, que se exige a los sistemas de
aprendizaje, es la capacidad de generalizacin, entendida como la facilidad de
dar salidas satisfactorias a entradas que el sistema no ha visto nunca en su
fase de entrenamiento. La red debe encontrar una representacin interna que
le permita generar las salidas deseadas cuando se le dan las entradas de
entrenamiento, y que pueda aplicar, adems, a entradas no presentadas
durante la etapa de aprendizaje para clasificarlas segn las caractersticas que
compartan con los ejemplos de entrenamiento.
4.8.1. LA REGLA DELTA GENERALIZADA
La regla propuesta por Widrow en 1960 (regla delta) ha sido extendida a redes
con capas intermedias (regla delta generalizada) con conexiones hacia
adelante (feedforward) y cuyas clulas tienen funciones de activacin
continuas (lineales o sigmoidales), dando lugar al algoritmo de
retropropagacin (backpropagation). Estas funciones continuas son no
decrecientes y derivables. La funcin sigmoidal pertenece a este tipo de
funciones, a diferencia de la funcin escaln que se utiliza en el Perceptron, ya
que esta ltima no es derivable en el punto en el que se encuentra la
discontinuidad.
Este algoritmo utiliza tambin una funcin o superficie de error asociada a la
red, buscando el estado estable de mnima energa o de mnimo error a travs
del camino descendente de la superficie del error. Por ello, realimenta el error
del sistema para realizar la modificacin de los pesos en un valor proporcional
al gradiente decreciente de dicha funcin de error.
FUNCIONAMIENTO DEL ALGORITMO
El mtodo que sigue la regla delta generalizada para ajustar los pesos es
exactamente el mismo que el de la regla delta utilizada en el Perceptron y,
ADALINE; es decir, los pesos se actualizan de forma proporcional a la delta, o
diferencia entre la salida deseada y la obtenida ( = sal. deseada - sal.
obtenida).
Dada una neurona (unidad U
i
) y la salida que produce, y
i
(Figura 4.13), el
cambio que se produce en el peso de la conexin que une la salida de dicha
neurona con la unidad U
j
(w
ji
) para un patrn de aprendizaje p determinado es:
( )
pi pj ji
y t w = + 1


184 Tpicos y Aplicaciones de la Inteligencia Artificial

En donde el subndice p se refiere al patron de aprendizaje concreto, y es la
constante o tasa de aprendizaje.


Figura 4.13 Conexin entre una neurona de una capa oculta con una neurona de salida.

El punto en el que difieren la regla delta Generalizada de la regla delta es en el
valor concreto de
pj
. Por otro lado, en las redes multinivel, a diferencia de las
redes sin neuronas ocultas, en principio no se puede conocer la salida
deseada de las neuronas de las capas ocultas para poder determinar los pesos
en funcin del error cometido. Sin embargo, inicialmente s podemos conocer
la salida deseada de las neuronas de salida. Segn esto, si consideramos la
unidad U
j
de salida (Figura 4.13), entonces definimos
( ) ( )
j pj pj pj
net f y d
1
=

donde d
pj
es la salida deseada de la neurona j para el patrn p y net
j
es la
entrada neta que recibe la neurona j.
Esta frmula es como la de la regla delta, excepto en lo que se refiere a la
derivada de la funcin de transferencia. Este trmino representa la
modificacin que hay que realizar en la entrada que recibe la neurona j. En el
caso de que dicha neurona no sea de salida, el error que se produce estar en
funcin del error que se cometa en las neuronas que reciban como entrada la
salida de dicha neurona. Esto es lo que se denomina procedimiento de
propagacin del error hacia atrs.
Segn esto, en el caso de que U
j
no sea una neurona de salida (ver Figura
4.14), el error que se produce est en funcin del error que se comete en las
neuronas que reciben como entrada la salida de Uj:
Mg. Abraham Gamarra Moreno 185

( )
j kj
k
pk pj
net f w
1
|

\
|
=


donde el rango de k cubre todas aquellas neuronas a las que est conectada la
salida de U
j.
De esta forma, el error que se produce en una neurona oculta es
la suma de los errores que se producen en las neuronas a las que est
conectada la salida de sta, multiplicando cada uno de ellos por el peso de la
conexin.


Figura 4.14 Conexiones entre neuronas de la capa oculta con la capa de salida.
ADICIN DE UN MOMENTO EN LA REGLA DELTA GENERALIZADA
El mtodo de retropropagacin del error, tambin conocido como del gradiente
descendente, requiere un importante nmero de clculos para lograr el ajuste
de los pesos de la red. En la implementacin del algoritmo, se toma una
amplitud de paso que viene dada por la tasa de aprendizaje . A mayor tasa
de aprendizaje, mayor es la modificacin de los pesos en cada iteracin, con lo
que el aprendizaje ser ms rpido, pero, por otro lado. puede dar lugar a
oscilaciones. Rumelhart, Hinton y Williams sugirieron que para filtrar estas
oscilaciones se aada en la expresin del incremento de los pesos un trmino
(momento), , de manera que dicha expresin quede:


186 Tpicos y Aplicaciones de la Inteligencia Artificial

( ) ( ) ( ) ( ) ( ) = + + = + 1 1 t w t w y t w t w
ji ji pi pj ji ji


( ) ( ) t w y t w
ji pi pj ji
+ = + = 1

donde es una constante (momento) que determnale efecto en t+1 del
cambio de los pesos en el instante t.
Con este momento se consigue la convergencia de la red en menor nmero de
iteraciones, ya que si en t el incremento de un peso era positivo y en t+l
tambin, entonces el descenso por la superficie de error en t+l es mayor. Sin
embargo, si en t el incremento era positivo y en t+l es negativo, el paso que se
da en t+1 es ms pequeo, lo cual es adecuado, ya que eso significa que se
ha pasado por un mnimo y que los pasos deben ser menores para poder
alcanzarlo.
Resumiendo, el algoritmo backpropagation queda finalmente:
( ) ( ) ( ) [ ] 1 1 + + = + t w t w t w
ji ji ji

( ) ( ) ( )
(

+ + = + t w y t w t w
ji pi pj ji ji
1

donde:
( ) ( )
j pj pj pj
net f y d
1
=

si U
j
es una neurona de salida y
( )
j kj
k
pk pj
net f w
1
|

\
|
=


si U
j
no es una neurona de salida.
ESTRUCTURA Y APRENDIZAJE DE LA RED BACKPROPAGATION
En una red backpropagation existe una capa de entrada con n neuronas y una
capa de salida con m neuronas y al menos una capa oculta de neuronas
internas. Cada neurona de una capa (excepto las de entrada) recibe entradas
de todas las neuronas de la capa anterior y enva su salida a todas las
Mg. Abraham Gamarra Moreno 187

neuronas de la capa posterior (excepto las de salida). No hay conexiones hacia
atrs feedback ni laterales entre neuronas de la misma capa.
La aplicacin del algoritmo backpropagation tiene dos fases, una hacia
adelante y otra hacia atrs. Durante la primera fase el patrn de entrada es
presentado a la red y propagado a travs de las capas hasta llegar a la capa
de salida. Obtenidos los valores de salida de la red, se inicia la segunda fase,
comparndose estos valores con la salida esperada para obtener el error. Se
ajustan los pesos de la ltima capa proporcionalmente al error. Se pasa a la
capa anterior con una retropropagacin del error (backpropagation), ajustando
convenientemente los pesos y continuando con este proceso hasta llegar a la
primera capa. De esta manera se han modificado los pesos de las conexiones
de la red para cada ejemplo o patrn de aprendizaje del problema, del que
conocamos su valor de entrada y la salida deseada que debera generar la red
ante dicho patrn (fig. 4.15).
A diferencia de la regla delta en el caso del Perceptron, la tcnica
backpropagation o generalizacin de la regla delta, requiere el uso de
neuronas cuya funcin de activacin sea continua, y por tanto, diferenciable.
Generalmente, la funcin utilizada ser del tipo sigmoidal (Fig. 4.16).
A continuacin se presentan, a modo de sntesis. los pasos y frmulas a utilizar
para aplicar el algoritmo de entrenamiento:
Paso 1
Inicializar los pesos de la red con valores pequeos aleatorios.
Paso 2
Presentar un patrn de entrada, Xp: xp1,.xp2,...,xpn, y especificar la salida
deseada que debe generar la red: d1, d2,..., dM (si la red se utiliza como un
clasificador, todas las salidas deseadas sern cero, salvo una, que ser la de
la clase a la que pertenece el patrn de entrada).
Paso 3
Calcular la salida actual de la red, para ello presentamos las entradas a la red
y vamos calculando la salida que presenta capa hasta llegar a la capa de
salida sta ser la salida de la red y1, y2,...,yM. Los pasos son los siguientes:
Se calculan las entradas netas para las neuronas ocultas procedentes de
las neuronas de entrada.
Para una neurona j oculta:

=
+ =
N
i
h
j pi
h
ji
h
pj
x w net
1



188 Tpicos y Aplicaciones de la Inteligencia Artificial

en donde el ndice h se refiere a magnitudes de la capa oculta (hidden); el
subndice p, al p-simo vector de entrenamiento, y j a la j-sima neurona
oculta. El trmino puede ser opcional, pues acta como una entrada
ms.


Figura 4.15 Modelo de arquitectura de una red backpropagation. Pueden existir neuronas ficticias
de salida y pesos umbral de entrada al resto de las neuronas de cada capa.

Mg. Abraham Gamarra Moreno 189


Figura 4.16 Funcin de activacin sigmoidal: y=1/1+e
-x


Se calculan las salidas de las neuronas ocultas:
( )
h
pj
h
j pj
net f y =

Se realizan los mismos clculos para obtener las salidas de las neuronas
de salida (capa o: output)

=
+ =
L
j
o
k pj
o
kj
o
pk
y w net
1



( )
o
pk
o
k pk
net f y =



Paso 4
Calcular los trminos de error para todas las neuronas.
Si la neurona k es una neurona de la capa de salida, el valor de la delta es:

190 Tpicos y Aplicaciones de la Inteligencia Artificial

( ) ( )
o
pk
o
k pk pk
o
pk
net f y d
1
=


La funcin f, como se cit anteriormente, debe cumplir el requisito de ser
derivable, lo que implica la imposibilidad de utilizar una funcin escaln. En
general, disponemos de dos formas de funcin de salida que nos pueden
servir: la funcin lineal de salida (f
k
(net
jk
) = net
jk
) y la funcin sigmoidal
representada en la figura 4.16 y definida por la expresin:
( )
jk
net
jk k
e
net f

+
=
1
1


La seleccin de la funcin de salida depende de la forma en que se decida
representar los datos de salida: si se desea que las neuronas de salida sean
binarias, se utiliza la funcin sigmoidal, puesto que esta funcin es casi
biestable y, adems, derivable. En otros casos es tan aplicable una funcin
como otra.
Para la funcin lineal, tenemos:
1
1
=
o
k
f
mientras que la derivada de una
funcin f sigmoidal es:
( ) ( )
pk pk
o
k
o
k
o
k
y y f f f = = 1 1
1

por lo que los trminos de error para las neuronas de salida quedan:
( )
pk pk
o
pk
y d =

para la salida lineal, y
( ) ( )
pk pk pk pk
o
pk
y y y d = 1


para la salida sigmoidal.
Si la neurona j no es de salida, entonces la derivada parcial del error no puede
ser evaluada directamente. Por tanto, se obtiene el desarrollo a partir de
valores que son conocidos y otros que pueden ser evaluados.
La expresin obtenida en este caso es:
Mg. Abraham Gamarra Moreno 191

( )
o
kj
k
o
pk
h
pj
h
j
h
pj
w net f =

1

donde observamos que el error en las capas ocultas depende de todos los
trminos de error de la capa de salida. De aqu surge el trmino de
propagacin hacia atrs. En particular, para la funcin sigmoidal:


donde k se refiere a todas las neuronas de la capa superior a la de la neurona
j. As, el error que se produce en una neurona oculta es proporcional a la suma
de los errores conocidos que se producen en las neuronas a las que est
conectada la salida de sta, multiplicado cada uno de ellos por el peso de la
conexin. Los umbrales internos de las neuronas se adaptan de forma similar,
considerando que estn conectados con pesos desde entradas auxiliares de
valor constante.
Paso 5
Actualizacin de los pesos
Para ello, utilizamos el algoritmo recursivo, comenzando por las neuronas de
salida y trabajando hacia atrs hasta llegar a la capa de entrada, ajustando los
pesos de la forma siguiente:
Para los pesos de las neuronas de la capa de salida:
( ) ( ) ( ) 1 1 + + = + t w t w t w
o
kj
o
kj
o
kj
( )
pj
o
pk
o
kj
y t w = + 1

y para los pesos de las neuronas de la capa oculta:
( ) ( ) ( ) 1 1 + + = + t w t w t w
h
ji
h
ji
h
ji
( )
pi
h
pj
h
ji
x t w = + 1


En ambos casos, para acelerar el proceso de aprendizaje, se puede aadir un
trmino momento de valor:
( ) ( ) ( ) 1 t w t w
o
kj
o
kj


( )
o
kj
k
o
pk pj pj
h
pj
w y y =

1

192 Tpicos y Aplicaciones de la Inteligencia Artificial

en el caso de la neurona de salida, y
( ) ( ) ( ) 1 t w t w
h
ji
h
ji


cuando se trata de una neurona oculta.
Paso 6
El proceso se repite hasta que el trmino de error

=
=
M
k
pk p
E
1
2
2
1

resulta aceptablemente pequeo para cada uno de los patrones aprendidos.

4.9. IMPLEMENTACIN DE APLICACIONES CON REDES
NEURONALES
Para la implementacin de aplicaciones se utiliza el shell NEUROSHELL y el
Visual Basic .NET.
4.9.1. DETECCIN DE OBSTCULOS POR MEDIO DE UN ROBOT
Descripcin del problema
7
:
Un robot es un dispositivo automtico que realiza acciones especficas, que
dependen de las necesidades del proceso en que se encuentre involucrado, en
este caso se tiene un robot que cuenta con cuatro sensores de proximidad en
distintas ubicaciones que permanentemente detectan si hay objetos que se
encuentren a una distancia superior o inferior a la preestablecida, con base en
esto se decide si dar marcha adelante o atrs a cada uno de los dos motores
que posee; en las lecturas de los sensores podran darse 16 posibles
combinaciones (16=2
4
) y para cada combinacin cada uno de los dos motores
podra dar marcha adelante o marcha atrs (figura 4.17).
El comportamiento del robot lo describe la tabla 4.4, cuando los sensores
detecten un objeto que se encuentra a una distancia inferior a la
predeterminada se dir que el objeto se encuentra cerca y esto se representa
por medio de un 1 y cuando se detecte un objeto que se encuentra a una
distancia mayor que la predeterminada se dir que el objeto esta lejos lo cual
se indica con un 1; dependiendo de estas lecturas los motores podrn dar

7
Universidad Tecnolgica de Pereira. Colombia.
Mg. Abraham Gamarra Moreno 193

marcha adelante, lo que se representar por un 1 o dar marcha atrs con un
1.


Figura 4.17 Robot

Tabla 4.4 Comportamiento del robot
S1 S2 S3 S4 M1 M2
1 1 1 1 -1 -1
-1 1 1 1 -1 1
1 1 -1 -1 1 -1
-1 -1 -1 -1 1 1
1 -1 1 1 1 -1
1 1 -1 1 -1 1
1 1 1 -1 1 -1

Justificacin del tipo de red
Este tipo de problema generalmente es resuelto suministrndole al robot una
base de datos que contiene todas las posibles situaciones que se podran
presentarse y sus respectivas soluciones, en este caso se necesitara
almacenar las respuestas para ambos motores ante las 16 posibles
combinaciones en las lecturas de los sensores, cuando el nmero de variables
de entrada y el nmero de salidas es mucho mayor, la cantidad de datos
necesarios para especificar cada posible situacin crece indefinidamente,
debido a esto se requeriran dispositivos con gran capacidad de

194 Tpicos y Aplicaciones de la Inteligencia Artificial

almacenamiento; en contraste una red neuronal puede entrenarse con un
nmero representativo de patrones y aprender el comportamiento del sistema
utilizando dispositivos de menos capacidad de almacenamiento y costo.
IMPLEMENTACION EN NEUROSHELL
El ingreso al programa al NEUROSHELL se muestra en la figura 4.18.

Figura 4.18 Ingreso al Neuroshell

Luego del ingreso elija FILE, NEW e ingrese un nombre de archivo, como en la
figura 4.19 (no escriba ninguna extensin para el archivo).


Figura 4.19.

Elija Beginners Neural Networks, realice click en el icono (figura 4.20).
Mg. Abraham Gamarra Moreno 195


Figura 4.20

Seleccione Data Entry (figura 4.21) e ingrese los datos de la tabla 4.4, para
entrenar la red neuronal (figura 4.22). Se sugiere para el entrenamiento
duplicar estos datos dos veces salvo el titulo de cada columna.


Figura 4.21


196 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.22

Luego de ingresar los datos cierre la ventana despus de haber grabado estos
con File, Save File.

Ahora elija el icono en la figura 4.21, en la lista desplegable variable
type selection elija input y haga clic debajo del nombre de cada entrada, este
quedar marcado con I, luego elija Actual Output en la lista desplegable
anterior y haga clic en el nombre de cada salida para la red neuronal. Ahora
elija Settings y Compute mins/maxs. Cierre la ventana.
Las figuras 4.23 al 4.29 muestran el procedimiento a seguir hasta generar el
cdigo fuente en C o Visual Basic.
En la figura 4.26 elija examinar datos para analizar los datos y los errores
generados a la salida.
El procedimiento de la figura 4.27 al 4.29 permite generar el cdigo fuente en
C. Para nuestro caso elegiremos Visual Basic source code.

Mg. Abraham Gamarra Moreno 197


Figura 4.23




Figura 4.24


198 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.25


Figura 4.26


Mg. Abraham Gamarra Moreno 199


Figura 4.27


Figura 4.28


200 Tpicos y Aplicaciones de la Inteligencia Artificial


Figura 4.29

El codigo generado en Visual Basic se genera en un archivo que tiene la
extensin .VB y es un procedimiento en Visual Basic; que contiene el
conocimiento en una red neuronal. Para nuestro caso el archivo es ROBOT.VB
y se encuentra en la carpeta APLICACIN ROBOT del CD que acompaa al
libro, cuyo contenido es:


' Insert this code into your VB program to fire the
D:\ABRAHAM\FILES2~2\EPG\MAESTA~1\IA\ROBOT network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_ROBOT (inarray(), outarray())

Dim netsum as double
Static feature2(3) as double

' inarray(1) is S1
' inarray(2) is S2
' inarray(3) is S3
' inarray(4) is S4
' outarray(1) is M1
' outarray(2) is M2

if (inarray(1)<-1) then inarray(1) = -1
if (inarray(1)> 1) then inarray(1) = 1
inarray(1) = (inarray(1) + 1) / 2

Mg. Abraham Gamarra Moreno 201

if (inarray(2)<-1) then inarray(2) = -1
if (inarray(2)> 1) then inarray(2) = 1
inarray(2) = (inarray(2) + 1) / 2

if (inarray(3)<-1) then inarray(3) = -1
if (inarray(3)> 1) then inarray(3) = 1
inarray(3) = (inarray(3) + 1) / 2

if (inarray(4)<-1) then inarray(4) = -1
if (inarray(4)> 1) then inarray(4) = 1
inarray(4) = (inarray(4) + 1) / 2

netsum = -.7532668
netsum = netsum + inarray(1) * 7.551737
netsum = netsum + inarray(2) * .2998328
netsum = netsum + inarray(3) * 7.341322
netsum = netsum + inarray(4) * -6.852577
feature2(1) = 1 / (1 + exp(-netsum))

netsum = -2.495483
netsum = netsum + inarray(1) * -5.648689
netsum = netsum + inarray(2) * 1.05053
netsum = netsum + inarray(3) * -5.979871
netsum = netsum + inarray(4) * 6.870361
feature2(2) = 1 / (1 + exp(-netsum))

netsum = -4.198974E-02
netsum = netsum + inarray(1) * 4.999131
netsum = netsum + inarray(2) * -3.897346
netsum = netsum + inarray(3) * 2.603323E-05
netsum = netsum + inarray(4) * -3.897321
feature2(3) = 1 / (1 + exp(-netsum))

netsum = .1287855
netsum = netsum + feature2(1) * -2.675452
netsum = netsum + feature2(2) * -2.65109
netsum = netsum + feature2(3) * 6.387748
outarray(1) = 1 / (1 + exp(-netsum))

netsum = 3.821959
netsum = netsum + feature2(1) * -6.030695
netsum = netsum + feature2(2) * 3.957484
netsum = netsum + feature2(3) * 8.61486E-03
outarray(2) = 1 / (1 + exp(-netsum))


outarray(1) = 2 * (outarray(1) - .1) / .8 + -1
if (outarray(1)<-1) then outarray(1) = -1
if (outarray(1)> 1) then outarray(1) = 1

outarray(2) = 2 * (outarray(2) - .1) / .8 + -1
if (outarray(2)<-1) then outarray(2) = -1
if (outarray(2)> 1) then outarray(2) = 1


End Sub


202 Tpicos y Aplicaciones de la Inteligencia Artificial

Ahora debemos generar una aplicacin en Visual Basic 6.0, que nos permita
utilizar el cdigo que contiene a la red neuronal.
Iniciamos creando un formulario que permita manipular las entradas y salidas
que tiene la red neuronal (figura 4.30).


Figura 4.30. Formulario en Visual Basic que manipula las entradas y salidas de la red neuronal.

Luego modificamos el cdigo por defecto que tiene el formulario. El cdigo
modificado debe quedar tal como se muestra en el listado siguiente:
Private Sub Command1_Click()
Dim e(4) As Double
Dim s(2) As Double
' Asignacion de entradas
e(1) = Val(Text1.Text)
e(2) = Val(Text2.Text)
e(3) = Val(Text3.Text)
e(4) = Val(Text4.Text)

' llamada a la red neuronal
Call Fire_ROBOT(e, s)

' mostrar salida

If (s(1) >= 0.9 And s(1) <= 1) Then
Text5.Text = " motor gira hacia adelante"
End If
If (s(1) >= -1 And s(1) <= -0.9) Then
Text5.Text = " motor gira hacia atrs"
End If

If (s(2) >= 0.9 And s(2) <= 1) Then
Text6.Text = " motor gira hacia adelante"
End If
Mg. Abraham Gamarra Moreno 203

If (s(2) >= -1 And s(2) <= -0.9) Then
Text6.Text = " motor gira hacia atrs"
End If
End Sub

' Insert this code into your VB program to fire the
D:\ABRAHAM\FILES2~2\EPG\MAESTA~1\IA\ROBOT network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_ROBOT(inarray() As Double, outarray() As Double)

Dim netsum As Double
Static feature2(3) As Double

' inarray(1) is S1
' inarray(2) is S2
' inarray(3) is S3
' inarray(4) is S4
' outarray(1) is M1
' outarray(2) is M2

If (inarray(1) < -1) Then inarray(1) = -1
If (inarray(1) > 1) Then inarray(1) = 1
inarray(1) = (inarray(1) + 1) / 2

If (inarray(2) < -1) Then inarray(2) = -1
If (inarray(2) > 1) Then inarray(2) = 1
inarray(2) = (inarray(2) + 1) / 2

If (inarray(3) < -1) Then inarray(3) = -1
If (inarray(3) > 1) Then inarray(3) = 1
inarray(3) = (inarray(3) + 1) / 2

If (inarray(4) < -1) Then inarray(4) = -1
If (inarray(4) > 1) Then inarray(4) = 1
inarray(4) = (inarray(4) + 1) / 2

netsum = -0.7532668
netsum = netsum + inarray(1) * 7.551737
netsum = netsum + inarray(2) * 0.2998328
netsum = netsum + inarray(3) * 7.341322
netsum = netsum + inarray(4) * -6.852577
feature2(1) = 1 / (1 + Exp(-netsum))

netsum = -2.495483
netsum = netsum + inarray(1) * -5.648689
netsum = netsum + inarray(2) * 1.05053
netsum = netsum + inarray(3) * -5.979871
netsum = netsum + inarray(4) * 6.870361
feature2(2) = 1 / (1 + Exp(-netsum))

netsum = -0.04198974
netsum = netsum + inarray(1) * 4.999131
netsum = netsum + inarray(2) * -3.897346
netsum = netsum + inarray(3) * 0.00002603323
netsum = netsum + inarray(4) * -3.897321
feature2(3) = 1 / (1 + Exp(-netsum))

netsum = 0.1287855

204 Tpicos y Aplicaciones de la Inteligencia Artificial

netsum = netsum + feature2(1) * -2.675452
netsum = netsum + feature2(2) * -2.65109
netsum = netsum + feature2(3) * 6.387748
outarray(1) = 1 / (1 + Exp(-netsum))

netsum = 3.821959
netsum = netsum + feature2(1) * -6.030695
netsum = netsum + feature2(2) * 3.957484
netsum = netsum + feature2(3) * 0.00861486
outarray(2) = 1 / (1 + Exp(-netsum))

outarray(1) = 2 * (outarray(1) - 0.1) / 0.8 + -1
If (outarray(1) < -1) Then outarray(1) = -1
If (outarray(1) > 1) Then outarray(1) = 1

outarray(2) = 2 * (outarray(2) - 0.1) / 0.8 + -1
If (outarray(2) < -1) Then outarray(2) = -1
If (outarray(2) > 1) Then outarray(2) = 1

End Sub
Private Sub Command2_Click()
End
End Sub

Notese que tambin se ha agregado el cdigo generado por el Neuroshell
(contenido del archivo ROBOT.VB)
Una vez modificado el cdigo ejecutamos el programa e ingresamos las
entradas de la red neuronal y al presionar el boton Determinar la accion de los
motores del robot con una red neuronal se debe obtener la salida que ofrece
la red neuronal. Para nuestro caso se ha realizado la ejecucin con las
entradas del ltimo patrn de entrenamiento de la tabla 4.4, esta ejecucin se
muestra en la figura 4.31.

Figura 4.31. Ejecucin del programa que utiliza la red neuronal.

Mg. Abraham Gamarra Moreno 205

Cabe mencionar que las salidas de la red neuronal son cercanas o iguales a 1
-1 y se debe aproximar estas salidas a estos valores. Esta aproximacin se
realiza a travs del siguiente cdigo:

If (s(1) >= 0.9 And s(1) <= 1) Then
Text5.Text = " motor gira hacia adelante"
End If
If (s(1) >= -1 And s(1) <= -0.9) Then
Text5.Text = " motor gira hacia atrs"
End If

If (s(2) >= 0.9 And s(2) <= 1) Then
Text6.Text = " motor gira hacia adelante"
End If
If (s(2) >= -1 And s(2) <= -0.9) Then
Text6.Text = " motor gira hacia atrs"
End If

4.9.2. APLICACIN PARA SNTOMAS Y DIAGNSTICOS DE
AUTOMVILES
Consideremos un ejemplo concreto de aplicacin de sntomas y diagnsticos.
Emplearemos Como base para nuestro ejemplo una aplicacin de diagnstico
para automviles. Concretamente, nos concentraremos en una aplicacin que
diagnostique por qu no arranca un coche. Primero se definen los distintos
sntomas que hay que considerar:
No hace nada: no pasa nada cuando se hace girar la llave del contacto.
Hace clic: cuando se da vuelta a la llave, se oyen fuertes chasquidos.
Molinillo: cuando se da vuelta a la llave se oye un ruido parecido al de un
molinillo.
Arranque: el motor gira como si intentase arrancar, pero no es capaz de
funcionar por s mismo.
Sin chispa: al sacar el cable de una buja y acercarlo al bloque cuando se
intenta arrancar, en el motor no saltan chispas.
Cable caliente: despus de intentar arrancar el motor, el cable que va de la
batera a la bobina del motor de arranque est caliente.
Sin gasolina: al sacar el tubo de gasolina del carburador (o inyector) e
intentar arrancar el motor, no sale gasolina por el tubo.
A continuacin, se consideran las posibles causas del problema, basndose en
los sntomas:
Batera: la batera est descargada

206 Tpicos y Aplicaciones de la Inteligencia Artificial

Bobina del motor de arranque: falla la bobina del motor de arranque.
Motor de arranque: falla el motor de arranque.
Cables: fallan los cables del encendido.
Distribuidor: el rotor o la tapa del distribuidor estn corrodos.
Bomba de gasolina: falla la bomba de gasolina.
Aunque nuestra lista no es una representacin Completa de todos los posibles
problemas, los sntomas podran indicar alguno de estos problemas, o una
combinacin de ellos. Para completar el ejemplo vamos a construir una matriz
que indica la correspondencia de los sntomas con sus causas probables. La
matriz se ha ilustrado en la Tabla 4.5.
Al inspeccionar la matriz se aprecia la variedad de problemas que puede
indicar cualquier sntoma. La matriz tambin ilustra el problema que
encontramos cuando se intenta programar un sistema para llevar a cabo la
funcin de diagnstico. Es raro que haya una correspondencia biunvoca entre
sntomas y causas. Para tener xito, nuestro sistema automatizado debe ser
capaz de correlacionar muchos sntomas distintos, y, en el caso de que alguno
de los sntomas no se aprecie o est ausente, debe ser capaz de "llenar los
espacios en blanco" del problema basndose solamente en los sntomas
indicados.
Tabla 4.5. Para el problema de diagnsticos del automvil, se hacen corresponder los sntomas con
las causas.

Causas probables
Sntomas Batera Bobina Motor de
arranque
Cables Distribuidor Bomba de
gasolina
No hace nada X
Clics X X X
Molinillo X X X X
Gira X X X
Sin chispa X X
Cable caliente X X
Sin gasolina X

La solucin
Empleando los datos de nuestro ejemplo, ser necesaria una red con siete
unidades de entrada y seis unidades de salida. Esto deja nicamente sin
determinar el nmero de unidades internas (ocultas). En este caso, no hay
nada que indique cuntas unidades ocultas se van a necesitar para resolver el
problema, y no hay consideraciones de interfaz externa que vayan a limitar el
nmero de unidades ocultas.
Mg. Abraham Gamarra Moreno 207

Una ecuacin emprica segn Sierra
8
, para calcular el nmero de neuronas de
una capa oculta es:
N
M
n
N
M * 2
* 2
< <

donde:
M: Es el nmero de ejemplos con que vamos a entrenar a la red.
N: Es el nmero de unidades de entradas.
n: Es el nmero de neuronas que vamos a situar en capas intermedias
El shell Neuroshell calcula la cantidad de neuronas ocultas para la red
neuronal que se esta implementando.
A continuacin, debemos definir los conjuntos de datos que sern utilizados
para entrenar a la red. Volviendo de nuevo a la matriz de nuestro ejemplo, se
pueden considerar los datos de los vectores fila de la matriz como tramas de
entrada de siete dimensiones; esto es, para cada salida de causa probable que
desearamos que aprendiera la red, hay siete sntomas posibles que indican el
problema por su presencia o ausencia. Esta aproximacin proporcionar siete
pares de vectores de entrenamiento, cada uno de los cuales consta de una
trama de sntomas de siete elementos y de una trama de indicacin de
problema formada por seis elementos.
Haremos que la existencia de un sntoma quede indicada por un 1, y que la
ausencia de un sntoma sea representada mediante un 0. Para cualquier
vector de entrada dado, la causa o causas correctas se indican mediante un 1
lgico en la posicin correspondiente del vector de salida. Los pares de
vectores de entrenamiento que se producen por la correspondencia de la
matriz de sntomas y problemas para este ejemplo se muestran en la tabla 4.6.
Si se comparan las tablas 4.5 y la tabla 4.6., se notarn pequeas diferencias.
Lo nico que queda ahora es entrenar a la red con estos pares de datos. Una
vez que est entrenada, la red producir una salida que identifique a la causa
probable indicada por el mapa de sntomas de entrada. La red har esto
cuando la entrada sea equivalente a una de las entradas de entrenamiento, tal
como se esperaba, y adems producir una salida, indicando la causa
probable del problema, cuando la entrada sea parecida a alguna de las
entradas de entrenamiento, pero distinta de todas ellas. Esta aplicacin ilustra
la capacidad de la red para realizar la "mejor suposicin" (generalizacin) y
pone de manifiesto la capacidad de la red para enfrentarse a entradas de datos
con ruido o incompletas.

1.
8
Sierra Molina, Guillermo y otros (1995). Sistemas Expertos en Contabilidad y
Administracin de Empresas. Editorial Addison Wesley. USA.

208 Tpicos y Aplicaciones de la Inteligencia Artificial

Tabla 4.6. Estos pares de vectores de entrenamiento se utilizan para el problema de diagnsticos
del automvil.
Entrada de sntomas Salida de causas probables
N
o

h
a
c
e

n
a
d
a

C
l
i
c
s

M
o
l
i
n
i
l
l
o

G
i
r
a

S
i
n

c
h
i
s
p
a

C
a
b
l
e

c
a
l
i
e
n
t
e

S
i
n

g
a
s
o
l
i
n
a

B
a
t
e
r

a

B
o
b
i
n
a

M
o
t
o
r

d
e

a
r
r
a
n
q
u
e

C
a
b
l
e
s

D
i
s
t
r
i
b
u
i
d
o
r

B
o
m
b
a

d
e

g
a
s
o
l
i
n
a

1
0 0 0 0 0 0 1 0 0 0 0 0
0 1 0 0 0 0 0 1 1 1 0 0 0
0 0 1 0 0 0 0 0 0 1 1 1 1
0 0 0 1 0 0 0 0 0 0 1 1 1
0 0 0 0 1 0 0 0 0 0 1 1 0
0 0 0 0 0 1 0 0 1 1 0 0 0
0 0 0 0 0 0 1 0 0 0 0 0 1

Se puede utilizar el Neuroshell, para entrenar a la red neuronal con los datos
de la tabla 4.6 y se debe obtener tambin el codigo fuente en Visual Basic. La
implementacion se encuentra en el CD que se adjunta al libro.
El formulario y la ejecucin del programa en Visual Basic 6.0, teniendo en
cuenta el 4to patron de entrenamiento se muestra en la figura 4.32.


Figura 4.32. Ejecucin del programa en Visual Basic 6.0, teniendo en cuenta el 4 patron de
entrenamiento de la tabla 4.6.

El codigo del formulario debe ser modificado de la siguiente manera:
Mg. Abraham Gamarra Moreno 209


Private Sub Command1_Click()
Dim e(7) As Double
Dim s(6) As Double

e(1) = Val(Text1.Text)
e(2) = Val(Text2.Text)
e(3) = Val(Text3.Text)
e(4) = Val(Text4.Text)
e(5) = Val(Text5.Text)
e(6) = Val(Text6.Text)
e(7) = Val(Text7.Text)

Call Fire_DIAGNOST(e, s)

If (s(1) > 0.9 And s(1) <= 1) Then
Text8.Text = "mal"
End If
If (s(1) >= 0 And s(1) < 0.1) Then
Text8.Text = "bien"
End If


If (s(2) > 0.9 And s(2) <= 1) Then
Text9.Text = "mal"
End If
If (s(2) >= 0 And s(2) < 0.1) Then
Text9.Text = "bien"
End If

If (s(3) > 0.9 And s(3) <= 1) Then
Text10.Text = "mal"
End If
If (s(3) >= 0 And s(3) < 0.1) Then
Text10.Text = "bien"
End If

If (s(4) > 0.9 And s(4) <= 1) Then
Text11.Text = "mal"
End If
If (s(4) >= 0 And s(4) < 0.1) Then
Text11.Text = "bien"
End If

If (s(5) > 0.9 And s(5) <= 1) Then
Text12.Text = "mal"
End If
If (s(5) >= 0 And s(5) < 0.1) Then
Text12.Text = "bien"
End If

If (s(6) > 0.9 And s(6) <= 1) Then
Text13.Text = "mal"
End If
If (s(6) >= 0 And s(6) < 0.1) Then
Text13.Text = "bien"
End If
End Sub

210 Tpicos y Aplicaciones de la Inteligencia Artificial

' Insert this code into your VB program to fire the
F:\FILES2~1\ANNOSA~1\ARCHIV~2\CAPITU~3\DIAGNO~1\DIAGNOST network
' This code is designed to be simple and fast for porting to any machine.
' Therefore all code and weights are inline without looping or data storage
' which might be harder to port between compilers.
Sub Fire_DIAGNOST(inarray() As Double, outarray() As Double)

Dim netsum As Double
Static feature2(9) As Double

' inarray(1) is No_hace_Nada
' inarray(2) is Hace_Clics
' inarray(3) is Molinillo
' inarray(4) is Gira
' inarray(5) is Sin_chispa
' inarray(6) is Cable_caliente
' inarray(7) is Sin_gasolina
' outarray(1) is Batera
' outarray(2) is Bobina
' outarray(3) is Motor_de_arranque
' outarray(4) is Cables
' outarray(5) is Distribuidor
' outarray(6) is Bomba_de_gasolina

If (inarray(1) < 0) Then inarray(1) = 0
If (inarray(1) > 1) Then inarray(1) = 1
inarray(1) = inarray(1)

If (inarray(2) < 0) Then inarray(2) = 0
If (inarray(2) > 1) Then inarray(2) = 1
inarray(2) = inarray(2)

If (inarray(3) < 0) Then inarray(3) = 0
If (inarray(3) > 1) Then inarray(3) = 1
inarray(3) = inarray(3)

If (inarray(4) < 0) Then inarray(4) = 0
If (inarray(4) > 1) Then inarray(4) = 1
inarray(4) = inarray(4)

If (inarray(5) < 0) Then inarray(5) = 0
If (inarray(5) > 1) Then inarray(5) = 1
inarray(5) = inarray(5)

If (inarray(6) < 0) Then inarray(6) = 0
If (inarray(6) > 1) Then inarray(6) = 1
inarray(6) = inarray(6)

If (inarray(7) < 0) Then inarray(7) = 0
If (inarray(7) > 1) Then inarray(7) = 1
inarray(7) = inarray(7)

netsum = -0.3115481
netsum = netsum + inarray(1) * 0.7032344
netsum = netsum + inarray(2) * 0.1466639
netsum = netsum + inarray(3) * 2.036957
netsum = netsum + inarray(4) * -0.4733835
netsum = netsum + inarray(5) * -0.4653012
netsum = netsum + inarray(6) * -1.454124
netsum = netsum + inarray(7) * -0.7716009
Mg. Abraham Gamarra Moreno 211

feature2(1) = 1 / (1 + Exp(-netsum))

netsum = -0.007483043
netsum = netsum + inarray(1) * -0.7950581
netsum = netsum + inarray(2) * -1.6701
netsum = netsum + inarray(3) * 1.082342
netsum = netsum + inarray(4) * 0.8707346
netsum = netsum + inarray(5) * -0.3615806
netsum = netsum + inarray(6) * -0.6289499
netsum = netsum + inarray(7) * 0.9206671
feature2(2) = 1 / (1 + Exp(-netsum))

netsum = 0.3411922
netsum = netsum + inarray(1) * 1.407685
netsum = netsum + inarray(2) * 1.998027
netsum = netsum + inarray(3) * -1.747856
netsum = netsum + inarray(4) * -1.269704
netsum = netsum + inarray(5) * -2.329731
netsum = netsum + inarray(6) * 1.356552
netsum = netsum + inarray(7) * 1.647663
feature2(3) = 1 / (1 + Exp(-netsum))

netsum = -0.2768248
netsum = netsum + inarray(1) * 2.065744
netsum = netsum + inarray(2) * -1.146601
netsum = netsum + inarray(3) * -0.9325874
netsum = netsum + inarray(4) * -1.517177
netsum = netsum + inarray(5) * 0.2812504
netsum = netsum + inarray(6) * -0.6556798
netsum = netsum + inarray(7) * 1.173773
feature2(4) = 1 / (1 + Exp(-netsum))

netsum = -0.1239126
netsum = netsum + inarray(1) * -1.830723
netsum = netsum + inarray(2) * 0.8275196
netsum = netsum + inarray(3) * 0.2012251
netsum = netsum + inarray(4) * -0.7351373
netsum = netsum + inarray(5) * 0.5414248
netsum = netsum + inarray(6) * 2.384689
netsum = netsum + inarray(7) * -1.566727
feature2(5) = 1 / (1 + Exp(-netsum))

netsum = 0.0145554
netsum = netsum + inarray(1) * -0.4000922
netsum = netsum + inarray(2) * -1.257582
netsum = netsum + inarray(3) * 0.8750437
netsum = netsum + inarray(4) * 1.78116
netsum = netsum + inarray(5) * 1.741183
netsum = netsum + inarray(6) * -2.168171
netsum = netsum + inarray(7) * -0.9200088
feature2(6) = 1 / (1 + Exp(-netsum))

netsum = 0.3624522
netsum = netsum + inarray(1) * -1.666589
netsum = netsum + inarray(2) * -2.92119
netsum = netsum + inarray(3) * 1.415627
netsum = netsum + inarray(4) * 0.1193302
netsum = netsum + inarray(5) * 0.3643235
netsum = netsum + inarray(6) * 1.332756
netsum = netsum + inarray(7) * 1.651392

212 Tpicos y Aplicaciones de la Inteligencia Artificial

feature2(7) = 1 / (1 + Exp(-netsum))

netsum = -0.08557819
netsum = netsum + inarray(1) * 0.3886256
netsum = netsum + inarray(2) * -2.094244
netsum = netsum + inarray(3) * -1.564476
netsum = netsum + inarray(4) * 1.770092
netsum = netsum + inarray(5) * 0.9950833
netsum = netsum + inarray(6) * -1.562377
netsum = netsum + inarray(7) * 1.671334
feature2(8) = 1 / (1 + Exp(-netsum))

netsum = -0.2997127
netsum = netsum + inarray(1) * 1.399435
netsum = netsum + inarray(2) * -0.1395936
netsum = netsum + inarray(3) * -1.913407
netsum = netsum + inarray(4) * -0.9458458
netsum = netsum + inarray(5) * 2.404087
netsum = netsum + inarray(6) * 0.6442617
netsum = netsum + inarray(7) * -1.377198
feature2(9) = 1 / (1 + Exp(-netsum))

netsum = 0.8538765
netsum = netsum + feature2(1) * 1.642975
netsum = netsum + feature2(2) * -1.08525
netsum = netsum + feature2(3) * 1.692052
netsum = netsum + feature2(4) * 0.5226364
netsum = netsum + feature2(5) * -1.016138
netsum = netsum + feature2(6) * 0.3381723
netsum = netsum + feature2(7) * -4.312466
netsum = netsum + feature2(8) * -0.8845294
netsum = netsum + feature2(9) * 0.3042739
outarray(1) = 1 / (1 + Exp(-netsum))

netsum = 0.6356097
netsum = netsum + feature2(1) * -1.699543
netsum = netsum + feature2(2) * -0.8347372
netsum = netsum + feature2(3) * 1.740408
netsum = netsum + feature2(4) * -2.244962
netsum = netsum + feature2(5) * 2.778615
netsum = netsum + feature2(6) * -1.380548
netsum = netsum + feature2(7) * -1.0302
netsum = netsum + feature2(8) * -1.023457
netsum = netsum + feature2(9) * -0.1288214
outarray(2) = 1 / (1 + Exp(-netsum))

netsum = 0.8881556
netsum = netsum + feature2(1) * 1.621511
netsum = netsum + feature2(2) * -0.03661929
netsum = netsum + feature2(3) * 0.1688382
netsum = netsum + feature2(4) * -1.013181
netsum = netsum + feature2(5) * 2.699184
netsum = netsum + feature2(6) * -1.219513
netsum = netsum + feature2(7) * 0.4337809
netsum = netsum + feature2(8) * -3.760823
netsum = netsum + feature2(9) * -1.450161
outarray(3) = 1 / (1 + Exp(-netsum))

netsum = -0.1752312
netsum = netsum + feature2(1) * 0.7248147
Mg. Abraham Gamarra Moreno 213

netsum = netsum + feature2(2) * 0.4916552
netsum = netsum + feature2(3) * -3.363693
netsum = netsum + feature2(4) * -1.489237
netsum = netsum + feature2(5) * 0.3150889
netsum = netsum + feature2(6) * 2.669589
netsum = netsum + feature2(7) * 0.2992842
netsum = netsum + feature2(8) * 0.4325282
netsum = netsum + feature2(9) * 0.1342072
outarray(4) = 1 / (1 + Exp(-netsum))

netsum = -0.2363798
netsum = netsum + feature2(1) * 0.8358494
netsum = netsum + feature2(2) * 0.6256061
netsum = netsum + feature2(3) * -3.400938
netsum = netsum + feature2(4) * -1.574203
netsum = netsum + feature2(5) * 0.3605849
netsum = netsum + feature2(6) * 2.502021
netsum = netsum + feature2(7) * 0.2546888
netsum = netsum + feature2(8) * 0.5457298
netsum = netsum + feature2(9) * 0.2242781
outarray(5) = 1 / (1 + Exp(-netsum))

netsum = -0.1454982
netsum = netsum + feature2(1) * 0.7328083
netsum = netsum + feature2(2) * 1.886714
netsum = netsum + feature2(3) * 0.05207601
netsum = netsum + feature2(4) * -1.110788
netsum = netsum + feature2(5) * -1.82287
netsum = netsum + feature2(6) * 0.5481207
netsum = netsum + feature2(7) * 1.574738
netsum = netsum + feature2(8) * 1.149344
netsum = netsum + feature2(9) * -4.210217
outarray(6) = 1 / (1 + Exp(-netsum))


outarray(1) = (outarray(1) - 0.1) / 0.8
If (outarray(1) < 0) Then outarray(1) = 0
If (outarray(1) > 1) Then outarray(1) = 1

outarray(2) = (outarray(2) - 0.1) / 0.8
If (outarray(2) < 0) Then outarray(2) = 0
If (outarray(2) > 1) Then outarray(2) = 1

outarray(3) = (outarray(3) - 0.1) / 0.8
If (outarray(3) < 0) Then outarray(3) = 0
If (outarray(3) > 1) Then outarray(3) = 1

outarray(4) = (outarray(4) - 0.1) / 0.8
If (outarray(4) < 0) Then outarray(4) = 0
If (outarray(4) > 1) Then outarray(4) = 1

outarray(5) = (outarray(5) - 0.1) / 0.8
If (outarray(5) < 0) Then outarray(5) = 0
If (outarray(5) > 1) Then outarray(5) = 1

outarray(6) = (outarray(6) - 0.1) / 0.8
If (outarray(6) < 0) Then outarray(6) = 0
If (outarray(6) > 1) Then outarray(6) = 1

End Sub

214 Tpicos y Aplicaciones de la Inteligencia Artificial

4.9.3. CONCESIN DE AYUDAS POR ESTUDIOS
El problema consiste en determinar cul es el tipo de ayuda, que se puede
conceder por estudios a un trabajador en una empresa, en base a concesiones
otorgadas en otros casos.
Para la concesin se toman los siguientes atributos:
salario del trabajador,
tipo de estudios a realizar, y
antigedad en la empresa.
La empresa cuenta con la informacin de la tabla 4.7 referida a ayudas
concedidas en ejercicios anteriores.

Tabla 4.7. Ayudas concedidas con ejercicios anteriores

Mg. Abraham Gamarra Moreno 215

Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuacin)


Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuacin)



216 Tpicos y Aplicaciones de la Inteligencia Artificial

Se puede utilizar el Neuroshell, para entrenar a la red neuronal con los datos
de la tabla 4.7 y se debe obtener tambin el codigo fuente en Visual Basic. La
implementacion se encuentra en el CD que se adjunta al libro.
El formulario y la ejecucin del programa en Visual Basic 6.0, teniendo en
cuenta el 16 avo patrn de entrenamiento se muestra en la figura 4.33.


Figura 4.33. Ejecucin del programa en Visual Basic 6.0, teniendo en cuenta el 16 avo patrn de
entrenamiento de la tabla 4.7.

4.9.4. IMPLEMENTACIN DE OTRAS APLICACIONES CON REDES
NEURONALES ARTIFICIALES
En el CD se encuentra la implementacin
del reconocimiento de los caracteres A y
B, utilizando Neuroshell y Visual Basic
.NET.
Adems se implementa el ejemplo de la
identificacin de animales de la tabla
4.2.

You might also like