regla de kohonen y red lvq

43
Inteligencia Artificial Regla de Kohonen y Red LVQ (Learning Vector Quantization) Ing. Ms. Jairo E. Márquez D. Introducción La aplicación de las redes neuronales artificiales se ha extendido a diversas disciplinas, esto debido principalmente a sus características de adaptividad, confiabilidad y auto-organización. Una ventaja destacable para el procesamiento de datos radica en la posibilidad de su implementación con tecnologías específicas disponibles, que posibilitan su operación en tiempo real. Dos de las topologías de red más difundidas son el Perceptron Multicapa (MLP – Multilayer Perceptron) y el denominado Modelo de Kohonen. Perceptron Multicapa (MLP). El Perceptron Multicapa se caracteriza por presentar una no-linealidad en la salida, con capas de neuronas ocultas y un alto grado de conectividad. Es de entrenamiento supervisado. Utiliza el algoritmo de retro- propagación del error. Este algoritmo está basado en la regla de aprendizaje por corrección de error, considerada como una generalización del algoritmo de los cuadrados mínimos (LMS), utilizado en filtrado adaptivo mediante redes lineales simples (Haykin, 1994). Su operación consta de dos fases, una directa y una inversa o de retroceso. En la fase directa, se ingresa el patrón de actividad en la capa de entrada de la red (vector de entrada), que recorre todas las capas subsiguientes. Se obtiene la respuesta real de la red en la capa de salida. En esta fase, los pesos sinápticos de la red permanecen fijos. En la fase inversa, los pesos sinápticos son ajustados de acuerdo con la regla de corrección del error. Esta regla, conocida como método de Levenberg- Marquardt (Marquardt, 1963), minimiza el cuadrado de las diferencias entre la respuesta o salida deseada y la salida real de la red. Las redes del tipo MLP son muy utilizadas en el procesamiento de bioseñales cardíacas para el diagnóstico médico (Harrison y col., 1991; Baxt, 1992). Modelo de Kohonen. Ciertas evidencias sugieren que algunas neuronas cerebrales se organizan en zonas, de manera que la información recibida de los órganos sensoriales se representan internamente en forma de mapas topológicos, según un cierto aprendizaje. Para el caso del Modelo de Kohonen, éste pertenece al grupo de algoritmos de codificación vectorial. El modelo genera un mapa topológico para ubicar de manera óptima, un número fijo de vectores en un espacio de entrada de mayor dimensión, y así facilitar la compresión de datos (Haykin, 1994). La derivación de este modelo presenta dos variantes: el Mapa Auto-organizativo (SOM – Self- Organizing Map) y el Learning Vector Quantization (LVQ). Ambas variantes se basan en el principio de formación de

Upload: universidad-de-cundinamarca

Post on 29-Jul-2015

54 views

Category:

Education


2 download

TRANSCRIPT

Page 1: Regla de kohonen y Red LVQ

Inteligencia Artificial

Regla de Kohonen y Red LVQ (Learning Vector Quantization)

Ing. Ms. Jairo E. Márquez D. Introducción La aplicación de las redes neuronales artificiales se ha extendido a diversas disciplinas, esto debido principalmente a sus características de adaptividad, confiabilidad y auto-organización. Una ventaja destacable para el procesamiento de datos radica en la posibilidad de su implementación con tecnologías específicas disponibles, que posibilitan su operación en tiempo real. Dos de las topologías de red más difundidas son el Perceptron Multicapa (MLP – Multilayer Perceptron) y el denominado Modelo de Kohonen. Perceptron Multicapa (MLP). El Perceptron Multicapa se caracteriza por presentar una no-linealidad en la salida, con capas de neuronas ocultas y un alto grado de conectividad. Es de entrenamiento supervisado. Utiliza el algoritmo de retro-propagación del error. Este algoritmo está basado en la regla de aprendizaje por corrección de error, considerada como una generalización del algoritmo de los cuadrados mínimos (LMS), utilizado en filtrado adaptivo mediante redes lineales simples (Haykin, 1994). Su operación consta de dos fases, una directa y una inversa o de retroceso. En la fase directa, se ingresa el patrón de actividad en la capa de entrada de la red (vector de entrada), que recorre todas las capas subsiguientes. Se obtiene la respuesta real de la red en la capa de salida. En esta fase, los pesos sinápticos de la red permanecen fijos. En la fase inversa, los pesos sinápticos son ajustados de acuerdo con la regla de corrección del error. Esta regla, conocida como método de Levenberg-Marquardt (Marquardt, 1963), minimiza el cuadrado de las diferencias entre la respuesta o salida deseada y la salida real de la red. Las redes del tipo MLP son muy utilizadas en el procesamiento de bioseñales cardíacas para el diagnóstico médico (Harrison y col., 1991; Baxt, 1992). Modelo de Kohonen. Ciertas evidencias sugieren que algunas neuronas cerebrales se organizan en zonas, de manera que la información recibida de los órganos sensoriales se representan internamente en forma de mapas topológicos, según un cierto aprendizaje. Para el caso del Modelo de Kohonen, éste pertenece al grupo de algoritmos de codificación vectorial. El modelo genera un mapa topológico para ubicar de manera óptima, un número fijo de vectores en un espacio de entrada de mayor dimensión, y así facilitar la compresión de datos (Haykin, 1994). La derivación de este modelo presenta dos variantes: el Mapa Auto-organizativo (SOM – Self- Organizing Map) y el Learning Vector Quantization (LVQ). Ambas variantes se basan en el principio de formación de

Page 2: Regla de kohonen y Red LVQ

mapas topológicos para establecer características comunes entre los vectores (informaciones) de entrada a la red. Difieren en las dimensiones de los vectores de entrada, siendo multidimensional en el caso de SOM y unidimensional en LVQ (Hilera y Martínez, 1995). LVQ es una técnica de aprendizaje supervisado, que explota la estructura esencial del vector de entrada a los fines de la compresión de datos. Un espacio de entrada se divide en un número de regiones distintas y se define un vector reproducción para cada región.

Cuando se presenta un nuevo vector de entrada, se determina a qué región pertenece y se lo representa por el vector reproducción de esa región, obteniendo un considerable ahorro de almacenamiento (Haykin, 1994). La arquitectura de la red LVQ presenta dos capas con N neuronas de entrada y M de salida. Cada una de las N neuronas de entrada se conecta a las M de salida hacia delante (feedforward). Entre las neuronas de la capa de salida, existen conexiones laterales de inhibición (peso negativo). El valor que se asigne a los pesos de las conexiones feedforward entre las capas de entrada y salida durante el proceso de aprendizaje de la

red, va a depender de esta interacción lateral. El aprendizaje es de tipo competitivo. Las neuronas de la salida compiten por activarse y sólo una de ellas permanece activa ante una determinada información de entrada a la red. Esta neurona se denomina prevalente o vencedora, y en función de ella se ajustan los pesos de las conexiones (Hilera y Martínez, 1995).

Conceptos Claves:

• Neurona: Unidad fundamental del sistema nervioso.

• Perceptrón: Unidad fundamental de una red neuronal artificial

• Rede Neuronal Artificial (RNA): Conjunto de perceptrones entrenados para la identificación de patrones.

• Patrón: Elemento o vector con el cual se contrasta el conocimiento.

• Autoorganización: Forma que tiene una estructura de organizarse por sí mismo.

• Memoria: Elemento principal de una red neuronal para recordar los pasos ya efectuados.

• Mapa: Estructura fundamental de una red neuronal no supervisada.

• Simulación: Diseñar e implantar un ambiente real o imaginario de cierto tema.

• Emulación: Diseñar un ambiente real, existente.

• Sistema de control: Elementos que interactúan entre sí para tener el mando de una tarea.

Page 3: Regla de kohonen y Red LVQ

Hardware vs. Software1

La mayoría de las aplicaciones ANN (Artificial Network Neuronal) en uso comercial están implementadas en software, y corren en una computadora de propósito general con un procesador convencional simple. Este hecho es principalmente debido a la flexibilidad del software. Es particularmente importante al usar comparativamente nuevas y desconocidas tecnologías, donde las condiciones pueden ser algo experimentales. En cambio, el hardware especializado (que puede soportar o reemplazar el software) ofrece apreciables ventajas en algunas situaciones.

Las razones más comunes para usar hardware ANN especializado son las siguientes:

Velocidad: la mayoría de las aplicaciones podrían acelerarse por el uso de hardware especializado. El procesamiento más rápido de cálculos repetitivos es un acercamiento. Las ANN tienen la característica adicional de que son intrínsecamente paralelas, y las implementaciones hardware pueden hacer uso de esto. El hardware ANN puede también ofrecer un considerable potencial para

mejoramientos en velocidad.

Costo: una implementación hardware puede proveer márgenes para reducir los costos del sistema, bajando la cantidad total de componentes, la potencia de los requerimientos, etc. Esto puede ser importante en algunas aplicaciones de gran volumen tales como productos de consumo, las cuales son muy susceptibles en el precio.

Confiabilidad: por razones similares a la reducción de costo, una implementación hardware puede ofrecer una mayor confiabilidad en la operación, en el sentido de la reducida probabilidad de fallas en el equipo.

Condiciones operativas especiales: en aplicaciones que imponen restricciones tales como tamaño físico o peso limitado, una implementación hardware puede ser esencial.

Seguridad: el hardware especializado puede ofrecer mejor protección contra la “ingeniería inversa” de potenciales competidores que las equivalentes funciones implementadas en software.

Componentes utilizados

Los componentes hardware ANN están disponibles en diferentes formas. La elección entre ellas está gobernada por la naturaleza de la aplicación. Los principales tipos son:

Neurocomputadoras, proveen un completo sistema basado en técnicas neuronales. Están generalmente apuntadas para solucionar problemas, que demandan significativo 1 Fuente de consulta. Inteligencia Artificial. [En línea]. http://www.utpl.edu.ec/ecc/wiki/index.php/Inteligencia_Artificial_%28Materia%29 consultado el 25 de agosto de 2010.

Page 4: Regla de kohonen y Red LVQ

poder de procesamiento: por ejemplo, aquellas con largas redes y/o altos requerimientos de velocidad. Cabe agregar al respecto, que actualmente se están desarrollando un nuevo elemento para acelerar el procesamiento de las computadoras ópticas: nanopartículas de oro, fragmentos de virus y fragmentos de ADN. Todo este desarrollo impulsado 100% por la nanotecnología y las nanociencias.2

La computación óptica, uno de los campos más populares en la innovación tecnológica, involucra computadoras que envían data utilizando haces de luz. Para pulir el desempeño de sus máquinas los investigadores requieren de materiales que manipulen la luz con la máxima precisión. Hasta ahora la respuesta a esta búsqueda descansaba en los cristales fotónicos, sin embargo la construcción de estos cristales implica múltiples dificultades.

Recientemente se han probado nuevos materiales para resolver este reto tecnológico, y desarrollaron una estructura a partir de fragmentos de oro y virus, lo cual no solo promete mayor velocidad en el procesamiento de datos, sino que además inauguraría la era de las computadoras biológicas. Minúsculas nanopartículas de oro, en forma de esferas, fueron ensambladas con fragmentos de virus utilizando para ello material genético. Estos tres elementos quedan entretejidos en una especie de celda que posteriormente actúa como un cristal fotónico.3 En caso de confirmarse la viabilidad y eficiencia de este nuevo método, ello aceleraría significativamente la llegada de las computadoras biológicas a la sociedad civil.

Aceleradoras de PC y otras tarjetas: son generalmente hechas para un bus estándar tal como el ISA (para PCs). Estas ofrecen algunas de las ventajas de las neurocomputadoras, pero en una menor relación performance/precio.

Chips, que pueden ser usados para construir algunas de las formas precedentes o pueden ser incluidos dentro de otros dispositivos para hacer una unidad de aplicación completa. Las últimas son típicamente usadas en aplicaciones donde la unidad no está percibida primariamente como un dispositivo de computadora: por ejemplo, un electrodoméstico.

2 Nota del autor

3 Un cristal fotónico es un material estructurado de forma que su función dieléctrica varía periódicamente en el espacio. Aunque existen manifestaciones naturales de estos materiales, como los ópalos o ciertas estructuras microscópicas que dan lugar a coloraciones en las alas de algunas mariposas, se trata de materiales relativamente novedosos que inhiben la emisión espontánea de fotones y producen localización de luz respectivamente.

Los cristales fotónicos son nanoestructuras ópticas periódicas que están diseñadas para afectar el movimiento de los fotones de un modo similar al que la periodicidad de un cristal semiconductor afecta al movimiento de los electrones.

Page 5: Regla de kohonen y Red LVQ

Bibliotecas celda, que están disponibles para permitir un apropiado nivel de funcionalidad neuronal al ser incluidas dentro de un chip dedicado al lado de otras funciones necesarias. Esto es lo indicado para aplicaciones de gran volumen.

Microcomputadoras embebidas, que pueden ser pensadas como computadoras de propósito general implementando un software ANN en hardware dedicado sin los periféricos normales de una computadora (pantalla, teclado, disco, etc.).

Algunas de las tarjetas aceleradoras también contienen procesadores programables de propósito general. Su incrementado rendimiento es ganado por la aceleración de repetitivos pasos multiplicar-y-sumar, que son requeridos en simulaciones de software de operaciones paralelas.

Implementaciones Digitales

En una implementación digital de una red neuronal, todos los valores pasados en la red están representados por palabras binarias con una longitud de palabra característica. La tecnología digital ofrece muchas ventajas sobre los circuitos analógicos, como la liberación del ruido, la habilidad para usar RAM para almacenar coeficientes de peso por una indefinida longitud de tiempo, tecnologías de fabricación off-the-shelf, precisión exacta en las fases de multiplicación y suma y una fácil incorporación dentro de sistemas existentes. Contra estas ventajas deben ser puestas algunas restricciones impuestas por una tecnología digital. Principalmente, la velocidad de operación es más baja, especialmente en los pasos de multiplicación y suma, y también las entradas desde el mundo real son típicamente analógicas, y deben ser convertidas a una representación digital antes de que el proceso pueda ser llevado a cabo.

Arquitecturas Slice

Las arquitecturas slice proveen bloques de construcción de los cuales pueden ser construidas redes neuronales de tamaño y longitud de palabra arbitraria. Ejemplos de arquitecturas slice son el Philip Lneuro chip, el Micro Devices MD1220 y el Neuralogix NLX-420 Neural Processor.

Chips multiprocesador

El acercamiento multiprocesador consiste en poner muchos procesadores simples en un solo procesador. Esas soluciones pueden ser divididas en dos grupos conocidos como SIMD (Instrucción simple, Datos múltiples) y arreglos sistólicos. En un diseño SIMD, todos los procesadores ejecutan la misma instrucción en paralelo en diferentes datos. En un arreglo sistólico, por otra parte, cada procesador repetidamente realiza un paso de un cálculo antes de pasar su resultado al siguiente procesador en el arreglo. Los chips SIMD incluyen el Inova N64000, que contiene 64 elementos de procesamiento (PEs), el chip HNC 100NAP contiene 4 PEs, y el chip Siemens MA-16, el cual está diseñado para realizar rápidas será obligatoriamente necesario operaciones matriciales.

Page 6: Regla de kohonen y Red LVQ

Funciones Base Radiales

Las redes de Funciones Base Radiales (RBF) operan por la manipulación de vectores prototipo, que definen regiones de influencia alrededor de la formación de datos de entrada. Cada vector puede ser pensado como una esfera en un espacio hiperdimensional definido por el tamaño del vector. Las redes RBF proveen un rápido aprendizaje y una sencilla interpretación. La comparación de vectores de entrada para almacenar vectores de formación puede ser muy rápida si son hechas algunas simplificaciones; por ejemplo, tratando la región de influencia como un hipercubo en vez de una hiperesfera. Los productos RBF comerciales incluyen el chip IBM ZISC (Computadora de Juego de Instrucciones Cero) y el chip Nestor Ni1000. Aunque fabricado por una nominalmente compañía estadounidense, la familia de chips ZISC fue diseñada en Europa.

Otros diseños digitales

Algunas redes neuronales digitales no pueden ser fácilmente clasificadas usando las diferentes categorías expuestas anteriormente. Por ejemplo, el Micro Circuit Engineering MT19003 NISP es esencialmente un procesador RISC, que implementa siete instrucciones optimizadas para redes multicapa. Los chips Hitachi Wafer Scale Integration representan otro acercamiento de implementación. Todos los wafers (galletas) han sido diseñados para implementar redes Hopfield y de retropropagación.

Implementaciones Analógicas

Las redes neuronales de hardware analógico tienen la capacidad de alcanzar altas velocidades y alta densidad de implementación. Contra estas ventajas debe ser fijada la dificultad en la obtención de alta precisión a efectos de diferencias en componentes debido a tolerancias de fabricación, variaciones en temperatura y ruido termal, que limitará las señales prácticas más pequeñas en el sistema. Otros problemas son causados por la dificultad en el almacenamiento a largo plazo de coeficientes de peso analógicos y la implementación de multiplicadores analógicos, que son lineales sobre un amplio rango de operación.

Un acercamiento para la implementación de redes analógicas es un diseño neurofórmico, donde la circuitería intenta imitar el comportamiento de neuronas biológicas y sinapsis tan cerca como sea posible. Las redes neuronales vivientes son construidas por neuronas, que son menos que perfectas, con problemas de matching y no linealidades, y confían en las interconexiones entre ellas para compensar sus deficiencias. Similarmente, diseños tales como el Synaptics Silicon Retina, realizan funciones útiles de procesamiento de imágenes mediante la emulación de funciones de las celdas en una retina biológica. El Intel 8017NW ETANN es un Electrically Trainable Analogue Neural Network que contiene 64 neuronas y 10280 pesos sinápticos, que son almacenados para atrapar carga en compuertas flotantes.

Page 7: Regla de kohonen y Red LVQ

Diseños Híbridos

Por la combinación de técnicas digitales y analógicas, los diseños híbridos intentan obtener lo mejor de ambos mundos. En algunos diseños las comunicaciones externas son alcanzadas vía señales digitales, permitiendo una fácil integración con otros sistemas de cómputo, mientras que el procesamiento interno es hecho total o parcialmente en una circuitería analógica. El chip Bellcore CLNN-32 almacena los coeficientes de peso digitalmente pero cumple annealing simulada usando circuitería analógica. Similarmente, el chip AT&T ANNA usa carga almacenada en un capacitor, donde es refrescada periódicamente desde un DAC que almacena los coeficientes de peso. El Neuroclassifier, desarrollado en la Universidad de Twente en Holanda, usa almacenamiento digital de coeficientes de peso junto con un procesamiento analógico para lograr una performance de 20G conexiones por segundo. Otra técnica es usar ratio de pulsos o anchos de pulso en vez de niveles de voltaje en las redes. El chipset Neural Semiconductor, que comprime la unidad SU3232 Synapse y la unidad NU32 Neuron, junto con el Ricoh RN-100 son otros ejemplos de sistemas híbridos.

Implementaciones Ópticas

Las implementaciones ópticas aun no están bien desarrolladas pero ofrecen el potencial más grande para el crecimiento futuro de los sistemas de redes neuronales. En el diseño óptico, los hologramas se usan para implementar la función sináptica. La conectividad se logra a través de la luz. Uno de los grandes problemas que surgían en la implementación de redes neuronales de alta densidad queda aquí eliminado a causa de que los rayos de luz no pueden sufrir interferencias. Sin embargo, la principal dificultad es poder soportar la variedad de tipos de entrada que existen a menudo, como también la generación de atenuadores holográficos.

Ejemplos

Las redes neuronales han sido usadas en la imitación de patrones, para generalizar, para combinar nuevas situaciones con otras anteriores, reflejar estructuras dentro de su

entorno, y seleccionar entre diversas posibilidades. Intel Corporation lanzó un chip de red neuronal analógica en Agosto de 1990. Basado en tecnología EPROM, constaba de 64 neuronas totalmente interconectadas y era apto para reemplazar una capa en una red de capa múltiple. Sin embargo, la sinapsis requería un complejo circuito de programación, por lo que el chip era más adecuado para la ejecución a gran velocidad de problemas que exigieran poco reentrenamiento. Las

investigaciones prosiguieron además en los laboratorios de AT&T, TRW, Texas Instruments, IBM, General Electric, NASA’s Jet Propulsion Laboratory, entre otros. AT&T Bell puso a prueba un chip de 512 neuronas. NHK Science and Technology Laboratories de Japón está trabajando en una red neuronal de reconocimiento de

Page 8: Regla de kohonen y Red LVQ

caracteres. SAIC Technology Research ofrece una placa de circuitos que puede ser agregada a una computadora convencional para simular una red neuronal de una frecuencia de actualización de conexiones sinápticas de 2 millones por segundo.

También, puede encontrarse en la actualidad otras plaquetas incorporables similares. Los investigadores de Allied Signal entrenaron una red para reconocer objetivos submarinos a partir de un sonar. Con sólo 3 horas de entrenamiento, la red neuronal era capaz de reemplazar a los operarios humanos y a un programa de computadora cuya construcción había insumido más de 10 meses.

La Universidad de Pennsylvania creó una red neuronal óptica para detectar objetos mediante un radar, que es capaz de identificar varios tipos de vehículos con sólo el 10% del patrón completo de radar. El soft NestorWriter de Nestor, Inc. utiliza un diseño de red neuronal para interpretar letras manuscritas sobre un pad sensible. Reconoce cualquiera de los 2500 caracteres del idioma japonés. Considerables pericias en el diseño de redes neuronales y sus aplicaciones en la industria están disponibles universidades por toda la Unión Europea. Existe fuerte colaboración en este campo, especialmente entre universidades, como lo expresado mediante programas ESPRIT existentes tales como NEuroNet.

Los beneficios de las redes neuronales han sido reconocidos especialmente en Japón, donde un número considerable de bienes de consumo está haciéndose usando esta tecnología. El más prominente producto recientemente ha sido un horno microondas (Sharp) que usa un módulo neuronal desarrollado en el Reino Unido. Otras aplicaciones de consumo de tecnología relacionada incluyen módulos de lógica difusa en cámaras y en aspiradoras. Las soluciones deberían ser hechas a la medida de las necesidades de la industria proveyendo la elección de implementaciones desde módulos software, pasando por FPGAs y chips semi-

adecuados hasta VLSI totalmente adecuados a las necesidades. Una biblioteca de funciones neuronales debería estar disponible en software y bibliotecas de celdas (digitales, mezcladas y analógicas) para hardware.

Las bibliotecas de software existen para los modelos de redes neuronales tradicionales, por ejemplo para usar con MATLAB. Las redes neuronales basadas en hardware son importantes para la industria, ya que ofrecen un reducido tamaño bajo poder de consumo comparado con software corriendo en una estación de trabajo. Por lo tanto tales controladores de redes neuronales pueden ser embebidos en un amplio rango de sistemas grandes y pequeños. Para que la industria se dedique a los diseños basados en universidades, esos diseños deben estar en una forma estándar industrial, por ejemplo el código funcional C++ o VHDL, debería ser modular y debería ser parametrizado para permitir la adecuación a las necesidades de la industria. Las siguientes compañías europeas son conocidas por haber investigado el uso de redes neuronales basadas en

Page 9: Regla de kohonen y Red LVQ

hardware: Ericsson (UK y Suecia), Philips Research (NL), Siemens AG Munich, Siemens / Nixdorf Bonn, 3M Laboratories (Europa) GmbH Neuss, XIONICS Document Technologies GmbH dortmund, Robert Bosch GmbH Reutlingen, Spectrum Microelectronics Siek (Alemania), Fiat (Italia), Domain Dynamics Ltd (UK).

Aún deben desarrollarse redes neuronales y algoritmos de aprendizaje que reflejen mejor la mente humana.

Modelos de Redes Neuronales más importantes:

Nombre de la red

Año Aplicaciones más importantes

Comentarios Limitaciones Inventada/ desarrollada

por Avalancha 1967 Reconocimiento de

habla continúa. Control brazos robot.

Ninguna red sencilla puede hacer todo esto.

No es fácil alterar la velocidad o interpolar el movimiento.

Stephen Grossberg.

Teoría Resonancia Adaptativa (ART)

1986 Reconocimiento de patrones (radar, sonar, etc.)

Sofisticada. Poco utilizada.

Sensible a la translación, distorsión y escala.

Gail Carpenter, Stephen Grossberg.

ADALINE / MADALINE

1960 Filtrado de señales. Ecualizador adaptativo. Modems.

Rápida, fácil de implementar con circuitos analógicos o VLSI.

Sólo es posible clasificar espacios linealmente separados.

Bernard Widrow.

Back Propagation

1974-85

Síntesis de voz desde texto. Control de robots. Predicción. Reconocimiento de patrones.

Red más popular. Numerosas aplicaciones con éxito. Facilidad de aprendizaje. Potente.

Necesita mucho tiempo para el aprendizaje y muchos ejemplos.

Paul Werbos, David Parker, David Rumelhart.

Memoria Asociativa Bidireccional

1985 Memoria heteroasociativa de acceso por contenido.

Aprendizaje y arquitectura simples.

Baja capacidad de almacenamiento. Los datos deben ser codificados.

Bart Kosko.

Máquinas de Boltzmann y Cauchy

1985-86

Reconocimiento de patrones (imágenes, sonar y radar). Optimización.

Redes simples. Capacidad de representación óptima de patrones.

La máquina de Boltzmann necesita un tiempo muy largo de aprendizaje.

Jeffrey Hinton, Terry Sejnowski, Harold Szu.

Brain-Estate –in-a-Box

1977 Extracción de conocimiento de bases de datos.

Posiblemente mejor realización que las redes de Hopfield.

Realización y potenciales aplicados no estudiadas totalmente.

James Anderson

Cerebellatron 1969 Control de movimiento de los brazos de un robot.

Semejante a Avalancha. Requiere complicadas entradas de control.

David Marr, James Albus, Andres Pellionez.

Counter- propagation

1986 Comprensión de imágenes.

Combinación de Perceptron y TPM

Numerosas neuronas y conexiones.

Robert Hecht- Nielsen.

Hopfield 1982 Reconstrucción de patrones y optimización.

Puede implementarse en VLSI. Fácil de conceptualizar.

Capacidad y estabilidad.

John Hopfield.

Neocognitron 1978-84

Reconocimiento de caracteres manuscritos.

Insensible a la translación, rotación y escala.

Requiere muchos elementos de proceso, niveles y conexiones.

K. Fukushima.

Perceptron 1957 Reconocimiento de caracteres impresos.

La red más antigua. Construida en HW.

No puede reconocer caracteres complejos.

Frank Rosenblatt.

Page 10: Regla de kohonen y Red LVQ

Self-Organizing-Map (SOM). Topology- Preserving- Map (TPM)

1980-84

Reconocimiento de patrones, codificación de datos, optimización.

Realiza mapas de características comunes de los datos aprendidos.

Requiere mucho entrenamiento.

Teuvo Kohonen.

Modelo de Kohonen Existen evidencias que demuestran que en el cerebro hay neuronas que se organizan en muchas zonas, de forma que las informaciones captadas del entorno a través de los órganos sensoriales se representan internamente en forma de mapas bidimensionales. Por ejemplo, en el sistema visual se han detectado mapas del espacio visual en zonas del córtex (capa externa del cerebro), también en el sistema auditivo se detecta una organización según la frecuencia a la que cada neurona alcanza mayor repuesta (organización tonotópica).

Aunque en gran medida esta organización neuronal está predeterminada genéticamente, es probable que parte de ella se origine mediante el aprendizaje, esto sugiere que el cerebro podría poseer la capacidad inherente de formar mapas topológicos de las informaciones recibidas del exterior, de hecho esta teoría podría explicar su poder de operar con elementos semánticos: algunas áreas del cerebro simplemente podrían crear y

ordenar neuronas especializadas o grupos con características de alto nivel y sus combinaciones, en definitiva se construirían mapas especiales para atributos y características. A partir de estas ideas Tuevo Kohonen presentó en 1982 un sistema con un comportamiento semejante, se trataba de un modelo de red neuronal con capacidad para formar mapas de características de manera similar a como ocurre en el cerebro; el objetivo de Kohonen era demostrar que un estímulo externo (información de entrada) por sí solo, suponiendo una estructura propia y una descripción funcional del comportamiento de la red, era suficiente para forzar la formación de los mapas. Este modelo tiene dos variantes denominadas LVQ (Learning Vector Quantization) y TPM (Topology Preserving Map) o SOM (Self Organizing Map), ambas se basan en el principio de formación de mapas topológicos para establecer características comunes entre las informaciones (vectores) de entrada a la red, aunque difieren en las dimensiones de éstos, siendo de una sola dimensión en el caso de LVQ y bidimensional o tridimensional en la red SOM.

Page 11: Regla de kohonen y Red LVQ

El aprendizaje en el modelo de Kohonen es de tipo Off-line, por lo que se distingue una etapa de aprendizaje y otra de funcionamiento. En la etapa de aprendizaje se fijan los valores de las conexiones (feedforward) entre la capa de entrada y la salida. Esta red utiliza un aprendizaje no supervisado de tipo competitivo, las neuronas de la capa de salida compiten por activarse y sólo una de ellas permanece activa ante una determinada información de entrada a la red, los pesos de las conexiones se ajustan en función de la neurona que haya resultado vencedora.

Durante la etapa de entrenamiento, se presenta a la red un conjunto de informaciones de entrada (vectores de entrenamiento) para que ésta establezca en función de la semejanza entre los datos las diferentes categorías (una por neurona de salida), que servirían durante la fase de funcionamiento para realizar clasificaciones de nuevos datos que se presenten a la red. Los valores finales de los pesos de las conexiones entre cada neurona de la capa de salida con las de entrada se corresponderán con los valores de los componentes del vector de aprendizaje que consigue activar la neurona correspondiente. En el caso de

existir más patrones de entrenamiento que neuronas de salida, más de uno deberá asociarse con la misma neurona, es decir pertenecerán a la misma clase.

En este modelo el aprendizaje no concluye después de presentarle una vez todos los patrones de entrada, sino que habrá que repetir el proceso varías veces para refinar el mapa topológico de salida, de tal forma que cuantas más veces se presenten los datos, tanto más se reducirán las zonas de neuronas que se deben activar ante entradas parecidas, consiguiendo que la red pueda realizar una clasificación más selectiva.

Para llegar a tal modelo, Teuvo Kohonen, trabajó extensivamente, en lo que se denomina Memorias Asociativas4 y en modelos para actividad neurobiológica.

4 Se entiende por memoria asociativa el almacenamiento y recuperación de información por asociación con otras informaciones. Un dispositivo de almacenamiento de información se llama memoria asociativa si permite recuperar información a partir de conocimiento parcial de su contenido, sin saber su localización de almacenamiento. A veces también se le llama memoria de direccionamiento por contenido. Los computadores tradicionales no usan este direccionamiento; se basan en el conocimiento exacto de la dirección de memoria en la que se encuentra la información. Sin embargo, se cree que el cerebro humano no actúa así. Si queremos recordar el nombre de una persona, no nos sirve saber que fue el nombre número 3274 que aprendimos. Es más útil saber que su nombre empieza y termina por 'N' y que es un famoso científico inglés. Con esta información, es casi seguro que recordaremos exitosamente a "Newton". Las memorias asociativas son una de las redes neuronales artificiales más importantes con un amplio rango de aplicaciones en áreas tales como: Memorias de acceso por contenido, identificación de patrones y control inteligente.

Page 12: Regla de kohonen y Red LVQ

En líneas generales, las redes entrenadas mediante esta regla se caracterizan por diferentes factores: por una parte, tratan de asociar vectores de entrada a patrones de salida. En otro sentido, el aprendizaje es Sin Supervisar y por último las estructuras de las redes las forman solamente 2 capas (entrada y salida). Existen 2 conceptos fundamentales en que se basa esta regla de aprendizaje: - Aprendizaje Competitivo. - Autoorganización. Aprendizaje Competitivo Esta idea se basa en la existencia de una cierta competitividad entre los pesos de entrada (PE) de la capa de salida por la oportunidad de entrenarse (aprender). Esto, se refiere a que, el PE que produce la salida mayor se le considera Ganador, y tiene la capacidad de inhibir a los otros PEs (no presentan activación: salida nula). Todo ello conlleva que solamente los pesos del PE ganador podrán ser ajustados. Al igual que otras estructuras competitivas, el PE ganador se determina para cada vector de entrada, basándose en la similitud entre el vector de entrada y el vector de pesos. Un concepto muy importante en la red de Kohonen es la zona de vecindad, o vecindario alrededor de la neurona vencedora i*, los pesos de las neuronas que se encuentren en esta zona a la que se le dará el nombre de X(q), serán actualizados junto con el peso de la neurona ganadora, en un ejemplo de aprendizaje cooperativo.

El algoritmo de aprendizaje utilizado para establecer los valores de los pesos de las conexiones entre las N neuronas de entrada y las M de salida es el siguiente:

1. En primer lugar se inicializan los pesos (wij ) con valores aleatorios pequeños y se fija la zona inicial de vecindad entre las neuronas de salida.

Una memoria asociativa puede almacenar información y recuperarla cuando sea necesario, es decir, una red retroalimentada, cuya salida se utiliza repetidamente como una nueva entrada hasta que el proceso converge. Puede recuperar dicha información basándose en el conocimiento de parte de ésta (clave). El patrón clave puede ser una versión con ruido de un patrón memorizado, es decir, que difiere de él en pocas componentes. La memoria humana recuerda a una persona aunque vaya vestida de forma diferente. Tipos de Memorias Asociativas

- Memorias heteroasociativas: establecen una correspondencia de x (vector de entrada) en y (vector de salida), de distinta dimensión. Dichos patrones se llaman memorias principales o de referencia.

- Memorias autoasociativas: establece la misma correspondencia que la memoria heteroasociativa pero siendo los patrones de entrada y de salida los mismos.

Page 13: Regla de kohonen y Red LVQ

2. A continuación se presenta a la red una información de entrada (la que debe aprender) en forma de vector p = (p1, p2,..., pn), cuyas componentes pi serán valores continuos.

3. Puesto que se trata de un aprendizaje competitivo, se determina la neurona vencedora de la capa de salida, esta será aquella i cuyo vector de pesos wi (vector cuyas componentes son los valores de los pesos de las conexiones entre esa neurona y cada una de las neuronas de la capa de entrada) sea el más parecido a la información de entrada p (patrón o vector de entrada). Para ello se calculan las distancias o diferencias entre ambos vectores, considerando una por una todas las neuronas de salida, suele utilizarse la distancia euclídea o la siguiente expresión que es similar a aquella, pero eliminando la raíz cuadrada:

�� = ∑ (�� − ��)���

2 1 ≤ � ≤ �

pj: Componente i-ésimo del vector de entrada

wij: Peso de la conexión entre la neurona j de la capa de entrada y la neurona i de la capa de salida.

Figura. Conexiones de una red de Kohonen

4. Una vez localizada la neurona vencedora (i*), se actualizan los pesos de las conexiones entre las neuronas de entrada y dicha neurona, así como los de las conexiones entre las de entrada y las neuronas vecinas de la vencedora, en realidad lo que se consigue con esto es asociar la información de entrada con una cierta zona de la capa de salida. Esto se realiza mediante la siguiente ecuación

w(q)= w(q-1)+a(q)(p(q)-w(q-1)) para i X(q)

El tamaño de X(q)se puede reducir en cada iteración del proceso de ajuste de los pesos, con lo que el conjunto de neuronas que pueden considerarse vecinas cada vez es menor como se observa en la figura, sin embargo en la práctica es habitual considerar una zona fija en todo el proceso de entrenamiento de la red.

Page 14: Regla de kohonen y Red LVQ

Figura. Posible evolución de la vecindad en una red de Kohonen

El término α(q) es el coeficiente de aprendizaje o parámetro de ganancia, con un valor entre 0 y 1 el cual decrece con el número de iteraciones(q) del proceso de entrenamiento, de tal forma que cuando se ha presentado un gran número de veces todo el juego de patrones de aprendizaje su valor es prácticamente nulo, con lo que la modificación de los pesos es insignificante.

Para hallar α(q) suele utilizarse una de las siguientes expresiones:

�(�) = �� �(�) = �� �� − �

���

Siendo α =1 un valor de 0.1 ó 0.2 y α2 un valor próximo al número total de iteraciones del aprendizaje, que por lo general se toma como 10000 para esta red.

5. El proceso debe repetirse, volviendo a presentar todo el juego de patrones de aprendizaje p1, p2..,pn hasta obtener la salida deseada.

Como la regla Instar, la regla de Kohonen habilita a los pesos de una neurona a aprender un vector de entrada y de esta forma resolver aplicaciones de reconocimiento de patrones. A diferencia de la regla Instar, el aprendizaje no es proporcional a la salida de la neurona ai(q), en lugar de ello el aprendizaje ocurre cuando la neurona i sea miembro del conjunto X(q), si la regla Instar es aplicada a una capa de neuronas cuya función de transferencia solamente retorna valores de 0 o 1 (por ejemplo hardlim), la regla de Kohonen es equivalente a la regla Instar. En definitiva lo que hace una red de Kohonen es realizar una tarea de clasificación, puesto que la neurona de salida activada ante una entrada representa la clase a la que pertenece dicha información de entrada, además ante otra entrada parecida se activa la misma neurona de salida, u otra cercana a la anterior debido a la semejanza entre las clases, así se garantiza que las neuronas topológicamente próximas sean sensibles a entradas físicamente similares; por esta causa la red es especialmente útil para establecer relaciones desconocidas previamente entre conjuntos de datos.

Page 15: Regla de kohonen y Red LVQ

Características

- La velocidad de aprendizaje suele disminuir con el tiempo, hasta que toma un valor próximo a 0 en cuyo caso el aprendizaje finaliza.

- La utilidad de sistemas que utilizan para su entrenamiento este tipo de

regla, está en tratar de asociar cada PE de la capa de salida a un grupo de vectores de entrada, con una cierta similitud, generando de tal manera clases o clusters.

Si existen más PE en la capa de salida que clases de patrones de entrada, pueden suceder dos cosas: la primera es que queden PE inactivos, es decir sin asociar a ninguna clase y por otro lado, que una clase tenga asociados más de un PE.

- Normalmente los patrones de entrada se Normalizan antes de entrar al sistema, la razón es la siguiente: El PE ganador se determina calculando una medida de similaridad entre el patrón de entrada y los vectores de pesos. Dicha similaridad se calcula empleando, normalmente, la Distancia Euclídea5 y ésta no sólo compara magnitudes entre vectores sino, también la orientación espacial.

En otras palabras, dos vectores son similares si apuntan en la misma dirección y la única manera que tenemos para asegurar este hecho es haciendo que los patrones estén normalizados, implicando que los pesos también lo estén. Por otra parte supone incrementar la velocidad de aprendizaje ya que, existe menos variabilidad en el espacio de pesos. Por ejemplo: (1,1,1,1); (4,4,4,4) son idénticos. Al normalizarlos nos quedan: (1/2,1/2,1/2,1/2). La normalización se debe realizar en función de lo que nos interese comparar. -Una Limitación de las redes competitivas es que algunas neuronas pueden no ser entrenadas. En otras palabras, pueden existir vectores de pesos muy distanciados de las entradas, con lo cual, nunca ganarán. Importantísimo en estos sistemas es la inicialización de pesos.

5 Recuerden que la distancia euclidiana o euclídea es la distancia "ordinaria" entre dos puntos de un espacio euclídeo, la cual se deduce a partir del teorema de Pitágoras. Por ejemplo, en un espacio bidimensional, la distancia euclidiana entre dos puntos P1 y P2, de coordenadas (x1, y1) y (x2, y2) respectivamente, es:

En general, la distancia euclidiana entre los puntos y

, del espacio euclídeo n-dimensional, se define como:

Page 16: Regla de kohonen y Red LVQ

Aplicaciones

El modelo de Kohonen es uno de los más útiles en computación neuronal, a pesar de sus limitaciones en cuanto a la duración del proceso de aprendizaje y a la imposibilidad de aprender nuevos datos sin tener que volver a repetir completamente el proceso de aprendizaje con todos los patrones.

Como aplicaciones, destacan las relacionadas con el reconocimiento de patrones (voz, texto, imágenes, señales, etc), codificación de datos, compresión de imágenes y resolución de problemas de optimización. También se ha utilizado en robótica, comprobándose su utilidad en el diseño de sistemas para controlar el movimiento de un brazo mecánico en un espacio tridimensional. Se utiliza aquí la red para aprender las magnitudes tensoriales necesarias para moverse en un entorno real, considerando los efectos del desgaste que pueden alterar la dinámica del brazo con el transcurso del tiempo.

Autoorganización

“La autoorganización es un proceso en el que la organización interna de un sistema, generalmente abierto, aumenta de complejidad sin ser guiado por ningún agente externo. Normalmente, los sistemas autoorganizados exhiben propiedades emergentes.

La autoorganización es objeto de estudio interdisciplinar, pues es una propiedad característica de los sistemas complejos6, ya sean éstos matemáticos, físicos, químicos, biológicos, sociales o económicos.”7

Para el caso concreto de la red de Kohonen, la autoorganización emerge conforme los patrones de conciencia cambian en el tiempo. Es importante anotar, que esa emergencia solo era atribuible a sistemas vivos, y con la red neuronal en este caso de kohonen, permite simular un sistema biológico, político, industrial, un proceso químico, autómatas celulares, etc.

6 Un Sistema Complejo está compuesto por varias partes interconectadas o entrelazadas cuyos vínculos crean información adicional no visible antes por el observador. Como resultado de las interacciones entre elementos, surgen propiedades nuevas que no pueden explicarse a partir de las propiedades de los elementos aislados. Dichas propiedades se denominan propiedades emergentes. 7 Fuente de consulta. Autoorganización. http://es.wikipedia.org/wiki/Autoorganizaci%C3%B3n [on line] consultado el 27 de septiembre de 2011.

Page 17: Regla de kohonen y Red LVQ

Ejercicio. Patrones de entrenamiento

A continuación se resuelve una red Kohonen, en la que de entrada se crea una serie de patrones de entrenamiento. Lo interesante de esta red, es que su evolución se sigue tanto en el command window como a nivel gráfico. Hay que tener especial atención en los cluster que se forman, pues es allí precisamente donde se notará las variantes de aprendizaje con o sin conciencia.

Éstos son los patrones de entrenamiento.

X = [8 0;10 2;10 11;12 9;2 7;6 7]; p = X';

Red de Kohonen La red de Kohonen se crea con la función newc. Fijamos la constante de aprendizaje en 0.01 y la constante de conciencia en 0.001 (estos son los defaults). Podemos ver que los pesos fueron inicializados al punto medio de los rangos de cada entrada. R = newc([2 12;0 9],3,0.01,0.00); w = R.IW{1,1}; plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))-1 m ax(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen') legend('pesos','patrones','location','NorthWest')

Page 18: Regla de kohonen y Red LVQ

Entrenamiento

La red se entrena con la función train. En este ejemplo, graficamos los pesos de la red después de cada 10 épocas.

R = init(red1); R.trainParam.epochs = 10; for i=1:25 R = train(R,p); w = R.IW{1,1}; plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))- 1 max(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen') legend('pesos','patrones','location','NorthWest' ) pause(0.1) end w a = sim(R,p); ac = vec2ind(a); [X ac']

Nota: Donde epochs es el número de veces que se recorre el dataset. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached.

Page 19: Regla de kohonen y Red LVQ

TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached.

Page 20: Regla de kohonen y Red LVQ

w = 10.9890 9.9207 9.0717 1.1068 4.3069 6.9468 ans = 8 0 2 10 2 2 10 11 1 12 9 1 2 7 3 6 7 3

Caso patológico sin conciencia

Mostramos la necesidad de conciencia inicializando los pesos a valores "patológicos", y creamos una red sin conciencia.

R = newc([0 4;-1 1],3,0.01,0.00); w = R.IW{1,1} plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))-1 m ax(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen sin conciencia') legend('pesos','patrones','location','NorthWest') w = 2 0 2 0 2 0

Page 21: Regla de kohonen y Red LVQ

Entrenamiento de caso patológico sin conciencia

Entrenamos la red sin conciencia con la función train. Se puede ver que los pesos no llegan a los centros de masa de los datos.

R = init(R); R.trainParam.epochs = 10; for i=1:25 R = train(R,p); w = R.IW{1,1}; plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))- 1 max(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen sin conciencia') legend('pesos','patrones','location','NorthWest' ) pause(0.1) end w a = sim(R,p); ac = vec2ind(a); [X ac'] TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10

Page 22: Regla de kohonen y Red LVQ

TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10

Page 23: Regla de kohonen y Red LVQ

TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. w = 7.6379 8.4310 7.8833 0.7035 2.0000 0 ans = 8 0 2 10 2 2 10 11 1 12 9 1 2 7 1 6 7 1

Page 24: Regla de kohonen y Red LVQ

Caso patológico con conciencia

Ahora creamos una red que sí tiene conciencia.

R = newc([0 4;-1 1],3,0.01,0.001); w = R.IW{1,1}; plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))-1 m ax(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen con conciencia') legend('pesos','patrones','location','NorthWest')

Page 25: Regla de kohonen y Red LVQ

Entrenamiento de caso patológico con conciencia Y entrenamos la red con conciencia. Como se puede ver, los pesos ahora sí llegan a los centros de masa de los datos. R = init(R); R.trainParam.epochs = 10; for i=1:25 R = train(R,p); w = R.IW{1,1}; plot(w(:,1),w(:,2),'xr',p(1,:),p(2,:),'o') axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))- 1 max(p(2,:))+1]) xlabel('x1') ylabel('x2') title('Red de Kohonen con conciencia') legend('pesos','patrones','location','NorthWest' ) pause(0.1) end w a = sim(R,p); ac = vec2ind(a); [X ac'] TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached.

Page 26: Regla de kohonen y Red LVQ

TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10 TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. TRAINR, Epoch 0/10

Page 27: Regla de kohonen y Red LVQ

TRAINR, Epoch 10/10 TRAINR, Maximum epoch reached. w = 11.0383 9.8582 8.8635 0.9147 3.9373 6.8875 ans = 8 0 2 10 2 2 10 11 1 12 9 1 2 7 3 6 7 3

Ejercicio 1. Desarrolle el código anterior y analice los resultados y cambie el número de época por 50, 100 y 200. Nota: No olvide aparte de anexar su código, el documento en Word de lo que obtuvo debidamente sustentado (anexando los pantallazos pertinentes)

Page 28: Regla de kohonen y Red LVQ

Ejercicio 2. Cree un archivo-m con su nombre, es decir nombre1.m que obtenga una clasificación de los puntos en clases usando la arquitectura de KOHONEN: Aprendizaje Competitivo Las neuronas de una capa competitiva aprenden a representar diferentes regiones del espacio de entrada donde ocurren los vectores de entrada. P es un conjunto generado aleatoriamente pero en racimo de datos de puntos de prueba. Aquí se grafican los puntos de datos. Una red competitiva se usara para clasificar estos puntos en clases. Se crea P. X = [0 1; 0 1]; % Los racimos centrados están dentro de estas fronteras. racimos = 8; % Este es el numero de racimos. puntos = 10; % Numero de puntos en cada racimo. desv_std = 0.05; % Desviacion estandar de cada racimo. P = nngenc(X,racimos,puntos,desv_std); % Grafica de P. plot(P(1,:),P(2,:), '+r' ); title( 'Vectores de Entrada' ); xlabel( 'p(1)' ); ylabel( 'p(2)' ); %% % Aqui NEWC usa tres argumentos de entrada, una mat riz de Rx2 de valores % min y max para R elementos de entrada, el numero de neuronas, y la razón % de aprendizaje. % % Podemos graficar los vectores de pesos para ver s u intento inicial de % clasificación. % Los vectores de pesos (marcados con o) se entrena ran de modo que % queden centrados en los racimos del vector de entrada (marcados con +). red = newc([0 1;0 1],8,.1); w = red.IW{1}; plot(P(1,:),P(2,:), '+r' ); hold on; circulos = plot(w(:,1),w(:,2), 'ob' ); %% % Se coloca el número de iteraciones (épocas) para entrenar antes de parar % y entrenar esta capa competitiva (puede tomar var ios segundos). % % Grafica los pesos actualizados de la capa en la m isma grafica.

Page 29: Regla de kohonen y Red LVQ

red.trainParam.epochs = 7; red = train(red,P); w = red.IW{1}; delete(circulos); plot(w(:,1),w(:,2), 'ob' ); %% % Ahora usamos la capa competitiva como un clasific ador, donde cada neurona % corresponde a una categoría diferente. Aquí prese ntamos el vector de entrada % [0; 0.2]. % % La salida, a, indica cual neurona está respondien do, y por lo tanto a que % clase pertenece la entrada. Note que SIM regresa la salida en el formato de % matriz esparcida para capas competitivas. p = [0; 0.2]; a = sim(red,p) ¿Cuáles son los valores finales de los pesos?} Ejercicio 3. Cree un archivo-m con su nombre “nombre2.m que se auto organice en una dimensión, para un conjunto de 100, 500 y 1000 puntos que forman un círculo unitario: Mapa Auto-organizado de una dimensión Las neuronas en una capa 2D aprenden a representar diferentes regiones del espacio de entrada donde los vectores de entrada ocurren. Además, las neuronas vecinas aprenden a responder a entradas similares, así la capa aprende la topología del espacio de entrada presentado. Aquí 100 puntos de datos se crean en un círculo unitario. Una red competitiva se usara para clasificar estos puntos en clases naturales. Pruebe para los demás puntos. angulos = 0:0.5*pi/99:0.5*pi; P = [sin(angulos); cos(angulos)]; plot(P(1,:),P(2,:), '+r' ) disp( 'Presione cualquier tecla para continuar' ); pause %% % El mapa será una capa de 1-dimensión de 10 neuron as. % % El primer argumento especifica las dos entradas, cada una con un rango de % 0 a 1. La segunda determina que la red es de una dimensión con 10 neuronas. red = newsom([0 1;0 1],[10]); %%

Page 30: Regla de kohonen y Red LVQ

% Especifica que la red se entrena en 10 iteracione s y usa TRAIN para % entrenar la red para el dato de entrada P: red.trainParam.epochs = 10; red = train(red,P); %% % ahora se grafica la red entrenada con PLOTSOM. % % Los puntos rojos son los pesos de las neuronas, y las líneas azules % conectan cada par dentro de una distancia de 1. plotsom(red.iw{1,1},red.layers{1}.distances) %% % El mapa puede ahora usarse para clasificar entrad as, como [1; 0]: % % Alguna neurona 1 o 10 debería tener una salida de 1, como el vector de % entrada anterior estaba al final del espacio de e ntrada presente. El % primer par de números indica la neurona, y el num ero solo indica su % salida. p = [1;0]; a = sim(red,p) Ejercicio 4. Cree un archivo-m con su nombren3.m que se auto organice en 2D, para un conjunto de 1000, 1500 y 2000 puntos de dos elementos aleatorios: Este mapa auto organizado aprenderá a representar diferentes regiones del espacio de entrada donde los vectores de entrada ocurren. En este programa, sin embargo, las neuronas se arreglaran así mismas en una cuadricula bidimensional, más bien que una línea. Se procede a clasificar 1000 vectores de dos elementos en un espacio vectorial de forma rectangular. clf P = rands(2,1000); plot(P(1,:),P(2,:), '+r' ) disp( 'Presione cualquier tecla para continuar' ); pause %% % Usaremos una capa de 5 por 6 neuronas para clasif icar los vectores % anteriores. Nos gustaría que cada neurona respond a a una región diferente % del rectángulo, y las neuronas vecinas respondan a regiones adyacentes.

Page 31: Regla de kohonen y Red LVQ

% Creamos una capa de 30 neuronas divididas en una cuadricula de 5 por 6. red = newsom([0 1; 0 1],[5 6]); %% % Podemos visualizar la red que acabamos de crear c on PLOTSOM. % % Cada neurona se representa por un punto rojo en e l lugar de sus dos pesos. % Inicialmente todas neuronas tienen los mismos pes os en la mitad de los % vectores, así solo un punto aparece. plotsom(red.iw{1,1},red.layers{1}.distances) disp( 'Presione cualquier tecla para continuar' ); pause %% % Ahora entrenamos el mapa de los 1000 vectores par a una iteración y % regraficamos los pesos de la red. % % Después del entrenamiemto, note que la capa de ne uronas ha comenzado a % auto organizarse de modo que cada neurona ahora c lasifica una región % diferente del espacio de entrada, y las neuronas adyacentes (conectadas) % responden a regiones adyacentes. red.trainParam.epochs = 1; red = train(red,P); plotsom(red.iw{1,1},red.layers{1}.distances) %% % Podemos ahora usar SIM para clasificar vectores a l proporcionarlos a la % red y viendo cual neurona responde. % % La neurona indicada por "a" responde con "1", así p pertenece a esa clase. p = [0.5;0.3]; a = sim(red,p)

Page 32: Regla de kohonen y Red LVQ

Red LVQ (Learning Vector Quantization)8 La auto organización en redes es uno de los más fascinantes tópicos en el campo de las redes neuronales. Tales redes pueden aprender a detectar regularidades y correlaciones en sus entradas y adaptar sus respuestas futuras de acuerdo a esa entrada. Las neuronas de redes competitivas aprenden a reorganizar grupos de vectores de entrada similares. Los mapas auto organizados aprenden a reorganizar grupos de vectores entrada similares de modo que acostumbre a esas neuronas físicamente cerca una de las otras en la capa neuronal a responder a similares vectores de entrada. La cuantización del vector de aprendizaje (LVQ) es un método para entrenar capas competitivas de un modo supervisado. Una capa competitiva automáticamente aprende a clasificar los vectores de entrada. Sin embargo, las clases que la capa competitiva encuentra dependen solo de la distancia entre los vectores de entrada. Si dos vectores de entrada son muy similares, la capa competitiva probablemente las pondrá en la misma clase. No hay un mecanismo en las capas estrictamente competitivas para decir sí o no cualquiera de dos vectores de entrada están en la misma clase o en diferente clase. Las redes LVQ, por otro lado, aprende a clasificar vectores de entrada en clases deseadas de acuerdo con el usuario. Esta red es un híbrido que emplea tanto aprendizaje no supervisado, como aprendizaje supervisado para clasificación de patrones

Figura 1. Red LVQ

En la red LVQ, cada neurona de la primera capa es asignada a una clase, después cada clase es asignada a una neurona en la segunda capa. El número de neuronas en la primera capa, S1 debe ser mayor o al menos igual que el número de neuronas en la segunda capa, S2.

8 Fuente de consulta. [En línea]. Redes competitivas. http://proton.ucting.udg.mx/posgrado/cursos/idc/neuronales2/LVQ.htm Consultado el 30 de Octubre de 2010.

Page 33: Regla de kohonen y Red LVQ

Al igual que con redes competitivas, cada neurona en la primera capa de la red LVQ aprende un vector prototipo, el cual permite a la neurona clasificar una región del espacio de entrada, sin embargo en lugar de calcular la distancia entre la entrada y el vector de pesos por medio del producto punto, la red LVQ calcula la distancia directamente. Una ventaja de hacer el cálculo de la distancia directamente, es que los vectores no necesitan ser normalizados, cuando los vectores son normalizados la respuesta de la red será la misma sin importar la técnica que se utilice.

La entrada neta a la primera capa de la red LVQ es entonces,

(2.5.21)

La salida de la primera capa de la red LVQ es,

a1=compet (n1) (2.5.22)

Así, la neurona cuyo vector de pesos este cercano al vector de entrada tendrá salida 1 y las otras neuronas, tendrán salida 0; en este aspecto la red LVQ se comporta igual a las redes competitivas, la única diferencia consiste en la interpretación, mientras que en las redes competitivas la salida no cero representa una clase del vector de entrada, para el algoritmo LVQ, índica más bien una sub- clase, y de esta forma muchas neuronas (subclases), conforman una clase.

Figura 2. Comportamiento de las neuronas en una red LVQ

La segunda capa de la red LVQ es usada para combinar subclases dentro de una sola clase, esto es realizado por la matriz de pesos W2 Las columnas de W 2 representan las subclases y las filas representan las clases, W2tiene un solo 1 en cada columna, todos los demás elementos son cero, la fila en la cual se presenta el 1 índica cual es la clase a la que la subclase pertenece.

Page 34: Regla de kohonen y Red LVQ

W 2ki = 1 la subclase i pertenece a la clase k

Una propiedad importante de esta red, es que el proceso de combinar subclases para formar clases, permite a la red LVQ crear clases más complejas. Una capa competitiva estándar tiene la limitación de que puede crear solo regiones de decisión convexas; la red LVQ soluciona esta limitación.

La red LVQ combina aprendizaje competitivo con aprendizaje supervisado, razón por lo cual necesita un set de entrenamiento que describa el comportamiento propio de la red

{p1, t1}, {p2, t2},..., {pQ, tQ}

Para ilustrar el desempeño de la red LVQ, se considerará la clasificación de un vector particular de tres elementos dentro de otro de cuatro clases, de esta forma:

Antes de que suceda el aprendizaje, cada neurona en la segunda capa es asignada a una neurona de salida, así se genera la matriz W2; por lo general, igual número de neuronas ocultas son conectadas a cada neurona de salida, para que cada clase pueda ser conformada por el mismo número de regiones convexas. Todos los elementos de W2son cero excepto los que cumplan la siguiente condición:

Si la neurona i es asignada a la clase k w2ki=1

Una vez W2 ha sido definida, nunca será alterada. Los pesos ocultos W1son actualizados por medio de la regla de Kohonen.

La regla de aprendizaje del algoritmo LVQ, trabaja de la siguiente manera:

1. En cada iteración, un vector de entrada p es presentado a la red y se calcula la distancia a cada vector prototipo.

2. Las neuronas ocultas compiten, la neurona i* gana la competición y el i*-ésimo elemento de a1se fija en 1.

3. a1 es multiplicada por W2 para obtener la salida finala2, la cual tiene solamente un elemento no cero, k* , indicando que el patrón p está siendo asignado a la clase k*

La regla de Kohonen es empleada para mejorar la capa oculta de la red LVQ, en dos formas:

1. si p es clasificado correctamente los pesos de la neurona ganadora se hacen tender hacia p.

Page 35: Regla de kohonen y Red LVQ

i* w(q) = i* w(q -1) - a(q) (p (q) – i* w(q-1))si a2k = tk*= 1

2. Si p es clasificado incorrectamente una neurona equivocada ganó la competición y por lo tanto sus pesos i* w

1se alejan de p.

i* w(q) = i* w(q -1) - a(q) (p (q) – i* w(q-1))si a2k* = 1 tk* = 0

El resultado será que cada neurona se moverá hacia los vectores que cayeron dentro de la clase, para la cual ellos forman una subclase y lejos de los vectores que cayeron en otras clases.

Se ilustrará el funcionamiento de la red LVQ, buscando que clasifique correctamente los siguientes patrones, cuyas clases se han definido arbitrariamente:

Los vectores esperados asociados a cada una de las entradas son:

La posición inicial de los patrones de entrada es la siguiente:

Figura. Posición de los patrones de entrada

Si se escogen dos subclases para cada una de las dos clases existentes, tendremos entonces cuatro subclases, lo que determina que debe haber cuatro neuronas en la capa oculta. La matriz de pesos para la capa de salida es:

W2 conecta las neuronas ocultas 1 y 2 a la neurona de salida 1 y las neuronas ocultas 3 y 4 a la neurona de salida 2. Cada clase será formada por dos regiones convexas.

Page 36: Regla de kohonen y Red LVQ

Figura. Esquema de la red LVQ que solucionará el ejemplo

W1 será inicializada con valores aleatorios, de la siguiente forma:

La posición inicial de estos vectores de pesos, se observa en la figura siguiente

Figura. Estado inicial del vector de peso

Un vector de entrada diferente será presentado en cada iteración, se encontrará su respuesta y luego se actualizaran los pesos correspondientes. Se presentará inicialmente p3 a la red:

La tercera neurona oculta ha estado más cerca del vector p3 y de esta forma ya se determino la subclase, ahora determinamos la clase a la cual pertenece multiplicandoa1 por W 2

Page 37: Regla de kohonen y Red LVQ

La salida de la red índica que p3 es un miembro de la clase 2, lo cual es correcto por lo tanto3w

1es desplazado en la dirección de p3.

3w1 (1) = 3w

1 (0) + (p3 – 3w1 (0))

Figura. Resultado después de la primera y después de muchas iteraciones

El diagrama al lado izquierdo de la figura, muestra como el vector peso 3w1 es

actualizado después de la primera iteración; el diagrama de la derecha, muestra la localización de los pesos después de que el algoritmo ha alcanzado convergencia, además en esta parte de la gráfica puede verse como las regiones del espacio de entrada son clasificadas. Los vectores de entrada p1 y p2perteneciente a la clase uno son visualizadas en azul y los vectores p3y p4 pertenecientes a la clase dos pueden verse en blanco.

Patrones de entrenamiento

LVQ es un método de entrenamiento de vectores código con etiqueta. Cada neurona es un vector de pesos +etiqueta de clase. Las capas competitivas y los mapas de auto organización pueden crearse con newc y newsom, respectivamente. Un listado de todas las funciones de auto organización y demostraciones pueden hallarse al escribir help selforg. Una red LVQ puede crearse con la función newlvq. Para un listado de todas las funciones LVQ y demostraciones escriba help lvq.

Page 38: Regla de kohonen y Red LVQ

Estos son los patrones de entrenamiento.

X = [8 0; 10 2; 10 11; 12 9; 2 7; 6 7; 4 6]; p = X'; Tc = [1 1 2 2 3 3 1]; T = ind2vec(Tc) Objetivo = full(T) T = (1,1) 1 (1,2) 1 (2,3) 1 (2,4) 1 (3,5) 1 (3,6) 1 (1,7) 1 objetivo = 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0

Creación de la red de LVQ

La red se crea con la función newlvq. Utilizamos la función minmax para obtener los valores mínimos y máximos de los patrones. La red se crea con tres elementos en la capa de Kohonen. La red tiene tres clases, cada una con un tercio de los elementos en la capa de Kohonen.

R = newlvq(minmax(p),3,[1/3 1/3 1/3]);

Entrenamiento de la red

La red se entrena con la función train. Modificamos para que entrene el campo trainParam.epochs para que entrene por 100 épocas.

R.trainParam.epochs = 100; R = train(R,p,T); TRAINR, Epoch 0/100 TRAINR, Epoch 25/100 TRAINR, Epoch 50/100 TRAINR, Epoch 75/100 TRAINR, Epoch 100/100 TRAINR, Maximum epoch reached.

Page 39: Regla de kohonen y Red LVQ

Gráfica

Graficamos la respuesta de la red ante todas las entradas sobre una cuadrícula con espaciamiento delta. Mostramos los patrones con la respuesta de la red con x.

delta = 0.35; hold off clf j1 = find(Tc==1); j2 = find(Tc==2); j3 = find(Tc==3); plot(p(1,j1),p(2,j1), 'og' ,p(1,j2),p(2,j2), 'or' ,p(1,j3),p(2,j3), 'ob' ) axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))-1 m ax(p(2,:))+1]) hold on % pause xlabel( 'x1' ) ylabel( 'x2' ) title( 'Red LVQ' ) limites = minmax(p); for i=limites(1,1)-1:delta:limites(1,2)+1 for j=limites(2,1)-1:delta:limites(2,2)+1 y = sim(R,[i;j]); yc = vec2ind(y); if yc==1 plot(i,j, 'xg' ) elseif yc==2 plot(i,j, 'xr' ) elseif yc==3 plot(i,j, 'xb' ) end end plot(p(1,j1),p(2,j1), 'og' ,p(1,j2),p(2,j2), 'or' ,p(1,j3),p(2,j3), 'ob' )

Page 40: Regla de kohonen y Red LVQ

axis([min(p(1,:))-1 max(p(1,:))+1 min(p(2,:))- 1 max(p(2,:))+1]) pause(0.01) end pause w = R.IW{1,1}; yc = vec2ind(sim(R,w')); i1 = find(yc==1); i2 = find(yc==2); i3 = find(yc==3); plot(w(i1,1),w(i1,2), 'sg' ,w(i2,1),w(i2,2), 'sr' ,w(i3,1),w(i3,2), 'sb' ) hold off

Entrenamiento con LVQ2

Ésta es la forma de entrenar con LVQ2. En este ejemplo no se nota diferencia porque no existen patrones cerca de las fronteras entre las clases que hayan sido mal clasificados.

R.trainFcn = 'trainr' ; R.adaptFcn = 'trains' ; R.inputWeights{1,1}.learnFcn = 'learnlv2' ; R.layerWeights{1,1}.learnFcn = 'learnlv2' ; R = train(R,p,T); TRAINR, Epoch 0/100 TRAINR, Epoch 25/100 TRAINR, Epoch 50/100 TRAINR, Epoch 75/100 TRAINR, Epoch 100/100 TRAINR, Maximum epoch reached.

Page 41: Regla de kohonen y Red LVQ

Ejercicio 5. Cree un archivo-m con su nombre4.m que obtenga una clasificación de clases de salida deseadas para cada uno de los 10, 12, 15 y 20 datos de dos elementos usando la arquitectura LVQ y LVQ2: Cuantización del Vector de Aprendizaje Una red LVQ se entrena para clasificar los vectores de entrada de acuerdo a las salidas deseadas dadas. Se hace a P un vector de entrada de 10 datos de 2 elementos y C son las clases en que caen. Estas clases pueden transformarse en vectores para usarse como salidas deseadas, T, con IND2VEC. clf P = [-3 -2 -2 0 0 0 0 +2 +2 +3; 0 +1 -1 +2 +1 -1 -2 +1 -1 0]; C = [1 1 1 2 2 2 2 1 1 1]; T = ind2vec(C); %% % Aquí se grafican los datos de los puntos. Rojo = clase 1, Celeste = clase % 2. La red LVQ representa racimos de vectores con neuronas ocultas, y

Page 42: Regla de kohonen y Red LVQ

% agrupa los racimos con las neuronas de salida par a formar las clases % deseadas. colormap(hsv); plotvec(P,C) title( 'Vectores de entrada' ); xlabel( 'P(1)' ); ylabel( 'P(2)' ); disp( 'Presione cualquier tecla para continuar' ); pause %% % NEWLVQ crea una capa LVQ y aquí necesita cuatro a rgumentos: la matriz Rx2 % de valores min y max para los R elementos de entr ada, el numero de % neuronas ocultas, un vector de elementos de porce ntajes de clase típicos, % y la razón de aprendizaje. red = newlvq(minmax(P),4,[.6 .4],0.1); %% % Los vectores de pesos de las neuronas competitiva s se grafican como % sigue. hold on W1 = red.IW{1}; plot(W1(1,1),W1(1,2), 'ow' ) title( 'Vectores de Entrada/Pesos' ); xlabel( 'P(1), W(1)' ); ylabel( 'P(2), W(3)' ); disp( 'Presione cualquier tecla para continuar' ); pause %% % Para entrenar la red, primero sobrescribimos el n umero por defecto de % iteraciones, y luego entrenamos la red. Cuando te rminamos, regraficamos % los vectores de entrada '+' y los vectores de pes os de las neuronas % competitivas 'o'. Rojo = clase 1, Celeste = clase 2. red.trainParam.epochs=150; red.trainParam.show=Inf; red=train(red,P,T); cla; plotvec(P,C); hold on; plotvec(red.IW{1}',vec2ind(red.LW{2}), 'o' ); %% % Ahora usamos la red LVQ como un clasificador, don de cada neurona

Page 43: Regla de kohonen y Red LVQ

% corresponde a diferentes categorías. Presentamos el vector de entrada % [0.2; 1]. Rojo = clase 1, Celeste = clase 2. p = [0.2; 1]; a = vec2ind(sim(red,p)) hold off ; Bibliografía e Infografía

- Hanselman D, Littlefield B, 1995. MATLAB User’s Guide. Englewood Cliffs, NJ, Prentice-Hall.

- Afonso VX, 1993. ECG QRS Detection. En W.J. Tompkins (editor), Biomedical Digital Signal Processing. Englewood Cliffs, NJ:Prentice-Hall, 1993.

- Baxt W, 1992. The application of the artificial neural network to clinical decision making. Conference on Neural Information Processing Systems: Natural and Synthetic. Denver, Colorado, USA.

- Haykin S, 1994. Neural networks: a comprehensive foundation. Englewood Cliffs, New Jersey: IEEE Press Macmillan.

- Marquardt DW, 1963. An algorithm for least-squares estimation of nonlinear parameters. J. SIAM, 11, pp. 431-441.

- Harrison RS, Marshall S, Kennedy R, 1991. The early diagnosis of heart attacks: A neurocomputational approach. International Joint Conference on Neural Networks, Vol. 1, pp. 1-5. Seattle, Washington, USA.

- Hilera JR, Martínez VJ, 1995. Redes Neuronales Artificiales: Fundamentos, modelos y aplicaciones. Madrid, España: RAMA Editorial.

- José Ramón Hilera González, Víctor José Martínez Hernando. Redes Neuronales Artificiales. Fundamentos, modelos y aplicaciones, Biblioteca UDB.

- James A. Freeman, David M. Skapura. Redes neuronales. Algoritmos, aplicaciones y técnicas de programación. Biblioteca UDB.