SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
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
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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.
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.
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.
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:
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.
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')
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.
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.
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
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
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.
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
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')
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.
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.
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)
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.
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]);
%%
% 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.
% 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)
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.
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.
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.
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.
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
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.
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.
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')
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.
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
% 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
% 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.

Más contenido relacionado

La actualidad más candente

Heterogeneous computing
Heterogeneous computingHeterogeneous computing
Heterogeneous computingRashid Ansari
 
Small computing & Mobile Computing
Small computing & Mobile ComputingSmall computing & Mobile Computing
Small computing & Mobile ComputingPaul Kahoro
 
El Perceptrón Multicapa
El Perceptrón  MulticapaEl Perceptrón  Multicapa
El Perceptrón MulticapaESCOM
 
Serial Port Device Driver
Serial Port Device DriverSerial Port Device Driver
Serial Port Device DriverEmblogic
 
Portafolio de evidencias de Computación.
Portafolio de evidencias de Computación. Portafolio de evidencias de Computación.
Portafolio de evidencias de Computación. mafibarba
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAErika Rodríguez
 
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALESINTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALESESCOM
 
THREADS of Operating System by Noman Zahid
THREADS of Operating System by Noman Zahid THREADS of Operating System by Noman Zahid
THREADS of Operating System by Noman Zahid noman zahid
 
Comparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y DistribuidaComparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y DistribuidaSergio Olivares
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesHumano Terricola
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacionKarol
 
Lecture 1- Introduction to Operating Systems.pdf
Lecture 1- Introduction to Operating Systems.pdfLecture 1- Introduction to Operating Systems.pdf
Lecture 1- Introduction to Operating Systems.pdfAmanuelmergia
 
Protocolos del Modelo OSI
Protocolos del Modelo OSIProtocolos del Modelo OSI
Protocolos del Modelo OSIPaola Orellana
 

La actualidad más candente (20)

Heterogeneous computing
Heterogeneous computingHeterogeneous computing
Heterogeneous computing
 
Memoria virtual
Memoria virtualMemoria virtual
Memoria virtual
 
Kernel (OS)
Kernel (OS)Kernel (OS)
Kernel (OS)
 
Small computing & Mobile Computing
Small computing & Mobile ComputingSmall computing & Mobile Computing
Small computing & Mobile Computing
 
Layouts
LayoutsLayouts
Layouts
 
El Perceptrón Multicapa
El Perceptrón  MulticapaEl Perceptrón  Multicapa
El Perceptrón Multicapa
 
Altera flex
Altera flexAltera flex
Altera flex
 
Serial Port Device Driver
Serial Port Device DriverSerial Port Device Driver
Serial Port Device Driver
 
Portafolio de evidencias de Computación.
Portafolio de evidencias de Computación. Portafolio de evidencias de Computación.
Portafolio de evidencias de Computación.
 
Acceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMAAcceso Directo a la Memoria - DMA
Acceso Directo a la Memoria - DMA
 
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALESINTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
INTRODUCCION A LAS REDES NEURONALES ARTIFICIALES
 
THREADS of Operating System by Noman Zahid
THREADS of Operating System by Noman Zahid THREADS of Operating System by Noman Zahid
THREADS of Operating System by Noman Zahid
 
Sistema Operativo Distribuido
Sistema Operativo DistribuidoSistema Operativo Distribuido
Sistema Operativo Distribuido
 
Cmos testing
Cmos testingCmos testing
Cmos testing
 
Comparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y DistribuidaComparativa Arquitectura Cliente/Servidor y Distribuida
Comparativa Arquitectura Cliente/Servidor y Distribuida
 
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regularesPortafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
Portafolio unidad 2 [Lenguajes y autómatas]- Expresiones y lenguajes regulares
 
Lenguajes de programacion
Lenguajes de programacionLenguajes de programacion
Lenguajes de programacion
 
Lecture 1- Introduction to Operating Systems.pdf
Lecture 1- Introduction to Operating Systems.pdfLecture 1- Introduction to Operating Systems.pdf
Lecture 1- Introduction to Operating Systems.pdf
 
Protocolos del Modelo OSI
Protocolos del Modelo OSIProtocolos del Modelo OSI
Protocolos del Modelo OSI
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 

Similar a Regla de kohonen y Red LVQ

UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...
UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...
UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...zeithy
 
06mem inteligencia artificial redes neuronales y sus aplicciones
06mem inteligencia artificial redes neuronales y sus aplicciones06mem inteligencia artificial redes neuronales y sus aplicciones
06mem inteligencia artificial redes neuronales y sus apliccionesjcbp_peru
 
Lectura ia rna y aplicaciones 2 as_06mem
Lectura ia rna y aplicaciones 2 as_06memLectura ia rna y aplicaciones 2 as_06mem
Lectura ia rna y aplicaciones 2 as_06memjcbp_peru
 
Redes Neuronales(Examen)
Redes Neuronales(Examen)Redes Neuronales(Examen)
Redes Neuronales(Examen)diego28mauricio
 
Redes Neuronales(Examen)
Redes Neuronales(Examen)Redes Neuronales(Examen)
Redes Neuronales(Examen)diego28mauricio
 
5.2 Redes neuronales (RN) [presentación].
5.2 Redes neuronales (RN) [presentación].5.2 Redes neuronales (RN) [presentación].
5.2 Redes neuronales (RN) [presentación].Humberto Chalate Jorge
 
Redes neuronales y sus aplicaciones
Redes neuronales y sus aplicacionesRedes neuronales y sus aplicaciones
Redes neuronales y sus aplicacionesAmbBixenman
 
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESPANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESESCOM
 
2024-T19-Redes_Neuronales_II.pdf
2024-T19-Redes_Neuronales_II.pdf2024-T19-Redes_Neuronales_II.pdf
2024-T19-Redes_Neuronales_II.pdfRicardo Lopez-Ruiz
 

Similar a Regla de kohonen y Red LVQ (20)

UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...
UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...
UTILIZACIÓN DE LA TECNOLOGÍA DE REDES NEURONALES PARA LA RESOLUCIÓN DE PROBLE...
 
06mem
06mem06mem
06mem
 
06mem inteligencia artificial redes neuronales y sus aplicciones
06mem inteligencia artificial redes neuronales y sus aplicciones06mem inteligencia artificial redes neuronales y sus aplicciones
06mem inteligencia artificial redes neuronales y sus aplicciones
 
Lectura ia rna y aplicaciones 2 as_06mem
Lectura ia rna y aplicaciones 2 as_06memLectura ia rna y aplicaciones 2 as_06mem
Lectura ia rna y aplicaciones 2 as_06mem
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Redes Neuronales(Examen)
Redes Neuronales(Examen)Redes Neuronales(Examen)
Redes Neuronales(Examen)
 
Redes Neuronales(Examen)
Redes Neuronales(Examen)Redes Neuronales(Examen)
Redes Neuronales(Examen)
 
2º asignacion redes neuronales
2º asignacion redes neuronales2º asignacion redes neuronales
2º asignacion redes neuronales
 
5.2 Redes neuronales (RN) [presentación].
5.2 Redes neuronales (RN) [presentación].5.2 Redes neuronales (RN) [presentación].
5.2 Redes neuronales (RN) [presentación].
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Redes de sensores inalámbricos (wsn)
Redes de sensores inalámbricos (wsn)Redes de sensores inalámbricos (wsn)
Redes de sensores inalámbricos (wsn)
 
Slidecats
SlidecatsSlidecats
Slidecats
 
Redes neuronales y sus aplicaciones
Redes neuronales y sus aplicacionesRedes neuronales y sus aplicaciones
Redes neuronales y sus aplicaciones
 
Redes Neuronales
Redes NeuronalesRedes Neuronales
Redes Neuronales
 
Conclusiones
ConclusionesConclusiones
Conclusiones
 
Presentacion 2 redes neuronales
Presentacion 2 redes neuronalesPresentacion 2 redes neuronales
Presentacion 2 redes neuronales
 
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTESPANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
PANORAMA GENERAL DE LOS SISTEMAS INTELIGENTES
 
2024-T19-Redes_Neuronales_II.pdf
2024-T19-Redes_Neuronales_II.pdf2024-T19-Redes_Neuronales_II.pdf
2024-T19-Redes_Neuronales_II.pdf
 
Redes neuronales
Redes neuronalesRedes neuronales
Redes neuronales
 

Más de Universidad Militar Nueva Granada-Universidad de Cundinamarca

Más de Universidad Militar Nueva Granada-Universidad de Cundinamarca (20)

Whats app messenger
Whats app messengerWhats app messenger
Whats app messenger
 
Internet protocol-television
Internet protocol-televisionInternet protocol-television
Internet protocol-television
 
Categoria de-los-modelos-atomicos
Categoria de-los-modelos-atomicosCategoria de-los-modelos-atomicos
Categoria de-los-modelos-atomicos
 
Plan de-contingencias
Plan de-contingenciasPlan de-contingencias
Plan de-contingencias
 
Magnetoresistencia gigante
Magnetoresistencia giganteMagnetoresistencia gigante
Magnetoresistencia gigante
 
Dns caracteristicas-y-propiedades
Dns caracteristicas-y-propiedadesDns caracteristicas-y-propiedades
Dns caracteristicas-y-propiedades
 
Ransomware
RansomwareRansomware
Ransomware
 
Tutorial file inyector
Tutorial file inyectorTutorial file inyector
Tutorial file inyector
 
Ejercicios electrónica básica
Ejercicios electrónica básicaEjercicios electrónica básica
Ejercicios electrónica básica
 
Ultrasonidos y tejidos biológicos
Ultrasonidos y tejidos biológicosUltrasonidos y tejidos biológicos
Ultrasonidos y tejidos biológicos
 
Taller de termodinámica
Taller de termodinámicaTaller de termodinámica
Taller de termodinámica
 
Qué es la radiación
Qué es la radiaciónQué es la radiación
Qué es la radiación
 
Metabolismo basal
Metabolismo basalMetabolismo basal
Metabolismo basal
 
El escalón de potencial
El escalón de potencialEl escalón de potencial
El escalón de potencial
 
Taller de termodinámica
Taller de termodinámicaTaller de termodinámica
Taller de termodinámica
 
Tipos de memoria usadas para sistemas informáticos
Tipos de memoria usadas para sistemas informáticosTipos de memoria usadas para sistemas informáticos
Tipos de memoria usadas para sistemas informáticos
 
BOARD, ALIMENTACIÓN, PUERTOS, BUSES, OVERCLOKING, GPUS Y ALGO MÁS
BOARD, ALIMENTACIÓN, PUERTOS, BUSES, OVERCLOKING, GPUS Y ALGO MÁSBOARD, ALIMENTACIÓN, PUERTOS, BUSES, OVERCLOKING, GPUS Y ALGO MÁS
BOARD, ALIMENTACIÓN, PUERTOS, BUSES, OVERCLOKING, GPUS Y ALGO MÁS
 
Las neuronas y su funcionalidad
Las neuronas  y su funcionalidadLas neuronas  y su funcionalidad
Las neuronas y su funcionalidad
 
Comandos telnet
Comandos telnetComandos telnet
Comandos telnet
 
Aerogeneradores urbanos 2.0
Aerogeneradores urbanos 2.0Aerogeneradores urbanos 2.0
Aerogeneradores urbanos 2.0
 

Último

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxKarlaMassielMartinez
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 

Último (20)

NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptxTECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
TECNOLOGÍA FARMACEUTICA OPERACIONES UNITARIAS.pptx
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 
2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 4to Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 4to Grado Educacion Primaria 2024 Ccesa007.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 

Regla de kohonen y Red LVQ

  • 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.
  • 19. 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.
  • 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
  • 22. 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
  • 23. 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
  • 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.
  • 26. 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
  • 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.