Vector quantization is a classical quantization technique from signal
processing that allows the modeling of probability density functions by the
distribution of prototype vectors. It was originally used for data
compression. It works by dividing a large set of points into groups having
approximately the same number of points closest to them. Each group is
represented by its centroid point, as in k-means and some other clustering
algorithms. The density matching property of vector
quantization is powerful, especially for identifying the density of large and
high-dimensioned data. Since data points are represented by the index of their
closest centroid, commonly occurring data have low error, and rare data high
error. This is why VQ is suitable for lossy data compression. It can also be
used for lossy data correction and density estimation.
Vector quantization is based on the competitive learning paradigm, so it is
closely related to the self-organizing map model and to sparse coding models
used in deep learning algorithms such as autoencoder.
Training A simple training algorithm for vector
quantization is: Pick a sample point at random
Move the nearest quantization vector centroid towards this sample point, by a
small fraction of the distance Repeat
A more sophisticated algorithm reduces the bias in the density matching
estimation, and ensures that all points are used, by including an extra
sensitivity parameter: Increase each centroid's sensitivity by
a small amount Pick a sample point at random
Find the quantization vector centroid with the smallest
Move the chosen centroid toward the sample point by a small fraction of the
distance Set the chosen centroid's sensitivity to
zero Repeat
It is desirable to use a cooling schedule to produce convergence: see
Simulated annealing. Another method is LBG which is based on K-Means.
The algorithm can be iteratively updated with 'live' data, rather than by picking
random points from a data set, but this will introduce some bias if the data are
temporally correlated over many samples. A vector is represented either
geometrically by an arrow whose length corresponds to its magnitude and points
in an appropriate direction, or by two or three numbers representing the
magnitude of its components. Applications
Vector quantization is used for lossy data compression, lossy data correction,
pattern recognition, density estimation and clustering.
Lossy data correction, or prediction, is used to recover data missing from some
dimensions. It is done by finding the nearest group with the data dimensions
available, then predicting the result based on the values for the missing
dimensions, assuming that they will have the same value as the group's centroid.
For density estimation, the area/volume that is closer to a particular centroid
than to any other is inversely proportional to the density.
= Use in data compression= Vector quantization, also called "block
quantization" or "pattern matching quantization" is often used in lossy
data compression. It works by encoding values from a multidimensional vector
space into a finite set of values from a discrete subspace of lower dimension. A
lower-space vector requires less storage space, so the data is compressed. Due to
the density matching property of vector quantization, the compressed data has
errors that are inversely proportional to density.
The transformation is usually done by projection or by using a codebook. In
some cases, a codebook can be also used to entropy code the discrete value in
the same step, by generating a prefix coded variable-length encoded value as
its output. The set of discrete amplitude levels is
quantized jointly rather than each sample being quantized separately.
Consider a k-dimensional vector of amplitude levels. It is compressed by
choosing the nearest matching vector from a set of n-dimensional vectors ,
with n