Está en la página 1de 13

INTRODUCCION AL PERCEPTRON MULTICAPA

JEFFERSON ENRIQUEZ MELO DIMAS FERNANDO MANUEL FELIPE ZAPATA BALANTA JOHANN QUIONES DIAZ

Universidad Santiago de Cali, Facultad de Ingenieras, Programa de Electrnica, Redes Neuronales Artificiales Cali, Valle del Cauca, Colombia Abril 26/2013

Resumen
El siguiente trabajo pretende introducirnos en el mundo de las redes neuronales a partir de operaciones bsicas de MLP, para lo cual se utiliza de herramienta principal el software Matlab y su toolbox de redes neuronales artificiales donde se encuentran las funciones y logaritmos esenciales para el trabajo con dichas RNA. Este trabajo contiene el desarrollo de una gua de introduccin a las MLP, en el desarrollo detallaremos su composicin para que sirve y cmo podramos emplear estas herramientas para desarrollar problemas que el Perceptron no puede realizar. Palabras clave: Perceptron multicapa, MLP, redes neuronales artificiales, RNA. ABSTRACT The following paper aims to enter the world of neural networks from MLP basic operations, for which the main tool used Matlab software and its neural network toolbox where the functions and logarithms essential for working with such RNA. This work contains the development of an introductory guide to the MLP, the development will detail its composition that it serves and how we could use these tools to develop problems that can not Perceptron. Keywords: Multilayer Perceptron, MLP, artificial neural networks, RNA.

OBJETIVOS

1.

Conocer la manera como se pueden simular redes neuronales tipo MLP con el MATLAB Realizar algunos
ejemplos a partir de la teora tratada.

Todo parece indicar que el cerebro funciona de forma paralela y distribuida, siendo las neuronas los elementos computacionales. Estas son relativamente simples y la complejidad del funcionamiento de este rgano parece que radica en los esquemas paralelos de interconexin.

2.

Realizar algoritmos o funciones en Matlab que nos permitan manipular las redes neuronales. Verificar la esencia de aprendizaje de una red neuronal y sus determinadas caractersticas. Reconocer la importancia y alcance de las redes neuronales en cualquier campo de las ciencias. Conocer las funciones que posee el MATLAB para implementar redes tipo MLP.

3.

2. EL PERCEPTRON MULTICAPA (MLP).


2.1 Principios bsicos del MPL.

4.

5.

1. INTRODUCCION
El desarrollo actual de la ciencia se dirige al estudio de las capacidades humanas como una fuente de nuevas ideas para el diseo de las mquinas. As, la inteligencia artificial es un intento por descubrir y describir aspectos de la inteligencia humana que puedan ser simulados mediante mquinas. Las redes neuronales son una forma de emular otra de las caractersticas propias de los humanos: la capacidad de memorizar y asociar hechos. Si se examina con atencin aquellos problemas que no pueden expresarse a travs de un algoritmo se observa que todos tienen una caracterstica comn: la experiencia As, parece claro que una forma de aproximarse a este tipo de problemas consiste en la construccin de sistemas que sean capaces de reproducir la caracterstica humana de acudir a la experiencia acumulada.

El Perceptron multicapa es una red neuronal artificial, es uno de los tipos de redes ms comunes. Se basa en otra red mas simple llamada Perceptron simple solo que el nmero de capas ocultas puede ser mayor o igual que una. Es una red unidireccional (feedforward). La arquitectura tpica de esta red es la siguiente:

Fig(1)
El Perceptron multicapa puede totalmente o localmente conectado. Las capas pueden clasificarse en tres tipos: Capa de entrada: Constituida por aquellas neuronas que introducen los patrones de entrada en la red. En estas neuronas no se produce procesamiento. ser

Capas ocultas: Formada por aquellas neuronas cuyas entradas provienen de capas anteriores y cuyas salidas pasan a neuronas de capas posteriores. Capa de salida: Neuronas cuyos valores de salida se corresponden con las salidas de toda la red.

conjunto de patrones dados como ejemplo y sus salidas correspondientes. Y despus utilizar esa misma relacin a nuevos vectores de entrada con ruido o incompletos, dando una salida activa si la nueva entrada es parecida a las presentadas durante el aprendizaje.

Cuando ninguna salida de las neuronas es entrada de neuronas del mismo nivel o de niveles precedentes, la red se describe como propagacin hacia delante. Cuando las salidas pueden estar conectadas como entradas de neuronas de niveles previos o del mismo nivel, incluyndose ellas mismas, la red es de propagacin hacia atrs. Las redes de propagacin hacia atrs que tiene lazos cerrados son sistemas recurrentes.

2.2Aplicaciones
El perceptrn multicapa (de aqu en adelante MLP, MultiLayer Perceptron) se utiliza para resolver problemas de: 2.2.1 Segmentacin de Imgenes: En el modelo de MLP existe un campo especialmente en la aplicacin al Procesamiento de Imgenes siendo este un campo de aplicacin de la Inteligencia Artificial el cual se basa en distintas tcnicas, las cuales estn especializadas en forma individual a la resolucin de un problema especfico relacionado precisamente con el procesamiento de la imagen. Los problemas a los cuales se enfoca el procesamiento de imgenes, pueden agruparse en cinco categoras fundamentales, las cuales son: La mejora o adaptacin de la imagen. Clasificacin y segmentacin de objetos y texturas. Compresin de imgenes. El anlisis tridimensional de imgenes planas (visin estereoscpica). El anlisis de la imagen en movimiento. 2.2.2 Reconocimiento de patrones: El reconocimiento de patrones es el reconocimiento de caractersticas nicas que identifican un sujeto de los dems de la misma especie. Por ejemplo podemos afirmar que las huellas digitales en los humanos poseen PATRONES o

2.2Propagacin (Backpropagation).

hacia

atrs

La propagacin hacia atrs un algoritmo de aprendizaje supervisado que se usa para entrenar redes neuronales artificiales. El algoritmo emplea un ciclo propagacin adaptacin de dos fases. Una vez que se ha aplicado un patrn a la entrada de la red como estmulo, este se propaga desde la primera capa a travs de las capas superiores de la red, hasta generar una salida.

Fig(2) Un punto importante en la red de retro propagacin es su capacidad de auto adaptar los pesos de las neuronas de las capas intermedias para aprender la relacin que existe entre un

caractersticas indiscutibles que identifican la huella digital de una persona respecto a la de otras personas. Se han hecho muchos estudios de la anatoma humana y se ha llegado a la conclusin de que los odontogramas y las formas de las orejas tambin poseen patrones que identifican a una persona respecto a las otras. De modo similar se pueden encontrar patrones para diferenciar y reconocer cada uno de los billetes de las diferentes denominaciones.

2.2.3 Comprensin de datos La compresin de datos es la reduccin del volumen de datos tratables para representar una determinada informacin empleando una menor cantidad de espacio. Al acto de compresin de datos se denomina compresin, y al contrario descompresin.

3. GUIA NUMERO 2 3.1 Aprendizaje de la funcin XOR


Anteriormente vimos el problema relacionado al XOR y se observ que un solo Perceptron no puede solucionar esta incgnita, gracias a este parntesis en la historia se pudo avanzar ms en investigaciones llegando a mtodos como lo es MPL. Se abre una interrogacin y se pretende responderla: Que conclusin se puede obtener procedimiento realizado en el punto 2.1? del

met_ent='traingdm' case 4 met_ent='traingdx' otherwise met_ent='traingda' end red=newff(minmax(x),[10 1],{'tansig','purelin'},met_ent); red.trainParam.epochs=n; figure; red=train(red,x,y); button = questdlg('Ver Superficie?',... 'Ver Superficie','Si','No','No'); if strcmp(button,'Si') figure;hold on;axis([-0.2 1.2 -0.2 1.2]),title('Azul=Salida en Cero Rojo=Salida en Uno') plot(x(1,1),x(2,1),'ob','LineWidth',7); plot(x(1,4),x(2,4),'ob','LineWidth',7); plot(x(1,2:3),x(2,2:3),'or','LineWidth',7) ; for i=-0.1:0.1:1.1 for j=-0.1:0.1:1.1 yred=sim(red,[i;j]); if yred>0.7 plot(i,j,'or'); end; if yred<0.3 plot(i,j,'ob'); end; end; end; hold off elseif strcmp(button,'No') disp('El programa ha terminado') end

Se crea la funcin y es llamada en el Command Window

xorback(1,150)

'TRAINGD'
Su respuesta es sujeta a este nivel de iteraciones que grficamente se da como en la Fig() es claro que el margen de error es de casi

Se crea la funcin de llamada a xorback como el siguiente cdigo:


function xorback(metodo,n) close all; x=[0 0 1 1; 0 1 0 1]; y=[0 1 1 0]; switch metodo case 1 met_ent='traingd' case 2 met_ent='traingda' 2 case 3

Fig(3)

De esta forma observamos que a 150 iteraciones nos arroja aleatoriamente estos resultados, cada vez que introducimos el comando

xorback(1,150)
obtendremos diferentes resultados.

Fig(6) Se nota un margen de error mnimo aquel entrenamiento tuvo 107 pocas en las cuales se puede observar una reduccin aproximadamente del 60% de la zona azul con respecto al mtodo 1. Fig(4)

Para xorback(3,150)

'TRAINGDM'
Para cada caso conclusiones: obtenemos las siguientes

Para xorback(2,150)

'TRAINGDA'

Fig(7)
Su respuesta es sujeta a este nivel de iteraciones que grficamente se da como en la Fig() es claro que el margen de error es de casi Fig(5) Su respuesta es sujeta a este nivel de iteraciones que grficamente se da como en la Fig() es claro que el margen de error es de casi

Fig(8)

Se nota un margen de error mnimo aquel entrenamiento tuvo 150 pocas en las cuales se puede observar una reduccin aproximadamente del 30% de la zona azul con respecto al mtodo 1.

puede observar una reduccin aproximadamente del 90% de la zona azul con respecto al mtodo 1.

Se concluye que la funcin XOR es tratada de una manera satisfactoria con la red MLP.

Para xorback(4,150)

3.1.2 Aprendizaje de una funcin seno


Para el entrenamiento se va a utilizar una red MLP de tres capas, la red que se usar presenta una estructura como la mostrada en la figura, es decir una neurona en la capa de entrada, un nmero de neuronas no determinado en la capa oculta y una neurona en la capa de salida.

'TRAINGDX'

Fig(9)
Su respuesta es sujeta a este nivel de iteraciones que grficamente se da como en la Fig() es claro que el margen de error es de casi

Fig(11)
Se pretende contestar el siguiente interrogante:

Qu conclusin se puede obtener del procedimiento realizado en el punto 2.2?

El cdigo de la funcin seno seria el siguiente:


function senoback(metodo,nco,n) % Ejemplo: % senoback(1,10,50) % Se realizan 50 iteraciones de entrenamiento con el mtodo del % gradiente descendente a una red de 10 neuronas en la capa oculta close all; x=0: pi/10:2*pi; y=sin(x); switch metodo case 1 met_ent='traingd' case 2 met_ent='traingda' case 3 met_ent='traingdm' case 4 met_ent='traingdx' otherwise

Fig(10)
Se nota un margen de error mnimo aquel entrenamiento tuvo 128 pocas en las cuales se

met_ent='traingda' end 4 red=newff(minmax(x),[nco 1],{'tansig','purelin'},met_ent); yred=sim(red,x); figure; hold on; plot(x,y,'+b');plot(x,yred,'or');title('Si tuacin Inicial(+=Seno originalo=Salida de la red)') red.trainParam.epochs=n; figure; red=train(red,x,y); yred=sim(red,x); figure, hold on; plot(x,y,'+b'); plot(x,yred,'or');title('Situacin Final(+=Seno original o=Salida de la red)')

De la forma en la cual se incrementan las iteraciones mejor va ser la respuesta de la neurona.

>> senoback(1,100,1000) Tiempo de entrenamiento = 25.1262

Con base a esta anterior funcin introducimos las siguientes instrucciones y la respuesta vista nos arroja lo siguiente: Se introduce el siguiente comando:

Fig(14)

>> senoback(1,10,50) Tiempo de entrenamiento: 1.3006 s

La red mejor entrenada y con mejor calidad de aprendizaje, se logr realizando 1000 iteraciones de entrenamiento con el mtodo (2) Gradiente descendente, y con 100 neuronas en la capa oculta.

Fig(12)

>> senoback(1,10,500) Tiempo de entrenamiento: 14.1462 s

Fig(15)

Para los diferentes casos: 1.'Traingd', 2.'Traingdm', 3.'Traingdm', 4.'Traingdx'. Se obtienen respuestas similares a lo anterior pero con diferentes tiempo de entrenamiento las siguientes imgenes muestran el comportamiento antes de y despus de:

>> senoback(2,100,1000)
Fig(13)

Tiempo de entrenamiento: 29.0270s

Fig(16)

Los valores de ajuste permiten concluir de manera similar al ejercicio 2.1, que los dos mtodos que involucran un variable hacen que la red aprenda ms rpidamente que los otros dos, presentando valores de ajuste mayores, o sea que en el mismo tiempo se alcanza una menor discrepancia con respecto a la funcin seno original. Tambin se observa (con menor relevancia) que al involucrar el momentum en los mtodos con gradiente descendiente se mejora la velocidad, pero en definitiva, el valor de es el factor ms influyente en este sentido.

>> senoback(3,100,1000) Tiempo de entrenamiento: 12.5982 s

Es claramente notable cmo con el aumento del nmero de neuronas en la capa oculta se logra un mejor ajuste para una cantidad igual de iteraciones, lo cual, se cumple para todos los mtodos de aprendizaje backpropagation. A continuacin vemos la evolucin del ajuste en porcentaje para cada mtodo

3.1.3 Aprendizaje de una red MLP de la funcin: 0,5sen(x) + 0,5sen(2x) con - < x < .
Fig(17) Se pretende Entrenar una red MLP que aprenda la funcin (0.5*sin(x)+0.5*sin(2*x)) de tal forma que x est en el siguiente rango p< x < p. Para validar el entrenamiento verifique la generalizacin de la red entrenada. El cdigo en Matlab quedara:

>> senoback(4,100,1000) Tiempo de entrenamiento = 10.5010

function senobackpuntotres(metodo,nco,n) close all; x=-pi:pi/50:pi; y=(0.5*sin(x)+0.5*sin(2*x)); switch metodo case 1 met_ent='traingd' case 2 met_ent='traingda' case 3 met_ent='traingdm' case 4 met_ent='traingdx' otherwise

Fig(18)

met_ent='traingda' end red=newff(minmax(x),[nco 1],{'tansig','purelin'},met_ent); yred=sim(red,x); figure; hold on; plot(x,y,'+b');plot(x,yred,'or'); title('Situacin Inicial (+=Seno original o=Salida de la red)') red.trainParam.epochs=n; figure; red=train(red,x,y); yred=sim(red,x); figure, hold on; plot(x,y,'+b'); plot(x,yred,'or');title('Situaci n Final (+=Seno original o=Salida de la red)')

Fig(20)

>> senobackpuntotres(1,5,1000)

Fig(21) A las 1000 Epocas se logra reducir los niveles de error hasta un
Fig(19) Se arrojan estos datos y se cree que nuestra respuesta va hacer diferente ya que el nmero de capas es mnimo, pero logra tener un comportamiento estable cosa que cuando le agregamos ms neuronas en la capa oculta esta se desordena notablemente. Se observa el primer momentum del aprendizaje con 1000 iteraciones 5 en la capa oculta y implementando el mtodo 'traingd' y para los otros mtodos se comporta similar reduciendo cierto tiempo de entrenamiento.

3.1.4 Aprendizaje de una red MLP de la funcin: sen(x)/x con -10 < x <10.
Entrenar una red MLP que aprenda la funcin Seno(x)/x de tal forma que x est en el siguiente rango 10< x < 10. Para validar el entrenamiento verifique la generalizacin de la red entrenada.

am-1 2m-1 + am-2 2m-2 +...+ a1 21 + a0 20 Se aprecia el cdigo que me genera la entrada y la salida de la red neuronal.
function senobackpuntotres(metodo,nco,n)

close all; x=-10:10/50:10; y=sin(x)./x; y(1,1)=1; %Esta ltima asigna el valor lmite % de la funcin cuando x=0, sino el programa % registra una indeterminacin divisin por cero switch metodo case 1 met_ent='traingd' case 2 met_ent='traingda' case 3 met_ent='traingdm' case 4 met_ent='traingdx' otherwise met_ent='traingda' end red=newff(minmax(x),[nco 1],{'tansig','purelin'},met_ent); yred=sim(red,x); figure; hold on; plot(x,y,'+b');plot(x,yred,'or'); title('Situacin Inicial (+=Seno original o=Salida de la red)') red.trainParam.epochs=n; figure; red=train(red,x,y); yred=sim(red,x); figure, hold on; plot(x,y,'+b'); plot(x,yred,'or');title('Situaci n Final (+=Seno original o=Salida de la red)')

Fig(22)
Ahora entrenamos con estos datos: >>senobackpuntotres(1,10,1000)

Fig(23)

se entrena con estos datos: >>senobackpuntotres(1,5,1000)

Fig(24)

>>senobackpuntotres(4,10,1000) Al realizar varios ajustes lo que vemos es que se comporta mejor con el mtodo 4, de esta forma acomoda los patrones de salida para un buen seguimiento.

generalizacin, como era de esperarse, ya que se reduce el intervalo alrededor de cada entrada patrn, dentro del cual pueden generarse otras entradas distintas para las que la red debe inferir su imagen correspondiente de acuerdo a la funcin.

5. Aprendizaje de una red MLP de una funcin de dos variables.


Entrenar una red MLP que aprenda la siguiente funcin de dos variables que se muestra en la figura Fig(28) Verifique la generalizacin de la red

10

Fig(25)

-5

-10 4 2 0 -2 -4 -4 -2 2 0 4

Fig(28)

Para esto se introducen las siguientes lneas que sern la manera de iniciar con el proceso de aprendizaje. Fig(26) function ejer5guia2(metodo,nco,n) %ejercicio 3 de la guia #2 redes neuronales xini=[-3:0.2:3]; yini=xini; [x,y]=meshgrid(xini,yini); z=(3*(1-x).^2.*exp(-(x.^2)-(y+1).^2))-(10*(x/5x.^3-y.^5).*exp(-x.^2-y.^2))-(1/3*exp(-(x+1).^2y.^2)); surf(x,y,z) title('funcion original') switch metodo case 1 met_ent='traingd' case 2 met_ent='traingda' case 3 met_ent='traingdm' case 4

Fig(27) Lo que se puede concluir de aqu es que al aumentar el nmero de patrones de aprendizaje se obtiene en ltimas una mejor calidad de

met_ent='traingdx' case 5 met_ent='trainlm'%%funicion de entrenamiento Levenberg-Marquardt otherwise met_ent='traingda' end [r,j]=size(y);%%halla el tamao de la matrix y e=r*j;%genera el tamao del vector que va a contener las matrices concatenadas x2=[reshape(x,1,e);reshape(y,1,e)];%%generamos la matriz de entrenamiento que contiene fila los valores de x y en la segunda fila los de y concatenados z2=[reshape(z,1,e)]; red=newff(minmax(x2),[nco 1],{'tansig','purelin'},met_ent); red.trainParam.epochs=n; zred=sim(red,x2);%%se simula la red con entradas de x para determinar si zred2=reshape(zred,r,j); figure surf(x,y,zred2) title('red sin entrenamiento') red=train(red,x2,z2); zred3=sim(red,x2); zred4=reshape(zred3,r,j);%%generamos una matriz de tamao r,j figure surf(x,y,zred4) title('salida de la red entrenada') figure plot3(reshape(x,1,e),reshape(y,1,e),reshape(z,1,e),' or') hold on plot3(reshape(x,1,e),reshape(y,1,e),zred3,'*b') title('relacion de los patrones de entrada y salida')

Fig(29)

Fig(30)

>> ejer5guia2(5,50,400)

En seguida damos en el command window las siguientes instrucciones para ver el cambio adquirido:

>> ejer5guia2(5,50,100)
Se observa en las dos imgenes siguientes una funcin original, la red sin entrenamiento, la slida de la red entrenada y la relacin de entrada y salida.

Fig(31)

CONCLUSIONES

PEREZ CESAR. Matlab y sus aplicaciones en las ciencias y la ingeniera, Pearson-Prentice Hall. MATLAB-Software, R2011b, Help.

1.

Se cumplen con anteriormente dichos.

los

objetivos

2.

Es notable que un aumento en el nmero de neuronas de la capa oculta genere un mayor aprendizaje para el mismo nmero de iteraciones. Es deducible que un nmero de neuronas muy alto tal vez no sea siempre una buena solucin, ya que sobrecargara al proceso de entrenamiento, para conseguir al final un resultado que no difiera significativamente del que hubiese sido alcanzado con menos neuronas en dicha capa del Perceptron. En a los cuatro mtodos de aprendizaje para una MLP, indudablemente el ms veloz es el gradiente descendiente con momntum y variable

3.

http://rii.cujae.edu.cu/index.php/revistaind/ article/view/108/353

http://sisbib.unmsm.edu.pe/bibvirtual/publi caciones/risi/2009_n2/v6n2/a03v6n2.pdf

4.

BIBLIOGRAFIA

También podría gustarte