_utp_2015-2_sirn_lab2__19645__.pdf

Upload: alcides-inga-t

Post on 14-Jan-2016

11 views

Category:

Documents


2 download

TRANSCRIPT

  • 1

    SISTEMAS INTELIGENTES Y REDES NEURONALES

    LABORATORIO No. 2

    REDES NEURONALES ARTIFICIALES

    Prof. Mg. Ing. Jos C. Bentez P.

    INDICACIONES: - Si en el Informe del Laboratorio o en los scripts de Matlab se encuentra un ejercicio

    copiado o parcialmente copiado la nota del Laboratorio ser CERO. - Los laboratorios presentados fuera del plazo establecido tendrn nota NS.

    OBJETIVO:

    Verificar la utilidad del grfico del Patrn de Entrenamiento. Graficar el PE del Perceptron. Entrenar el Perceptron con sentencias del Command Windows (CW). Utilizar la herramienta nntool para entrenar una red Perceptron. Entrenar el Adaline con sentencias del CW. Utilizar la herramienta nntool para entrenar una red Adaline. Entrenar el Backpropagation mediante sentencias del CW. Utilizar la herramienta nntool para entrenar una red Backpropagation. Entrenar la red de Kohonen mediante sentencias del CW. Utilizar la herramienta nntool para entrenar una red de Kohonen. Entrenar la red de Hopfield con sentencias del CW. Utilizar la herramienta nntool para entrenar una red de Hopfield.

    RESUMEN TEORICO

    1. GRAFICA DEL PATRON DE ENTRENAMIENTO (PE): El grfico del PE como se vi en la teora, nos permite saber con anticipacin si la red es entrenable o si la red aprende. En este laboratorio se verificar dicha utilidad.

    En el MatLab existe un comando que nos permite graficar los PE de las redes neuronales.

    Este comando es: plotpv (X, D); donde X es el Patrn de Entrada y D son las salidas deseadas.

    2. LA HERRAMIENTA NNTOOL DEL MATLAB

    El MatLab posee una herramienta para el aprendizaje de redes neuronales llamada nntool, el que nos permite entrenar y manipular los datos de entrada de una red neuronal. Esta herramienta nos muestra un Guide en el que de manera sencilla se puede ingresar los datos de la red.

    Para ingresar a la herramienta, en el CW ingresar: >> nntool, y aparecer el Guide siguiente:

  • 2

    3. ENTRENAR LA RED PERCEPTRON MEDIANTE COMANDOS DEL CW

    Para entrenar una RN se debe realizar los siguientes pasos:

    a. Definir el conjunto (patrn) de entrenamiento del problema. b. Crear la red Perceptron en MatLab. c. Inicializar W y b. d. Entrenar la red. e. Verificar la red entrenada,

    Tambin hay otras actividades que se deben realizar:

    f. Mostrar los W y b antes de entrenar (los valores por defecto o inicializados). g. Graficar el PE. h. Mostrar la LS antes de entrenar. i. Mostrar los W y b despus de entrenar. j. Mostrar la LS despus de entrenar.

    El MatLab posee comandos para realizar algunas de estos pasos:

    a. Definir el conjunto de entrenamiento: P (Patrones de entrada) y T (Salidas deseadas). Ejemplo: Para la red perceptron de la funcin lgica OR, se tiene el siguiente patrn de entrenamiento:

    P = [0 0 1 1; 0 1 0 1]; T = [0 1 1 1]; b. Crear la red Perceptron se usa el comando newp.

    - Para obtener la ayuda sobre este comando, ingresar en el CW:

    >> help newp

    Se mostrar la ayuda:

    Syntax net = newp(p,t,tf,lf) Description

  • 3

    Perceptrons are used to solve simple (i.e. linearly separable) classification problems. NET = NEWP(P,T,TF,LF) takes these inputs, P - RxQ matrix of Q1 representative input vectors. T - SxQ matrix of Q2 representative target vectors. TF - Transfer function, default = 'hardlim'. LF - Learning function, default = 'learnp'. Returns a new perceptron. The transfer function TF can be HARDLIM or HARDLIMS. The learning function LF can be LEARNP or LEARNPN.

    Ejemplo: >>net = newp([0 1; -2 2],1); c. Inicializar la red; inicializar W y b.

    Ejemplo: Pesos iniciales:

    >>net.iw{1,1} = [1 1] >> W0= net.iw{1,1} % Se guardan los pesos iniciales. Bias inicial:

    >>net.b{1} = 0.5 >>b0= net.b{1} %Se guardan los bias iniciales. - Para definir el nmero de etapas:

    Ejemplo: >>net.trainParam.epochs=20

    d. Entrenar la red. Para entrenar la red se usa el comando train.

    Ejemplo: >>net = train(net, P, T); e. Verificar la red entrenada,

    - Para probar (simular) la red: Ejemplo: >>Y = net(P) f. Mostrar los W y b antes de entrenar.

    >> W0

    >>b0

    g. Graficar el PE.

    >>plotpv(P, T)

  • 4

    h. Mostrar la LS antes de entrenar.

    >>plotpc(W0, b0) i. Mostrar los W y b despus de entrenar

    >> Wf=net.iw{1, 1} >>bf=net.b{1} j. Mostrar la LS despus de entrenar. >>plotpc(Wf, bf) 4. ENTRENAR LA RED PERCEPTRON MEDIANTE LA HERRAMIENTA NNTOOL DEL

    MATLAB

    Ingresar a la herramienta:

    >>nntool

    Se mostrar la ventana administrador de red y datos (VARD):

    Pinchar en New y aparecer:

  • 5

    Cambiar en Name de network1 a SLP1 y seleccionar en Network Type Perceptron

    Pinchar en la pestaa Data:

  • 6

    Ingresar en Name: P, y en Data Type seleccionar Inputs, y en Value ingresar [0 0 1 1; 0 1 0 1], al final pinchar en el botn Create. Aparecer el siguiente mensaje:

    Pinchar en OK para cerrar este mensaje. Ingresar en Name: T, y en Data Type seleccionar Targets, y en Value ingresar [0 1 1 1], al final pinchar en el botn Create. Aparecer el siguiente mensaje:

    Pinchar en OK para cerrar este mensaje. Pinchar en la pestaa Network de la ventana.

  • 7

    Pinchar en el botn Create. Muestra en siguiente mensaje:

    Indicando que se debe seleccionar las entradas. Vuelva a la ventana pinchando en OK y corrija. Debe quedar como se muestra:

    Pinchar en el botn Create. Debe mostrar el siguiente mensaje:

  • 8

    Pinchar en OK para cerrar el mensaje. Pinchar en View para ver la red creada. Se muestra as:

    Cerrar la ventana pinchando en X.

    Pinchar en el botn Close.

    La ventana administrador de red y datos (VARD) ahora muestra lo siguiente:

  • 9

    Seleccionar en la seccin Networks a SLP1:

    Pinchar en el botn Open y se muestra la red SLP1:

    Seleccionar la pestaa Train:

  • 10

    Seleccionar los Inputs y Targets ingresados:

    Pinchar en el botn Train Network y se mostrar la ventana Neural Network Training (NNT):

    Pinchar en Performance y se muestra:

  • 11

    Cerrar la ventana pinchando en X. Otra vez pinchar en X para cerrar la ventana Neural Network training.

    En la ventana Network SLP1 pinchar en la pestaa Simulate para verificar la red. Seleccione las Inputs P.

    Pinchar en Simulate Network y se muestra el mensaje:

    Cerrar la ventana del mensaje pinchando en Ok. En la ventana Administrador de red y datos (VARD) pinchar en SLP1_outputs, se mostrar:

  • 12

    5. ENTRENAR LA RED ADALINE MEDIANTE COMANDOS DEL COMMAND WINDOWS

    MatLab dispone de una funcin para crear redes Adaline: newlin

    - Para obtener ayuda sobre este comando, en el CW ingresar:

    >> help newlin

    NEWLIN Create a linear layer. Syntax net = newlin(P,S,ID,LR) net = newlin(P,T,ID,LR) Description Linear layers are often used as adaptive filters for signal processing and prediction. NEWLIN(P,S,ID,LR) takes these arguments, P - RxQ matrix of Q representative input vectors. S - Number of elements in the output vector. ID - Input delay vector, default = [0]. LR - Learning rate, default = 0.01; and returns a new linear layer. NEWLIN(P,T,ID,LR) takes the same arguments except for T - SxQ2 matrix of Q2 representative S-element output vectors. NET = NEWLIN(PR,S,0,P) takes an alternate argument, P - Matrix of input vectors. and returns a linear layer with the maximum stable learning rate for learning with inputs P.

    Ejemplo: - Patrn de entrenamiento:

    >> P = [2 1 -2 -1; 2 -2 2 1]; >> T = [0 1 0 1];

    - Creacin de la red Adaline: >> net = newlin(P,T);

    - Definiendo parmetros de la red: >> net.trainParam.goal= 0.1;

    - Pesos y bias iniciales: >> Wi = net.iw{1,1} Wi = 0 0 >> bi = net.b(1) bf = [0]

    - Entrenando la red >> net = train(net,P,T);

    El problema se ejecuta para 64 pocas, alcanzando un error medio cuadrtico de 0.0999. - Pesos y bias finales

    >> Wf = net.iw{1,1} Wf =

  • 13

    -0.0615 -0.2194 >> bf = net.b(1) bf = [0.5899]

    - Simulacin de la red >> A = sim(net, P) A = 0.0282 0.9672 0.2741 0.4320

    - Clculo del error: >> err = T - sim(net,P) err =

    -0.0282 0.0328 -0.2741 0.5680

    6. ENTRENAR LA RED ADALINE MEDIANTE LA HERRAMIENTA NNTOOL DEL MATLAB

    Utilizar la herramienta nntool para realizar el entrenamiento de la misma red del apartado anterior.

    7. ENTRENAR LA RED BACKPROPAGATION MEDIANTE COMANDOS DEL COMMAND WINDOWS

    MatLab dispone de una funcin para crear redes BAckpropagation: newff

    - Para obtener ayuda sobre este comando: En el CW ingresar:

    >> help newff

    NEWFF Create a feed-forward backpropagation network. Syntax net = newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) Description NEWFF(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF) takes, P - RxQ1 matrix of Q1 representative R-element input vectors. T - SNxQ2 matrix of Q2 representative SN-element target vectors. Si - Sizes of N-1 hidden layers, S1 to S(N-1), default = []. (Output layer size SN is determined from T.) TFi - Transfer function of ith layer. Default is 'tansig' for hidden layers, and 'purelin' for output layer. BTF - Backprop network training function, default = 'trainlm'. BLF - Backprop weight/bias learning function, default = 'learngdm'. PF - Performance function, default = 'mse'. IPF - Row cell array of input processing functions. Default is {'fixunknowns','removeconstantrows','mapminmax'}. OPF - Row cell array of output processing functions. Default is {'removeconstantrows','mapminmax'}. DDF - Data division function, default = 'dividerand'; and returns an N layer feed-forward backprop network.

    The transfer functions TF{i} can be any differentiable transfer function such as TANSIG, LOGSIG, or PURELIN.

  • 14

    The training function BTF can be any of the backprop training functions such as TRAINLM, TRAINBFG, TRAINRP, TRAINGD, etc.

    *WARNING*: TRAINLM is the default training function because it is very fast, but it requires a lot of memory to run. If you get an "out-of-memory" error when training try doing one of these:

    (1) Slow TRAINLM training, but reduce memory requirements, by setting NET.trainParam.mem_reduc to 2 or more. (See HELP TRAINLM.) (2) Use TRAINBFG, which is slower but more memory efficient than TRAINLM. (3) Use TRAINRP which is slower but more memory efficient than TRAINBFG.

    The learning function BLF can be either of the backpropagation learning functions such as LEARNGD, or LEARNGDM.

    The performance function can be any of the differentiable performance functions such as MSE or MSEREG.

    Ejemplo 1: Backpropagation - Patrn de entrenamiento:

    >> P = [0 1 2 3 4 5 6 7 8 9 10]; >> T = [0 1 2 3 4 3 2 1 2 3 4];

    - Creacin de la BP con 5 neuronas en la CO. >> net = newff(P,T,5);

    - Prueba de la red antes del entrenamiento. >> Y = sim(net,P);

    - Grfico de entradas versus salidas y salidas deseadas antes del entrenamiento >> plot(P,T,P,Y,'o');

    - Entrenamiento de la red para 50 pocas. >> net.trainParam.epochs = 50; >> net = train(net,P,T); >> Y = sim(net,P);

    - Grfico de entradas versus salidas y salidas deseadas despus del entrenamiento >> figure, plot(P,T,P,Y,'o');

    Ejemplo 2. Funcin lgica XOR, entrada binaria y salida binaria: 2 - 4 1 - P Entradas y T salidas deseadas

    >> P = [0 0 1 1; 0 1 0 1]; >> T = [0 1 1 0];

    - Creacin de la red >> net = newff(minmax(p), [4 1], {'logsig','logsig'}, 'trainlm'); >> Y = sim(net,P);

    - Grfico de entradas versus salidas y salidas deseadas >> plot(P,T,P,Y,'o');

    - Entrenamiento

  • 15

    >> net.trainParam.show = 25; >> net.trainParam.lr =0.02; >> net.trainParam.epochs = 400; >> net.trainParam.goal = 1e-8; >>[net,tr] = train(net,P,T);

    - Simulacin >> Y = sim(net,P);

    - Grfico de entradas versus salidas y salidas deseadas >> figure, plot(P,T,P,Y,'o'); >> e = T -round(Y)

    8. ENTRENAR LA RED BACKPROPAGATION MEDIANTE LA HERRAMIENTA NNTOOL DEL MATLAB

    Utilizar la herramienta nntool para realizar el entrenamiento de la misma red del apartado anterior.

    PROCEDIMIENTO

    1. Grfico del patrn de entrenamiento del Perceptron. a. GPE del Perceptron de:

    i. La funcin lgica Bicondicional. ii. La expresin lgica (A B) ~(A v C) iii. La expresin lgica ~(A=>B)C iv. X1 = [-0.2 -0.9 1.0 -0.8 -1.0 -0.5], X2 =[-1.0 -1.0 0.5 -0.5 -1.0 1.0], D1=[0 1 1 0

    0 1] y D2 = [1 1 0 1 1 0] v. X1=[-0.5 1.0 0.4 -1.0 -1.0 0.5], X2=[1.0 0.8 0.2 -0.4 -0.3 1.0], D1=[1 1 -1 1 1 -

    1] y D2 = [1 -1 1 -1 1 -1] vi. X1=[-0.5 1.0 0.4 -1.0 -1.0 0.5], X2=[1.0 0.8 0.2 -0.4 -0.3 1.0], X3=[1.0 0.8 -0.2

    0.4 0.3 -1.0], D1=[1 1 -1 1 1 -1] y D2 = [1 -1 -1 -1 1 1] En cada una de ellas responder: Es entrenable? Justificar su respuesta.

    b. Disear un Perceptron de 2 y 3 entradas entrenable, donde cada entrada tenga 30 valores, con FT hardlim.

    c. Disear un Perceptron de una expresin lgica (EL), que contenga 4 funciones lgicas de 2 y 3 entradas entrenable,

    2. Mediante comando del CW entrenar las redes Perceptron entrenables de la pregunta del procedimiento 1. Si no fueran entrenables hacerlas entrenables. En cada uno: a. Realizar grficos del PE, b. LS/PS antes y despus del entrenamiento y c. Mostrar los W y b, iniciales y los finales. d. Indicar cul es el efecto del nmero de pocas.

    3. Mediante la herramienta nntool entrenar las redes Perceptron entrenables de la pregunta del procedimiento 1. Si no fueran entrenables hacerlas entrenables. En cada uno: a. Mostrar la performance del entrenamiento. Explicar. b. Mostrar el estado del entrenamiento. Explicar.

  • 16

    4. Entrenar redes Adaline de aproximacin lineal de las funciones, con sentencias del CW: a. y = 2x1 x2 + 1.5.

    Donde P = [1 -2 3 -1; 3 2 4 -3], W0 = [2 -1] y b0=1.5. Graficar la funcin. b. y = 2x1 x2 + 3.

    Donde P = [-2 -1 0 0 1 2; 1 -2 1 -1 2 1], Tolerancia del error=0.0001, iteraciones=200. Hallar el error medio de salida (mae) y el error medio del clasificador. Graficar la funcin.

    c. y = 0.5x1 + 0.5x2 + 0.5. Donde P = [1 1 -1 -1; 1 -1 1 -1], T= [1 1 1 -1], Tolerancia del error=0.1, iteraciones=100. Hallar el error medio de salida (mae) y el error medio del clasificador. Graficar la funcin.

    5. Utilizar la herramienta nntool para entrenar redes Adaline del punto anterior.

    6. Entrenar tres (03) redes Backpropagation con sentencias del CW indicando su utilidad prctica. Ejemplo: Utilidad prctica: Aproximador de funciones: y=x2+3x Donde P=-4:0.5:4; Regla de Aprendizaje: Levenrg-Marquardt. Graficar la funcin. Parmetros de la red:

    - Mostrar los resultados cada 50 iteraciones. - Tasa de aprendizaje: 0.1 - Nmero mximo de iteraciones: 200 - Tolerancia del error como criterio de parada: 0.0001 - Valor mnimo del gradiente para parar: 0.00001

    7. Utilizar la herramienta nntool para entrenar las redes Backpropagation de punto anterior.

    8. Entrenar tres (03) redes de Kohonen mediante sentencias del CW indicando su utilidad prctica.

    9. Utilizar la herramienta nntool para entrenar redes de Kohonen del punto anterior.

    10. Entrenar tres (03) redes de Hopfield con sentencias del CW indicando su utilidad prctica.

    11. Utilizar la herramienta nntool para entrenar redes de Hopfield del punto anterior.

  • 17

    INFORME FINAL El Informe de Laboratorio es un documento grfico en lo posible y es redactado en Word con el desarrollo del laboratorio.

    Niveles de Informe:

    Primer nivel: Observaciones. Imgenes con comentarios cortos. Redactar al ir desarrollando el laboratorio. (Requiere desarrollar el laboratorio).

    Segundo nivel: Conclusiones. Redactar al terminar el laboratorio. (Requiere haber desarrollado el laboratorio).

    Tercer Nivel: Recomendaciones. (Requiere la lectura de otras fuentes). Dentro de su Carpeta Personal del Dropbox crear una carpeta para el Laboratorio 2 con el siguiente nombre:

    SIRN_PaternoM_L2

    Esta carpeta debe contener el Informe de Laboratorio, los cdigos, las fuentes y recursos utilizados.

    Las fuentes deben conservar el nombre original de archivo y se debe agregar en su nombre _L2 al final.

    CUESTIONARIO 1. Mostrar en el Informe de Laboratorio los resultados del Resumen Terico, los

    Procedimientos, el Cuestionario y ejercicios del laboratorio. El Informe no contiene cdigos, slo las referencias a los nmeros de lneas de los scripts.

    2. Dar un ejemplo de aplicacin prctica (incluir el scripts comentados de Matlab) de las redes:

    a. SLP. b. MLP. c. Adaline. d. Madaline. e. Backpropagation. f. Kohonen. g. Hopfield.

    3. Mostrar sus observaciones, conclusiones y recomendaciones.

    FUNCIONES DE MATLAB:

    plotpc, plotpv, nntool, newp, newlin, newff, newsom, newhop, train, y sim.