0 оценок0% нашли этот документ полезным (0 голосов)
144 просмотров8 страниц
Este documento describe las funciones de transferencia hardlim y hardlims utilizadas en redes neuronales. Hardlim produce salidas de 1 o 0, mientras que hardlims produce salidas de 1 o -1. También explica conceptos como perceptrones, funciones de activación, y cómo las redes neuronales multicapas pueden resolver problemas complejos mediante el uso de múltiples capas ocultas.
Este documento describe las funciones de transferencia hardlim y hardlims utilizadas en redes neuronales. Hardlim produce salidas de 1 o 0, mientras que hardlims produce salidas de 1 o -1. También explica conceptos como perceptrones, funciones de activación, y cómo las redes neuronales multicapas pueden resolver problemas complejos mediante el uso de múltiples capas ocultas.
Este documento describe las funciones de transferencia hardlim y hardlims utilizadas en redes neuronales. Hardlim produce salidas de 1 o 0, mientras que hardlims produce salidas de 1 o -1. También explica conceptos como perceptrones, funciones de activación, y cómo las redes neuronales multicapas pueden resolver problemas complejos mediante el uso de múltiples capas ocultas.
1. J. Banda, 2. J. Martnez, Tutor: Ing. Henry Paz ResumenEn el presente Paper se abordara temas como Hardlim, Hardlims, Red Neuronal, Perceptron, Perceptron Mul- ticapa, Funciones de Activacion, Funcin de transferencia, tipos de entrenamiento, y cdigo. Index TermsHardlim, Hardlims, Perceptron, Perceptron Multicapa, Funcin de Activacin. I. INTRODUCCIN La red tipo Perceptron emplea principalmente dos funciones de transferencia, hardlim con salidas 1, 0 o hardlims con salidas 1, -1; su uso depende del valor de salida que se espera para la red, es decir si la salida de la red es unipolar o bipolar; sin embargo la funcin hardlims es preferida sobre la hardlim, ya que el tener un cero multiplicando algunas de los valores resultantes del producto de las entradas por el vector de pesos, ocasiona que estos no se actualicen y que el aprendizaje sea ms lento. II. ESTADO DEL ARTE II-A. La Neurona Articial El modelo de una neurona articial es una imitacin del proceso de una neurona biolgica, puede tambin asemejarse a un sumador hecho con un amplicador operacional tal como se ve en la gura: Fig 1.Neurona Articial Existen varias formas de nombrar una neurona articial, es conocida como nodo, neuronodo, celda, unidad o elemento de procesamiento (PE). En la siguiente gura se observa un PE en forma general y su similitud con una neurona biolgica: 1. J. Banda, Universidad Nacional de Loja, Loja, Ecuador, e-mail: jiban- dab@unl.edu.ec 2. J. Martnez , Universidad Nacional de Loja, Loja,Ecuador, e-mail: jamartinezg@unl.edu.ec Manuscrito recibido el 9 de Mayo, 2014; revisado el 9 de Mayo, 2014. Fig 2. Neurona Biolgica De la observacin detallada del proceso biolgico se han hallado los siguientes anlogos con el sistema articial: Las seales de entrada a una neurona articial x 1 , x 2 ,.., x n son variables continuas en lugar de pulsos discretos, como se presentan en una neurona biolgica. Cada seal de entrada pasa a travs de una ganancia o peso, llamado peso sinptico o fortaleza de la conexin cuya funcin es anloga a la de la funcin sinptica de la neurona biolgica. Los pesos pueden ser positivos (excitatorios), o negativos (inhibitorios), el nodo sumatorio acumula todas las seales de entradas multiplicadas por los pesos o ponderadas y las pasa a la salida a travs de una funcin umbral o funcin de transferencia. La entrada neta a cada unidad puede escribirse de la siguiente manera: Las entradas Xi representan las seales que provienen de otras neuronas y que son capturadas por las dendritas. Los pesos Wi son la intensidad de la sinapsis que conecta dos neuronas; tanto Xi como Wi son valores reales. es la funcin umbral que la neurona debe sobrepasar para activarse; este proceso ocurre biolgicamente en el cuerpo de la clula. Las seales de entrada a una neurona articial x 1 , x 2 ,.., x n son variables continuas en lugar de pulsos discretos, como se presentan en una neurona biolgica. Cada seal de entrada pasa a travs de una ganancia o peso, llamado peso sinptico o fortaleza de la conexin cuya funcin es anloga a la de la funcin sinptica de la neurona biolgica. Los pesos pueden ser positivos (excitatorios), o negativos (inhibitorios), el nodo sumatorio acumula todas las seales de entradas multiplicadas por los pesos o ponderadas y las pasa a la salida a travs de una funcin umbral o funcin de transferencia. La entrada neta a cada unidad puede escribirse de la siguiente manera: Una idea clara de este proceso se muestra en la siguiente gura, en donde puede observarse el recorrido de un conjunto de seales que entran a la red. 2 Fig 3.Recorrido de conjunto de seales Una vez que se ha calculado la activacin del nodo, el valor de salida equivale a Donde f i representa la funcin de activacin para esa uni- dad, que corresponde a la funcin escogida para transformar la entrada neta i en el valor de salida x i y que depende de las caractersticas especcas de cada red. II-B. Redes Neuronales Las neuronas articiales simples fueron introducidas por McCulloch y Pitts en 1943. Una red neuronal se caracteriza por los siguientes elementos: 1 Un conjunto de unidades de procesamiento o neuronas. 2 Un estado de activacin para cada unidad equivalente a la salida de la unidad. 3 Conexiones entre las unidades, generalmente denidas por un peso que determina el efecto de una seal de entrada en la unidad. 4 Una regla de propagacin, que determina la entrada efectiva de una unidad a partir de las entradas externas. 5 Una funcin de activacin que actualiza el nuevo nivel de activacin basndose en la entrada efectiva y la activacin anterior. 6 Una entrada externa que corresponde a un trmino de- terminado como bias para cada unidad. 7 Un mtodo para reunir la informacin, correspondiente a la regla de aprendizaje 8 Un ambiente en el que el sistema va aperar, con seales de entrada e incluso seales de error. En muchas redes las unidades de proceso tienen respuesta de forma: x k :Seales de salida de otros nodos o entradas externas. w k :Pesos de las ligas de conexin. f 0 :Funcin no lineal simple. La funcin f puede ser sigmoidal, tangente hiperblica, escaln, entre otras. En Matlab se tiene diferentes funciones de activacin como tansig, hardlim y perelin, entre otras, lo cual facilita las aproximaciones que se requieran hacer, empleando RNA. Cada unidad de procesos tiene una tarea simple: recibe la entrada de otras unidades o de funciones externas y procesa la informacin para obtener una salida que se propaga a otras unidades. Una red puede tener una estructura arbitraria, pero las capas que contienen estas estructuras estn denidas de acuerdo con una ubicacin en la topologa de la red neuronal. Las capas internas que no se observan como entradas o salidas se denominan capas ocultas. Por convencin las entradas no se consideran como capas porque no realizan procesamiento. La entrada total u de una unidad k es la suma de los pesos de las entradas conectadas, ms un bias Si el peso w j es positivo se habla de una excitacin y si el peso es negativo se considera una inhibicin de la entrada. Si consideramos como funciones del tiempo, la expresin anterior se convierte en: II-C. Funcin de Activacin La regla que logra establecer el efecto de la entrada total u(t) en la activacin de la unidad k se denomina funcin de activacin (F k ): En muchas ocasiones esta funcin es de la forma no decreciente respecto a la entrada total de la unidad: C,1. Funcin Escaln: La funcin de activacin escaln se asocia a neuronas binarias en las cuales, cuando la suma de las entradas es mayor o igual que el umbral de la neurona es 1; si es menor, la activacin es 0 (o -1). Fig.4 Funcin escaln C,2. Cuadro comparativo de funciones: La siguiente tabla hace una relacin de las principales funciones de transferencia empleadas en el entrenamiento de redes neuronales. 3 Fig.5 Comparacin de funciones II-D. Funciones de Transferencia. Un modelo ms acadmico que facilita el estudio de una neurona, puede visualizarse en la gura: Fig 6. Neurona Didctica Las entradas a la red sern ahora presentadas en el vector p, que para el caso de una sola neurona contiene solo un elemento, w sigue representando los pesos y la nueva entrada b es una ganancia que refuerza la salida del sumador n, la cual es la salida neta de la red; la salida total est determinada por la funcin de transferencia, la cual puede ser una funcin lineal o no lineal de n, y que es escogida dependiendo de las especicaciones del problema que la neurona tenga que resolver; aunque las RNA se inspiren en modelos biolgicos no existe ninguna limitacin para realizar modicaciones en las funciones de salida, as que se encontrarn modelos articiales que nada tienen que ver con las caractersticas del sistema biolgico. Limitador fuerte (Hardlim): la siguiente gura muestra como esta funcin de transferencia acerca la salida de la red a cero, si el argumento de la funcin es menor que cero y la lleva a uno si este argumento es mayor que uno. Esta funcin crea neuronas que clasican las entradas en dos categoras diferentes, caracterstica que le permite ser empleada en la red tipo Perceptrn Fig 7. Funcin Hardlim El cono para la funcin Hardlim reemplazara a la letra f en la expresin general, cuando se utilice la funcin Hardlim. Una modicacin de esta funcin puede verse en la siguiente gura, la que representa la funcin de transferencia Hardlims que restringe el espacio de salida a valores entre 1 y 1 Fig 8. Funcin Hardlims II-E. Perceptrn Multicapa. Un Perceptrn multicapa es una red con alimentacin hacia delante, compuesta de varias capas de neuronas entre la entrada y la salida de la misma, esta red permite establecer regiones de decisin mucho ms complejas que las de dos semiplanos, como lo hace el Perceptrn de un solo nivel. En el problema de la funcin XOR se explic como un Perceptrn multicapa haba sido implementado para hallar una solucin. Las capacidades del Perceptrn multicapa con dos y tres capas y con una nica neurona en la capa de salida se muestran en la siguiente gura. En la segunda columna se muestra el tipo de regin de decisin que se puede formar con cada una de las conguraciones, en la siguiente se indica el tipo de regin que se formara para el problema de la XOR, en las dos ltimas columnas se muestran las regiones formadas para resolver el problema de clases mezcladas y las formas ms generales para cada uno de los casos: 4 Fig 9. Perceptrones Multicapa II-F. Aprendizaje de la Red Neuronal. El Aprendizaje es la caracterstica ms importante de una red neuronal. Durante este aprendizaje o entrenamiento de la red y por aplicacin de un conjunto de entradas, se van ajustando adecuada e internamente todos y cada uno de los pesos asociados a cada rama para obtener la salida deseada (o al menos una salida consistente), de forma que la red pueda responder despus por si sola a situaciones diferentes a las aprendidas. F,1. Aprendizaje Supervisado y No Supervisado: Aprendizaje Supervisado: es un caso de entrenamiento con Profesor y utiliza informacin global. Se presentan dos vectores (entradas y salidas deseadas). La salida computada por la red se compara con la salida deseada, y los pesos de la red se modican en el sentido de reducir el error cometido. Se repite interactivamente, hasta que la diferencia entre salida computada y deseada sea aceptablemente pequea. Con n parejas de este tipo se forma un Conjunto de Entrenamiento. Aprendizaje No Supervisado: es un caso de entrenamiento Sin Profesor y solo usa informacin local durante todo el proceso de aprendizaje. Es un modelo ms cercano al sistema biolgico, no se utiliza vector de salida esperada, y solo hay vectores de entrada en el conjunto de entrenamiento, y solo hay vectores de entrada en el conjunto de entrenamiento. El algoritmo modica los pesos de forma que las salidas sean consistentes, es decir, que a entradas muy parecidas, la red compute la misma salida. Las salidas se asocian a las entradas de acuerdo con el proceso de entrenamiento. El proceso extrae caractersticas, abstrayendo las propiedades colectivas subyacentes del conjunto de entrenamiento, y agrupa por clases de similitudes. III. IMPLEMENTACIN EN MATLAB MATLAB R (Matrix Laboratory) es un software desarrollado por MathWorks. Es un software especializado de programacin matemtica idneo para la investigacin cientca y para diversas aplicaciones en general. Dicho de otra forma MATLAB es un lenguaje de alto nivel para la computacin tcnica, tal y como lo denen sus creadores. Esto integra computacin, visualizacin y una programacin es un medio ambiente de fcil uso donde los problemas y las soluciones son expresadas en una notacin matemtica familiar. Matlab integra un Toolbox (caja de herramientas) para tra- bajar con Redes Neuronales Pesos y Umbrales simplicando as la creacin y funcionamiento de redes neuronales. A continuacin una lista de funciones principales utilizadas para crear redes neuronales y sus respectivos parmetros: Fig 10. Comandos Bsicos Matlab La funcin que se utilizar en newff para crear una red backpropagation Fig 11. Interfaz del programa La siguiente funcin se ejecuta al momento de iniciar la interfaz, su principal objetivo es desactivar la mayor parte de componentes. function HardlimProject_OpeningFcn( hObject,eventdata,handles, varargin) %Codigo de la interfaz handles.output = hObject; guidata(hObject, handles); %Centrar interfaz en la pantalla scrsz=get(0,ScreenSize); pos_act=get(gcf,Position); xr=scrsz(3)-pos_act(3); xp=round(xr/2); yr=scrsz(4)-pos_act(4); 5 yp=round(yr/2); set(gcf,Position,[xp yp pos_act(3) pos_act(4)]); %Desactivacion de componentes iniciales set(handles.txt_P,Enable,off); set(handles.txt_T,Enable,off); set(handles.lbl_pum_entrenamiento,Enable,off); set(handles.pum_entrenamiento,Enable,off); set(handles.lbl_txt_capas,Enable,off); set(handles.txt_capas,Enable,off); set(handles.btn_capas,Enable,off); set(handles.btn_ejecutar,Enable,off); set(handles.btn_red_neuronal,Enable,off); %Guardar entrenamiento por defecto handles.entrenam_guardado = traingd; guidata(hObject,handles); La siguiente funcin se encuentra programada en el popup menu con el nombre tag pum_func como se aprecia en la siguiente gura: Fig 12. Selector de funciones de activacin Su funcin es permitir al usuario seleccionar el tipo de funcion de activacin a utilizar: function pum_Func_Callback( hObject, eventdata, handles) %Se obtine el valor del componete poupmenu %denominado pum_Func valor=get(handles.pum_Func,Value); switch valor case 1 %La priemra opcion esta en blanco, %mantiene componentes desactivados set(handles.txt_P,Enable,off); set(handles.txt_T,Enable,off); set(handles.lbl_pum_entrenamiento, Enable,off); set(handles.pum_entrenamiento, Enable,off); set(handles.lbl_txt_capas, Enable,off); set(handles.txt_capas,Enable,off); set(handles.btn_capas,Enable,off); set(handles.btn_ejecutar,Enable,off); set(handles.btn_red_neuronal, Enable,off); case 2 %Activacion de todos los componentes set(handles.txt_P,Enable,on); set(handles.txt_T,Enable,on); set(handles.lbl_pum_entrenamiento, Enable,on); set(handles.pum_entrenamiento, Enable,on); set(handles.lbl_txt_capas, Enable,on); set(handles.txt_capas,Enable,on); set(handles.btn_capas,Enable,on); %El boton graficar y ver red neuronal se %mantienen desactivados set(handles.btn_ejecutar, Enable,off); set(handles.btn_red_neuronal, Enable,off); %En caso de seleccionar un nuevo tipo de %funcion se borra el campo de capas %para que sean ingresadas nuevamente set(handles.txt_capas,String,); %Se guarda el nombre de la funcion hardlim %en func_activ_guardada para ser %utilizada luego handles.func_activ_guardada = hardlim; guidata(hObject,handles); case 3 %Activacion de todos los componentes set(handles.txt_P,Enable,on); set(handles.txt_T,Enable,on); set(handles.lbl_pum_entrenamiento, Enable,on); set(handles.pum_entrenamiento, Enable,on); set(handles.lbl_txt_capas, Enable,on); set(handles.txt_capas,Enable,on); set(handles.btn_capas,Enable,on); %El boton graficar y ver red neuronal se %mantienen desactivados set(handles.btn_ejecutar,Enable,off); set(handles.btn_red_neuronal ,Enable,off); %En caso de seleccionar un nuevo tipo de %funcion se borra el campo de capas para %que sean ingresadas nuevamente set(handles.txt_capas,String,); %Se guarda el nombre de la funcion hardlims %en la misma variable func_activ_guardada %para ser utilizada luego handles.func_activ_guardada = hardlims; guidata(hObject,handles); end Seguidamente la funcin callback del componente pum_entrenamiento: Fig 13. Selector de tipos de entrenamiento 6 que parecido al anterior, permite seleccionar el tipo de entre- namiento que se dar a la red: function pum_entrenamiento_Callback( hObject, eventdata, handles) %Se obtiene el valor del componente popupmenu %denominado pum_entrenamiento valor_entrenam = get( handles.pum_entrenamiento,Value); switch valor_entrenam case 1 %Guarda valor traingd %en entrenam_guardado handles.entrenam_guardado = traingd; guidata(hObject,handles); case 2 %Guarda valor traingdm %en entrenam_guardado handles.entrenam_guardado = traingdm; guidata(hObject,handles); case 3 %Guarda valor traingdx %en entrenam_guardado handles.entrenam_guardado = traingdx; guidata(hObject,handles); end A continuacin la funcin callback del botn btn_capas que se le asign como etiqueta Agregar neuronas a las capas: Fig 14. Ingresar capas y neuronas de la red la funcionalidad del botn se basa en que luego de que el usuario ingresa un numero de capas deseado, al hacer clic en el botn, este permite agregar las neuronas deseadas para dicha capa: function btn_capas_Callback( hObject, eventdata, handles) %Obtenemos el numero de %capas ingresadas por el usuario %y se lo transforma a numerico temp_1 = get(handles.txt_capas,String); temp_2 = str2num(temp_1); %Entrada del numero de neuronas %por capa, Se utiliza una matriz vector_capas=[]; %La funcion que tendra cada capa, % igual numero de capas %y de funciones. Se utiliza un array vector_func_por_capa={}; %Se recupera la %funcion de activacion seleccionada %por el usuario funcion_recuperada= handles.func_activ_guardada; for n=1:1:temp_2 %Mediante un inputdlg se ingresa %el numero de %neuronas para cada capa texto_1=Numero de neuronas para la capa ; texto_2=num2str(n); texto_completo = [texto_1 texto_2]; prompt = {texto_completo}; dlg_title = Numero de neuronas por capa; num_lines = 2; def = {1}; answer = inputdlg( prompt,dlg_title,num_lines,def); %Se crea el vector con las capas %y la cantidad de %neuronas para cada capa vector_capas=[vector_capas str2num( answer{1,1})]; %Se crea el array con el numero %de funciones necesarias vector_func_por_capa(n)={ funcion_recuperada}; end %Se guardan los resultados para %integrarlos en la funcion newff handles.num_capas = vector_capas; guidata(hObject,handles); handles.vector_func_por_capa_guardada= vector_func_por_capa; guidata(hObject,handles); %Se activa el boton para ejecutar set(handles.btn_ejecutar,Enable,on); set(handles.btn_red_neuronal,Enable,off); La funcin que se ver a continuacin esta en el callback del botn btn_ejecutar con la etiqueta Gracar: Fig 15. Botn Gracar la funcionalidad del botn consiste en que una vez seleccio- nada la funcin de activacin, el tipo de entrenamiento, hayan sido ingresados los valores de entrada, las capas y las neuronas para cada capa, se integra dentro de la funcin newff para luego ser gracado, mostrando as los resultados esperados: function btn_ejecutar_Callback( hObject, eventdata, handles) valor = get(handles.txt_capas,String); valor = str2double(valor) %verificacion para asegurar que se %hayan ingresado las capas if ~isnan(valor) %Se obtienen los valores de las entradas 7 %transformando de cadena % a numero para realizar %operaciones con los mismos P=str2num(get(handles.txt_P,String)); T=str2num(get(handles.txt_T,String)); %De igual manera con el entrenamiento entrenam_recuperado = handles.entrenam_guardado; %Recuperar las funciones para %cada una de las capas. %Cada capa tiene una funcion %es decir si existen 5 capas %entonces existiran 5 funciones %hardlim o hardlims para cada %capa de la red func_por_capa = handles.vector_func_por_capa_guardada; %Recuperar numero de capas con sus neuronas capas_y_neuronas = handles.num_capas; %Creacion de la red neuronal u %tilizando newff net = newff( minmax(P),capas_y_neuronas, func_por_capa,entrenam_recuperado); %pesos net.IW(1); %bias net.b(1); %simulacion de la red Y = sim(net,P); %Grafica plot(handles.axis_grafica,P,T,P,Y,o); %Se guarda el estado actual de la red %para uso posterior handles.net_guardada = net; guidata(hObject,handles); %se activa el boton presentar red neuronal set(handles.btn_red_neuronal,Enable,on); else %Mensaje de error en %caso de no ingresar capas errordlg( Debe ingresar un numero de capas valido para la red); end Por ltimo la funcin en el callback del botn btn_red_neuronal con la etiqueta Ver red Neuronal: Fig 16. Botn Ver red Neuronal este botn permite recuperar el estado de la red guardado con anterioridad y a su vez generar la vista de la estructura de la red neuronal: function btn_red_neuronal_Callback( hObject, eventdata, handles) valor = get(handles.txt_capas,String); valor = str2double(valor) %verificacion para asegurar que se %hayan ingresado las capas if ~isnan(valor) %Se recupera el estado %de la red y se presenta la %vista con la red neuronal %y sus componentes net_recuperada = handles.net_guardada; view(net_recuperada); else %Mensaje de error en %caso de no ingresar capas errordlg( Debe ingresar un numero de capas valido para la red); end IV. CONCLUSIONES El elemento mas bsico del cerebro es la neurona, la cual por si sola no hace mucho pero si juntamos millones de ellas, entonces se vuelven poderosas. El modelo computacional de una neurona articial es una imitacin del proceso de una neurona biolgica. El comportamiento de las neuronas esta dado por la funcin de activacin la cual se encarga de calcular el nivel o estado de activacin de la neurona en funcin de la entrada total Matlab es un lenguaje de programacin muy potente de lo cual se puede destacar la inmensa cantidad de funciones para distintos nes, resaltando la facilidad para la creacin y mantenimiento de redes neuronales en la parte de Inteligencia Articial Integrar funcionalidades en una interfaz grca en Matlab, facilita al usuario el proceso de gracacin y generacin de redes neuronales a n de conseguir un entendimiento completo del funcionamiento de las mismas. REFERENCIAS [1] MATHWORKS, MATLAB,[En lnea]. Available: http://www.mathworks.com. [ltimo acceso: 08 de Mayo 2014]. [2] M. Gonzlez, INTRODUCCIN A MATLAB,[En lnea]. Available: http://www.araba.ehu.es/depsi/jg/imatlab.pdf. [ltimo acceso: 07 de Mayo 2014]. [3] S. Gmez, APRENDIZAJE CON REDES NEU- RONALES ARTIFICIALES,[En lnea]. Available: http://www.uclm.es/ab/educacion/ensayos/pdf/revista9/9_19.pdf. [ltimo acceso: 08 de Mayo 2014]. [4] S. Ledesma, LAS REDES NEURONALES, Implementacin y considera- ciones prcticas, Universidad de Guanajuato: Mexico, 2010. 8 [5] Introduccin a las redes neuronales articiales [En lnea]. Available: http://magomar.webs.upv.es/rna/tutorial/RNA_marcos.html [ltimo acce- so: 08 de Mayo 2014] Jairo Banda Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Experto en Mantenimiento Preventivo y Correctivo, Analista de Sistemas, Provincia de Loja, Ciudad Loja, Ecuador, 2014. Jhymer Martnez Estudiante de la Carrera de Ingeniera en Sistemas de la Universidad Nacional de Loja, Programador Nivel Medio en Java, Nivel Bsico Python, Matlab y otros lenguajes Provincia de Loja, Ciudad Loja, Ecuador, 2014.