Ing. Iván A. Blanco P. Programa: Ingeniería de Sistemas Asignatura: Sistemas Expertos
Ejemplo Redes Neuronales Artificiales (RNA) con MATLAB RNA: El Perceptrón El Perceptrón es un tipo de red neuronal artificial desarrollado por Frank Rosenblatt. Este tipo de red neuronal tiene la capacidad de realizar separaciones lineales, lo cual veremos en el desarrollo de laboratorio. Emplearemos una red tipo perceptrón para solucionar el problema de la AND usando el toolbox de redes neuronales de MATLAB.
Entre las funciones utilizadas por el MATLAB para diseñar el P erceptrón tenemos: NEWP:
Inicializa el Perceptrón.
PLOTPV:
Grafica los vectores de entrada e ntrada cuando la salida es 1/0.
PLOTPC:
Grafica la línea de clasificación que genera el Perceptrón.
TRAIN:
Entrena la red con el algoritmo del Perceptrón.
SIM:
Simula o prueba la red.
Solución del problema de función lógica AND La función lógica AND se define como: X1
X2
Y
0
0
0
0
1
0
1
0
0
1
1
1
Introducción a las RNA & MATLAB | RNA: El Perceptrón
1
Ing. Iván A. Blanco P. Programa: Ingeniería de Sistemas Asignatura: Sistemas Expertos
Definición del problema Definir el problema que una red neuronal va a resolver es proporcionarle a la misma la información necesaria para que puede llevar la tarea con éxito, en otras palabras en este paso se le define a red neuronal los patrones de aprendizaje que se van a utilizar el proceso de entrenamiento. En MATLAB esto se hace definiendo dos matrices: una para las entradas y otra para las salidas, donde cada patrón de aprendizaje se define por columnas. Los comandos necesarios para definir las matrices de entr ada y salidas son: >> % Definición de la función lógica AND >> X=[0 0 1 1 ; 0101]; >>Y=[0 0 0 1] ; Para ver la gráfica de estos patrones se usa el comando plotpv >> plotpv(X,Y) La gráfica resultante es la siguiente: Vectors to be Classified 1.5
1
) 2 (
P
0.5
0
-0.5 -0.5
0
0.5 P(1)
1
1.5
Como se puede observar MATLAB gráfica los puntos dados en el vector X y le asigna un símbolo para la clasificación dependiendo de la salida deseada, en este caso: Para salida deseada cero (0) =o Para salida deseada uno (1) = + Introducción a las RNA & MATLAB | Solución del problema de función lógica AND
2
Ing. Iván A. Blanco P. Programa: Ingeniería de Sistemas Asignatura: Sistemas Expertos
Inicialización de la red neuronal Ya teniendo los patrones de entrenamiento que definen el problema a resolver, se procede a inicializar la red neuronal, para el caso del Perceptrón se usa la función initp de la siguiente manera:
>> RedNeuro = newp([0 1;0 1],1)
Donde: RedNeuro:
Objeto donde se va almacenar la red neuronal creada por MATLAB.
[0 1;0 1]:
Rango del valor de la entrada de la red neuronal, el número de filas de esta matriz lo utilizará MATLAB para definir el número de entradas que tiene la red neuronal.
1:
Número de neuronas que tiene la re d neuronal en la capa de salida.
Ahora se procederá a generar los pesos iníciales de la red, este paso no es necesario hacerlo pero permite generar un perceptrón con un superficie de separación conocida
>> RedNeuro.iw{1,1}=[1 1]; >> RedNeuro.b{1}=0.5; >> Pesos= RedNeuro.iw{1,1}; >> Bias= RedNeuro.b{1};
Con el siguiente comando se grafica la línea de separación inicial que tiene el Perceptr ón
>>plotpc(Pesos,Bias)
Introducción a las RNA & MATLAB | Solución del problema de función lógica AND
3
Ing. Iván A. Blanco P. Programa: Ingeniería de Sistemas Asignatura: Sistemas Expertos
El comando anterior adiciona la recta clasificadora al gráfico generado por plotpv, la gráfica quedaría así: Vectors to be Classified 1.5
1
) 2 ( P
0.5
0
-0.5 -0.5
0
0.5 P(1)
1
1.5
Patrones a clasificar y la recta clasificadora inicial.
Entrenamiento de la red El entrenamiento de la red se realiza con el comando train el cual implementa un entrenamiento con la regla de aprendizaje tipo Perceptrón, en MATLAB el entrenamiento se hace así: >> RedNeuro = train(RedNeuro,X,Y) Donde RedNeuro:
Red neuronal a ser entrenada por MATLAB.
X:
Entrada de los patrones de aprendizaje.
Y:
Salida deseada de los patrones de aprendizaje.
Al entrenar MATLAB genera la gráfica que indica cómo va evolucionando error al transcurrir las iteraciones (épocas).
Cuando se ha entrenado la red, es posible generar una gráfica que visualice la nueva línea clasificadora que la red ha llevado a cabo la t area.
Introducción a las RNA & MATLAB | Solución del problema de función lógica AND
4
Ing. Iván A. Blanco P. Programa: Ingeniería de Sistemas Asignatura: Sistemas Expertos
>> figure;
% Crea una nueva figura
>> Pesos= RedNeuro.iw{1,1}; >> Bias= RedNeuro.b{1}; >> plotpv(X,Y) >>plotpc(Pesos,Bias) Vectors to be Classified 1.5
1
) 2 (
P
0.5
0
-0.5 -0.5
0
0.5 P(1)
1
1.5
Patrones clasificados y la recta clasificadora obtenida.
Validación de la red Finalmente, al tener una red entrenada se procede a validar si el comportamiento de la misma es correcto o no, para esto se usa el comando sim como se muestra a continuación: >> in_prueba=[0;0];
% Patrón de prueba
>> salida = sim(RedNeuro, in_prueba) salida = 0 >> in_prueba=[1;1];
% Otro patón de prueba
>> salida = sim(RedNeuro, in_prueba) salida = 1 Como se puede observar el comportamiento de la red es el adecuado por lo que se da por finalizado el entrenamiento.
Introducción a las RNA & MATLAB | Solución del problema de función lógica AND
5