Implementación en matlab de una red backpropagation para resolver el problema de Caperucita Roja

La red backpropagation es una red neuronal que cumple con las siguientes características (Hilera y Martínez, 2000):

  • Tipo de red: Multicapa – feedforward
  • Mecanismo de aprendizaje: Supervisado.
  • Tipo de aprendizaje Aprendizajes por corrección de error.
  • Tipo de asociación entrada-salida: Red heteroasociativa.
  • Aprendizaje: Offline

Algunos de los campos de aplicación de la red backpropagation son:

  • Codificación de información
  • Traducción de texto en lenguaje hablado
  • Reconocimiento en lenguaje hablado
  • Reconocimiento óptico de caracteres (OCR)

La red puede ser usada también para resolver problemas menos complejos como el de Caperucita Roja:

La mamá de Caperucita Roja le desea enseñar como reaccionar antes diferentes personas que se le puedan acercar de acuerdo con algunas características que se pueden identificar.

  • Si se le acerca alguien con orejas grandes, dientes grandes y ojos grandes es porque es un lobo, Caperucita debe correr, gritar y buscar al leñador.
  • Si se le acerca una mujer arrugada y amable, es la abuelita, debe ofrecerle alimento y darle un beso en la mejilla.
  • Si se le acerca un hombre amable y bien parecido, es el leñador, debe darle un beso en la mejilla y coquetearle.

Se describe a continuación la solución del problema y su implementación en Matlab.

Paso No. 1: Definir la estructura de la red backpropagation

La entrada se va a modelar como una matriz de seis columnas (cada una representa las características del personaje) y tres filas, una para cada personaje.

Col1

Col2

Col3

Col4

Col5

Col6

Personaje

Orejas grandes

Dientes grandes

Ojos grandes

Arrugado

Amable

Bien parecido

El lobo
La abuelita
El leñador

La salida se va modelar de forma similar: una matriz de seis columnas (cada reacción de Caperucita) y tres filas, una para cada personaje.

Col1

Col2

Col3

Col4

Col5

Col6

Personaje

Corre

Grita

Busca al leñador

Ofrece alimento

Beso en la mejilla

Coquetea

El lobo
La abuelita
El leñador

Paso No. 2: Determinar los valores de entrada y salida

Los valores asignados a la entrada y salida son valores entre 0 y 1. El valor de 0 representa que la característica o acción NO se presenta, el valor de 1 representa que la característica o acción SI se presenta.

Los valores de entrada y salida para cada personaje se presentan en la siguiente tabla:

El lobo

Entrada

Col1

Col2

Col3

Col4

Col5

Col6

Orejas grandes

Dientes grandes

Ojos grandes

Arrugado

Amable

Bien parecido

1

1

1

0

0

0

Salida

Col1

Col2

Col3

Col4

Col5

Col6

Corre

Grita

Busca al leñador

Ofrece alimento

Beso en la mejilla

Coquetea

1

1

1

0

0

0

La abuelita

Entrada

Col1

Col2

Col3

Col4

Col5

Col6

Orejas grandes

Dientes grandes

Ojos grandes

Arrugado

Amable

Bien parecido

0

0

0

1

1

0

Salida

Col1

Col2

Col3

Col4

Col5

Col6

Corre

Grita

Busca al leñador

Ofrece alimento

Beso en la mejilla

Coquetea

1

1

1

0

0

0

El leñador

Entrada

Col1

Col2

Col3

Col4

Col5

Col6

Orejas grandes

Dientes grandes

Ojos grandes

Arrugado

Amable

Bien parecido

0

0

0

0

1

1

Salida

Col1

Col2

Col3

Col4

Col5

Col6

Corre

Grita

Busca al leñador

Ofrece alimento

Beso en la mejilla

Coquetea

0

0

0

0

1

1

Paso No. 3: Determinar las variables de la red

Para el entrenamiento de la red backpropagation en matlab se definen 3 variables:

  • Neuronas: Número de neuronas usadas en la red
  • Epochs: Número máximo de iteraciones de entrenamiento de la red
  • Error: Máximo error permitido en la salida

Las variables serán modificadas varias veces hasta obtener una salida cercana a la esperada.

Paso No. 4: Realizar pruebas de entrenamiento

Intento A

El primer intento se realizó con 5 neuronas y un error de 0.01,  el entrenamiento se realizó en 1 epoch. El resultado de la simulación de la entrada con esta red fue:

0.9614    0.9614    0.9614    0.0740   -0.0014    0.0208

0.0337    0.0337    0.0337    0.9330    1.0049    0.4694

0.1356    0.1356    0.1356    0.9307    1.0031    0.4042

Intento B

El segundo intento se realizó con 5 neuronas y un error de 0.0001,  el entrenamiento se realizó en 3 epochs. El resultado de la simulación de la entrada con esta red fue:

0.9999    0.9999    0.9999    0.0273   -0.0000    0.0007

-0.0000   -0.0000   -0.0000    0.9782    1.0001    0.4499

0.0009    0.0009    0.0009    0.9790    1.0000    0.4655

Intento C

El tercer intento se realizó con 5 neuronas y un error de 0.000001,  el entrenamiento se realizó en 4 epochs. El resultado de la simulación de la entrada con esta red fue:

0.9999    0.9999    0.9999    0.0273   -0.0000    0.0007

-0.0000   -0.0000   -0.0000    0.9782    1.0001    0.4499

0.0009    0.0009    0.0009    0.9790    1.0000    0.4655

Intento D

El cuarto intento se realizó con 10 neuronas y un error de 0.000001,  el entrenamiento se realizó en 2 epochs. El resultado de la simulación de la entrada con esta red fue:

1.0001    1.0001    1.0001   -0.0008    0.0001    0.0002

-0.0001   -0.0001   -0.0001    0.9991    0.9999    0.9999

0.0001    0.0001    0.0001    1.0003    1.0001    1.0003

Intento E

El quinto intento se realizó con 10 neuronas y un error de 0.00000001,  el entrenamiento se realizó en 3 epochs. El resultado de la simulación de la entrada con esta red fue:

1.0000    1.0000    1.0000   -0.0000   -0.0000   -0.0000

-0.0000   -0.0000   -0.0000    1.0000    1.0000    1.0000

0.0000    0.0000    0.0000    1.0000    1.0000    1.0000

Paso No. 5: La prueba

Después de encontrarse la red entrenada para los personajes principales, se va a probar cómo reacciona Caperucita Roja ante nuevos personajes:

  • Personaje 1: Un leñador bien parecido pero que no es amigable
  • Personaje 2: Un leñador que es amigable, pero es medio arrugado y no muy bien parecido.
  • Personaje 3: Una abuelita de grandes ojos, arrugada, amable y más o menos simpática.

Los valores dados a cada característica de cada personaje se resumen en la siguiente tabla, la cual constituye la entrada de la red neuronal.

Característica

Col1

Col2

Col3

Col4

Col5

Col6

Personaje

Orejas grandes

Dientes grandes

Ojos grandes

Arrugado

Amable

Bien parecido

Personaje 1

0

0

0

0

0

1

Personaje 2

0

0

0

0.5

1

0.5

Personaje 3

0

0

1

1

1

0.5

Después de realizar la simulación de la red con los datos de prueba, se obtienen los siguientes resultados.

Característica

Col1

Col2

Col3

Col4

Col5

Col6

Personaje

Corre

Grita

Busca al leñador

Ofrece alimento

Beso en la mejilla

Coquetea

Personaje 1

0.3774

0.3774

0.0000

-0.0990

0.0000

0.1511

Personaje 2

1.0404

1.0404

1.0000

0.9614

1.0000

0.7112

Personaje 3

0.1388

0.1388

1.0000

1.2596

1.0000

0.3451

Programa en matlab

clc;
neuronas = 10;
error = 0.00000001;
iteraciones = 20;

% Entradas
% col1            col2                col3         col4    col5               col6
% Orejas  Dientes     Ojos     Arrugado      Amable      Bien parecido

entrada=[[1 1 1 0 0 0]; [0 0 0 1 1 0]; [0 0 0 0 1 1]];

% Salidas
% col1         col2                 col3        col4              col5            col6
% Correr Gritar Busca leñador Ofrece alimento   Beso mejilla    Coquetea

salida=[[1 1 1 0 0 0]; [0 0 0 1 1 1]; [0 0 0 1 1 1]]

% Se inicia la red
net = newff(entrada, salida, neuronas);

% Se definen los parámetros de entrenamiento
net.trainParam.epochs=iteraciones;
net.trainParam.goal=error;

% Se entrena la red
net = train(net, entrada, salida);

% Se simula la red con la entrada
Y = sim(net,entrada)

% Se simula la red con la prueba
prueba = [[0 0 0 0 0 1]; [0 0 0 0.5 1 0.5]; [0 0 1 1 1 0.5]];
Y = sim(net, prueba)

Descargas

Referencias

  • HILERA, J. MARTINEZ V. Redes neuronales artificales, fundamentos, modelos y aplicaciones. Editorial Alfaomega. México. 2000

Información de publicación

UNIVERSIDAD PEDAGÓGICA NACIONAL
DEPARTAMENTO DE TECNOLOGÍA
MTIAE – TALLER ESPECÍFICO II
Carolina Avila Coral
2 de noviembre de 2009

Tags: , , ,

Leave a Reply

*
= 4 + 8