función de tranferencia de un perceptrón con matlab

Download Función de tranferencia de un perceptrón con matlab

If you can't read please download the document

Upload: ancizar-paredes-ardila

Post on 07-Aug-2015

467 views

Category:

Engineering


3 download

TRANSCRIPT

  1. 1. CIDE. Programa de electrnica. . 1 FUNCIN DE TRANSFERENCIA DE UN PERCEPTRN CON MATLAB. ANCIZAR PAREDES ARDILA Ingeniero Electrnico Universidad Antonio Nario Docente Programa Electrnica Mecatrnica e-mail: [email protected] e-mail: [email protected] COLOMBIA RESUMEN: Una de las estructuras de las redes Neuronales es el Perceptrn, aunque existen innumerables documentos y aportes entorno a la funcin de transferencia de sta estructura, el presente artculo es el fruto del estudio hecho en una primera aproximacin al concepto, generando un material didctico, como estrategia de divulgacin en la Corporacin Internacional para el Desarrollo Educativo (CIDE), entorno al proyecto Redes Neuronales Artificiales (RNA), adscrito al grupo de Investigacin de la Facultad de Ingenieras y Administracin de la misma (IARN-CIDE). El presente material didctico se aplicar en la fase exploratoria del concepto hacia la implementacin del algoritmo en un prototipo robtico, especficamente un robot de tipo mvil, sin embargo, ste se puede usar en cualquier campo del conocimiento, de los programas ofertados en la CIDE, a nivel tecnolgico, tales como Sistemas, Gestin Empresarial, Electrnica, Mecatrnica, Alimentos, entre otros. PALABRAS CLAVE: Redes Neuronales Artificiales, Perceptrn, Funcin de Transferencia, Matlab. Abstract: Keywords: 1 INTRODUCCIN Las Redes Neuronales Artificiales, son consideradas una de las herramientas de amplio uso en los algoritmos que incluyen el concepto de Inteligencia Artificial (IA). En ste trabajo, se plantea el uso de Matlab como herramienta en la simulacin de una estructura fundamental de las redes Neuronales Artificiales (RNA), el Perceptrn; dicho algoritmo se plantea de manera genrica, el estudiante puede usarla en cualquier situacin donde lo nico que debe tener es un computador con el software de MathWorks (Matlab), definidas las entradas a la Neurona y las salidas deseadas, la neurona responder segn se le entrene mediante una estrategia de aprendizaje, de las muchas que se pueden implementar, quedando propuesto en el cdigo, de libre distribucin, el implementar otras estrategias de aprendizaje. Se debe hacer claridad sobre cada uno de los conceptos, anteriormente mencionados, estrategias de aprendizaje, entradas a la neurona, salidas deseadas, para ello se aborda el tema desde la explicacin funcional biolgica, luego se presenta el modelo matemtico del Perceptrn, no siendo la nica estructura existente en las redes neuronales, luego se presenta el cdigo del aplicativo, para finalmente, ilustrar los resultados obtenidos en el aplicativo con un ejemplo. Los alcances de ste artculo, son los de presentar una herramienta tecnolgica ampliamente conocida y de fcil uso para las personas que estn familiarizadas con el cdigo de programacin; sin embargo puede ser usado por personas en estado inicial del uso de software, ya que la interface le permite aplicar el concepto de RNA fcilmente, ejecutando el cdigo desde Matlab, con las limitaciones que se exponen en el apartado respectivo al ejemplo de aplicacin. 2 APROXIMACION TEORICA Segn las intenciones planteadas del artculo, tratando de abordar el tema de manera integral, se plantea una aproximacin terica en tres dimensiones: Biolgica: Sin profundizar en ella, se plantea la explicacin de cmo funciona una neurona en el ser humano. Matemtica: Se presenta la informacin delimitada del funcionamiento y modelo matemtico de la estructura de un Perceptrn, ubicndola en el contexto global de las Redes Neuronales Artificiales Tcnica: Se hace referencia al uso de Matlab, en la codificacin del modelo matemtico del Perceptrn. 2.1 CONCEPTO BIOLOGICO La estructura fundamental del sistema nervioso central es la Neurona, sta como unidad funcional, hace parte de una estructura ms compleja, el cerebro. Aunque se presume que el lector tiene nociones de este tema, se plantea la descripcin de sta para explicar su funcionamiento
  2. 2. CIDE. Programa de electrnica. . 2 Figura 1. Estructura Biolgica de una Neurona. [1] Como se puede observar, la clula est dividida en partes funcionales, cada una de ellas se describe a continuacin: Axn: Rama principal que sale del cuerpo de la Neurona, su principal funcin es la de transmitir la informacin a las dendritas, stas a su vez conectan dicha informacin a las otras Neuronas. Dendritas: Ramas ms cortas que el axn, las cuales llevan los impulsos nerviosos a otras neuronas. A travs de ellas se realizan las conexiones o Sinapsis con otras Neuronas. Soma: Es el cuerpo de la clula nerviosa, su funcin es la de fabricar los elementos necesarios para la vida de la Neurona, tal como sucede en las otras clulas del cuerpo. Una red Neuronal, se genera a partir de un proceso de aprendizaje, es decir, cuando estamos aprendiendo algo, se crea una conexin entre las neuronas, constituyendo el aprendizaje, para luego ejecutar la funcin de la red creada, cuando nos enfrentemos a una situacin similar, es decir, cuando aprendemos a leer se generan una serie de conexiones neuronales que son utilizadas, cada vez que nos enfrentamos a la misma tarea. De manera similar, se plantea el concepto de las Redes Neuronales Artificiales, las cuales se usan cada vez que el algoritmo se entrena, en una aplicacin especfica, sin embargo no se debe compara las unas con las otras, pues las RNA, solo emulan una de las muchas funciones complejas de las redes neuronales biolgicas. 2.2 Redes Neuronales Artificiales: El Perceptrn. No es la nica estructura conocida y concebida para el desarrollo de las redes Neuronales, entre otras se encuentran: Kohonen, ART, Hopfield, entre otros. Para el caso que nos ocupa se realiza el estudio a partir del Perceptrn multicapa. El Perceptrn es concebido por el psiclogo Frank Rosenblatt de la Universidad de Corell en 1959. ste es utilizado inicialmente para la solucin de situaciones donde los estados a la salida, son diferenciados y de fcil separacin. A partir de la estructura sencilla del Perceptrn se pueden construir estructuras ms complejas, sin embargo, dada su simplicidad, su estudio fue abandonado a mediados de los 70 pues se descubri que en tareas de clasificacin como la XOR, era incapaz de funcionar adecuadamente [Minsky y Papert]. Como se indic en la seccin anterior las RNA, funcionan de manera similar a su contraparte biolgica, con algunas caractersticas: aprendizaje, plasticidad y procesamiento en paralelo. Aprendizaje: ya que la neurona puede ser entrenada y aprender a responder segn las entradas a una situacin especfica, mediante las salidas deseadas; Plasticidad: pues si alguna de las estructuras funcionales llegase a fallar, existen otras que respaldan la funcin de la neurona, evitando que sta responda de manera errada y Procesamiento en paralelo: ya que al recibir varios estmulos al mismo tiempo responde segn el estmulo ms fuerte o segn sea configurada. Para explicar el funcionamiento del Perceptrn se debe hacer referencia a su concepcin matemtica, ste modelo, permite realizar una aproximacin a la programacin necesaria que emular el funcionamiento de la Neurona. Figura 2.2.1 Estructura de un perceptrn [1] Como se observa en la Figura 2.1.1 las partes constitutivas del Perceptrn son: Capa de Entrada: Constituye las entradas de la Neurona, las cuales se toman una a una y se conectan a la capa oculta con sus pesos respectivos. Capa Oculta: All est configurada la funcin de transferencia de la RNA, es decir, la forma como toma cada entrada y la evala. Capa de salida: Constituye la salida, en ste caso es una sola. Ahora bien, aunque es importante resaltar las caractersticas ms importantes de las Redes
  3. 3. CIDE. Programa de electrnica. . 3 Neuronales Artificiales (RNA), en el presente artculo solo haremos referencia al Perceptrn Bsico. Adems de su estructura se debe reconocer en las RNA, 4 caractersticas importantes: Topologa, mecanismo de aprendizaje, asociacin entre la informacin de entrada y la informacin de salida y la forma como se representa la informacin, de ello depende la comprensin del funcionamiento de ste primer acercamiento al Perceptrn. A continuacin se presenta una breve descripcin de tales caractersticas. 2.2.1 Topologa: Hace referencia a la forma como se conectan las redes neuronales, el nmero de conexiones entre las neuronas, la cantidad de neuronas en cada capa y el grado de conectividad. En ste caso se habla de Redes Monocapa y Redes Multicapa. 2.2.2 Mecanismo de aprendizaje: Es la forma como la red actualiza los pesos de acuerdo a la informacin de entrada; como analoga a los sistemas biolgicos, se puede pensar en la forma como se conecta o desconecta una red neuronal; cuando se produce un aprendizaje, se genera una conexin esto quiere decir que para la RNA, el peso es distinto de cero, pero cuando se realiza una desconexin por el proceso de aprendizaje que sucede en el cerebro, esto se interpreta en la RNA, como el equivalente a cero del peso que conecta a la entrada respectiva. Segn esta caracterstica las RNA pueden ser: con aprendizaje supervisado o con aprendizaje no supervisado. Cada uno de ellos tienen sus propias caractersticas no se profundizar en ellos ya que sta intensin escapa a los lmites del presente artculo. 2.2.3 Asociacin de la informacin Entrada / Salida: Es la forma como la red neuronal almacena los pesos nuevos a partir de los aprendizajes, estos son formas de representacin del nuevo conocimiento para la RNA. Es decir tiene un comportamiento similar al encontrado en los sistemas biolgicos y que se conoce como memoria asociativa. Segn ste criterio, las RNA pueden ser: Heteroasociativas (Mantienen la informacin gracias a la existencia de dos capas una para captar la informacin y otra para retenerla) y Autoasociativas (compara las entradas actuales con los datos almacenados y escoge el ms parecido en el estado presente). 2.2.4 Representacin de la informacin Entrada/Salida: Los datos a tratar pueden ser continuos o discretos, en el primer caso se habla de datos tipo analgicos, tomados de variables reales, por tanto la funcin de activacin debe ser de la misma naturaleza, es decir de tipo lineal o Sigmoidal. En el caso de los datos discretos, la funcin de activacin debe ser de tipo escaln. Tabla 2.2.4.1 Resumen de RNA segn tipo de datos [1] RNA CONTINUAS E:ANALOGA S:ANALOGA RNA HIBRIDAS E: ANALOGA S: BINARIA RNA DISCRETAS E: BINARIA S: BINARIA BACKPROPAGATIO N PERCEPTRON HOPFIELD DISCRETO LINEAR ASOCIATIVE MEMORY ADALINE/MADA LINE ART (ASOCIATIVE RESONANCE THEORY) Como se observa en la tabla se escriben tres ejemplos para que el lector profundice en el estudio de cada uno de ellos, y de otros propuestos para cada una de las clasificaciones presentadas. 2.3 Matlab en la modelacin del Perceptrn Para identificar la estructura del Perceptrn simple, (De una sola capa), se debe partir de las caractersticas mencionadas en el apartado anterior. Figura 2.3.1 Estructura del Perceptrn Simple [1] A continuacin se realiza una descripcin del algoritmo usado para implementar un Perceptrn bsico, bajo entorno Matlab, se aplican conceptos de programacin estructurada, para que el cdigo sea de fcil comprensin y se realice la adaptacin necesaria si se quiere usar otro entorno de programacin. Se hace necesario mencionar, que Matlab ya trae en sus herramientas (Toolbox), los algoritmos de algunas redes neuronales, sin embargo en el presente artculo se presenta un cdigo genrico el cual se puede implementar en diferentes ambientes de programacin. Para explicar la estructura del cdigo, se plantea el siguiente orden en el algoritmo planteado. 1. Se fijan los pesos aleatorios: Son valores que multiplican a la entrada, generalmente entre 0 y 1, sin embargo estos valores son irrelevantes, es decir su valor no interesa pero deben existir, la nica restriccin es que no pueden ser cero, esto indicara que la entrada no se tiene en cuenta. 2. Se establecen las entradas: Se configura la matriz de entrada, segn el nmero de entradas y los valores que toman cada una de ellas.
  4. 4. CIDE. Programa de electrnica. . 4 3. Se calcula la salida segn la funcin de aprendizaje. Para el Perceptrn se usar la funcin hardlim, de Matlab. 4. Se actualizan pesos segn respuesta. De acuerdo a la funcin determinada, se recalculan los nuevos pesos, stos ayudarn a reevaluar las nuevas entradas. 5. Se regresa al paso 3 hasta obtener la respuesta deseada. A ste algoritmo se le conoce como aprendizaje por refuerzo, la neurona repite el proceso hasta conseguir el aprendizaje de las salidas deseadas. 3 DISEO DE LA APLICACIN EN MATLAB Como se indic anteriormente, Matlab es la herramienta por excelencia en el modelamiento e implementacin de la funcin de transferencia del Perceptrn. Aunque en la seccin 2.3 se plante la forma de hacerlo, en ste apartado se deja el cdigo para ser usado en diferentes contextos. Para explicar el algoritmo usado, en ste caso particular, se explica paso a paso la implementacin en Matlab , correlacionando mencionado cdigo con las ecuaciones que rigen cada una de las etapas de dicho algoritmo, citadas en la seccin 2.3. 1. Se fijan los pesos aleatorios: En Matlab, se pueden usar los vectores de datos, el lector debe estar familiarizado con el Algebra Lineal. Para ello se digita en el editor de Matlab , la lnea de cdigo: W=rand(2,1). Con ste comando se genera un vector llamado W, que consta de dos datos aleatorios organizado en dos filas y una columna (2,1) 2. Se establecen las entradas: La matriz de entrada debe estar organizada de tal forma que el nmero de entradas designa el nmero de columnas, las filas son designadas por las posibilidades de combinacin de las mencionadas entradas. En nuestro caso se pretende que la red se comporte como una compuerta lgica de dos entradas. Esto indica que el vector de entrada X, debe definirse en Matlab como sigue: X = [0 0; 0 1; 1 0; 1 1] Se debe observar que al ejecutar esta lnea de cdigo se genera una matriz de 2 columnas y 4 filas. Luego se estableces el BIas o velocidad de aprendizaje, esta es una constante entre 0 y 1, se puede definir usando el comando: Th=0.1, en ste caso el Bias tiene un valor de 0.1. 3. Calculo de la salida: Inicialmente se establece la salida deseada, sta debe estar conformada por un vector Y que contenga por cada estado de entrada una salida, en ste caso ser un vector de una columna con cuatro filas, como se indica a continuacin Y=[0 0 0 1] La salida deseada corresponde a una compuerta AND, cuya salida depende de las entradas Tabla 3.1 Estados compuerta AND X1 X2 Y 0 0 0 0 1 0 1 0 0 1 1 1 Observe como se resumen los datos de la tabla, la columna X1 corresponde a la primer entrada, la columna X2 la segunda entrada y la columna Y a la salida, para definir el vector de salida deseada, se puede usar el comando: yd=[0;0;0;1], que es un vector columna, el lector puede verificarlo usando el comando en Matlab. Teniendo en cuenta la salida deseada, ahora se calcula la salida a partir de la funcin de activacin de la red neuronal, en ste caso el Perceptrn. La funcin de activacin que se usa es de tipo escaln unitario, sta funcin permite clasificar en dos estados la respuesta del Perceptrn, como se puede observar en la Tabla 3.1 solo hay dos estados 0 o 1. Para aplicar la funcin escaln unitario, se usa en Matlab el comando: Hardlim. La estructura de la nueva salida, se escribe como: y=Hardlim((X*W)-Th) si el lector en ste punto est comprobando el resultado puede observar que an la respuesta no es la deseada. Para obtener la respuesta adecuada, se debe realizar el proceso varias veces hasta que la respuesta calculada y sea igual a la respuesta deseada yd 4. Se actualizan los pesos, para ello se usa la funcin de la red neuronal planteada en la Ecuacin: ( + 1) = () + [() ()]() 0 Dicha ecuacin se puede escribir en Matlab de la siguiente manera: Wn(k,1)=Wn(k,1)+(n*(X(i,k)*e(i,1))); El ciclo que debe realizarse se debe detener cuando el error sea menor a 1, como se puede observar el nuevo peso (Wn), se calcula a partir del producto de la ganancia (=n), por la entrada (X(i,k)=xi(t)), por la diferencia entre la salida deseada (d(t)), menos la salida calculada (y(t)).
  5. 5. CIDE. Programa de electrnica. . 5 El programa final, como se utiliz en Matlab fue: %1. Fijar pesos aleatorios Wn=rand(2,1); %2. Establecer los valores de entrada X=[0 0; 0 1;1 0;1 1]; Th=0.1; %Bias o referencia del Perceptrn %3. Calcular la salida de la neurona yd=[0;0;0;1]; y=hardlim((X*Wn)-Th); plot(X,y),grid on, hold on e=yd-y; %Se calcula el error al restar la salida deseada de la salida obtenida. ed=0.1;% Se establece el error aceptado, en ste caso 0.1 N=2; %se establecen las iteraciones, pueden ser definidas por la velocidad de aprendizaje %Aqu empieza el entrenamiento de la neurona, se hace de manera recursiva %W(i,j) i=fila; j= Columna n=0.9; %Factor de ganancia en el rango de 0.0 a 1.0 ent=2; r=0; % Se inician los nuevos pesos for T=1:N %Ciclo for correspondiente a las iteraciones del aprendizaje por refuerzo if e==0 break else for i=1:4 %Ciclo for correspondiente a las filas segn no de entradas i=filas for k=1:ent %Ciclo for para actualizar pesos. k=columnas Wn(k,1)=Wn(k,1)+(n*(X(i,k)*e(i,1))) end yn(i,1)=(hardlim((X(i,1)*(Wn(1,1)- Th))+((X(i,2)*Wn(2,1)-Th)))) %Funcin para calcular las nuevas salidas. end e=yd-yn M=e-ed T %si el error es mayor que la tolerancia continua haciendo el proceso se define la velocidad de aprendizaje para aplicar la forma de calcular nuevos peso end end %5. Continua hasta que el error sea menor que la tolerancia Se dejaron los comentarios para ubicar al lector con respecto a los 5 pasos planteados en el apartado anterior y el desarrollo de ste. Si se quiere cambiar la salida deseada, solo se deben modificar los datos del vector yd, que para efectos del ejemplo, corresponde a una compuerta OR y observar la respuesta en el vector yn. Para determinar el nmero de veces que la neurona tuvo que realizar el ajuste de los pesos hasta obtener la salida deseada, se establece el ciclo for, donde T es el nmero de iteraciones que el programa debe recalcular los pesos hasta obtener los adecuados para que la neurona aprenda a resolver la compuerta OR. Se sugiere que el lector cambie las salidas deseadas y revise el nmero de iteraciones que el Perceptrn requiere para obtener las respuestas a las compuertas AND. 4 EJEMPLO DE APLICACION Como ejemplo de aplicacin, se plantea el de seleccionar una prenda de vestir, segn sus caractersticas en cuanto a la Calidad de la tela y Tipo de Tela. Para la categora Calidad se establecen dos estados, Buena =1, Baja =0; para la categora Tipo, los estados son: No pao=0 y Pao=1. La idea es que el Perceptrn seleccione dos opciones, por costos, ya que de otra manera se excedera en el presupuesto asignado para la compra de las prendas, de tal forma que cuando las categoras Tipo y Calidad sean las parejas ordenadas: No Pao, Buena y Pao, Baja. Respectivamente, pero que no seleccione los estados: No Pao, Baja y Pao, Buena La situacin se puede resumir en la Tabla 4.1: Tabla 4.1. Resumen situacin seleccin de una prenda Categora de la Tela Seleccin Tipo Calidad No Pao Baja No No Pao Buena Si Pao Baja Si Pao Buena No Ahora bien, si la Tabla 4.1 se interpreta en binario, se puede representar as: Tabla 4.2. Seleccin de una prenda en binario. T C S 0 0 0 0 1 1 1 0 1 1 1 0 La funcin que se ajusta al comportamiento de la situacin anterior es la de una compuerta tipo XOR, se sugiere revisar ste concepto si el lector no est familiarizado. Para ello solo se debe modificar en el programa anterior el vector de salida deseada yd, y observar la salida que la neurona calcula, al finalizar el aprendizaje yn, analizar el error M y determinar el nmero de iteraciones T, as cmo identificar los pesos en las entradas ajustados a la respuesta deseada, permite identificar la velocidad de respuesta y la capacidad de aprendizaje.
  6. 6. CIDE. Programa de electrnica. . 6 Al ejecutar el programa con las modificaciones sugeridas anteriormente se obtienen los siguientes datos de las variables analizadas: Los pesos iniciales se asignan de forma aleatoria, como se observa en el cdigo, mediante el comando: Wn =rand(2,1); el programa asigna los valores, para ste caso: Wn = 0.5688 0.4694 Se debe aclarar que cada vez que el programa se ejecuta, los pesos iniciales cambian, pues estos valores son aleatorios, los valores finales de este vector son los que se ingresan a la funcin finalmente para que la Red Neuronal (RNA), se comporte ahora como una compuerta XOR. 5 CONCLUSIONES A pesar de los mltiples recursos y programas que se encuentran en torno a la implementacin de un algoritmo para implementar una Red Neuronal, muchos no explican ampliamente los pasos a seguir, ste es un ejercicio que permite al estudiante implementar un Perceptrn de manera genrica. A pesar de los esfuerzos por emular el comportamiento de un Perceptrn, se debe aclarar que para acercarse al comportamiento de una red neuronal se debe implementar el procesamiento en paralelo, en ste caso se usa un algoritmo secuencial, lo que debera corregirse si se quiere realizar un ejercicio de implementacin ms acertado, la mejor opcin es usar elementos de hardware para conseguir un resultado aproximado. Se debe tener especial cuidado al utilizar valores adecuados para el Bias, ya que ste puede afectar el comportamiento de la Red, toda vez que puede ofrecer valores y comportamientos no adecuados, ste debe estar entre 0 y 1 as como el factor de ganancia que se observa en el programa de Matlab. 6 REFERENCIAS [1] E. Marrero, Pgina Profesor: Eddie Marrero, Marzo 2005. [En lnea]. Available: http://academic.uprm.edu/eddiem/psic3001/id36.htm. [ltimo acceso: 5 Febrero 2012]. [2] Aldabas, Emiliano. Introduccin al reconocimiento de patrones mediante redes neuronales, [En lnea]. Available: www.eel.upc.es.. [ltimo acceso: 23 Marzo 2013]. [3] J. R. Hilera, Redes Neuronales Artificiales. Fundamentos, Modelos y Aplicaciones, Madrid, espaa: Alfaomega, 1995. [4] MathWorks, Inc., Neuron Model, 2013. [En lnea]. Available: http://www.mathworks.com/help/nnet/ug/neuron- model.html?searchHighlight=neuron+model. [ltimo acceso: 21 Octubre 2013]. Ancizar Paredes Ardila Docente de tiempo completo desde 2008 hasta la fecha, en la CIDE; ha orientado las materias relacionadas con la Ingeniera Electrnica, en los programas de Tecnologa en la institucin. Docente Universitario en UNIMINUTO y TEINCO donde se ha desempeado en reas afines a la disciplina de su titulacin, Co- investigador del grupo Neurociencia de la Universidad de Antioqua, como pasante de Maestra; lder del grupo de Investigacin IARN-CIDE. Docente en los niveles de formacin del ciclo 5 en colegios del distrito. Bachiller Pedaggico, (Normal Nacional para varones de Pamplona N de S) Ingeniero Electrnico (Universidad Antonio Nario) y candidato a Mster en Tecnologas de la Informacin Aplicadas a la Educacin (MTIAE-Universidad Pedaggica Nacional de Colombia).