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.
1. 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
2. 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.
3. 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.
4. 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.
5. 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.
6. 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.
7. 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
8. 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
9. 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.
10. 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.
11. 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.
12. 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.
13. 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.
14. 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.
15. 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:
16. 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.
17. 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 max(p(2,:))+1])
xlabel('x1')
ylabel('x2')
title('Red de Kohonen')
legend('pesos','patrones','location','NorthWest')
18. 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.
20. 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 max(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
21. 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
24. 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 max(p(2,:))+1])
xlabel('x1')
ylabel('x2')
title('Red de Kohonen con conciencia')
legend('pesos','patrones','location','NorthWest')
25. 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.
27. 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)
28. 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 matriz 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 su intento
inicial de
% clasificación.
% Los vectores de pesos (marcados con o) se entrenaran 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 varios
segundos).
%
% Grafica los pesos actualizados de la capa en la misma grafica.
29. 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 clasificador, donde
cada neurona
% corresponde a una categoría diferente. Aquí presentamos el
vector de entrada % [0; 0.2].
%
% La salida, a, indica cual neurona está respondiendo, 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 neuronas.
%
% 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]);
%%
30. % Especifica que la red se entrena en 10 iteraciones 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 entradas, 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 entrada
presente. El
% primer par de números indica la neurona, y el numero 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 clasificar los
vectores
% anteriores. Nos gustaría que cada neurona responda a una
región diferente
% del rectángulo, y las neuronas vecinas respondan a regiones
adyacentes.
31. % 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 con PLOTSOM.
%
% Cada neurona se representa por un punto rojo en el lugar de
sus dos pesos.
% Inicialmente todas neuronas tienen los mismos pesos 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 para una
iteración y
% regraficamos los pesos de la red.
%
% Después del entrenamiemto, note que la capa de neuronas ha
comenzado a
% auto organizarse de modo que cada neurona ahora clasifica 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 al
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)
32. 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.
33. 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, W2
tiene 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.
34. W 2
ki = 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 W2
son
cero excepto los que cumplan la siguiente condición:
Si la neurona i es asignada a la clase k w2
ki=1
Una vez W2
ha sido definida, nunca será alterada. Los pesos ocultos W1
son 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 a1
se 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.
35. i*w(q) = i*w(q -1) - a(q) (p (q) – i*w(q-1))si a2
k = tk*= 1
2. Si p es clasificado incorrectamente una neurona equivocada ganó la competición
y por lo tanto sus pesos i*w1
se alejan de p.
i*w(q) = i*w(q -1) - a(q) (p (q) – i*w(q-1))si a2
k* = 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.
36. 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
37. La salida de la red índica que p3 es un miembro de la clase 2, lo cual es correcto por lo
tanto3w1
es desplazado en la dirección de p3.
3w1
(1) = 3w1
(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.
38. 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.
39. 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 max(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')
40. 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.
41. 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
42. % agrupa los racimos con las neuronas de salida para 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 argumentos: la
matriz Rx2
% de valores min y max para los R elementos de entrada, el
numero de
% neuronas ocultas, un vector de elementos de porcentajes 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 competitivas 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 numero por
defecto de
% iteraciones, y luego entrenamos la red. Cuando terminamos,
regraficamos
% los vectores de entrada '+' y los vectores de pesos 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, donde cada
neurona
43. % 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.