52
 Mg. Abraham Gamarra Moreno  165 CAPITULO CUATRO APRENDIZAJE CON REDES NEURONALES ARTIFICIALES Una red neuronal artificial es, básicamente, el resultado de los intentos por reproducir mediante computadores el funcionamiento del cerebro humano. Su principal aplicación es en torno a las tareas en que los seres humanos fácilmente superan a los computadores tradicionales, como en procesamiento de señales, procesamiento de imágenes, proces amiento de voz, en robótica y otros. Nuestro cerebro está formado por miles de millones de neuronas interconectadas entre sí en forma variable y compleja. Cada neurona recibe señales de las otras neuronas, o señales provenientes del exterior de la red, las procesa, ponderando o dándole distinta importancia a cada una de ellas, y genera una única señal de salida que se transmite a las otras neuronas. La información 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 información 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 BIOLÓGICOS La figura 4.1 muestra el modelo biológico de la neurona, elemento base de las redes de neuronas.

Redes Neuronales

Embed Size (px)

Citation preview

Page 1: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 1/52

 

Mg. Abraham Gamarra Moreno  165 

CAPITULO CUATRO

APRENDIZAJE CON REDES NEURONALESARTIFICIALES

Una red neuronal artificial es, básicamente, el resultado de los intentos porreproducir mediante computadores el funcionamiento del cerebro humano. Suprincipal aplicación es en torno a las tareas en que los seres humanosfácilmente superan a los computadores tradicionales, como en procesamientode señales, procesamiento de imágenes, procesamiento de voz, en robótica yotros.

Nuestro cerebro está formado por miles de millones de neuronasinterconectadas entre sí en forma variable y compleja. Cada neurona recibeseñales de las otras neuronas, o señales provenientes del exterior de la red,las procesa, ponderando o dándole distinta importancia a cada una de ellas, ygenera una única señal de salida que se transmite a las otras neuronas.

La información que procesa una red neuronal se encuentra dispersa entretodas sus interconexiones, lo que la hace fundamentalmente diferente a uncomputador tradicional, en que la información se encuentra totalmentelocalizada y no distribuida como en este caso. Esta cualidad hace que lasredes neuronales posean una gran tolerancia a fallas.

4.1. FUNDAMENTOS BIOLÓGICOS 

La figura 4.1 muestra el modelo biológico de la neurona, elemento base de lasredes de neuronas.

Page 2: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 2/52

 

 

166  Tópicos y Aplicaciones de la Inteligencia Artificial 

Figura 4.1. Modelo de la Neurona Biológica

Como se aprecia en esta figura, cada neurona en el cerebro está compuestabásicamente por un cuerpo, axones y dendritas. Las dendritas forman un"cepillo filamentoso" muy fino que rodea el cuerpo de la neurona. El axónpuede considerarse como un tubo largo y fino que se subdivide en numerosasramas que terminan en pequeños bulbos, los cuales tienen contacto con lasdendritas de las otras células. La pequeña separación entre una terminación yuna dendrita es llamada sinapsis. El axón de una neurona puede formarconexiones sinápticas con muchas otras neuronas.

Funcionalmente, las dendritas reciben señales desde otras células a través delos puntos de conexión llamados sinapsis. La fuerza de una conexión dada esdeterminada por la eficiencia de la transmisión sináptica. Desde ahí las señalesson pasadas al cuerpo de la célula. Las señales que llegan de las dendritaspueden ser excitatorias o inhibitorias, y si la suma ponderada de éstas,realizada dentro del cuerpo de la neurona, supera su "umbral de activación"dentro de un tiempo suficiente, la neurona se disparará, enviando un impulsonervioso a través de su axón.

4.2. LA NEURONA ARTIFICIAL

En la figura 4.2 se presenta el esquema típico 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 Axón

Y j

.

:

: F ( Zj )

 

Figura 4.2: Modelo de la Neurona Artificial

Page 3: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 3/52

 

Mg. Abraham Gamarra Moreno  167 

El cuerpo de la neurona será a menudo representada por la suma ponderadade las entradas, Zj, seguida por una función lineal o no lineal, Yj = F( Zj). Laeficiencia sináptica es representada por los "pesos de interconexión", Wij. Lafunción F(Zj) es llamada "función de activación", que usa los valores deentrada para determinar la actividad de la neurona. El modelo de la neurona esllamado neurona de McCulloch-Pitts .

4.2.1. PESOS DE INTERCONEXIÓN 

Los pesos de interconexión, representan la fuerza de interconexión entre lasneuronas, y pueden ser positivos (excitatorios) o negativos (inhibitorios);además pueden ser fijos o adaptables. Las redes con pesos adaptables usanleyes de aprendizaje para ajustar los valores de la fuerza de interconexión. Sila red neuronal usa pesos fijos las tareas a ser ejecutadas deben estar biendefinidas a priori.

4.2.2. FUNCIONES DE ACTIVACIÓN Existen distintos tipos de redes neuronales que usan diferentes funciones deactivación, F(Z), pero la estructura interna de la neurona , es decir la sumaponderada seguida por la función F(Z), es común en la mayoría de las redes.Entre las funciones de activación más usadas y conocidas se encuentran lasque se muestran en la figura 4.3.

Figura 4.3. Funciones de Activación

Page 4: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 4/52

 

 

168 Tópicos 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 gruposconocidos con el nombre de capas. Una red típica consiste en una sucesión decapas 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 lade salida. Las capas que no se conectan con el exterior reciben el nombre decapas ocultas. La figura 4.4 presenta el esquema típico de una red deneuronas.

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 pertenecena-la única capa que constituye la red. También pueden existir conexionesautorrecurrentes (salida de una neurona conectada a su propia entrada),

aunque en algún modelo, como el de HOPFIELD, esta recurrencia no seutiliza.

::

:

:

::

Capa de entrada Capa escondida Capa de salida  

Figura 4.4 Esquema típico de una red de neuronas

Una topología equivalente a la de las redes de 1 capa es la denominada

topología crossbar (barras cruzadas). Una red de este tipo (por ejemplo, la redLEARNING MATRIX) consiste en una matriz de terminales (de entrada ysalida) o barras que se cruzan en unos puntos a los que se les asocia un peso.Esta representación crossbar suele utilizarse como etapa de transición cuandose pretende implementar físicamente una red monocapa, puesto que esrelativamente sencillo desarrollar como hardware una estructura como laindicada (por ejemplo, las barras cruzadas serían cables, y los puntos deconexión, resistencias cuyos valores representarían los pesos de la red).

Page 5: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 5/52

 

Mg. Abraham Gamarra Moreno  169 

Finalmente, hay que indicar que las redes monocapa se utilizan típicamente entareas relacionadas con lo que se conoce como autoasociación; por ejemplo,para regenerar informaciones de entrada que se presentan a la red incompletao distorsionada.

En la tabla 4.1 se muestran las características topológicas de los modelos de

redes monocapa más conocidos.

Tabla 4.1. modelos de redes monocapa más conocidos.

TIPOS DE CONEXIONES MODELO DE RED

BRAIN-STATE-IN-A-BOXADDITIVE GROSSBERG (AG)SHUNTING GROSSBERG (SG)

CONEXIONESAUTORRE-CURRENTES

OPTIMAL LINEAR ASOCIATIVEMEMORY

HOPFIELDBOLTZMANN MACHINE

CONEXIONESLATERALESEXPLÍCITAS

NO AUTO-RECURRENTES

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

Page 6: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 6/52

 

 

170 Tópicos y Aplicaciones de la Inteligencia Artificial 

•  Unidades de entrada : al igual que el caso de la red de una sola capa, estasunidades son las que reciben el patrón de entrada directamente.

•  Unidades ocultas o escondidas : estas no reciben entradas directamente yno poseen realimentación directa. Ellas permiten tener una representacióninterna del patrón en cuestión.

•  Unidades de salida : estas son las que entregan el resultado de la red.

Las redes multicapa son aquellas que disponen de conjuntos de neuronasagrupadas en varios (2, 3, etc.) niveles o capas. En estos casos, una formapara distinguir la capa a la que pertenece una neurona, consistiría en fijarse enel origen de las señales que recibe a la entrada y, el destino de la señal desalida. Normalmente, todas las neuronas de una capa reciben señales deentrada de otra capa anterior, más cercana a la entrada de la red, y envían lasseñales de salida a una capa posterior, más cercana a la salida de la red. Aestas conexiones se les denomina conexiones hacia adelante o feedforward(Fig. 4.7).

Sin embargo, en un gran número de estas redes también existe la posibilidadde conectar las salidas de las neuronas de capa posteriores a las entradas delas capas anteriores, a estas conexiones se les denomina conexiones haciaatrás o feedback (Fig. 4.6).

Figura 4.6. Red feedback

Un modelo de red neuronal multicapa es el Perceptron multinivel omulticapa (Figura 4.7), el cual es una red de tipo feedforward compuesta devarias 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 conuna única neurona en el nivel de salida, se muestra en la figura 4.8.

Page 7: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 7/52

 

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 región de decisión que se puedeformar con cada una de las configuraciones. En la siguiente columna se indicael tipo de región de decisión que se formaría para el problema de la XOR. Enlas dos últimas columnas se muestran las regiones formadas para resolver el

Page 8: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 8/52

 

 

172 Tópicos y Aplicaciones de la Inteligencia Artificial 

problema de clases con regiones mezcladas y las formas de regiones másgenerales para cada uno de los casos.

El Perceptron básico de dos capas (la de entrada con neuronas lineales y la desalida) sólo puede establecer dos regiones separadas por una frontera linealen el espacio de patrones de entrada.

Un Perceptron con tres niveles de neuronas puede formar cualquier regiónconvexa en este espacio. La región de decisión resultante será regionesconvexas con un número de lados a lo sumo igual al número de neuronas de lasegunda capa.

Un Perceptron con cuatro capas puede formar regiones de decisiónarbitrariamente complejas. El proceso de separación en clases que se lleva acabo consiste en la partición de la región deseada en pequeños hipercubos(cuadrados para dos entradas de la red).

El análisis anterior demuestra que no se requieren más de cuatro capas en una

red de tipo Perceptron, pues, como se ha visto una red con cuatro niveles,puede generar regiones de decisión arbitrariamente complejas.

El Perceptron es de interés histórico, dado que ha abierto el camino para eldesarrollo de otras redes neuronales, entre ellos el BackPropagation, que seanalizará más adelante.

4.4. OPERACIÓN DE UNA RED NEURONAL

Las redes neuronales operan en dos fases: aprendizaje y evocación orecuerdo.

El aprendizaje es el proceso en el cual se adaptan o modifican los pesos de lasconexiones en respuesta a un estímulo que ha sido presentado en susentradas y opcionalmente a su salida. El estímulo presentado a la salidacorresponde a la salida deseada para una determinada entrada; esta salidadeseada debe ser entregada por un "instructor". En tal caso se habla de unaprendizaje supervisado o entrenamiento supervisado.

La evocación o recuerdo se refiere a cómo la red procesa los estímulospresentados en sus entradas y genera una respuesta en su salida. A menudola evocación o recuerdo es una parte del aprendizaje; esto sucede cuando lasalida deseada debe ser comparada con la salida actual de la red para originarla señal de error.

4.5. ENTRENAMIENTO DE UNA RED NEURONAL

El entrenamiento de una red es todo el proceso de aprendizaje que realiza unared neuronal. Su objetivo es lograr que la aplicación de un conjunto deentradas produzca el conjunto de salidas deseadas (o uno al menosconsistente).

Page 9: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 9/52

 

Mg. Abraham Gamarra Moreno  173 

Dicho entrenamiento se realiza aplicando secuencialmente vectores deentrada (patrones de entrenamiento), a la vez que se ajustan los pesos de lared de acuerdo a un procedimiento predeterminado (cada modelo define suprocedimiento), los cuales convergen gradualmente a valores tales que cadavector de entrada produce el vector de salida deseado.

En cuanto a los tipos de aprendizaje, existen dos tipos: el aprendizajesupervisado y el no supervisado.

4.5.1. ENTRENAMIENTO SUPERVISADO 

Se selecciona un número suficientemente grande de vectores de entrada consus correspondientes vectores de salida. Cada vector de entrada se aplica a lared calculándose la salida, la que posteriormente se compara con la salidadeseada, determinando el error. Dicho error es realimentado a través de la red,modificando los pesos de acuerdo a un algoritmo que lo minimice. Los vectoresdel conjunto de entrenamiento se aplican secuencialmente, calculando los

errores y modificando los pesos hasta que el error del conjunto total deentrenamiento converja a un nivel aceptable.

A continuación se muestra como se realiza el entrenamiento de una redneuronal multicapa:

• Lo primero que necesitamos son patrones de entrenamiento (cada fila dela tabla) que contengan el conocimiento de algún dominio en particular.Para nuestro ejemplo (Tabla 4.2) tenemos patrones que permitenidentificar si un animal es un mamífero (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 figura4.9.

Los 6 primeros patrones (patrones de entrada) debe suministrar a las neuronasque están en la parte superior (neuronas de entrada) y la última columna sedebe suministrarse como salida deseada.

Se puede elaborar un programa que permita entrenar la red neuronal y luegode este entrenamiento, se debe probar si el aprendizaje fue correcto o no.

Para el primer patrón de entrenamiento, la prueba consiste en ingresar elpatrón de entrada (6 primeras columnas) y esperar que se tenga la salida

deseada dada en el entrenamiento (última columna que debe ser igual ocercano a 1), vea la figura 4.10.

Para esta ejecución se tiene que el valor devuelto por la red neuronal es muycercano a 1, tal como se dio en el entrenamiento (la red neuronal aprendió).

Page 10: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 10/52

 

 

174 Tópicos y Aplicaciones de la Inteligencia Artificial 

Tabla 4.2 Patrones de entrenamiento que permiten identificar si un animal es un mamífero (1) o un

ave (0)

1100010

0011100

0

1

0

0

¿Nada?

011000

011100

100110

100011

¿Tieneplumas?

¿Ponehuevos?

¿Vuela?¿Tomaleche?

¿Tienepelo?

Salida

(1=Mamifero

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.

Page 11: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 11/52

 

Mg. Abraham Gamarra Moreno  175 

Al ejecutar un programa que use el aprendizaje de esta red neuronal, con elúltimo patrón de entrenamiento, se tiene que la salida también 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 ejecución del programa que contiene a la red neuronalentrenada 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 generalización de la redneuronal. Para realizar esta prueba, suministramos a la red neuronal, sólo lacaracterística toma leche y la red neuronal generaliza e identifica a este comoun mamífero (valor cercano o igual a 1). Debemos notar que estas entradas nohan sido dadas en el entrenamiento, por lo que la respuesta que se obtiene, espor generalización, vea la figura 4.12.

Page 12: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 12/52

 

 

176  Tópicos y Aplicaciones de la Inteligencia Artificial 

Figura 4.12 Resultados que muestra la genearlización del programa que contiene a la red neuronalentrenada de la figura 4.9.

4.5.2. ENTRENAMIENTO NO SUPERVISADO 

El aprendizaje no supervisado ocurre cuando la red es provista sólo de losvalores de entrada, y la red ajusta la fuerza de interconexión basada solamenteen los valores de la entrada y la salida de la red en progresión. En otraspalabras, el proceso de entrenamiento extrae las propiedades estadísticas delconjunto de entrenamiento y agrupa vectores familiares en clases. Puesto queno es posible determinar el patrón de salida específico generado por una clasede vectores en forma previa al entrenamiento, se requiere transformar la salidagenerada por la red a una forma que sea comprensible. Este tipo deentrenamiento fue desarrollado por Kohonen (1984) y otros en lo que seconoce con el nombre de la teoría de la "autoorganización".

4.6. TIPOS DE REDES NEURONALES MÁS IMPORTANTES 

La tabla 4.3 muestra el resumen de los tipos de redes más conocidos,comentando esquemáticamente las aplicaciones más importantes de cadauna, sus ventajas e inconvenientes y quién o quiénes fueron sus creadores yen qué año.

Page 13: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 13/52

 

Mg. Abraham Gamarra Moreno  177 

Tabla 4.3. Tipos de redes más conocidos.6 

 Nombre de la red 

 Año   Aplicaciones

 más importantes 

Comentarios  Limitaciones  Inventada/ Desarrollada

 por 

 Avalancha  1967 Reconocimiento de hablacontinua.

Controlbrazos robot.

Ninguna redsencillapuede hacertodo esto.

No es fácilalterar lavelocidad ointerpolar elmovimiento.

StephenGrossberg.

Teoríaresonanciaadaptativa

(ART) 

1986 Reconocimientode patrones(radar,

Sonar, etc.).

Sofisticada.Pocoutilizada.

Sensible a latranslación,distorsión yescala.

GailCarpenter,StephenGressberg.

 ADALINE / MADALINE

1960 Filtradode señales.

Ecualizador adaptativo.

Modems.

Rápida,fácil deimplementarconcircuitosanalógicoso VLSI.

Sólo esposibleclasificarespacioslinealmenteseparados.

BernandWidrow.

Back

 propagation

1974-

85

Síntesis

de voz desde

texto.

Control de

robots.

Predicción

.

Reconocimi

ento de

patrones.

Red más

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 yAplicaciones. España: Editorial RA-MA; 1995.

Page 14: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 14/52

 

 

178 Tópicos y Aplicaciones de la Inteligencia Artificial 

Tabla 4.3. Tipos de redes más conocidos (continuación)

 Nombre de la red 

 Año   Aplicaciones

 más importantes 

Comentarios  Limitaciones  Inventada/ Desarrollada 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.

 Máquinas de

Boltzmann y

Cauchy

1985-

86

Reconocimi

ento de

patrones

(imágenes,

sonar y

radar).

Optimizaci

ón.

Redes

simples.

Capacidad

de

representac

ión óptima

de

patrones.

La máquina de

Boltzmann

necesita un

tiempo muy

largo de

aprendizaje.

Jeffrey

Hinton,

Terry Se-

jnowski,

Harold Szu.

Brain-Estate-in-a-Box. 1977 Extracción de

conocimiento

de bases de 

datos

Posiblement

e mejor

realización

que las

redes de

Hopfield.

Realización y

potenciales

aplicaciones

no estudiadas

totalmente.

James

Anderson

Page 15: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 15/52

 

Mg. Abraham Gamarra Moreno  179 

Tabla 4.3. Tipos de redes más conocidos (continuación)

 Nombre de la red 

 Año   Aplicaciones más importantes 

Comentarios  Limitaciones  Inventada/ Desarrollada 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 Comprensión

de imágenes.

Combinación

de

Perceptron

y TPM.

Numerosas

neuronas y

conexiones.

Robert

Hecht-

Nielsen

Hopfield  1982 Reconstrucció

n de patrones

y

optimización.

Puede

implementar

se en VLSI.

Fácil de

conceptuali

zar

Capacidad y

estabilidad.

John

Hopfield

 Neocognitron  1978-84

Reconocimiento decaracteresmanuscritos

Insensiblea laTranslación, rotacióny escala.

Requieremuchoselementos deproceso,niveles y

conexiones.

K.Fukushima

Perceptron  1957 Reconocimiento decaracteresimpresos

La red másantigua.Construidaen HW.

No puedereconocercaracterescomplejos.

FrankRosenblatt

Page 16: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 16/52

 

 

180 Tópicos y Aplicaciones de la Inteligencia Artificial 

Tabla 4.3. Tipos de redes más conocidos (continuación)

 Nombre de la red 

 Año   Aplicaciones más importantes 

Comentarios  Limitaciones  Inventada/ Desarrollad

a por 

Self-

Organizing-Map(SOM). Topology-

Preserving-  Map (TPM). 

1980-

84

Reconocimient

o depatrones,codificaciónde datos,optimización.

Realiza

mapas decaracterísticascomunes de losdatosaprendidos.

Requiere

muchoentrenamiento.

Teuvo

Kohonen

4.7. APLICACIONES DE LAS REDES NEURONALES 

Las redes neuronales son una tecnología computacional emergente que puedeutilizarse en un gran número y variedad de aplicaciones, tanto comercialescomo militares. Se pueden desarrollar redes neuronales en un período detiempo razonable y pueden realizar tareas concretas mejor que otrastecnologías convencionales, incluyendo los sistemas expertos. Cuando seimplementan mediante hardware (redes neuronales en chips VLSI), presentanuna alta tolerancia a fallos del sistema y proporcionan un grado de paralelismoen el proceso de datos muy grande. Eso hará posible insertar redesneuronales de bajo coste en sistemas existentes y recientementedesarrollados.

Hay muchos tipos diferentes de redes neuronales, cada uno de los cuales tieneuna aplicación particular más apropiada. Relacionamos ejemplos de algunasaplicaciones comerciales separándolas en grupos según las distintasdisciplinas:

Biología

• Aprender más acerca del cerebro y otros sistemas.

• Obtención de modelos de la retina.

Empresa

• Evaluación de probabilidad de formaciones geológicas y petrolíferas.

• Identificación de candidatos para posiciones específicas.

• Explotación de bases de datos.

• Optimización de plazas y horarios en líneas de vuelo.

• Reconocimiento de caracteres escritos.

Page 17: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 17/52

 

Mg. Abraham Gamarra Moreno  181 

Medio ambiente

• Analizar tendencias y patrones.

• Previsión del tiempo.

Finanzas

• Previsión de la evolución de los precios.

• Valoración del riesgo de los créditos.

• Identificación de falsificaciones.

• Interpretación de firmas.

Manufacturación

• Robots automatizados Y sistemas de control (visión artificial y sensoresde presión, temperatura, gas, etc.)

• Control de producción en líneas de proceso.

• Inspecci6n de la calidad.

Medicina

• Analizadores del habla para la ayuda de audición de sordos profundos.

• Diagnóstico y tratamiento a partir de síntomas y/o de datos analíticos(electrocardiograma, encefalograma, análisis sanguíneo, etc.).

• Monitorización en cirugía.

• Predicción de reacciones adversas a los medicamentos.

• Lectores de rayos X.

• Entendimiento de la causa de los ataques epilépticos.

Militares

• Clasificación de las señales de radar.

• Creación de armas inteligentes.

• Optimización del uso de recursos escasos.

• Reconocimiento y seguimiento en el tiro al blanco.

Page 18: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 18/52

 

 

182 Tópicos y Aplicaciones de la Inteligencia Artificial 

Podemos buscar hechos comunes en esta lista de aplicaciones; la mayoría deellas consisten en realizar un reconocimiento de patrones: buscar un patrón enuna serie de ejemplos, clasificar patrones, completar una señal a partir devalores parciales o reconstruir el patrón correcto partiendo de unodistorsionado. Muchos de los ejemplos tienen que trabajar con datossensoriales y de percepción (señales visuales, auditivas y otras) y, otros

realizan filtrado o mapeo de señales de entrada. En general, los ejemplosmostrados indican que son característicos más de las personas que de losordenadores convencionales.

4.8. LA RED BACKPROPAGATION 6  

En 1986, Rumelhart, Hinton y Williams, basándose en los trabajos de otrosinvestigadores formalizaron un método para que una red neuronal aprendiera la asociación que existe entre los patrones de entrada a la misma y las clasescorrespondientes, utilizando más niveles de neuronas que los que utilizóRosenblatt para desarrollar el Perceptron. Este método, conocido en general

como backpropagation  (propagación del error hacia atrás), está basado en lageneralización de la regla delta y, a pesar de sus propias limitaciones, haampliado de forma considerable el rango de aplicaciones de las redesneuronales.

El algoritmo de propagación hacia atrás. o retropropagación, es una regla deaprendizaje que se puede aplicar en modelos de redes con más de dos capasde células. Una característica importante de este algoritmo es larepresentación interna del conocimiento que es capaz de organizar en la capaintermedia de las células para conseguir cualquier correspondencia entre laentrada y la salida de la red. Ya se ha mostrado en este capítulo que  enmuchos casos, como la resolución del problema de la OR exclusiva, es

imposible encontrar los pesos adecuados para establecer la correspondenciaentre la entrada y la salida mediante una red sin capas intermedias. Con unacapa 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 conjuntopredefinido de pares de entradas-salidas dados como ejemplo, empleando unciclo propagación-adaptación  de dos fases: primero se aplica un patrón deentrada como estímulo para la primera capa de las neuronas de la red, se vapropagando a través de todas las capas superiores hasta generar una salida,se compara el resultado obtenido en las neuronas de salida con la salida quese desea obtener y se calcula un valor del error para cada neurona de salida.

A continuación, estos errores se transmiten hacia atrás, partiendo de la capade salida, hacia todas las neuronas de la capa intermedia que contribuyandirectamente a la salida, recibiendo el porcentaje de error aproximado a laparticipación de la neurona intermedia en la salida original. Este proceso serepite, capa por capa, hasta que todas las neuronas de la red hayan recibidoun error que describa su aportación relativa al error total. Basándose en elvalor del error recibido, se reajustan los pesos de conexión de cada neurona.de manera que en la siguiente vez que se presente el mismo patrón, la salidaesté más cercana a la deseada; es decir, el error disminuya.

Page 19: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 19/52

 

Mg. Abraham Gamarra Moreno  183 

La importancia de la red backpropagation  consiste en su capacidad deautoadaptar los pesos de las neuronas de las capas intermedias para aprender la relación que existe entre un conjunto de patrones dados como ejemplo y sussalidas correspondientes. Para poder aplicar esa misma relación, después delentrenamiento, a nuevos vectores de entrada con ruido o incompletas, dandouna salida activa si la nueva entrada es parecida a las presentadas durante el

aprendizaje. Esta característica importante, que se exige a los sistemas deaprendizaje, es la capacidad de generalización, entendida como la facilidad dedar salidas satisfactorias a entradas que el sistema no ha visto nunca en sufase de entrenamiento. La red debe encontrar una representación interna quele permita generar las salidas deseadas cuando se le dan las entradas deentrenamiento, y que pueda aplicar, además, a entradas no presentadasdurante la etapa de aprendizaje para clasificarlas según las características quecompartan 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 redescon capas intermedias (regla delta generalizada) con conexiones haciaadelante (feedforward) y cuyas células tienen funciones de activacióncontinuas (lineales o sigmoidales), dando lugar al algoritmo deretropropagación (backpropagation). Estas funciones continuas son nodecrecientes y derivables. La función sigmoidal pertenece a este tipo defunciones, a diferencia de la función escalón que se utiliza en el Perceptron, yaque esta última no es derivable en el punto en el que se encuentra ladiscontinuidad.

Este algoritmo utiliza también una función o superficie de error asociada a lared, buscando el estado estable de mínima energía o de mínimo error a través

del camino descendente de la superficie del error. Por ello, realimenta el errordel sistema para realizar la modificación de los pesos en un valor proporcionalal gradiente decreciente de dicha función de error.

FUNCIONAMIENTO DEL ALGORITMO 

El método que sigue la regla delta generalizada para ajustar los pesos esexactamente 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, odiferencia entre la salida deseada y la obtenida (∂ = sal. deseada - sal.obtenida).

Dada una neurona (unidad Ui) y la salida que produce, yi (Figura 4.13), elcambio que se produce en el peso de la conexión que une la salida de dichaneurona con la unidad U j (w ji) para un patrón de aprendizaje p determinado es:

( ) pi pj ji yt w ∂=+∆ α 1  

Page 20: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 20/52

 

 

184 Tópicos y Aplicaciones de la Inteligencia Artificial 

En donde el subíndice p se refiere al patron de aprendizaje concreto, y ∝ es laconstante o tasa de aprendizaje.

Figura 4.13 Conexión 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 elvalor concreto de ∂pj. Por otro lado, en las redes multinivel, a diferencia de lasredes sin neuronas ocultas, en principio no se puede conocer la salidadeseada de las neuronas de las capas ocultas para poder determinar los pesosen función del error cometido. Sin embargo, inicialmente sí podemos conocerla salida deseada de las neuronas de salida. Según esto, si consideramos launidad  U  j de salida (Figura 4.13), entonces definimos

( ) ( ) j pj pj pj net  f  yd 1

⋅−=∂  

donde dpj  es la salida deseada de la neurona j para el patrón p y net  j   es laentrada neta que recibe la neurona j.

Esta fórmula es como la de la regla delta, excepto en lo que se refiere a laderivada de la función de transferencia. Este término representa lamodificación que hay que realizar en la entrada que recibe la neurona j. En elcaso de que dicha neurona no sea de salida, el error que se produce estará enfunción del error que se cometa en las neuronas que reciban como entrada lasalida de dicha neurona. Esto es lo que se denomina procedimiento depropagación del error hacia atrás.

Según esto, en el caso de que U  j  no sea una neurona de salida  (ver Figura4.14), el error que se produce está en función del error que se comete en lasneuronas que reciben como entrada la salida de Uj:

Page 21: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 21/52

 

Mg. Abraham Gamarra Moreno  185 

( ) jkj

 pk  pj net  f w1⋅

 

  

 ⋅∂=∂ ∑  

donde el rango de k cubre todas aquellas neuronas a las que está conectada lasalida 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 laconexión.

Figura 4.14 Conexiones entre neuronas de la capa oculta con la capa de salida.

 ADICIÓN DE UN MOMENTO EN LA REGLA DELTA GENERALIZADA 

El método de retropropagación del error, también conocido como del gradientedescendente, requiere un importante número de cálculos para lograr el ajustede los pesos de la red. En la implementación del algoritmo, se toma unaamplitud de paso que viene dada por la tasa de aprendizaje ∝. A mayor tasa

de aprendizaje, mayor es la modificación de los pesos en cada iteración, con loque el aprendizaje será más rápido, pero, por otro lado. puede dar lugar aoscilaciones. Rumelhart, Hinton y Williams sugirieron que para filtrar estasoscilaciones se añada en la expresión del incremento de los pesos un término(momento), β, de manera que dicha expresión quede:

Page 22: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 22/52

 

 

186  Tópicos y Aplicaciones de la Inteligencia Artificial 

( ) ( ) ( ) ( )( )=−−+∂+=+ 11 t wt w yt wt w  ji ji pi pj ji ji β α 

 

( ) ( )t w yt w  ji pi pj ji ∆+∂=+∆= β α 1  

donde β es una constante (momento) que determínale efecto en t+1 delcambio de los pesos en el instante t.

Con este momento se consigue la convergencia de la red en menor número deiteraciones, ya que si en t  el incremento de un peso era positivo y en t+ltambién, entonces el descenso por la superficie de error en t+l es mayor. Sinembargo, si en t el incremento era positivo y en t+l es negativo, el paso que seda en t+1 es más pequeño, lo cual es adecuado, ya que eso significa que seha pasado por un mínimo y que los pasos deben ser menores para poder

alcanzarlo.

Resumiendo, el algoritmo backpropagation queda finalmente:

( ) ( ) ( )11 +∆+=+ t wt wt w  ji ji ji  

( ) ( ) ( )

∆+∂+=+∆ t w yt wt w  ji pi pj ji ji β α 1

 

donde:

( ) ( ) j pj pj pj net  f  yd  1⋅−=∂  

si U j es una neurona de salida y

( ) jkj

 pk  pj net  f w1⋅

 

  

 ⋅∂=∂ ∑  

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 unacapa de salida con m  neuronas y al menos una capa oculta de neuronasinternas. Cada neurona de una capa (excepto las de entrada) recibe entradasde todas las neuronas de la capa anterior y envía su salida a todas las

Page 23: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 23/52

 

Mg. Abraham Gamarra Moreno  187 

neuronas de la capa posterior (excepto las de salida). No hay conexiones haciaatrás feedback ni laterales entre neuronas de la misma capa.

La aplicación del algoritmo backpropagation  tiene dos fases, una haciaadelante y otra hacia atrás. Durante la primera fase el patrón de entrada espresentado a la red y propagado a través de las capas hasta llegar a la capa

de salida. Obtenidos los valores de salida de la red, se inicia la segunda fase,comparándose estos valores con la salida esperada para obtener el error. Seajustan los pesos de la última capa proporcionalmente al error. Se pasa a lacapa anterior con una retropropagación del error (backpropagation  ), ajustandoconvenientemente los pesos y continuando con este proceso hasta llegar a laprimera capa. De esta manera se han modificado los pesos de las conexionesde la red para cada ejemplo o patrón de aprendizaje del problema, del queconocíamos su valor de entrada y la salida deseada que debería generar la redante dicho patrón (fig. 4.15).

A diferencia de la regla delta en el caso del Perceptron, la técnicabackpropagation o generalización de la regla delta, requiere el uso de

neuronas cuya función de activación sea continua, y por tanto, diferenciable.Generalmente, la función utilizada será del tipo sigmoidal (Fig. 4.16).

A continuación se presentan, a modo de síntesis. los pasos y fórmulas a utilizarpara aplicar el algoritmo de entrenamiento:

Paso 1

Inicializar los pesos de la red con valores pequeños aleatorios.

Paso 2

Presentar un patrón de entrada, Xp: xp1,.xp2,...,xpn, y especificar la salidadeseada que debe generar la red: d1, d2,..., dM (si la red se utiliza como unclasificador, todas las salidas deseadas serán cero, salvo una, que será la dela clase a la que pertenece el patrón de entrada).

Paso 3

Calcular la salida actual de la red, para ello presentamos las entradas a la redy vamos calculando la salida que presenta capa hasta llegar a la capa desalida é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 delas neuronas de entrada.

Para una neurona j oculta:

∑=

+= N 

i

h

 j pi

h

 ji

h

 pj xwnet 1

θ   

Page 24: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 24/52

 

 

188 Tópicos y Aplicaciones de la Inteligencia Artificial 

en donde el índice h se refiere a magnitudes de la capa oculta (hidden); elsubíndice p, al p-ésimo vector de entrenamiento, y j a la j-ésima neuronaoculta. El término θ puede ser opcional, pues actúa como una entradamás.

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.

Page 25: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 25/52

 

Mg. Abraham Gamarra Moreno  189 

Figura 4.16 Función de activación 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 cálculos para obtener las salidas de las neuronasde salida (capa o: output)

∑=

+⋅= L

 j

o

k  pj

o

kj

o

 pk  ywnet 1

θ   

( )o

 pk 

o

k  pk  net  f  y =  

Paso 4

Calcular los términos de error para todas las neuronas.

Si la neurona k es una neurona de la capa de salida, el valor de la delta es:

Page 26: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 26/52

 

 

190 Tópicos y Aplicaciones de la Inteligencia Artificial 

( ) ( )o

 pk 

o

k  pk  pk 

o

 pk  net  f  yd 1

⋅−=∂ 

La función f , como se citó anteriormente, debe cumplir el requisito de serderivable, lo que implica la imposibilidad de utilizar una función escalón. Engeneral, disponemos de dos formas de función de salida que nos puedenservir: la función lineal de salida (fk(net jk) = net jk) y la función sigmoidalrepresentada en la figura 4.16 y definida por la expresión:

( ) jk net  jk k 

enet  f 

−+

=1

La selección de la función de salida depende de la forma en que se decidarepresentar los datos de salida: si se desea que las neuronas de salida seanbinarias, se utiliza la función sigmoidal, puesto que esta función es casibiestable y, además, derivable. En otros casos es tan aplicable una funcióncomo otra.

Para la función lineal, tenemos: 11

=o

k  f  mientras que la derivada de unafunción f sigmoidal es:

( ) pk  pk 

o

o

o

k  y y f  f  f  −=−= 11

1

 

por lo que los términos de error para las neuronas de salida quedan:

( ) pk  pk 

o

 pk  yd  −=∂ 

para la salida lineal, y

( ) ( ) pk  pk  pk  pk 

o

 pk  y y yd  −⋅−=∂ 1  

para la salida sigmoidal.

Si la neurona j no es de salida, entonces la derivada parcial del error no puedeser evaluada directamente. Por tanto, se obtiene el desarrollo a partir devalores que son conocidos y otros que pueden ser evaluados.

La expresión obtenida en este caso es:

Page 27: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 27/52

 

Mg. Abraham Gamarra Moreno  191 

( ) o

kj

o

 pk 

h

 pj

h

 j

h

 pj wnet  f  ⋅∂=∂ ∑1

 

donde observamos que el error en las capas ocultas depende de todos lostérminos de error de la capa de salida. De aquí surge el término de

propagación hacia atrás. En particular, para la función 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 sumade 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 laconexión. Los umbrales internos de las neuronas se adaptan de forma similar,considerando que están conectados con pesos desde entradas auxiliares de

valor constante.Paso 5

Actualización de los pesos

Para ello, utilizamos el algoritmo recursivo, comenzando por las neuronas desalida y trabajando hacia atrás hasta llegar a la capa de entrada, ajustando lospesos de la forma siguiente:

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

( ) ( ) ( )11 +∆+=+ t wt wt w okj

okj

okj  

( ) pj

o

 pk 

o

kj yt w ⋅∂⋅=+∆ α 1 

y para los pesos de las neuronas de la capa oculta:

( ) ( ) ( )11 +∆+=+ t wt wt wh

 ji

h

 ji

h

 ji  

( ) pi

h

 pj

h

 ji xt w ⋅∂⋅=+∆ α 1 

En ambos casos, para acelerar el proceso de aprendizaje, se puede añadir un

término momento de valor: ( ) ( )( )1−− t wt wo

kj

o

kj β   

( ) o

kj

o

 pk  pj pj

h

 pj w y y ⋅∂−=∂ ∑1

Page 28: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 28/52

 

 

192 Tópicos y Aplicaciones de la Inteligencia Artificial 

en el caso de la neurona de salida, y

( ) ( )( )1−− t wt w h

 ji

h

 ji β   

cuando se trata de una neurona oculta.

Paso 6

El proceso se repite hasta que el término de error

∑=

∂= M 

 pk  p E 1

2

2

1

 

resulta aceptablemente pequeño para cada uno de los patrones aprendidos.

4.9. IMPLEMENTACIÓN DE APLICACIONES CON REDES NEURONALES 

Para la implementación de aplicaciones se utiliza el shell NEUROSHELL y elVisual Basic .NET.

4.9.1. DETECCIÓN DE OBSTÁCULOS POR MEDIO DE UN ROBOT 

Descripción del problema7 :

Un robot es un dispositivo automático que realiza acciones específicas, quedependen de las necesidades del proceso en que se encuentre involucrado, eneste caso se tiene un robot que cuenta con cuatro sensores de proximidad endistintas ubicaciones que permanentemente detectan si hay objetos que seencuentren a una distancia superior o inferior a la preestablecida, con base enesto se decide si dar marcha adelante o atrás a cada uno de los dos motoresque posee; en las lecturas de los sensores podrían darse 16 posiblescombinaciones (16=24) y para cada combinación cada uno de los dos motorespodría dar marcha adelante o marcha atrás (figura 4.17).

El comportamiento del robot lo describe la tabla 4.4, cuando los sensoresdetecten un objeto que se encuentra a una distancia inferior a lapredeterminada se dirá que el objeto se encuentra cerca y esto se representapor medio de un 1 y cuando se detecte un objeto que se encuentra a unadistancia mayor que la predeterminada se dirá que el objeto esta lejos lo cualse indica con un –1; dependiendo de estas lecturas los motores podrán dar

7 Universidad Tecnológica de Pereira. Colombia.

Page 29: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 29/52

 

Mg. Abraham Gamarra Moreno  193 

marcha adelante, lo que se representará por un 1 o dar marcha atrás 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 

Justificación del tipo de red 

Este tipo de problema generalmente es resuelto suministrándole al robot unabase de datos que contiene todas las posibles situaciones que se podríanpresentarse y sus respectivas soluciones, en este caso se necesitaríaalmacenar las respuestas para ambos motores ante las 16 posiblescombinaciones en las lecturas de los sensores, cuando el número de variablesde entrada y el número de salidas es mucho mayor, la cantidad de datosnecesarios para especificar cada posible situación crece indefinidamente,debido a esto se requerirían dispositivos con gran capacidad de

Page 30: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 30/52

 

 

194 Tópicos y Aplicaciones de la Inteligencia Artificial 

almacenamiento; en contraste una red neuronal puede entrenarse con un número 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 lafigura 4.19 (no escriba ninguna extensión para el archivo).

Figura 4.19.

Elija Beginner´s Neural Networks, realice click en el icono (figura 4.20).

Page 31: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 31/52

 

Mg. Abraham Gamarra Moreno  195 

Figura 4.20

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

Figura 4.21

Page 32: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 32/52

 

 

196  Tópicos y Aplicaciones de la Inteligencia Artificial 

Figura 4.22

Luego de ingresar los datos cierre la ventana después de haber grabado estoscon File, Save File.

Ahora elija el icono en la figura 4.21, en la lista desplegable variabletype selection elija input y haga clic debajo del nombre de cada entrada, estequedará marcado con I, luego elija Actual Output en la lista desplegableanterior y haga clic en el nombre de cada salida para la red neuronal. Ahoraelija Settings y Compute mins/maxs. Cierre la ventana.

Las figuras 4.23 al 4.29 muestran el procedimiento a seguir hasta generar elcódigo fuente en C o Visual Basic.

En la figura 4.26 elija examinar datos para analizar los datos y los erroresgenerados a la salida.

El procedimiento de la figura 4.27 al 4.29 permite generar el código fuente enC. Para nuestro caso elegiremos Visual Basic source code.

Page 33: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 33/52

 

Mg. Abraham Gamarra Moreno  197 

Figura 4.23

Figura 4.24

Page 34: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 34/52

 

 

198 Tópicos y Aplicaciones de la Inteligencia Artificial 

Figura 4.25

Figura 4.26

Page 35: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 35/52

 

Mg. Abraham Gamarra Moreno  199 

Figura 4.27

Figura 4.28

Page 36: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 36/52

 

 

200 Tópicos y Aplicaciones de la Inteligencia Artificial 

Figura 4.29

El codigo generado en Visual Basic se genera en un archivo que tiene laextensión .VB y es un procedimiento en Visual Basic; que contiene elconocimiento en una red neuronal. Para nuestro caso el archivo es ROBOT.VBy se encuentra en la carpeta APLICACIÓN ROBOT del CD que acompaña allibro, cuyo contenido es:

' Insert this code into your VB program to fire theD:\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 doubleStatic 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) = -1if (inarray(1)> 1) then inarray(1) = 1inarray(1) = (inarray(1) + 1) / 2

Page 37: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 37/52

 

Mg. Abraham Gamarra Moreno  201 

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

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

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

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

netsum = -2.495483netsum = netsum + inarray(1) * -5.648689

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

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

netsum = .1287855netsum = netsum + feature2(1) * -2.675452

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

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

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

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

End Sub

Page 38: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 38/52

 

 

202 Tópicos y Aplicaciones de la Inteligencia Artificial 

Ahora debemos generar una aplicación en Visual Basic 6.0, que nos permitautilizar el código que contiene a la red neuronal.

Iniciamos creando un formulario que permita manipular las entradas y salidasque 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 código por defecto que tiene el formulario. El códigomodificado debe quedar tal como se muestra en el listado siguiente:

Private Sub Command1_Click()Dim e(4) As DoubleDim s(2) As Double' Asignacion de entradase(1) = Val(Text1.Text)e(2) = Val(Text2.Text)e(3) = Val(Text3.Text)e(4) = Val(Text4.Text)

' llamada a la red neuronalCall Fire_ROBOT(e, s)

' mostrar salida

If (s(1) >= 0.9 And s(1) <= 1) ThenText5.Text = " motor gira hacia adelante"

End IfIf (s(1) >= -1 And s(1) <= -0.9) Then

Text5.Text = " motor gira hacia atrás"End If

If (s(2) >= 0.9 And s(2) <= 1) ThenText6.Text = " motor gira hacia adelante"

End If

Page 39: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 39/52

 

Mg. Abraham Gamarra Moreno  203 

If (s(2) >= -1 And s(2) <= -0.9) ThenText6.Text = " motor gira hacia atrás"

End IfEnd Sub

' Insert this code into your VB program to fire theD:\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 DoubleStatic 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) = -1If (inarray(1) > 1) Then inarray(1) = 1inarray(1) = (inarray(1) + 1) / 2

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

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

If (inarray(4) < -1) Then inarray(4) = -1

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

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

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

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

netsum = 0.1287855

Page 40: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 40/52

 

 

204 Tópicos y Aplicaciones de la Inteligencia Artificial 

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

netsum = 3.821959netsum = netsum + feature2(1) * -6.030695

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

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

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

End SubPrivate Sub Command2_Click()

EndEnd Sub

Notese que también se ha agregado el código generado por el Neuroshell(contenido del archivo ROBOT.VB)

Una vez modificado el código ejecutamos el programa e ingresamos lasentradas de la red neuronal y al presionar el boton “Determinar la accion de losmotores del robot con una red neuronal” se debe obtener la salida que ofrecela red neuronal. Para nuestro caso se ha realizado la ejecución con lasentradas del último patrón de entrenamiento de la tabla 4.4, esta ejecución se

muestra en la figura 4.31.

Figura 4.31. Ejecución del programa que utiliza la red neuronal.

Page 41: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 41/52

 

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 aproximación serealiza a través del siguiente código:

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

Text5.Text = " motor gira hacia atrás"End If

If (s(2) >= 0.9 And s(2) <= 1) ThenText6.Text = " motor gira hacia adelante"

End IfIf (s(2) >= -1 And s(2) <= -0.9) Then

Text6.Text = " motor gira hacia atrás"End If

4.9.2. APLICACIÓN PARA SÍNTOMAS Y DIAGNÓSTICOS DE AUTOMÓVILES 

Consideremos un ejemplo concreto de aplicación de síntomas y diagnósticos.Emplearemos Como base para nuestro ejemplo una aplicación de diagnósticopara automóviles. Concretamente, nos concentraremos en una aplicación quediagnostique por qué no arranca un coche. Primero se definen los distintossíntomas 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 unmolinillo.

• Arranque: el motor gira como si intentase arrancar, pero no es capaz defuncionar por sí mismo.

• Sin chispa: al sacar el cable de una bujía y acercarlo al bloque cuando seintenta arrancar, en el motor no saltan chispas.

• Cable caliente: después de intentar arrancar el motor, el cable que va de labatería a la bobina del motor de arranque está caliente.

• Sin gasolina: al sacar el tubo de gasolina del carburador (o inyector) eintentar arrancar el motor, no sale gasolina por el tubo.

A continuación, se consideran las posibles causas del problema, basándose enlos síntomas:

• Batería: la batería está descargada

Page 42: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 42/52

 

 

206  Tópicos 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 están corroídos.• Bomba de gasolina: falla la bomba de gasolina.

Aunque nuestra lista no es una representación Completa de todos los posiblesproblemas, los síntomas podrían indicar alguno de estos problemas, o unacombinación de ellos. Para completar el ejemplo vamos a construir una matrizque indica la correspondencia de los síntomas con sus causas probables. Lamatriz se ha ilustrado en la Tabla 4.5.

Al inspeccionar la matriz se aprecia la variedad de problemas que puedeindicar cualquier síntoma. La matriz también ilustra el problema que

encontramos cuando se intenta programar un sistema para llevar a cabo lafunción de diagnóstico. Es raro que haya una correspondencia biunívoca entresíntomas y causas. Para tener éxito, nuestro sistema automatizado debe sercapaz de correlacionar muchos síntomas distintos, y, en el caso de que algunode los síntomas no se aprecie o esté ausente, debe ser capaz de "llenar losespacios en blanco" del problema basándose solamente en los síntomasindicados.

Tabla 4.5. Para el problema de diagnósticos del automóvil, se hacen corresponder los síntomas con

las causas.

Causas probables Síntomas Batería Bobina Motor de

arranqueCables Distribuidor Bomba de

gasolinaNo hace nada X

Clics X X XMolinillo X X X X

Gira X X XSin chispa X X

Cable caliente X XSin gasolina X

La soluciónEmpleando los datos de nuestro ejemplo, será necesaria una red con sieteunidades de entrada y seis unidades de salida. Esto deja únicamente sindeterminar el número de unidades internas (ocultas). En este caso, no haynada que indique cuántas unidades ocultas se van a necesitar para resolver elproblema, y no hay consideraciones de interfaz externa que vayan a limitar elnúmero de unidades ocultas.

Page 43: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 43/52

 

Mg. Abraham Gamarra Moreno  207 

Una ecuación empírica según Sierra8, para calcular el número de neuronas deuna capa oculta es:

 N 

 M n

 N 

 M  *2

*2

<< 

donde:

M: Es el número de ejemplos con que vamos a entrenar a la red.

N: Es el número de unidades de entradas.

n: Es el número de neuronas que vamos a situar en capas intermedias

El shell Neuroshell calcula la cantidad de neuronas ocultas para la redneuronal que se esta implementando.

A continuación, debemos definir los conjuntos de datos que serán utilizadospara entrenar a la red. Volviendo de nuevo a la matriz de nuestro ejemplo, sepueden considerar los datos de los vectores fila de la matriz como tramas deentrada de siete dimensiones; esto es, para cada salida de causa probable quedesearíamos que aprendiera la red, hay siete síntomas posibles que indican elproblema por su presencia o ausencia. Esta aproximación proporcionará sietepares de vectores de entrenamiento, cada uno de los cuales consta de unatrama de síntomas de siete elementos y de una trama de indicación deproblema formada por seis elementos.

Haremos que la existencia de un síntoma quede indicada por un 1, y que laausencia de un síntoma sea representada mediante un 0. Para cualquiervector de entrada dado, la causa o causas correctas se indican mediante un 1lógico en la posición correspondiente del vector de salida. Los pares devectores de entrenamiento que se producen por la correspondencia de lamatriz de síntomas 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 notarán pequeñas diferencias.

Lo único que queda ahora es entrenar a la red con estos pares de datos. Unavez que está entrenada, la red producirá una salida que identifique a la causaprobable indicada por el mapa de síntomas de entrada. La red hará estocuando la entrada sea equivalente a una de las entradas de entrenamiento, talcomo se esperaba, y además producirá una salida, indicando la causaprobable del problema, cuando la entrada sea parecida a alguna de lasentradas de entrenamiento, pero distinta de todas ellas. Esta aplicación ilustrala capacidad de la red para realizar la "mejor suposición" (generalización) ypone de manifiesto la capacidad de la red para enfrentarse a entradas de datoscon ruido o incompletas.

1.  8 Sierra Molina, Guillermo y otros (1995). “Sistemas Expertos en Contabilidad yAdministración de Empresas”. Editorial Addison Wesley. USA.

Page 44: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 44/52

 

 

208 Tópicos y Aplicaciones de la Inteligencia Artificial 

Tabla 4.6. Estos pares de vectores de entrenamiento se utilizan para el problema de diagnósticos

del automóvil.

Entrada de síntomas 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 00 1 0 0 0 0 0 1 1 1 0 0 00 0 1 0 0 0 0 0 0 1 1 1 10 0 0 1 0 0 0 0 0 0 1 1 10 0 0 0 1 0 0 0 0 0 1 1 00 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 datosde la tabla 4.6 y se debe obtener también el codigo fuente en Visual Basic. Laimplementacion se encuentra en el CD que se adjunta al libro.

El formulario y la ejecución del programa en Visual Basic 6.0, teniendo encuenta el 4to patron de entrenamiento se muestra en la figura 4.32.

Figura 4.32. Ejecución 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:

Page 45: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 45/52

 

Mg. Abraham Gamarra Moreno  209 

Private Sub Command1_Click()Dim e(7) As DoubleDim 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) ThenText8.Text = "mal"

End IfIf (s(1) >= 0 And s(1) < 0.1) Then

Text8.Text = "bien"End If

If (s(2) > 0.9 And s(2) <= 1) ThenText9.Text = "mal"

End IfIf (s(2) >= 0 And s(2) < 0.1) Then

Text9.Text = "bien"End If

If (s(3) > 0.9 And s(3) <= 1) ThenText10.Text = "mal"

End IfIf (s(3) >= 0 And s(3) < 0.1) Then

Text10.Text = "bien"End If

If (s(4) > 0.9 And s(4) <= 1) ThenText11.Text = "mal"

End IfIf (s(4) >= 0 And s(4) < 0.1) Then

Text11.Text = "bien"End If

If (s(5) > 0.9 And s(5) <= 1) ThenText12.Text = "mal"

End IfIf (s(5) >= 0 And s(5) < 0.1) Then

Text12.Text = "bien"

End If

If (s(6) > 0.9 And s(6) <= 1) ThenText13.Text = "mal"

End IfIf (s(6) >= 0 And s(6) < 0.1) Then

Text13.Text = "bien"End If

End Sub

Page 46: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 46/52

 

 

210 Tópicos y Aplicaciones de la Inteligencia Artificial 

' Insert this code into your VB program to fire theF:\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 DoubleStatic 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 Batería' 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) = 0If (inarray(1) > 1) Then inarray(1) = 1inarray(1) = inarray(1)

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

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

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

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

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

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

netsum = -0.3115481netsum = netsum + inarray(1) * 0.7032344netsum = netsum + inarray(2) * 0.1466639netsum = netsum + inarray(3) * 2.036957netsum = netsum + inarray(4) * -0.4733835netsum = netsum + inarray(5) * -0.4653012netsum = netsum + inarray(6) * -1.454124netsum = netsum + inarray(7) * -0.7716009

Page 47: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 47/52

 

Mg. Abraham Gamarra Moreno  211 

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

netsum = -0.007483043netsum = netsum + inarray(1) * -0.7950581netsum = netsum + inarray(2) * -1.6701netsum = netsum + inarray(3) * 1.082342netsum = netsum + inarray(4) * 0.8707346

netsum = netsum + inarray(5) * -0.3615806netsum = netsum + inarray(6) * -0.6289499netsum = netsum + inarray(7) * 0.9206671feature2(2) = 1 / (1 + Exp(-netsum))

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

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

netsum = -0.1239126netsum = netsum + inarray(1) * -1.830723netsum = netsum + inarray(2) * 0.8275196

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

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

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

Page 48: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 48/52

 

 

212 Tópicos y Aplicaciones de la Inteligencia Artificial 

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

netsum = -0.08557819netsum = netsum + inarray(1) * 0.3886256netsum = netsum + inarray(2) * -2.094244netsum = netsum + inarray(3) * -1.564476netsum = netsum + inarray(4) * 1.770092

netsum = netsum + inarray(5) * 0.9950833netsum = netsum + inarray(6) * -1.562377netsum = netsum + inarray(7) * 1.671334feature2(8) = 1 / (1 + Exp(-netsum))

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

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

netsum = 0.6356097

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

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

netsum = -0.1752312netsum = netsum + feature2(1) * 0.7248147

Page 49: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 49/52

 

Mg. Abraham Gamarra Moreno  213 

netsum = netsum + feature2(2) * 0.4916552netsum = netsum + feature2(3) * -3.363693netsum = netsum + feature2(4) * -1.489237netsum = netsum + feature2(5) * 0.3150889netsum = netsum + feature2(6) * 2.669589netsum = netsum + feature2(7) * 0.2992842netsum = netsum + feature2(8) * 0.4325282

netsum = netsum + feature2(9) * 0.1342072outarray(4) = 1 / (1 + Exp(-netsum))

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

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

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

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

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

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

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

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

End Sub

Page 50: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 50/52

 

 

214 Tópicos y Aplicaciones de la Inteligencia Artificial 

4.9.3. CONCESIÓN DE AYUDAS POR ESTUDIOS 

El problema consiste en determinar cuál es el tipo de ayuda, que se puedeconceder por estudios a un trabajador en una empresa, en base a concesionesotorgadas en otros casos.

Para la concesión se toman los siguientes atributos:• salario del trabajador,

• tipo de estudios a realizar, y

• antigüedad en la empresa.

La empresa cuenta con la información de la tabla 4.7 referida a ayudasconcedidas en ejercicios anteriores.

Tabla 4.7. Ayudas concedidas con ejercicios anteriores

Page 51: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 51/52

 

Mg. Abraham Gamarra Moreno  215 

Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuación)

Tabla 4.7. Ayudas concedidas con ejercicios anteriores (continuación)

Page 52: Redes Neuronales

5/17/2018 Redes Neuronales - slidepdf.com

http://slidepdf.com/reader/full/redes-neuronales-55b088539c55a 52/52

 

 

216  Tópicos y Aplicaciones de la Inteligencia Artificial 

Se puede utilizar el Neuroshell, para entrenar a la red neuronal con los datosde la tabla 4.7 y se debe obtener también el codigo fuente en Visual Basic. Laimplementacion se encuentra en el CD que se adjunta al libro.

El formulario y la ejecución del programa en Visual Basic 6.0, teniendo encuenta el 16 avo patrón de entrenamiento se muestra en la figura 4.33.

Figura 4.33. Ejecución del programa en Visual Basic 6.0, teniendo en cuenta el 16 avo patrón deentrenamiento de la tabla 4.7.

4.9.4. IMPLEMENTACIÓN DE OTRAS APLICACIONES CON REDES NEURONALES ARTIFICIALES 

En el CD se encuentra la implementacióndel reconocimiento de los caracteres A yB, utilizando Neuroshell y Visual Basic.NET.

Además se implementa el ejemplo de laidentificación de animales de la tabla4.2.