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: caperucita roja, matlab, red backpropagation, Redes Neuronales