Manual RedesNeuronales URP 02

32
Simulación de Redes Neuronales con Matlab Mg. Pedro Freddy Huamaní Navarrete 1 1. Fundamentos Básicos de Redes Neuronales Artificiales 1.1 Surgimiento de las Redes Neuronales Las Redes Neuronales Artificiales (RNA) surgen como una necesidad de contar con máquinas capaces de aprender y recordar, tal como la inteligencia humana. Dicho de otra manera, imitar el funcionamiento del cerebro humano, ya que este posee un procesamiento altamente paralelo y con capacidad de resolver problemas complejos [3]. 1.2 Definición. Neurona Biológica y Artificial Existen muchas definiciones acerca de las RNA. Por ejemplo, algoritmos computacionales inspirados en la naturaleza: Neuronas Biológicas. O como también, sistemas altamente paralelos no lineales y densamente interconectados y basados en procesadores simples: modelo simplificado de la neurona biológica [3].  A continuación, en las figuras 1.1 y 1.2 se muestran los modelos de una neurona biológica y una neurona artificial. Cuerpo Dendritas Synapses  Axon Simulación de Redes Neuronales con Matlab Mg. Pedro Freddy Huamaní Navarrete 2 Figura 1.1. Modelo Simplificado de una Neurona Biológica Figura 1.2 Modelo de una Neurona Artificial Cabe mencionar que el cuerpo de la neurona biológica es aquel en donde se encuentra el núcleo y por lo tanto es donde se realiza el procesamiento de la información recibida (impulsos eléctricos), inhibiendo o activando la neurona. En cuanto que las synapses vienen hacer los puntos de unión entre una neurona pre-sináptica y otra post-sináptica. Donde w 1 , w 2 , .., w n , b k , x 1 , x 2 , …, x n , e y k , se representan como contenido de los vectores: y k  C Cuer r p po o d de e l l a a N Neu ur r o on na a k k b k  E Es st ta ad do o d de e  A  Ac ct t i i v va ac ci i ó ón n ( (s sa al l i i d da a) ) ϕ v w 1  w 2  w n E N T R  A D  A S x 1  x 2  x n  

Transcript of Manual RedesNeuronales URP 02

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 1

    1. Fundamentos Bsicos de Redes Neuronales Artificiales

    1.1 Surgimiento de las Redes Neuronales

    Las Redes Neuronales Artificiales (RNA) surgen como una necesidad de contar con mquinas capaces de aprender y recordar, tal como la inteligencia humana. Dicho de otra manera, imitar el funcionamiento del cerebro humano, ya que este posee un procesamiento altamente paralelo y con capacidad de resolver problemas complejos [3].

    1.2 Definicin. Neurona Biolgica y Artificial

    Existen muchas definiciones acerca de las RNA. Por ejemplo, algoritmos computacionales inspirados en la naturaleza: Neuronas Biolgicas. O como tambin, sistemas altamente paralelos no lineales y densamente interconectados y basados en procesadores simples: modelo simplificado de la neurona biolgica [3].

    A continuacin, en las figuras 1.1 y 1.2 se muestran los modelos de una neurona biolgica y una neurona artificial.

    Cuerpo

    Dendritas

    Synapses

    Axon

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 2

    Figura 1.1. Modelo Simplificado de una Neurona Biolgica

    Figura 1.2 Modelo de una Neurona Artificial

    Cabe mencionar que el cuerpo de la neurona biolgica es aquel en donde se encuentra el ncleo y por lo tanto es donde se realiza el procesamiento de la informacin recibida (impulsos elctricos), inhibiendo o activando la neurona. En cuanto que las synapses vienen hacer los puntos de unin entre una neurona pre-sinptica y otra post-sinptica.

    Donde w1, w2, .., wn, bk, x1, x2, , xn, e yk, se representan como contenido de los vectores:

    y k

    CCuueerrppoo ddee llaa NNeeuurroonnaa kk

    b k 1

    EEssttaaddoo ddee AAccttiivvaacciinn

    ((ssaalliiddaa))

    v

    w 1

    w 2

    w n

    E N T R A D A S

    x 1

    x 2

    x n

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 3

    y...y

    Y b...b

    B

    x...xx

    X

    w...wwW

    k

    1

    1kx

    k

    1

    1kx

    n

    2

    1

    1 x n

    n21n x 1

    ===

    =

    Definindose como:

    )v( y

    bx*w. . .x*wx*wv

    bx*wv

    kk

    knn2211k

    n

    1ikiik

    =

    ++++=+=

    =

    Y, en notacin matricial, como:

    )V( Y

    BX*WV

    kk

    kkk

    =

    +=

    Donde:

    (.) : representa a la Funcin de Transferencia o de Activacin, sobre la variable V.

    k hace referencia a la k-sima neurona de la red neuronal.

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 4

    Cuando se cuenta con redes neuronales de mltiples capas, y mltiples neuronas por capas, los pesos sinpticos y los bias son representados a travs de matrices. Ver seccin 1.4.

    1.3 Funciones de Transferencia

    Existen diversos tipos de funciones de transferencia. Por ejemplo: Funcin de Transferencia Escaln, Lineal, No Lineal (tangencial o sigmoidal), entre otros.

    Funcin de Transferencia Escaln

    Se caracteriza porque el vector de entrada a la funcin de transferencia es real, en cuanto que la salida est limitada a un vector con slo dos valores.

    Si se desea que la salida tome los valores 0 o 1, entonces se hace uso de la funcin o comando hardlim. Y, si se desea que la salida tome los valores -1 o 1, se utiliza la funcin hardlims. Por ejemplo, en las figuras 1.3a y 1.3b, se muestran los casos de ambas funciones de transferencia. Se utiliza en la red Perceptron.

    >> V = -8:0.2:8; >> Y = hardlim( V ); >> subplot(121), plot( V , Y ) >> Y = hardlims( V ); >> subplot(122), plot( V , Y )

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 5

    Figura 1.3. a) Funcin hardlim. b) Funcin hardlims

    Funcin de Transferencia Lineal

    Se caracteriza porque la entrada y la salida de la funcin, son del tipo real. El comando o funcin que realiza dicha operacin se denomina purelin. Es utilizada por las redes lineales y en ocasiones en la ltima capa de una red Multicapa. En la figura 1.4 se muestra dicha funcin.

    >> V = -8:0.2:8; >> Y = purelin( V ); >> plot( V , Y )

    Figura 1.4. Funcin de transferencia purelin

    Funcin de Transferencia No Lineal

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 6

    Se caracteriza porque la entrada a la funcin es real, en cuanto que la salida tambin lo es pero limitado a un rango. Puede ser del tipo sigmoid logartmico o sigmoid tangente hiperblico. Ver figura 1.5.

    Figura 1.5. Funciones de transferencia logsig y tansig

    Esta funcin es utilizada por la red Multicapa con regla de aprendizaje Backpropagation.

    >> V = -8:0.2:8; >> Y = logsig( V ); >> subplot(121), plot( V , Y ) >> Y = tansig( V ); >> subplot(122), plot( V , Y )

    Funcin de Transferencia Competitiva

    Se caracteriza porque la entrada a la funcin de transferencia es real, y la salida ser igual a 1 slo para el caso mximo, y ser 0 para los dems casos. A continuacin se muestra un vector con valores aleatorios, donde el valor mximo est ubicado en la posicin 6, por lo tanto, la salida ser un vector con valor 1 en la posicin 6, y valor 0 en las dems posiciones. Vea el ejemplo y la figura 1.6. Es utilizado por las redes competitivas.

    >> V = randn( 8 , 1 );

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 7

    >> Y = compet( V ); >> subplot(121), stem( V ); >> subplot(122), stem( Y );

    Figura 1.6. Funcin de transferencia compet

    Funcin de Transferencia de Saturacin

    Se caracteriza porque la entrada a la funcin de transferencia es del tipo real, y la salida es real y lineal pero limitada al intervalo de 0 a 1 o de -1 a 1. Es decir, se satura cualquier valor por encima o debajo de los lmites. Es utilizada por la red Hopfield. Ver figura 1.7a y 1.7b..

    >> V = -8:0.2:8; >> Y = satlin( V ); >> subplot(121), plot( V , Y ) >> Y = satlins( V ); >> subplot(122), plot( V , Y )

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 8

    Figura 1.7. Funciones de transferencia a) satlin. b)

    satlins

    Funcin de Transferencia Radial Basis

    Se caracteriza porque la entrada a la funcin de transferencia es real, y la salida est limitada a un intervalo de 0 a 1 formando una curva gaussiana. Ver la figura 1.8. Es utilizada por la red Function Radial Basis.

    >> V = -8:0.2:8; >> Y = radbas( V ); >> plot( V , Y )

    1.4 Caractersticas Principales

    Entre las principales caractersticas de toda red neuronal artificial, se tiene:

    a) Aprendizaje: porque aprende de la experiencia. b) Asociacin: debido a que asocia padrones diferentes. c) Generalizacin: generaliza de ejemplos anteriores. d) Robustez: la prdida de algunas neuronas, no

    deteriora el buen funcionamiento de la red neuronal. e) Bsqueda Paralela: basado en la bsqueda por

    contenido y no en forma paralela.

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 9

    Figura 1.8. Funcin de transferencia radbas

    1.5 Arquitecturas ms Comunes

    Seguidamente se muestran tres tipos principales de arquitecturas, de las cuales se derivan otras ms. La eleccin del tipo de arquitectura a utilizar, se basa en el tipo de aplicacin que se desea realizar.

    a) Una Capa Feed-Forward

    Es una arquitectura conformada por una sola capa de neuronas, donde el flujo de datos viaja por la red de izquierda a derecha. Esto significa que se dirige desde el vector de entrada hacia la salida de toda la red. A continuacin, en la figura 1.9, se muestra el caso particular de una red neuronal de una capa, con 3 neuronas y dos elementos por cada vector de entrada.

    b 1

    y 1

    y 2

    y 3

    x1

    x2

    b 2

    b 3

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 10

    Figura 1.9. Red neuronal con una Capa Feed-Forward

    De esta manera, en forma matricial se interpretara como:

    ( )1x31x22x31x3 BX*WY +=

    3

    2

    1

    1x3

    3

    2

    1

    1x3

    3231

    2221

    1211

    2x32

    11x2

    yyy

    Y bbb

    B

    wwwwww

    W xx

    X

    ==

    ==

    b) Multi-Capa Feed-Forward

    Es una arquitectura conformada por mltiples capas de neuronas, donde el flujo de datos viaja de capa en capa desde la primera capa hacia la ltima capa de la red neuronal. A continuacin, en la figura 1.10, se muestra el caso particular de una red neuronal con dos capas, de 3 y 2 neuronas, y dos elementos por cada vector de entrada.

    b 1

    y 1

    y 2

    x1

    x2

    b 2

    b 3

    b 1

    b 2

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 11

    Figura 1.10. Red neuronal Multi-Capa Feed-Forward

    En este caso, como existen dos capas de neuronas, se acostumbra a utilizar una notacin matricial particular para referenciar a la matriz de pesos y de bias de la primera y segunda capa.

    )BY*W(Y

    )BX*W(Y

    C2C1C2C2

    C1C1C1

    +=

    +=

    Donde:

    3

    2

    1C1

    1x3

    3231

    2221

    1211C1

    2x32

    11x2

    bbb

    B wwwwww

    W xx

    X ===

    2

    1C21x2

    2

    1C21x2

    232221

    131211C23x2

    3

    2

    1C11x3

    yy

    Y bb

    B

    wwwwww

    W yyy

    Y

    ==

    ==

    c) Red Recurrente

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 12

    Es una arquitectura conformada por una o varias capas de neuronas, donde existe una realimentacin de la salida total hacia la entrada principal de la red neuronal. A continuacin, en la figura 1.11, se muestra el caso particular de una red recurrente de una capa, tres neuronas y tres elementos por cada vector de entrada.

    Figura 1.11. Red neuronal recurrente.

    En forma matricial se tendra:

    Y*X

    )BX*W(Y

    =

    +=

    Donde X* = Y, indica que los nuevos clculos se obtienen con el nuevo vector de entrada.

    1.6 Aprendizaje en Redes Neuronales

    El aprendizaje de una red neuronal se refiere al proceso de como los pesos y bias cambian o se actualizan debido a la experiencia. Se distinguen tres tipos de configuracin de aprendizaje en la mayora de redes neuronales artificiales. As tenemos:

    y1

    y2

    y3

    x1

    x2

    x3 x*3

    x*2

    x*1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 13

    a. Sin Entrenamiento

    Es un caso donde los pesos de la red neuronal no se entrenan sino se calculan. Un ejemplo de ello lo podemos encontrar en la red neuronal recurrente Hopfield.

    b. Entrenamiento Supervisado

    Es cuando se hace necesaria la presencia de un tutor para la supervisin. Es decir, existe una comparacin entre el vector de salida total y un vector de salida deseada. Un ejemplo de ello lo podemos encontrar en la red neuronal Perceptron. Ver la figura 1.12.

    Figura 1.12. Diagrama de bloques del Entrenamiento Supervisado

    c. Entrenamiento No Supervisado

    Es cuando no se hace necesaria la presencia de un tutor para la supervisin. Un ejemplo de ello lo encontramos en las redes neuronales Competitivas. Ver la figura 1.13.

    R.N.A

    W +

    Entrada X

    Salida Y

    Salida Deseada

    Y

    Error -

    +

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 14

    Figura 1.13. Diagrama de bloques del Entrenamiento No Supervisado.

    1.7 Algunas Aplicaciones

    Actualmente, las RNAs vienen siendo utilizadas en diversos sectores. As tenemos el sector industrial, mdico, ambiental, de energa, entre otros. A continuacin se cita algunas aplicaciones principales de las RNAs.

    Procesamiento de imgenes y de voz Reconocimiento de patrones Identificacin de Sistemas Planeamiento y prediccin Interfaces adaptivas para sistemas Hombre/Mquina Control y optimizacin Filtrado de seales. Sistemas de visin para robots Entre otras.

    1.8 Toolbox de Redes Neuronales

    El toolbox con el cuenta el software Matlab y que es utilizado en todo este material preparado, es el denominado Neural Network; el cual cuenta con un conjunto de comandos o funciones propias para crear,

    R.N.A

    W

    Entrada X

    Salida Y

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 15

    disear, entrenar y simular distintas redes neuronales artificiales. La ayuda puede ser invocada de la siguiente manera:

    >> help nnet

    Por ejemplo, de toda esa lista mostrada, podemos ver las funciones utilizadas para la creacin, entrenamiento y simulacin de la red neuronal Perceptron, que es objeto de estudio en el captulo 2.

    >> help newp % crea >> help train % entrena >> help sim % simula

    Asimismo, es necesario aadir que las funciones de creacin de las distintas redes neuronales, establecen una variable denominada net que es del tipo network object. Esto quiere decir que es una variable objeto, pues a su vez contiene ms variables.

    Por ejemplo:

    >> net = newp( [ -1 2 ; -1 2 ] ,1) net = Neural Network object: architecture: numInputs: 1 numLayers: 1 biasConnect: [1] inputConnect: [1] layerConnect: [0] outputConnect: [1] targetConnect: [1]

    .

    .

    . parameters: adaptParam: .passes initParam: (none)

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 16

    performParam: (none) trainParam: .epochs, .goal, .show, .time weight and bias values: IW: {1x1 cell} containing 1 input weight matrix LW: {1x1 cell} containing no layer weight matrices b: {1x1 cell} containing 1 bias vector other: userdata: (user stuff)

    De esta manera, los pesos y los bias se visualizan:

    >> net.iw %pesos de la primera capa: Cell Array >> net.lw %pesos de las dems capas: Cell Array >> net.b %bias de todas las capas: Cell Array >> net.iw{1} %para observar el contenido en la

    %primera ubicacin del Cell Array.

    Tambin, es posible ver y configurar distintos parmetros como por ejemplo para la adaptacin, para el entrenamiento, las funciones para el entrenamiento, las estructuras sub-objetos y las caractersticas de la arquitectura de la red neuronal.

    >> net.adaptParam.passes = 2; % nmero de pasos >> net.trainParam % por defecto

    >> net.trainParam.epochs = 50; % nmero de iteraciones >> net.trainParam.goal = 0.001; % desempeo global >> net.trainParam.show = 5; % mostrar cada 5 iterac.

    >> net.trainParam.time = 1; % tiempo mximo para % entrenamiento (seg.)

    >> net.adaptFcn % por defecto >> net.initFcn % por defecto >> net.performFcn % por defecto >> net.trainFcn % por defecto >> help trains % funcin de entren. secuencial >> help initlay % funcin de inicializ. por capa >> help mae % funcin error absoluto

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 17

    >> help trainc % funcin de entren. cclico

    >> net.inputs{1} % de entradas >> net.inputs{1}.range % retorna lo ingresado >> net.layers{1} % de las capas >> net.layers{1}.transferFcn = hardlims ; >> net.outputs{1} % de las salidas >> net.numInputs >> net.numLayers >> net.numOutputs >> net.numTargets

    De esta forma, se configura o se muestran todos los parmetros relacionados a la creacin de una RNA. Muchas veces, no es necesario realizar una configuracin detallada, ya que por defecto se encuentran configuradas cuando se elige el tipo de red a utilizar. Slo cuando se utiliza la funcin network, es necesaria una configuracin exhaustiva, ya que este representa una funcin para la creacin de una red neuronal personalizada.

    >> help network

    Asimismo, tambin es posible trabajar con una interfase grfica del usuario (GUI) exclusivamente para redes neuronales. Slo basta con digitar el comando nntool:

    >> nntool

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 18

    2. Red Neuronal Perceptron

    2.1 Definicin y Caractersticas

    Representa una de las formas ms simple de RNA. Su uso es bsicamente para la clasificacin de padrones linealmente separables [6]. En la figura 2.1 se muestra la estructura de una red Perceptron.

    Entre sus principales caractersticas encontramos:

    Funcin de transferencia escaln. Regla de aprendizaje supervisado. Valores de entrada reales y salidas binarias {0,1} o

    bipolares {-1,1}.

    Figura 2.1. Estructura de una Red Perceptron [2].

    2.2 Regla de Aprendizaje

    Es muy sencilla, y est basada en la actualizacin de los pesos sinpticos a partir del error obtenido al comparar la salida deseada con la salida total de la red neuronal [6].

    B Sx1

    W SxR

    1

    Entrada Capa Perceptron

    Y = hardlim( W * X + B )

    X Rx1

    + Y Sx1 V Sx1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 19

    1. Inicializar los pesos sinpticos y los bias con valores aleatorios y pequeos.

    2. Aplicar un padrn de entrada y obtener el vector de salida total.

    > X = [ 1 1 0 0 ; 1 0 1 0 ] ; >> Yd = [ 1 0 0 0 ];

    Luego, se procede a crear la red neuronal Perceptron con la funcin newp. En esta funcin se debe incluir la cantidad de neuronas, una matriz con los valores mximos y mnimos por cada elemento del vector de entrada, y el tipo de funcin de transferencia utilizada. La regla de aprendizaje utilizada es la perteneciente a Perceptron: learnp.

    >> help newp >> net = newp( [ 0 1 ; 0 1 ] , 1 , 'hardlim' , 'learnp' );

    >> net.iw %tamao de la matriz de pesos >> net.iw{1} %pesos iniciales ans =

    000010001111

    Yxx d21x1

    x2

    b1

    y1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 21

    0 0 >> net.b{1} %bias inicial ans = 0

    La funcin newp crea pesos y bias iniciales iguales a cero. Pero tambin es posible crearlos a partir de valores pequeos y aleatorios ( net.iw{1} = randn(1,2) ; )

    Antes de proceder con el entrenamiento, se observa que la salida total con los pesos y bias iniciales es:

    >> Y = sim( net , X ) Y = 1 0 1 1

    Lo cual indica que es totalmente diferente a la Salida Deseada. Por ello, se necesita entrenar los pesos y bias. Seguidamente, se procede al entrenamiento de la nica neurona con un total de 40 iteraciones; de tal manera que el error sea igual a cero, o en otras palabras que la salida total Y sea idntica a la salida deseada Yd.

    >> net.trainParam.epochs = 40; >> [ net , tr ] = train( net , X , Yd ); %ver figura 2.3 TRAINC, Epoch 0/40 TRAINC, Epoch 8/40 TRAINC, Performance goal met.

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 22

    Figura 2.3. Curva de desempeo por cada iteracin alcanzada. Error = 0.

    De la figura anterior se observa que se necesitaron slo 8 iteraciones para lograr la clasificacin. Adems, el grfico tambin puede se obtenido de:

    >> t = tr.epoch; >> e = tr.perf; >> plot( t , e )

    Luego, se realiza la simulacin y se obtiene.

    >> Y = sim( net , X ) % simulando Y = 1 0 0 0

    Esta simulacin equivale a realizar lo siguiente:

    >> for i = 1:4 V = net.iw{1}* X( : , i ) + net.b{1}; if V>=0, Y(i) = 1; else, Y(i) = 0; end end

    Por lo tanto, realizado el entrenamiento se puede verificar que el producto de la matriz de pesos con cualquier vector de entrada y sumado al bias entrenado, y aplicando la funcin de transferencia correspondiente, la salida total ser igual a la salida deseada.

    Grficamente, esto se puede demostrar cuando se representa en el plano (por existir dos elementos en el vector de entrada x1 y x2), cada vector de entrada simbolizado de manera diferente segn la clase a la que corresponden (salida deseada). Ver figura 2.4.

    >> plotpv( X , Yd ); >> plotpc( net.iw{1} , net.b{1} )

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 23

    Es decir, existe una clasificacin en dos clases diferentes, una clase a un lado de la recta observada en el grfico, y la otra clase al otro lado de la misma recta inclusive esta.

    Para graficar la recta de separacin se procede a la siguiente ecuacin de la recta.

    0bx*)2(wx*)1(w 21 =++ >> w = net.iw{1}; % w(1) y w(2) son los elementos >> b = net.b{1}; % del vector w. >> x1 = 0:0.1:1.5; >> x2 = ( -b - w(1)*x1 ) / ( w(2) ); >> plot( x1 , x2 ) >> axis( [ 0 1.5 -0.5 1.5 ] )

    Figura 2.4. Clasificacin de padrones. La recta es obtenida de los pesos y bias entrenados.

    La clasificacin en clases diferentes se da utilizando rectas (cuando existen dos elementos por vector de entrada), planos (cuando existen tres elementos por vector de entrada), o un hiper-plano, para el caso de ms de tres elementos por cada vector de entrada.

    2.4 Limitacin de la Red Perceptron

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 24

    La red Perceptron cuenta con limitaciones al no poder clasificar padrones linealmente no separables [3].

    Problemas con la Funcin XOR

    La funcin XOR no puede ser representada por una neurona Perceptron, debido a la distribucin de sus padrones o vectores de entrada. Ver figura 2.5.

    >> X = [ 1 1 0 0 1 0 1 0 ] ; >> Yd = [ 0 1 1 0 ]; >> net = newp( [ 0 1 ; 0 1 ] , 1 , 'hardlim' , 'learnp' ); >> net.trainParam.epochs = 300; >> net.trainParam.show = 100; >> net = train( net , X , Yd ); TRAINC, Epoch 0/300 TRAINC, Epoch 100/300 TRAINC, Epoch 200/300 TRAINC, Epoch 300/300 TRAINC, Maximum epoch reached. >> axis( [ 0 200 0 1.5 ] ) >> plotpv( X , Yd ); >> plotpc( net.iw{1} , net.b{1} )

    Figura 2.5. a) Curva de desempeo en 300 iteraciones.

    b) Distribucin de padrones de entrada: XOR.

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 25

    Del grfico 2.5b se ve que es imposible trazar una recta en el plano de tal forma que ubique a cada lado de la misma, cada clase de padrones de entrada existente.

    2.5 Aplicacin: Clasificacin de Vocales

    A continuacin, se realiza la clasificacin de cinco padrones de entrada en dos clases diferentes, donde cada padrn cuenta con 15 elementos. Los padrones de entrada pertenecen a las cinco vocales, las cuales debern de ser clasificadas en vocales fuertes y vocales dbiles. Ver las figuras 2.6a, 2.6b y 2.7.

    111101101101101

    U

    010101101101010

    O

    010010010010010

    I

    111001011001111

    E

    101111101101111

    A =====

    Figura 2.6. a) Cinco vocales como padrones de entrada (1: color blanco y 0: color negro) b) Padrones de entrada

    simbolizados por 1s y 0s.

    Para representar cada padrn, se procede a formar un vector uniendo columna tras otra; resultando as 5 vectores de entrada con 15 elementos cada uno.

    >> AA = [ 1; 1; 1; 1; 1; 1; 0; 0; 1; 0; 1; 1; 1; 1; 1 ] ;

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 26

    >> EE = [ 1; 1; 1; 1; 1; 1; 0; 1; 0; 1; 1; 0; 0; 0; 1 ] ; >> II = [ 0; 0; 0; 0; 0; 1; 1; 1; 1; 1; 0; 0; 0; 0; 0 ] ; >> OO= [ 0; 1; 1; 1; 0; 1; 0; 0; 0; 1; 0; 1; 1; 1; 0 ] ; >> UU = [1; 1; 1; 1; 1; 0; 0; 0; 0; 1; 1; 1; 1; 1; 1 ] ;

    Figura 2.7. Salida deseada para cada padrn de entrada

    y Red neuronal utilizada en la clasificacin.

    >> X = [ AA EE II OO UU ] ; >> Yd = [ 1 1 0 1 0 ; 1 1 0 1 0 ; 1 1 0 1 0 ] ; >> net = newp( [-ones(15,1) ones(15,1) ] , 3 ); >> net = train( net , X , Yd ); % ver figura 2.8 TRAINC, Epoch 0/100 TRAINC, Epoch 6/100 TRAINC, Performance goal met.

    Figura 2.8. Curva de desempeo en 6 iteraciones (E=0).

    000U111O000I111E111A

    ydydydX 321

    x1 x2 x3 . . . x15

    b1

    y1 y2 y3

    b2

    b3

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 27

    >> Y = sim( net, X(:,1) ) % simulando con1ra vocal fuerte

    El vector obtenido es igual al indicado en la tabla de la figura 2.7. Lo mismo debe cumplirse con cada vocal.

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 28

    3. Red Neuronal Lineal

    3.1 Definicin y Caractersticas

    Es similar a la red Perceptron excepto en su funcin de transferencia, que es del tipo lineal. Por ello, el nombre de Red Neuronal Lineal. Esta red tiene un aprendizaje supervisado, y su principal objetivo es minimizar la suma de los cuadrados de los errores al comparar la salida deseada con la salida total de la red [2]. Est basada en la regla de Widrow-Hoff o tambin conocida como regla Least Mean Square (LMS).

    Asimismo, tambin es posible que la red pueda responder a cambios en su ambiente como en su operacin, por ello el nombre de sistemas adaptativos. Su uso es muy comn en procesamiento de seales, control y sistemas de prediccin [2]. La figura 3.1 muestra la estructura de una red lineal simbolizando su funcin de transferencia con una funcin lineal.

    Figura 3.1. Estructura de una Red Lineal [2]

    B Sx1

    W SxR

    1

    Entrada Capa Lineal

    Y = purelin( W * X + B )

    X Rx1

    + Y Sx1

    V Sx1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 29

    3.2 Regla de Aprendizaje

    La regla de aprendizaje es similar al de la red Perceptron, a excepcin que ahora se utiliza una tasa de aprendizaje lr para la actualizacin de los pesos y los bias, tal como lo muestran las siguientes expresiones:

    ( ) ( )( ) ( )E*lrBB

    X*E*lrWW T

    +=+=

    Tales expresiones son obtenidas cuando se busca minimizar la suma del error cuadrtico (sse) [3].

    ( )==

    ==n

    1k

    2d

    n

    1k

    2 )k(y)k(y)k(esse

    Donde:

    n: nmero de elementos del vector yd: vector de salida deseada y: vector de salida total

    La eleccin de la tasa de aprendizaje no puede ser muy grande porque, a pesar que el entrenamiento es sumamente rpido, puede volver a la red inestable (pesos y bias con valores extremadamente grandes). Por otro lado, si la tasa de aprendizaje es pequea, el entrenamiento se hace largo evitando la inestabilidad. Una manera adecuada de elegir la tasa de aprendizaje, se hace utilizando la funcin maxlinlr.

    >> help maxlinlr >> X = [ 0 0 1 1 ; 0 1 0 1 ]; % vectores de entrada >> lr = maxlinlr( X , bias ); % cuando se usa el bias lr = 0.1569

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 30

    3.3 Ejemplo Prctico con la Red Lineal

    Seguidamente se muestra un ejemplo del uso de la red lineal para aproximar el promedio de dos nmeros. Para ello se utiliza la funcin newlin.

    >> help newlin >> X = [ 1 3 5 7 9 ; 11 13 15 17 19 ]; >> Yd = mean( X ); % promedio de entrada >> lr = maxlinlr( X,'bias'); % tasa de aprendizaje >> net = newlin( [ 0 20 ; 0 20 ] , 1 , 0 , lr );

    Luego, se configuran los parmetros de entrenamiento, para finalmente entrenar y simular la red lineal.

    >> net.trainParam.epochs = 2000; >> net.trainParam.show = 500; >> net.trainParam.goal = 0.001; >> net.iw{1} = randn( 1, 2 ); % pesos iniciales >> net.b{1} = randn( 1 ); % bias inicial >> net = train( net , X , Yd ); % ver Figura 3.2 TRAINB, Epoch 0/2000, MSE 1447.36/0.001. TRAINB, Epoch 193/2000, MSE 0.000999512/0.001. TRAINB, Performance goal met.

    Figura 3.2. Curva de desempeo del error

    >> Y = sim( net , X ); >> E = mse( Yd - Y ); % error medio cuadrtico

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 31

    >> X1 = [ 11 ; 21 ]; % simulacin con >> Y1 = sim( net, X1 ) % nuevo vector Y1 = 15.9416

    3.4 Redes Adaptativas

    La figura 3.3 muestra el diagrama de bloques de una red neuronal lineal adaptativa, donde se observa el vector de salida deseada Yd que se compara con la salida total Y, para obtener el error que luego ser minimizado.

    Figura 3.3. Diagrama de Bloques de la Red Lineal Adaptativa [2]

    La funcin adaptwh nos permite disear una red adaptativa, sin embargo esta funcin pertenece a una versin anterior del toolbox de redes neuronales, por ello es necesario ocultar la advertencia de funcin obsoleta con la funcin nntwarn Seguidamente, se muestra un ejemplo del uso de este comando.

    >> t = 1 : 0.002 : 3.5; >> X = cos( sin(2*t) .* t *3 ); >> Yd = 2 * X + 3; >> plot ( t , X , '--' , t , Yd , '*' ) % ver figura 3.4 >> title( ' Entrada: - - , Salida Deseada: * ' )

    +Red

    Lineal Adaptativa

    X entrada

    Yd salida deseada

    -

    +Y salida total

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 32

    Figura 3.4. Vector de Entrada - - y Vector de Salida

    Deseada *

    >> W = randn(1); >> B = randn(1); >> lr = 0.01; >> nntwarn off >> [ Y , E , W , B ] = adaptwh( W , B , X , Yd , lr ); >> plot( t , Y ,'r' , t , Yd ,'ob') % ver figura 3.5.a >> title( ' Salida Total: "-" , Salida Deseada: "o" ' ) >> plot( t , E ), grid % Error (figura 3.5.b) >> Y1 = W * X(1251) + B; >> mse( Yd( 1251 ) Y1 ) ans =

    2.1360e-004

    Figura 3.5. a) Grfico de Salida Total - y Salida

    Deseada o . b) Grfico del error.

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 33

    3.5 Aplicacin: Modelamiento de RTDs

    Los RTD son instrumentos utilizados para medir temperatura. Tienen una representacin lineal y responden al siguiente modelo matemtico.

    )T*1(*RoRt += Donde:

    Rt: es la resistencia de salida Ro: resistencia a 0 C : Coeficiente de Temperatura ( 0.0038 ) T: Temperatura medida

    >> T = 20:10:800; >> a = 0.0038; >> Ro1 = 100; Rt1 = Ro1*(1 + a*T); % PT100 >> Ro2 = 200; Rt2 = Ro2*(1 + a*T); % PT200 >> Ro3 = 500; Rt3 = Ro3*(1 + a*T); % PT500 >> Yd = [ Rt1 / 100; Rt2 / 100; Rt3 / 100 ]; >> %Normalizando la Temperatura (entre el valor max.) >> Tmaxima = 800; >> X = [ T / Tmaxima ; a*ones(size(T)) ]; >> lr = maxlinlr( X , 'bias' ); >> net = newlin( [ -ones(2,1) ones(2,1) ] , 3 , 0 , lr ); >> net.trainparam.epochs = 400; >> net.trainparam.show = 80; >> net.trainparam.goal = 10e-6; >> net = train( net , X , Yd); % Ver figura 3.6 TRAINB, Epoch 0/400, MSE 72.9424/1e-005. TRAINB, Epoch 80/400, MSE 0.000892697/1e-005. TRAINB, Epoch 125/400, MSE 9.21106e-006/1e-005. TRAINB, Performance goal met. >> T1 = 25 / Tmaxima; % Temp Amb. >> Y = 100*sim( net, [ T1 ; a ] ); % simulando

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 34

    Figura 3.6. Grfico de desempeo del error

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 35

    4. Red Perceptron Multicapa

    4.1 Definicin y Caractersticas

    Debido a las limitaciones que presentan las redes lineales al tratar de representar relaciones no lineales entre entradas y salidas deseadas, surgen las redes Multicapa pero con funciones de transferencia no lineal. Por ello, se utiliza el error para actualizar los pesos, desde la ltima capa hacia la primera [2]. Este algoritmo recibe el nombre de Backpropagation. En la figura 4.1 se muestra la estructura de una red Perceptron Multicapa.

    Figura 4.1. Estructura de una Red Perceptron Multicapa [2]

    Entre sus principales caractersticas encontramos:

    Funcin de transferencia no lineal (muchas veces slo la ltima capa tiene una funcin lineal).

    Regla de aprendizaje supervisado. Valores de entrada y salidas reales y/o binarias.

    Entrada 1ra Capa 2da Capa

    Y1C=tansig(W1C * X + B1C ) Y2C=purelin(W2C * Y1C + B2C )

    X Rx1 Y2CS2x1 V2CS2x1 V

    1CS1x1

    Y1CS1x1

    W1C S1xR

    B1C S1x1

    W2C S2xS1

    B2C S2x1

    + +

    1 1

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 36

    4.2 Regla de Aprendizaje

    La regla de aprendizaje Backpropagation de las redes multicapa presentan dos fases. La primera es denominada Feed-Forward donde las entradas se propagan por toda la red desde la capa de entrada hacia la de salida. La segunda recibe el nombre de Feed-Backward, donde los errores se propagan en la direccin contraria al flujo de entrada [6].

    La regla de aprendizaje, al igual que en las redes lineales, est basada en la actualizacin del error por el mtodo del Gradiente Descendiente, por lo tanto, en su forma ms bsica sera:

    1. Inicializar pesos sinpticos y bias. 2. Aplicar un padrn de entrada con su respectiva salida

    deseada. 3. Calcular la salida total recorriendo todas las capas

    ocultas (fase feed-forward).

    )BY*W(Y. . .

    )BY*W(Y)BX*W(Y

    nCC)1n(nCnC

    C2C1C2C2

    C1C1C1

    +=

    +=+=

    Donde:

    n: representa el nmero de capa ( 2 ) : representa la funcin de transferencia

    4. Calcular el error para cada neurona de la capa de

    salida. Si el error es menor a la tolerancia regresar al paso 2, en caso contrario continuar.

    5. Actualizar los pesos de cada neurona, iniciando por la capa de salida.

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 37

    ( ) ( ) ( )jiij x*e* lrw = Donde:

    )YY(*)v( E d' = Error en la

    neurona de la capa de salida.

    =

    =1k

    ' )W*E(*)v( E , Error en las

    neuronas de las capas ocultas.

    ( )( )Y1Y)v( e11)v(

    '

    v

    =

    +=

    lr: Tasa de Aprendizaje

    6. Regresar al paso 2.

    4.3 Ejemplo Prctico con Backpropagation en Aproximacin de Funciones

    En esta seccin se muestra un ejemplo de aproximacin de funciones. Para ello se define un vector lineal de entrada, y un vector de salida deseada conformado por la suma de dos funciones senos.

    >> X = -2 : 0.2 : 2; >> Yd = 2*sin( 2*pi*0.4*X ) - cos( 2*pi*0.2*X ); >> plot( X , Yd , '--' )

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 38

    Luego, se crea la red neuronal Multicapa con la funcin newff. En esta funcin se incluye una matriz con los valores mximos y mnimos por cada elemento de los vectores de entrada, la cantidad de neuronas por capa y la funcin de transferencia utilizada por capa. El entrenamiento bsico utiliza la funcin traingd. Es as, que se opta por una RNA con tres capas. Ocho neuronas en la primera, tres en la segunda y una en la tercera.

    >> net = newff( [ 0 10 ] , [ 8 3 1 ] , { 'tansig' 'tansig' 'purelin' } , 'traingd' ); >> Y = sim( net , X ); % simulacin >> plot( X , Yd , '+' , X , Y , '--' ) % figura 4.2-a

    Luego, se procede a entrenar la red configurando previamente el nmero de iteraciones a 10000, la tasa de aprendizaje a 0.01 y el MSE a 0.0002. Se observa que el entrenamiento es lento sin llegar a alcanzar el mse deseado, pero si logrando una buena aproximacin de la funcin planteada inicialmente.

    >> net.trainParam.epochs = 100000; >> net.trainParam.show = 20000; >> net.trainParam.lr = 0.01; >> net.trainParam.mse = 0.0002; >> net = train( net , X , Yd ); >> Y = sim( net , X ); >> plot( X , Yd , '+' , X , Y , '--' ) %figura 4.2-b >> %PESOS Y BIAS POR CADA CAPA >> W1c = net.iw{1,1} ; % iw: Capa de entrada >> W2c = net.lw{2,1} ; % lw: Segunda Capa >> W3c = net.lw{3,2} ; % lw: Tercera Capa >> B1c = net.b{1,1} ; %bias 1ra capa >> B2c = net.b{2,1} ; %bias 2da capa >> B3c = net.b{3,1} ; %bias 3ra capa

    4.4 Variantes del Aprendizaje Backpropagation

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 39

    El aprendizaje Backpropagation puede ser mejorado de dos formas diferentes: por heurstica, y utilizando potentes mtodos de optimizacin [2].

    Figura 4.2. a) Sin entrenamiento. b) Resultado de 10000

    iteraciones. ( +: funcin por aproximar. --: funcin aproximada )

    Entre las principales variantes tenemos:

    * Aprendizaje con Momento: reemplazar en la funcin newff el string traingd por traingdm.

    * Aprendizaje con Tasa de Aprendizaje Adaptativo: reemplazar en la funcin newff el string traingd por traingda.

    * Aprendizaje con Momento y Tasa de Aprendizaje Adaptativo: reemplazar en la funcin newff el string traingd por traingdx.

    * Aprendizaje con Backpropagation Resileint: reemplazar en la funcin newff el string traingd por trainrp.

    * Aprendizaje con Aproximacin Levenberg-Marquardt (mtodo de Newton): reemplazar en la funcin newff el string traingd por trainlm.

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 40

    El lector es libre de elegir cualquiera de estas otras formas de aprendizaje para la red Backpropagation, que en la mayora de veces trae consigo el uso de un menor nmero de iteraciones.

    4.5 Aplicacin: Modelamiento de un Termistor

    Los Termistores tambin son instrumentos utilizados para medir temperatura. Tienen una representacin no lineal y, algunos de ellos, responden al siguiente modelo matemtico.

    ( ) )To1Tt1( eRoRt = Donde:

    Rt: es la resistencia de salida Ro: resistencia a la temperatura de referencia To : constante del material To: temperatura de referencia

    >> Tt = 10:2:120; >> beta = 21; >> Ro = 90; >> To = 25; >> Rt = Ro*exp(beta*(1./Tt - 1/To)); % termistor >> Yd = [ Rt / 100 ]; >> %Normalizando la Temperatura (entre el valor max.) >> Tmaxima = 120; >> X = [ Tt ; beta*ones(size(Tt)) ] / Tmaxima; >> lr = maxlinlr( X , 'bias' ); >> net = newff( [ -ones(2,1) ones(2,1) ] , [ 4 2 1 ] , { 'tansig' 'tansig' 'purelin' } , 'trainlm' ); >> net.trainparam.epochs = 4000; >> net.trainparam.show = 800; >> net.trainparam.goal = 10e-6; >> net = train( net , X , Yd); % Ver figura 4.3

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 41

    TRAINLM, Epoch 0/4000, MSE 0.288138/1e-005, Gradient 23.3935/1e-010 TRAINLM, Epoch 800/4000, MSE 3.21572e-005/1e-005, Gradient 0.034127/1e-010 TRAINLM, Epoch 840/4000, MSE 9.88634e-006/1e-005, Gradient 0.174969/1e-010 TRAINLM, Performance goal met.

    Figura 4.3. Grfico del desempeo del error.

    Finalmente, se verifica el desempeo de la red realizando la respectiva simulacin.

    >> Y = sim( net , X ); % simulando >> mse( Yd - Y) ans =

    9.8863e-006

    >> T1 = 25.5; % Temp. Ambiente >> Y = 100*sim( net, [ T1 ; beta ] / Tmaxima);

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 42

    5. Redes Neuronales Auto Organizativas

    5.1 Definicin y Caractersticas

    Son redes capaces de aprender a detectar regularidades y correlaciones en sus entradas, y por consiguiente adaptar sus respuestas futuras a esas entradas [2]. Asimismo, se caracterizan por presentar un tipo de aprendizaje competitivo y/o cooperativo. Es decir, las neuronas compiten y/o cooperan unas con otras con el fin de llevar a cabo una determinada tarea. Con esto se espera que cuando se presente a la red cierta informacin de entrada, slo una de las neuronas de salida de la red, o una por cierto grupo de neuronas, se active (alcance su valor de respuesta mximo). Por tanto las neuronas compiten para activarse quedando finalmente una, o una por grupo, como neurona vencedora y as el resto quedan anuladas siendo forzadas a sus valores de respuesta mnimos [2].

    Entre las redes auto-organizativas ms utilizadas encontramos la Red Competitiva, los Mapas de Auto-organizacin (SOM) y la Red Learning Vector Quantization (LVQ) [2].

    5.2 Red Competitiva y Regla de Aprendizaje

    La red competitiva se identifica por contar con una capa de neuronas con un entrenamiento no supervisado. Es decir, la salida es obtenida a partir de una competencia entre sus neuronas, dando como ganadora aquella que obtuvo el mayor valor de salida (figura 5.1). El algoritmo:

    1. Inicializar los pesos sinpticos y bias.

    2. Aplicar un padrn de entrada y determinar la neurona vencedora, cuyos pesos sinpticos asociados

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 43

    resultarn ser los ms parecidos al vector de entrada. La comparacin se realiza con la distancia eucldea definida por [3], seguida de la funcin de transferencia compet.

    ( )=

    =1j

    2j,iji wxd

    Donde:

    xj: es el componente j-simo del vector de entrada X. i: representa la i-esima neurona de la red.

    Figura 5.1. Estructura de una Red Competitiva [2]

    3. Localizada la neurona vencedora, se actualizan los pesos correspondientes a dicha neurona (de preferencia utilizar el aprendizaje tipo Instar [2]).

    iii

    j,ijij,ij,i

    y*)k1(b*kb)wx(*y*ww

    +=+=

    B Sx1

    W SxR

    1

    Entrada Capa Competitiva

    Y = compet( -dist( W, X ) + B )

    X Rx1

    + C Y Sx1

    V Sx1

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 44

    Donde: : Coeficiente de aprendizaje que decrece de 1 a

    0 conforme aumenta el nmero de iteraciones. yi : representa la salida de la neurona vencedora. k : constante para bias (default = 0.999).

    4. Retornar al paso 2.

    5.3 Ejemplo Prctico con la Red Competitiva

    A continuacin se muestran cinco vectores con dos elementos cada uno. Asimismo, existen dos pares de vectores muy parecidos entre s.

    >> X = [ 3 4 -8 4 -7 2 -1 7 3 8 ];

    Entonces, se realiza la clasificacin o agrupacin de esos cinco vectores, en tres clases distintas. Para ello se utiliza una tasa de aprendizaje de 0.001 para que el entrenamiento sea lento y seguro.

    >> net = newc( [-10 10 ;-10 10] , 3, 0.001); >> net.trainParam.epochs = 1000; %cant. de iterac. >> net.trainParam.show = 250; %mostrar c/250 >> net = train( net , X ); TRAINR, Epoch 0/1000 TRAINR, Epoch 250/1000 TRAINR, Epoch 500/1000 TRAINR, Epoch 750/1000 TRAINR, Epoch 1000/1000 TRAINR, Maximum epoch reached. >> Y = sim(net , X); % simulacin de la red >> full( Y ) % transforma matriz sparse ans = 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 45

    >> Yc = vec2ind(Y) Yc = 1 3 2 1 2

    Por lo tanto, las columnas 1 y 4 (vectores de entrada) de la matriz X, corresponden a una primera clase. Luego, la nica columna 2 corresponde a la clase 3. Finalmente, las columnas 3 y 5 corresponden a la segunda clase.

    Esto se observa en la figura 5.2, donde cada vector peso (filas de la matriz W) es muy prximo a algunos vectores de entrada. Este grfico slo puede ser representado cuando los vectores de entrada slo presentan dos o tres elementos.

    >> W = net.iw{1}; >> B = net.b{1}; >> hold on >> plot( X(1,:) , X(2,:), '+r'); >> plot( W(:,1) , W(:,2),'ob'); >> axis( [-10 6 -3 11] ) %personalizando la presentacin >> hold off

    Figura 5.2. Representacin en el plano de vectores de entrada

    + y vectores de pesos o.

    Verificando el primer vector de entrada con toda la matriz de pesos y bias entrenado:

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 46

    >> a = -dist( W , X( :,1 ) ); >> y = full( compet( a , B ) ) y = 1 0 0

    Este ejemplo puede ser extendido para un nmero mayor de vectores de entrada, mayor nmero de elementos por vector de entrada, as como una mayor cantidad de neuronas para aumentar el nmero de clases diferentes.

    5.4 Red LVQ y Regla de Aprendizaje

    Esta red cuenta con dos capas y es del tipo hbrida, porque cuenta con un entrenamiento supervisado y uno no supervisado (ver figura 5.3). Tiene como principal objetivo la clasificacin de padrones, y donde cada neurona de la primera capa es asignada a una sub-clase que corresponde a su vez a una neurona de la segunda capa (clase) [2].

    Figura 5.3. Estructura de una Red Neuronal LVQ [2]

    A continuacin, la regla de aprendizaje de la red LVQ

    W1C S1xR

    Entrada Capa Competitiva Capa Lineal

    Y1C=compet( -dist(W1C, X) ) Y2C=purelin(W2C * Y1C)

    X Rx1

    C

    Y2CS2x1 V2CS2x1

    W2C S2xS1

    V1CS1x1 Y1C

    S1x1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 47

    1. Por cada iteracin, se aplica un vector de entrada X a la red, para calcular la distancia a cada vector prototipo.

    2. Las neuronas ocultas compiten entre s, de tal forma que una neurona i gana la competencia haciendo que el i-simo elemento de la salida de la primera capa se fije en 1.

    3. La salida de la primera capa es multiplicada por los pesos de la segunda capa W2C, para obtener la salida final Y2C, la cual tiene solamente un elemento diferente de cero.

    En esta red neuronal muchas neuronas de la primera capa representarn sub-clases, que a su vez formarn parte de otra clase (neurona de la segunda capa). La primera capa cuenta con una funcin de transferencia competitiva, mientras que la segunda es del tipo lineal. La figura 5.4, muestra un ejemplo de una red LVQ.

    Figura 5.4. Red Neuronal LVQ

    5.5 Ejemplo Prctico con la Red LVQ

    x1 x2

    Sub-Clases

    Clases

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 48

    Se presenta ocho vectores de entrada con dos elementos cada uno. Donde se pre-define dos grupos de vectores diferentes. El primer grupo conformado por cinco vectores, y el segundo por tres. Por lo tanto, se hace uso de la red LVQ para realizar la clasificacin respectiva.

    >> X = [ 1 2 -3 4 -2 2.5 3.2 -1.8 2.1 1 4 3 3 3.2 2.4 3 ];

    Se utiliza un vector de salida deseada para la segunda capa (indicando las dos clases existentes), la cual determinar la salida deseada.

    >> Yd = [ 1 1 2 1 2 1 1 2 ]; >> Y = ind2vec( Yd ); %array o matriz sparse

    Se sealan dos sub-clases para cada una de las 2 clases existentes, lo cual da un total de 4 sub-clases. Es decir, existirn 4 neuronas en la primera capa, y 2 en la segunda. De esta manera, en la funcin newlvq, se indica los valores mximos y mnimos por vector de entrada con ayuda de la funcin minmax; y tambin, se utiliza la variable PORC para indicar el grado de porcentaje de aceptacin para cada neurona de la segunda capa. La suma no debe exceder el valor de 100.

    >> PORC = [ 50 50 ] / 100; >> net = newlvq( minmax( X ) , 4 , PORC );

    Luego, se verifica la matriz de pesos de la segunda capa, la cual no sufrir modificacin alguna durante la etapa de entrenamiento.

    >> net.lw % pesos de la segunda capa >> net.lw{2} >> net = train( net , X , Y ); TRAINR, Epoch 0/100 TRAINR, Epoch 2/100 TRAINR, Performance goal met.

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 49

    >> Y = sim( net , X ); % simulacin de la red >> Yc = vec2ind( Y ); >> net.iw{1} % comprobacin ans = 0.7182 2.4802 0.5350 2.4850 0.3956 2.5295 0.5000 2.5000 >> net.lw{2} %comprobacin ans = 1 1 0 0 0 0 1 1 >> net.b ans = [] []

    En los pesos de la segunda capa, las columnas representan las sub-clases y las filas representan las clases, Por ello, estos pesos slo tienen un 1 en cada columna, en cuanto que los dems elementos son cero. La fila en la cual se presenta el 1 ndica la clase a la cual la subclase pertenece. Por lo general, se conecta un nmero igual de neuronas ocultas a cada neurona de salida, para que de esta manera cada clase pueda ser conformada por el mismo nmero de regiones convexas [2].

    5.6 Aplicacin: Compresin de Imgenes

    Se toma sub-bloques de una imagen en tonos de gris y se convierte a vectores columnas, que servirn como padrones de entrada a la red competitiva. Esta red realizar el trabajo de agrupar los vectores similares, para codificarlos por un nmero determinado de bits.

    >> load imdemos %cargamos imgenes del Matlab >> I = double( tire ); %seleccionamos una de ellas

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 50

    >> II = I( 1:64 , 1:64 ); %Imagen de 64 x 64 pixels

    Tomamos bloques de 2x2 pixeles en la imagen II, y lo transformamos em vectores de 4x1.

    >> X = im2col( II , [2 2] , 'distinc' ); >> size( X ) %1024 padrones de entrada >> NN = 64; %nmero de neuronas >> net = newc( [ zeros(4,1) 255*ones(4,1) ] , NN , 0.001); >> net.trainParam.epochs = 3000; %cant. de iterac. >> net.trainParam.show = 500; %mostrar c/200 >> net = train( net , X ); TRAINR, Epoch 0/3000 TRAINR, Epoch 500/3000 TRAINR, Epoch 1000/3000 TRAINR, Epoch 1500/3000 TRAINR, Epoch 2000/3000 TRAINR, Epoch 2500/3000 TRAINR, Epoch 3000/3000 TRAINR, Maximum epoch reached. >> Y = sim( net , X ); % simulacin >> P = [ X( : , 1 ) X( : , 3 ) ] % vectores parecidos P = 4 4 6 2 3 4 3 3 >> Y = sim( net , P ) %activan la misma neurona 58 Y = (58,1) 1 (58,2) 1

    Luego, pasamos a reconstruir la imagen, a partir de los vectores pesos que representan a todo el conjunto de vectores de entrada. Finalmente, retornamos al tamao original de 64 x 64 pixels con ayuda de la funcin col2im.

    >> W = net.iw{1}; % matriz de pesos 64 x 4 >> for i =1:1024

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 51

    Y = sim( net , X( : , i ) ); % Para conocer la neurona Y = full( Y ); %.activada, por medio del valor [ m , n ] = max( Y ); % mximo en la salida Y Xr( i , 1:4 ) = W( n , : ) ; % representacin de la imagen end % a partir de los vectores pesos >> Xr = Xr' ; % traspuesta >> IIr = col2im( Xr , [2 2] , [64 64] , 'distinc' ); >> colormap( gray ( 256 ) ); % configuracin a gris >> subplot(121), image( II ), title('Imagen Original') >> subplot(122), image( IIr ), title('Imagen Reconstruida')

    La figura 5.5 muestra la imagen original y la imagen reconstruida despus de la compresin con la red competitiva.

    Figura 5.5. Comparacin entre imagen original y reconstruida

    La imagen original tiene un total de KBytes41024x8

    8x64x64 = , mientras que la codificada o reconstruida tiene

    KBytes75.01024x8

    6x1024 = .

    Esto explica que en la imagen reconstruida se ha utilizado 6 bits ( log2(64 neuronas) ) por cada vector de entrada

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 52

    6. Red Neuronal Recurrente

    6.1 Red de Hopfield. Definicin y Configuracin

    La red de Hopfield es del tipo recurrente, pues la salida de dicha red es dinmica lo que indica que despus de aplicar una nueva entrada, la salida es calculada y realimentada para modificar tal entrada Esta recurrencia asegura la estabilidad haciendo que sucesivas iteraciones, produzcan cambios de salida cada vez ms pequeas hasta lograr que las salidas sean constantes. Tambin es conocida como red con memoria auto asociativa [1]. Ver figura 6.1.

    Figura 6.1. Estructura de una red Hopfield [2].

    6.2 Regla de Aprendizaje

    La red de Hopfield no tiene una regla de aprendizaje, por lo tanto no existe entrenamiento.

    B Sx1

    W SxR

    1

    Cond. Iniciales Capa Lineal Saturada

    Y = satlins( W * X + B )

    X Rx1

    +Y Sx1

    V Sx1

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 53

    Sin embargo, es posible obtener la matriz de pesos a partir de un procedimiento apoyado en la funcin de alta ganancia de Lyapunov [3].

    ybWyy21)y(V TT =

    ( ) 0B , X*XW n1i

    Tii ==

    =

    Donde:

    W, B: matriz de pesos y vector de bias X: vector de entrada y: vector de salida de la red b: vector de ganancias n: nmero de padrones de entrada V(y): funcin Lyapunov

    Se dice que la red es estable si se cumple lo siguiente. Al presentar un padrn de entrada incorrecto, la red estabilizar en el valor ms prximo (o valor correcto) al padrn presentado.

    6.3 Ejemplo Prctico con la Red Hopfield

    En esta seccin se muestra un ejemplo prctico del uso de la red de Hopfield para el reconocimiento de cuatro vectores con seis elementos cada uno.

    >> X1 = [ 1 ; 1 ; 1 ; 1 ; 1 ; 1 ] ; >> X2 = [ 1 ; -1 ; -1 ; -1 ; 1 ; -1 ] ; >> X3 = [ -1 ; 1 ; 1 ; 1 ; -1 ; 1 ] ; >> X4 = [ -1 ; 1 ; 1 ; -1 ; 1 ; -1 ] ; >> X = [ X1 X2 X3 X4 ] ; >> net = newhop( X );

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 54

    >> W = net.LW{ 1 } ; %matriz de pesos (ver figura 6.2) >> B = net.b{ 1 } ; %vector de bias

    Figura 6.2. Estructura de la red Hopfield del ejemplo prctico.

    Seguidamente,, se verifica el reconocimiento de los dos ltimos vectores X3 y X4.

    >> nVect = 1; % cantidad de vectores a verificar >> Xr3 = sim( net , nVect , [ ] , X3 ) ; >> [ X3 Xr3 ] % vectores idnticos >> Xr4 = sim( net , nVect , [ ] , X4 ) ; >> [ X4 Xr4 ] % vectores idnticos

    Luego, para corregir un vector ruidoso haciendo uso de la red de Hopfield, procedemos de la siguiente manera.

    >> nVeces = 100; % simula 100 veces >> XR2 = { [ 1 ; -1 ; -1 ; -1 ; 1 ; 1 ] } ; %cell array >> Y = sim( net , { nVect nVeces } , { } , XR2 ) ; >> Y{ 100 } % muestra la ltima simulacin >> [ X2 Y{ 100 } ] % idnticos

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 55

    Una caracterstica importante en las redes de Hopfield radica en la definicin de los vectores de entrada. Cuanto ms diferentes son entre s, mayores son las oportunidades de correccin ante la presencia de errores.

    6.4 Aplicacin: Reconocimiento de Dgitos Impares con Hopfield

    A continuacin, se definen los primeros cinco dgitos impares en un arreglo de 10x7, tal como lo muestra la figura 6.3. Adems, se transforma cada arreglo de 10x7 a un vector de 70x1, concatenando las filas y representando las casillas de color negro por -1 y las de color blanco por 1. Estos vectores son denominados D1, D2, D3, D4 y D5, respectivamente.

    Figura 6.3. Cinco dgitos impares en un arreglo de 10x7

    >> whos D1 D2 D3 D4 D5 Name Size Bytes Class D1 70x1 560 double array D2 70x1 560 double array D3 70x1 560 double array D4 70x1 560 double array D5 70x1 560 double array >> D = [ D1 D2 D3 D4 D5 ]; >> net = newhop( D ); >> net.lw >> nVect = 1; % verificando el segundo dgito >> D2r = sim( net , nVect , [] , D2 ) ; >> any( D2 D2r ) % vectores iguales

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 56

    ans = 0

    Finalmente, se altera el cuarto dgito simulando la presencia de un ruido, tal como lo muestra la figura 6.4. Dicho arreglo, tambin de 10x7, es transformado a un vector de 70x1 y es representado por la variable D4ruido.

    >> nVeces = 100; % simula 100 veces >> D4ruido = { D4ruido }; >> Y = sim( net , { nVect nVeces } , { } , D4ruido ) ; >> Y{ 100 } % muestra la ltima simulacin >> any( D4 Y ) % vectores iguales ans = 0

    Figura 6.4. Cuarto dgito impar con ruido

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 57

    7. Red Neuronal Radial Basis Function

    7.1 Definicin y Caractersticas

    Es un tipo de red conformada por dos capas. La primera con una funcin de transferencia Radial Basis (gaussiana), y la segunda con funcin de transferencia lineal. Esta red, a diferencia de la Perceptron Multicapa, necesita un nmero mayor de neuronas en su primera capa, sin embargo slo necesita de una fraccin pequea de tiempo para el entrenamiento de sus pesos [4]. Su principal aplicacin es la aproximacin de funciones y la clasificacin de padrones [2]. La figura 7.1 muestra la estructura de una red RBF.

    Figura 7.1. Estructura de una Red Neuronal RBF

    7.2 Solucin al Problema de la Funcin XOR

    Tal como se vio en la seccin 2.4, la red Perceptron de una capa es insuficiente para representar la funcin XOR. Ello se debe a la presencia de padrones

    Entrada Capa Radial Basis Capa Lineal

    Y1C=radbasis( dist(W1C, X),B1C ) Y2C=purelin(W2C * Y1C, B2C )

    X Rx1 Y2CS2x1 V2CS2x1 V

    1CS1x1

    Y1CS1x1

    W1C S1xR

    B1C S1x1

    W2C S2xS1

    B2C S2x1

    + +

    1 1

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 58

    linealmente no separables. Por lo tanto, con el uso de la red Radial Basis Function, se lograr representar dicha funcin. Se introducen los vectores de entrada y de salida deseada.

    >> X = [ 1 1 0 0 ; 1 0 1 0 ] ; >> Yd = [ 0 1 1 0 ] ; >> net = newrb( X , Yd ); % entrenamiento NEWRB, neurons = 0, SSE = 0.947368 >> X1 = X( :, 1 ); >> Y = sim( net , X1 ) % simulacin >> X2 = X( :, 2 ); >> Y = sim( net , X2 ) >> X3 = X( :, 3 ); >> Y = sim( net , X3 ) >> X4 = X( :, 4 ); >> Y = sim( net , X4 ) %prcticamente igual a 0

    Finalmente, los tamaos y contenidos de las matrices de pesos y bias de esta red neuronal resultan ser:

    >> net.iw{1} % pesos de la primera capa >> net.lw{2} % pesos de la segunda capa

    >> net.b{1} % bias de la primera capa >> net.b{2} % bias de la segunda capa

    De esta manera, esta red RBF cuenta con dos capas. En la primera capa cuatro neuronas, y en la segunda una neurona. Ver figura 7.2.

    7.3 Aplicacin: Prediccin de Seales Temporales

    Seguidamente, se utiliza la red RBF para predecir muestras hacia delante, en una seal temporal compuesta por la suma de dos ondas cosenos de frecuencias diferentes.

    >> Fs = 100; % se define la frecuencia de muestreo. >> n = 0:Fs-1; % se define el tiempo discreto >> x = -cos( 2*pi*5*n/Fs + pi/4 ) + cos( 2*pi*2*n/Fs );

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 59

    >> plot( n , x , * ), gris % Ver figura 7.3

    Figura 7.2. Red Neuronal RBF

    Figura 7.3. Grfico de 100 muestras de la seal temporal

    Luego, se establecen 6 muestras de entrada para la primera capa y una muestra de salida para la segunda capa. Y, se procede a reacomodar (desfasar) las muestras de entrada a la red, de tal forma que las primeras seis muestras ingresen a la red, y la sptima que corresponda a la salida deseada. De igual manera, de la segunda a la sptima muestra ingresen a la red, con la octava muestra correspondiente a la salida

    x1 x2

    1ra Capa

    2da Capa

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 60

    deseada. Este criterio se contina hasta cubrir las primeras 99 muestras. A continuacin se muestra un ejemplo del uso de la funcin delaysig para la operacin de desfasado en un vector de 10 muestras.

    >> A = 1:10; % vector con 10 muestras >> nntwarn off % para ocultar advertencias >> B = delaysig( A , 5 ); % crea 6 retardos en el vector A B = 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 0 0 1 2 3 4 5 6 7 8 0 0 0 1 2 3 4 5 6 7 0 0 0 0 1 2 3 4 5 6 0 0 0 0 0 1 2 3 4 5 >> nntwarn off % evita mensajes de advertencia >> X = delaysig( x , 5 ); % lo mismo al vector de datos X

    Se debe asignar al vector de salida deseada Yd, una muestra que corresponde a la prediccin.

    >> for i = 1:99, Yd(i) = X( 1 , i + 1 ); end >> net = newrb( X( : , 1:99 ) , Yd ); % ver figura 7.4 NEWRB, neurons = 0, SSE = 63.3114 NEWRB, neurons = 25, SSE = 0.462873 NEWRB, neurons = 50, SSE = 0.0224332 NEWRB, neurons = 75, SSE = 0.000253273 >> size( net.iw{1} ) %99 neuronas para la 1ra capa >> size( net.lw{2} ) % 1 neurona para la 2da capa

    Para verificar el desempeo de la red, se procede a ingresar de la muestra 13ava a la 18ava, para predecir la 19ava.

    >> X1 = fliplr( x( 13:18 ) ) ; % giramos la entrada >> Y = sim( net , X1 ); >> [ Y x(19) ] ans = -1.6251 -1.6251

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 61

    Lo mismo, con las muestras 94ava a 99ava para predecir la 100ava

    >> X2 = fliplr( x( 94:99 ) ) ; % giramos la entrada >> Y = sim( net , X2 ); >> [ Y x(100) ] ans = 0.1011 0.1011

    Finalmente, predecimos las muestras 101ava, 102ava y 103ava y lo graficamos junto a la seal inicial x

    >> X3 = fliplr( x( 95:100 ) ) ; %giro >> Y_101 = sim( net , X3 ); >> X4 = fliplr( [ x( 96:100 ) Y_101 ] ) ; %giro >> Y_102 = sim( net , X4 ); >> X5 = fliplr( [ x( 97:100 ) Y_101 Y_102 ] ) ; %giro

    Figura 7.4. Grfico de desempeo de la red

    >> Y_103 = sim( net , X5 ); >> eje1 = 0:99; >> eje2 = 100:102; >> plot(eje1, x, xb, eje2, [Y_101 Y_102 Y_103 ], or) >> % ver figura 7.5: muestras pasadas y predichas

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 62

    Figura 7.5. Grfico de 100 muestras de la seal temporal ms 3

    muestras predichas

  • Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 63

    Bibliografa

    [1] BONIFACIO, Martn del Brio. Redes Neuronales y Sistemas Borrosos. 2da Edicin. Alfa y Omega. 2007

    [2] DEMUTH, Howard, HAGAN Martin and BEALE, Mark. Neural Network TOOLBOX Users Guide. The MathWorks Inc. 2005.

    [3] HAYKIN, Simon. Neural Networks. A Comprehensive Foundation. 2da Edicin. Prentice Hall 1999.

    [4] HAYKIN, Simon. Adaptive Filter Theory. Cuarta Edicin. Prentice Hall 2001.

    [5] VELLASCO, Marley. Ementa de Redes Neurais. Material del Curso de Redes Neuronales Artificiales en el Programa de Maestra. PUC- RIO. 1995. Brasil.

    [6] WASSERMAN, Philip D. Neural Computing: Theory and Practice. Van Nostrand Preinhold. 1989.

    [7] Introduccin a las Redes Neuronales Artificiales. Desarrollado por Alfredo Catalina Gallego http://www.gui.uva.es/login/13/redesn.html

    [8] Tutorial Redes Neuronales contiene Teoria General http://www.gc.ssr.upm.es/inves/neural/ann2/anntutorial.html

    Simulacin de Redes Neuronales con Matlab

    Mg. Pedro Freddy Huaman Navarrete 64