You are on page 1of 5

Implementacin 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 caractersticas (Hilera y Martnez, 2000):

Tipo de red: Multicapa feedforward Mecanismo de aprendizaje: Supervisado. Tipo de aprendizaje Aprendizajes por correccin de error. Tipo de asociacin entrada-salida: Red heteroasociativa. Aprendizaje: Offline

Algunos de los campos de aplicacin de la red backpropagation son:


Codificacin de informacin Traduccin de texto en lenguaje hablado Reconocimiento en lenguaje hablado Reconocimiento ptico de caracteres (OCR)

La red puede ser usada tambin para resolver problemas menos complejos como el de Caperucita Roja: La mam de Caperucita Roja le desea ensear como reaccionar antes diferentes personas que se le puedan acercar de acuerdo con algunas caractersticas 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 leador. 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 leador, debe darle un beso en la mejilla y coquetearle.

Se describe a continuacin la solucin del problema y su implementacin 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 caractersticas del personaje) y tres filas, una para cada personaje. Col1 Orejas grandes Col2 Dientes grandes Col3 Ojos grandes Col4 Arrugado Col5 Amable Col6 Bien parecido

Personaje El lobo La abuelita El leador

La salida se va modelar de forma similar: una matriz de seis columnas (cada reaccin de Caperucita) y tres filas, una para cada personaje. Col1 Corre Col2 Grita Col3 Busca al leador Col4 Ofrece alimento Col5 Beso en la mejilla Col6 Coquetea

Personaje El lobo La abuelita El leador

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 caracterstica o accin NO se presenta, el valor de 1 representa que la caracterstica o accin SI se presenta. Los valores de entrada y salida para cada personaje se presentan en la siguiente tabla: El lobo Entrada Col1 Orejas grandes 1 Col1 Corre 1 La abuelita Entrada Col1 Orejas grandes 0 Col1 Corre 1 El leador Entrada Col1 Orejas grandes 0 Col1 Col2 Dientes grandes 0 Col2 Col3 Ojos grandes 0 Col3 Col4 Arrugado 0 Col4 Col5 Amable 1 Col5 Col6 Bien parecido 1 Col6 Col2 Dientes grandes 0 Col2 Grita 1 Col3 Ojos grandes 0 Col3 Busca al leador 1 Col4 Arrugado 1 Col4 Ofrece alimento 0 Col5 Amable 1 Col5 Beso en la mejilla 0 Col6 Bien parecido 0 Col6 Coquetea 0 Col2 Dientes grandes 1 Col2 Grita 1 Col3 Ojos grandes 1 Col3 Busca al leador 1 Col4 Arrugado 0 Col4 Ofrece alimento 0 Col5 Amable 0 Col5 Beso en la mejilla 0 Col6 Bien parecido 0 Col6 Coquetea 0

Salida

Salida

Salida

Corre 0

Grita 0

Busca al leador 0

Ofrece alimento 0

Beso en la mejilla 1

Coquetea 1

Paso No. 3: Determinar las variables de la red Para el entrenamiento de la red backpropagation en matlab se definen 3 variables:

Neuronas: Nmero de neuronas usadas en la red Epochs: Nmero mximo de iteraciones de entrenamiento de la red Error: Mximo error permitido en la salida

Las variables sern 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 simulacin de la entrada con esta red fue: 0.9614 0.9614 0.0337 0.0337 0.1356 0.1356 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 simulacin de la entrada con esta red fue: 0.9999 0.9999 0.9999 0.0273 -0.0000 0.9782 0.9790 1.0001 1.0000 0.0007 0.4499 0.4655 0.9614 0.0337 0.1356 0.0740 -0.0014 0.9330 0.9307 1.0049 1.0031 0.0208 0.4694 0.4042

-0.0000 -0.0000 -0.0000 0.0009 0.0009 Intento C 0.0009

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 simulacin de la entrada con esta red fue: 0.9999 0.9999 0.9999 0.0273 -0.0000 0.9782 0.9790 1.0001 1.0000 0.0007 0.4499 0.4655

-0.0000 -0.0000 -0.0000 0.0009 0.0009 0.0009

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 simulacin de la entrada con esta red fue: 1.0001 1.0001 1.0001 -0.0008 0.0001 0.9991 1.0003 0.9999 1.0001 0.0002 0.9999 1.0003

-0.0001 -0.0001 -0.0001 0.0001 0.0001 Intento E 0.0001

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 simulacin de la entrada con esta red fue: 1.0000 1.0000 1.0000 -0.0000 -0.0000 -0.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000

-0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000

Paso No. 5: La prueba Despus de encontrarse la red entrenada para los personajes principales, se va a probar cmo reacciona Caperucita Roja ante nuevos personajes:

Personaje 1: Un leador bien parecido pero que no es amigable Personaje 2: Un leador que es amigable, pero es medio arrugado y no muy bien parecido. Personaje 3: Una abuelita de grandes ojos, arrugada, amable y ms o menos simptica.

Los valores dados a cada caracterstica de cada personaje se resumen en la siguiente tabla, la cual constituye la entrada de la red neuronal. Caracterstica Personaje Personaje 1 Personaje 2 Personaje 3 Col1 Orejas grandes 0 0 0 Col2 Dientes grandes 0 0 0 Col3 Ojos grandes 0 0 1 Col4 Arrugado 0 0.5 1 Col5 Amable 0 1 1 Col6 Bien parecido 1 0.5 0.5

Despus de realizar la simulacin de la red con los datos de prueba, se obtienen los siguientes resultados. Caracterstica Personaje Col1 Corre Col2 Grita Col3 Busca al leador Col4 Col5 Col6 Ofrece Beso en la Coquetea alimento mejilla

Personaje 1 Personaje 2 Personaje 3

0.3774 1.0404 0.1388

0.3774 1.0404 0.1388

0.0000 1.0000 1.0000

-0.0990 0.9614 1.2596

0.0000 1.0000 1.0000

0.1511 0.7112 0.3451

Programa en matlab clc; neuronas = 10; error = 0.00000001; iteraciones = 20; % Entradas % col1 col2 % Orejas Dientes Ojos

col3 col4 col5 Arrugado Amable

col6 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 leador 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 parmetros 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. 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)

You might also like