# Aprendizaje de cuantificación vectorial

Vector Quantization (Cuantificación Vectorial) es una técnica por la cual el espacio de entradas es dividido en un número determinado de regiones y para cada una de ellas es definido un vector que la caracteriza. Un espacio continuo tiene que ser discretizado. La entrada al sistema son vectores n-dimensionales y la salida es una representación discreta del espacio de entradas. El método Vector Quantization (LVQ) fue originalmente desarrollado por Linde (1980) y Gray (1984). Y como una herramienta para compresión de datos por Gersho y Gray,1992.
Es una técnica usada para reducir la dimensionalidad de datos. Los datos originales es un conjunto de vectores de dimensión n. Los vectores son mapeados en un conjunto más pequeño de valores codebook, estos valores son usados para almacenaje o transmisión (Se pierde alguna información contenida). Los valores codebook son re-trasladados a valores cercanos de los datos originales (no serán exactos).
LVQ es un método para el entrenamiento de capas competitivas de una manera supervisada. Una capa competitiva automáticamente aprenderá a clasificar automáticamente vectores de entrada. Sin embargo, las clases que la capa competitiva encuentra dependen únicamente de los vectores de entrada. Si dos vectores de entrada son muy similares, la capa competitiva probablemente los colocara en la misma clase. No existe mecanismo en el diseño de una capa competitiva para dictar si cualquiera de los vectores de entrada están la misma clase o no. Las redes LVQ aprenden a clasificar vectores de entrada en clases seleccionadas por el usuario. Kohonen, diseñó versiones supervisadas de este método, Learning Vector Quantization (LVQ), para problemas de clasificación adaptiva de patrones. La información de clases se utiliza para afinar los vectores de representación: Mejora en la clasificación de regiones.

## Definición

LVQ es una técnica de aprendizaje supervisado. Un vector de entrada $X$ es tomado aleatoriamente del espacio de entradas. Si las clases del vector $X$ y la del $W$ asociado coinciden, entonces el vector $W$ es movido en la dirección de $X$. Por la otro parte, si las clases son diferentes, el vector $W$ es alejado de $X$.

## Características

El algoritmo de LVQ fue adaptado por T. Kohonen en 1986 y Kohonen et al en 1988 para reconocimiento de patrones. Se considera un tipo de red neuronal artificial clasificada como un clasificador supervisado.
* El clasificador LVQ divide el espacio de entrada en regiones disjuntas.
* Todas las regiones de clasificación que se crean están cercanas al “optimo”.
* LVQ es una técnica de aprendizaje supervisado que usa la información de clases para mover los vectores de Voronoi W ligeramente.
* Mejora la calidad de clasificador de regiones de decisión.
* Para clasificar un vector de entrada Pi, este debe ser comparado con todos los vectores prototipos W.
* Cada región se representa por un vector prototipo W.
* El vector de entrada se clasifica en la misma clase que el prototipo más cercano.
* La métrica de la distancia Euclídea se usa para seleccionar el vector Wij más cercano al de entrada Pi.
* Al seleccionar aleatoriamente un vector de entrada Pi del espacio de entrada.
* Si la clase etiqueta a Pi de acuerdo al vector de Voronoi W, el vector W se mueve en la dirección Pi.
* Si la clase etiqueta a Pi en desacuerdo a W, el vector W se aleja de la dirección Pi.
* Se refuerza el “cluster” representativo (una neurona) cuando este clasifica la entrada en la clase deseada.
** Reforzamiento positivo: Impulsa los pesos de la neurona hacia la entrada.
** Reforzamiento negativo: Aleja los pesos del vector de entrada

## Arquitectura

Combina el aprendizaje competitivo con Supervisado. (No supervisado (2a. Capa) oculta, Supervisado (3a. Capa)) El aprendizaje competitivo logra “clusters” y asigna una clase o valor de salida a cada "cluster", normalmente consiste de 3 capas, la segunda capa (oculta) es una capa competitiva que aprende a clasificar los vectores de entrada de la misma forma que las capas competitivas. La tercera capa transforma las clases de la capa competitiva en clasificaciones objetivo (T1, T2, etc) definidas por el usuario.
La entrada a la red no se calcula usando el producto punto de los vectores prototipo con la entrada; sino que en vez de ello, la entrada a la red es el negativo de la distancia euclídea entre los vectores prototipo Wij y la entrada Pi. Las primeras son conocidas como subclases (capa oculta) Las segundas son conocidas como clases objetivo ambas capas (Competitiva y lineal) tiene una neurona por clase (capa de salida). Entonces la capa competitiva (oculta) puede aprender de S1 subclases y la capa lineal (salida) puede formar S2 clases objetivo con la restricción siguiente: S1 < S2
El clasificador LVQ consiste de una capa de entrada, una capa competitiva (oculta), la cual aprende a clasificar vectores de entrada en subclases, una capa de salida lineal, la cual transforma las clases de la capa competitiva en clasificaciones objetivo definidas por el usuario (capa de salida). Únicamente la neurona ganadora de la capa lineal tiene salida “1”, mientras que las otras tienen salida “0”.
Los vectores de peso de las neuronas de la capa oculta son los prototipos, un número el cual es usualmente fijado antes de comenzar el entrenamiento. El número de neuronas ocultas depende de la complejidad de la relación entra-salida y efectos significativos de los resultados de pruebas al clasificador.

### Subclases

Para la red LVQ la neurona ganadora en la 2a capa indica subclases al cual el vector de entrada pertenece. Puede haber un número diferente de neuronas (subclases) que constituyen una clase. La 3a, capa de la red LVQ combina subclases en una sola clase. Las columnas de $W^{2}$ representan subclases y las filas representan clases:
$W^{2}={\begin{bmatrix}1&1&0&0\\1&1&0&0\end{bmatrix}}$
$W^{2}$ tiene un solo 1 en cada columna, los otros elementos son ajustados a cero. La fila en la que el uno ocurre indica la clase a la cual la subclase apropiada pertenece esta. Una red competitiva de una sola capa puede crear regiones de clasificación convexas. La segunda capa de la red LVQ puede combinar las regiones convexas para crear categorías más complejas.

## Aprendizaje LVQ

LVQ combina el aprendizaje competitivo con la supervisión. Esto requiere de un conjunto entrenamiento de ejemplos del comportamiento de la red. Si el patrón de entrada es clasificado correctamente, entonces se mueve el peso ganador hacia el vector de entrada de acuerdo al regla de Kohonen. Si el patrón de entrada es clasificado incorrectamente entonces se mueve el peso ganador fuera del vector de entrada.
$W(q)=W(q-1)+a[p^{t}(q)-W(q-1)]$
Es deseable que a decrezca monótonamente respecto al número de iteraciones n. 0 < a <=1. Por ejemplo a=0.1, disminuir linealmente respecto a n. Después de varias iteraciones, los vectores de Voronoi típicamente convergen.

## Reglas

Cuando la medida de similitud que se utiliza para asignar a un patrón de entrada a una determinada región es la Distancia Euclídea, el quantizer es denominado de Voronoi. Este, divide el espacio de entradas en Celdas de Voronoi, y cada celda es representada por uno de los vectores de reconstrucción $W_{i}$. La i-esíma celda contiene aquellos puntos del espacio de entradas que están más cercanos al vector $W_{i}$ que a cualquier otro $W_{j}$.
La regla de aprendizaje competitivo basada en la distancia Euclídea puede se utilizada para posicionar un conjunto de vectores de representación (Kohonen 1989). Este algoritmo de aprendizaje competitivo puede ser visto como un método aproximado para computar dichos vectores de manera sin supervisar.
Kohonen, diseñó versiones supervisadas de este método, Learning Vector Quantization (LVQ), para problemas de clasificación adaptiva de patrones. La información de clases se utiliza para afinar los vectores de representación: Mejora en la clasificación de regiones. Los pesos de la capa lineal se inicializan a valores (1 y 0) antes del aprendizaje (Usual) y se modifican utilizando la Regla Delta.

## Aplicaciones

Esta técnica es frecuentemente utilizada en transmisión de datos, utilizando una versión codificada del vector de representación en lugar de los patrones de entrada. El algoritmo LVQ puede ser utilizando también para:
* Compresión de datos.
* Clasificación de patrones.
* Reconocimiento de objetos.

## Variantes de LVQ

Existen diferentes variantes al algoritmo básico de LVQ (LVQ1, LVQ2 y LVQ3). Las diferentes variantes de LVQ descritas en [Kohonen, 1995, McDermott, 1990, Makino et al., 1992] las cuales tienen propiedades ligeramente diferentes. Por ejemplo LVQ2 [Kohonen et al., 1996b], la cual es eficiente para sintonía fina de las fronteras de decisión entre las clases en competencia. LVQ3 [Kohonen et al., 1996b] la cual agrega un término de estabilidad a LVQ2 para mejorar su comportamiento a largo plazo.