FUNCIÓN DE TRANSFERENCIA DE UN PERCEPTRÓN CON MATLAB

May 23, 2017 | Autor: A. Paredes Ardila | Categoría: Artificial Neural Networks
Share Embed


Descripción

CIDE. Programa de electrónica.

.

FUNCIÓN DE TRANSFERENCIA DE UN PERCEPTRÓN CON MATLAB. ANCIZAR PAREDES ARDILA Ingeniero Electrónico Universidad Antonio Nariño Docente Programa Electrónica Mecatrónica e-mail: [email protected] e-mail: [email protected] COLOMBIA propuesto en el código, de libre distribución, 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 explicación funcional biológica, luego se presenta el modelo matemático del Perceptrón, no siendo la única estructura existente en las redes neuronales, luego se presenta el código del aplicativo, para finalmente, ilustrar los resultados obtenidos en el aplicativo con un ejemplo.

RESUMEN: Una de las estructuras de las redes Neuronales es el Perceptrón, aunque existen innumerables documentos y aportes entorno a la función de transferencia de ésta estructura, el presente artículo es el fruto del estudio hecho en una primera aproximación al concepto, generando un material didáctico, como estrategia de divulgación en la Corporación Internacional para el Desarrollo Educativo (CIDE), entorno al proyecto Redes Neuronales Artificiales (RNA), adscrito al grupo de Investigación de la Facultad de Ingenierías y Administración de la misma (IARN-CIDE). El presente material didáctico se aplicará en la fase exploratoria del concepto hacia la implementación del algoritmo en un prototipo robótico, específicamente un robot de tipo móvil, sin embargo, éste se puede usar en cualquier campo del conocimiento, de los programas ofertados en la CIDE, a nivel tecnológico, tales como Sistemas, Gestión Empresarial, Electrónica, Mecatrónica, Alimentos, entre otros.

Los alcances de éste artículo, son los de presentar una herramienta tecnológica ampliamente conocida y de fácil uso para las personas que están familiarizadas con el código de programación; 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 fácilmente, ejecutando el código desde Matlab, con las limitaciones que se exponen en el apartado respectivo al ejemplo de aplicación.

2 APROXIMACION TEORICA

PALABRAS CLAVE: Redes Neuronales Artificiales, Perceptrón, Función de Transferencia, Matlab.

Según las intenciones planteadas del artículo, tratando de abordar el tema de manera integral, se plantea una aproximación teórica en tres dimensiones:  Biológica: Sin profundizar en ella, se plantea la explicación de cómo funciona una neurona en el ser humano.  Matemática: Se presenta la información delimitada del funcionamiento y modelo matemático de la estructura de un Perceptrón, ubicándola en el contexto global de las Redes Neuronales Artificiales  Técnica: Se hace referencia al uso de Matlab, en la codificación del modelo matemático del Perceptrón.

Abstract: Keywords:

1 INTRODUCCIÓN 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 simulación de una estructura fundamental de las redes Neuronales Artificiales (RNA), el Perceptrón; dicho algoritmo se plantea de manera genérica, el estudiante puede usarla en cualquier situación 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á según se le entrene mediante una estrategia de aprendizaje, de las muchas que se pueden implementar, quedando

2.1 CONCEPTO BIOLOGICO La estructura fundamental del sistema nervioso central es la Neurona, ésta como unidad funcional, hace parte de una estructura más compleja, el cerebro. Aunque se presume que el lector tiene nociones de este tema, se plantea la descripción de ésta para explicar su funcionamiento

1

CIDE. Programa de electrónica.

. El Perceptrón es concebido por el psicólogo Frank Rosenblatt de la Universidad de Corell en 1959. Éste es utilizado inicialmente para la solución de situaciones donde los estados a la salida, son diferenciados y de fácil separación. A partir de la estructura sencilla del Perceptrón se pueden construir estructuras más complejas, sin embargo, dada su simplicidad, su estudio fue abandonado a mediados de los 70 pues se descubrió que en tareas de clasificación como la XOR, era incapaz de funcionar adecuadamente [Minsky y Papert]. Figura 1. Estructura Biológica de una Neurona. [1]

Como se indicó en la sección anterior las RNA, funcionan de manera similar a su contraparte biológica, con algunas características: aprendizaje, plasticidad y procesamiento en paralelo. Aprendizaje: ya que la neurona puede ser entrenada y aprender a responder según las entradas a una situación específica, mediante las salidas deseadas; Plasticidad: pues si alguna de las estructuras funcionales llegase a fallar, existen otras que respaldan la función de la neurona, evitando que ésta responda de manera errada y Procesamiento en paralelo: ya que al recibir varios estímulos al mismo tiempo responde según el estímulo más fuerte o según sea configurada.

Como se puede observar, la célula está dividida en partes funcionales, cada una de ellas se describe a continuación: Axón: Rama principal que sale del cuerpo de la Neurona, su principal función es la de transmitir la información a las dendritas, éstas a su vez conectan dicha información a las otras Neuronas. Dendritas: Ramas más cortas que el axón, las cuales llevan los impulsos nerviosos a otras neuronas. A través de ellas se realizan las conexiones o Sinapsis con otras Neuronas.

Para explicar el funcionamiento del Perceptrón se debe hacer referencia a su concepción matemática, éste modelo, permite realizar una aproximación a la programación necesaria que emulará el funcionamiento de la Neurona.

Soma: Es el cuerpo de la célula nerviosa, su función es la de fabricar los elementos necesarios para la vida de la Neurona, tal como sucede en las otras células del cuerpo. Una red Neuronal, se genera a partir de un proceso de aprendizaje, es decir, cuando estamos aprendiendo algo, se crea una conexión entre las neuronas, constituyendo el aprendizaje, para luego ejecutar la función de la red creada, cuando nos enfrentemos a una situación 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 aplicación específica, 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 biológicas.

2.2 Redes Neuronales Perceptrón.

Artificiales:

Figura 2.2.1 Estructura de un perceptrón [1] Como se observa en la Figura 2.1.1 las partes constitutivas del Perceptrón son:

El

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 Perceptrón multicapa.



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 función de transferencia de la RNA, es decir, la forma como toma cada entrada y la evalúa.



Capa de salida: Constituye la salida, en éste caso es una sola.

Ahora bien, aunque es importante características más importantes de

2

resaltar las las Redes

CIDE. Programa de electrónica.

. Neuronales Artificiales (RNA), en el presente artículo solo haremos referencia al Perceptrón Básico.

tipo lineal o Sigmoidal. En el caso de los datos discretos, la función de activación debe ser de tipo escalón.

Además de su estructura se debe reconocer en las RNA, 4 características importantes: Topología, mecanismo de aprendizaje, asociación entre la información de entrada y la información de salida y la forma como se representa la información, de ello depende la comprensión del funcionamiento de éste primer acercamiento al Perceptrón. A continuación se presenta una breve descripción de tales características.

Tabla 2.2.4.1 Resumen de RNA según tipo de datos [1] RNA CONTINUAS E:ANALOGA S:ANALOGA

RNA HIBRIDAS

BACKPROPAGATIO N LINEAR ASOCIATIVE MEMORY

PERCEPTRON

2.2.1 Topología:

E: ANALOGA S: BINARIA

ADALINE/MADA LINE

RNA DISCRETAS E: BINARIA S: BINARIA

HOPFIELD DISCRETO ART (ASOCIATIVE RESONANCE THEORY)

Hace referencia a la forma como se conectan las redes neuronales, el número 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.

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.2.2 Mecanismo de aprendizaje:

2.3 Matlab en la modelación del Perceptrón

Es la forma como la red actualiza los pesos de acuerdo a la información de entrada; como analogía a los sistemas biológicos, se puede pensar en la forma como se conecta o desconecta una red neuronal; cuando se produce un aprendizaje, se genera una conexión esto quiere decir que para la RNA, el peso es distinto de cero, pero cuando se realiza una desconexión 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.

Para identificar la estructura del Perceptrón simple, (De una sola capa), se debe partir de las características mencionadas en el apartado anterior.

Figura 2.3.1 Estructura del Perceptrón Simple [1]

Según esta característica las RNA pueden ser: con aprendizaje supervisado o con aprendizaje no supervisado. Cada uno de ellos tienen sus propias características no se profundizará en ellos ya que ésta intensión escapa a los límites del presente artículo.

A continuación se realiza una descripción del algoritmo usado para implementar un Perceptrón básico, bajo entorno Matlab, se aplican conceptos de programación estructurada, para que el código sea de fácil comprensión y se realice la adaptación necesaria si se quiere usar otro entorno de programación. Se hace necesario mencionar, que Matlab ya trae en sus herramientas (Toolbox), los algoritmos de algunas redes neuronales, sin embargo en el presente artículo se presenta un código genérico el cual se puede implementar en diferentes ambientes de programación.

2.2.3 Asociación de la información Entrada / Salida: Es la forma como la red neuronal almacena los pesos nuevos a partir de los aprendizajes, estos son formas de representación del “nuevo conocimiento” para la RNA. Es decir tiene un comportamiento similar al encontrado en los sistemas biológicos y que se conoce como memoria asociativa.

Para explicar la estructura del código, se plantea el siguiente orden en el algoritmo planteado.

Según éste criterio, las RNA pueden ser: Heteroasociativas (Mantienen la información gracias a la existencia de dos capas una para captar la información y otra para retenerla) y Autoasociativas (compara las entradas actuales con los datos almacenados y escoge el más parecido en el estado presente).

2.2.4 Representación

de

la

1.

información

Entrada/Salida: 2.

Los datos a tratar pueden ser continuos o discretos, en el primer caso se habla de datos tipo analógicos, tomados de variables reales, por tanto la función de activación debe ser de la misma naturaleza, es decir de

3

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 restricción es que no pueden ser cero, esto indicaría que la entrada no se tiene en cuenta. Se establecen las entradas: Se configura la matriz de entrada, según el número de entradas y los valores que toman cada una de ellas.

CIDE. Programa de electrónica.

. 3.

4.

5.

Se calcula la salida según la función de aprendizaje. Para el Perceptrón se usará la función hardlim, de Matlab®. Se actualizan pesos según respuesta. De acuerdo a la función determinada, se recalculan los nuevos pesos, éstos ayudarán a reevaluar las nuevas entradas. Se regresa al paso 3 hasta obtener la respuesta deseada.

estado de entrada una salida, en éste caso será un vector de una columna con cuatro filas, como se indica a continuación 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

A éste algoritmo se le conoce como aprendizaje por refuerzo, la neurona repite el proceso hasta conseguir el aprendizaje de las salidas deseadas.

X1 0 0 1 1

X2 0 1 0 1

Y 0 0 0 1

3 DISEÑO DE LA APLICACIÓN EN MATLAB 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 función de activación de la red neuronal, en éste caso el Perceptrón. La función de activación que se usa es de tipo escalón unitario, ésta función permite clasificar en dos estados la respuesta del Perceptrón, como se puede observar en la Tabla 3.1 solo hay dos estados “0” o “1”. Para aplicar la función escalón 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 aún 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”

Como se indicó anteriormente, Matlab® es la herramienta por excelencia en el modelamiento e implementación de la función de transferencia del Perceptrón. Aunque en la sección 2.3 se planteó la forma de hacerlo, en éste apartado se deja el código para ser usado en diferentes contextos. Para explicar el algoritmo usado, en éste caso particular, se explica paso a paso la implementación en Matlab ®, correlacionando mencionado código con las ecuaciones que rigen cada una de las etapas de dicho algoritmo, citadas en la sección 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 línea de código: 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 número de entradas designa el número de columnas, las filas son designadas por las posibilidades de combinación de las mencionadas entradas. En nuestro caso se pretende que la red se comporte como una compuerta lógica 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 línea de código 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.

4.

Se actualizan los pesos, para ello se usa la función de la red neuronal planteada en la Ecuación: 𝑤𝑖 (𝑡 + 1) = 𝑤𝑖 (𝑡) + 𝛼[𝑑(𝑡) − 𝑦(𝑡)]𝑥𝑖 (𝑡) 0≤𝑖≤𝑁 Dicha ecuación 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)).

Calculo de la salida: Inicialmente se establece la salida deseada, ésta debe estar conformada por un vector “Y” que contenga por cada

4

CIDE. Programa de electrónica.

. 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 Perceptrón %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 según 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)))) %Función 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

hasta obtener la salida deseada, se establece el ciclo “for”, donde “T” es el número 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 número de iteraciones que el Perceptrón requiere para obtener las respuestas a las compuertas AND.

4 EJEMPLO DE APLICACION Como ejemplo de aplicación, se plantea el de seleccionar una prenda de vestir, según sus características en cuanto a la Calidad de la tela y Tipo de Tela. Para la categoría “Calidad” se establecen dos estados, Buena =1, Baja =0; para la categoría “Tipo”, los estados son: No paño=0 y Paño=1. La idea es que el Perceptrón seleccione dos opciones, por costos, ya que de otra manera se excedería en el presupuesto asignado para la compra de las prendas, de tal forma que cuando las categorías Tipo y Calidad sean las parejas ordenadas: No Paño, Buena y Paño, Baja. Respectivamente, pero que no seleccione los estados: No Paño, Baja y Paño, Buena La situación se puede resumir en la Tabla 4.1: Tabla 4.1. Resumen situación selección de una prenda Categoría de la Tela Tipo Calidad No Paño Baja No Paño Buena Paño Baja Paño Buena

Selección No Si Si No

Ahora bien, si la Tabla 4.1 se interpreta en binario, se puede representar así: Tabla 4.2. Selección de una prenda en binario. T 0 0 1 1

C 0 1 0 1

S 0 1 1 0

La función que se ajusta al comportamiento de la situación 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 número de iteraciones “T”, así cómo identificar los pesos en las entradas ajustados a la respuesta deseada, permite identificar la velocidad de respuesta y la capacidad de aprendizaje.

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 número de veces que la neurona tuvo que realizar el ajuste de los pesos

5

CIDE. Programa de electrónica.

. 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 código, mediante el comando: Wn =rand(2,1); el programa asigna los valores, para éste caso: Wn = 0.5688 0.4694

Available: http://www.mathworks.com/help/nnet/ug/neuronmodel.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 Ingeniería Electrónica, en los programas de Tecnología en la institución. Docente Universitario en UNIMINUTO y TEINCO donde se ha desempeñado en áreas afines a la disciplina de su titulación, Coinvestigador del grupo Neurociencia de la Universidad de Antioquía, como pasante de Maestría; líder del grupo de Investigación IARN-CIDE. Docente en los niveles de formación del ciclo 5 en colegios del distrito. Bachiller Pedagógico, (Normal Nacional para varones de Pamplona N de S) Ingeniero Electrónico (Universidad Antonio Nariño) y candidato a Máster en Tecnologías de la Información Aplicadas a la Educación (MTIAE-Universidad Pedagógica Nacional de Colombia).

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 función finalmente para que la Red Neuronal (RNA), se comporte ahora como una compuerta XOR.

5 CONCLUSIONES A pesar de los múltiples recursos y programas que se encuentran en torno a la implementación 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 Perceptrón de manera genérica. A pesar de los esfuerzos por emular el comportamiento de un Perceptrón, 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 debería corregirse si se quiere realizar un ejercicio de implementación más acertado, la mejor opción 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, «Página Profesor: Eddie Marrero,» Marzo 2005. [En línea]. Available: http://academic.uprm.edu/eddiem/psic3001/id36.htm. [Último acceso: 5 Febrero 2012]. [2] «Aldabas, Emiliano. Introducción al reconocimiento de patrones mediante redes neuronales,» [En línea]. Available: www.eel.upc.es.. [Último acceso: 23 Marzo 2013]. [3] J. R. Hilera, Redes Neuronales Artificiales. Fundamentos, Modelos y Aplicaciones, Madrid, españa: Alfaomega, 1995. [4] MathWorks, Inc., «Neuron Model,» 2013. [En línea].

6

Lihat lebih banyak...

Comentarios

Copyright © 2017 DATOSPDF Inc.