Vector quantization — техника дискретизации непрерывных векторных представлений путём сопоставления их с ближайшими элементами из конечного набора кодов (codebook).
Определение
Vector quantization (VQ) — это метод представления данных, при котором непрерывные векторы заменяются дискретными индексами из заранее обученного кодбука. Каждый входной вектор аппроксимируется ближайшим кодом (prototype), что позволяет сократить объём представления, стабилизировать обучение и перевести непрерывные сигналы (аудио, изображение, видео, латенты) в дискретную форму.
VQ широко используется в генеративных моделях (VQ-VAE, VQ-GAN), аудиомоделях, видео-моделях, speech-to-text пайплайнах и системах хранения/поиска признаков.
Как работает
1. Кодбук (codebook)
Кодбук — это набор из K векторов фиксированной размерности:
- каждый код представляет прототип области пространства;
- кодбук может обучаться или инициализироваться заранее;
- размер кодбука влияет на точность и степень сжатия.
2. Квантование
Для каждого входного вектора z:
- вычисляется расстояние до всех кодов (обычно L2);
- выбирается ближайший код e_k;
- вектор заменяется индексом или самим кодом.
Это преобразует непрерывное представление в дискретное.
3. Обучение и градиенты
Основная сложность VQ — недифференцируемость операции выбора. Применяются:
- Straight-Through Estimator (STE) — градиенты пропускаются напрямую;
- Commitment loss — заставляет энкодер «привязываться» к кодам;
- EMA-обновление кодбука — стабильное обновление прототипов.
Типовая функция потерь включает reconstruction loss + VQ loss + commitment loss.
4. Иерархия и факторизация
Для сложных данных используются расширения:
- multi-codebook (несколько независимых кодбуков);
- residual vector quantization (RVQ);
- hierarchical VQ (разные уровни детализации);
- product quantization (разбиение вектора на подпространства).
Где применяется
- Генеративные модели изображений и видео (VQ-VAE, VQ-GAN).
- Аудиомодели и speech (EnCodec, SoundStream).
- Токенизация непрерывных латентов для Transformer-моделей.
- Сжатие признаков и хранение эмбеддингов.
- Поиск и ANN-индексация (Product Quantization).
Практические примеры использования
VQ-VAE использует vector quantization для дискретизации латентного пространства, что позволяет обучать авторегрессионные модели поверх кодов. VQ-GAN применяет VQ в сочетании с adversarial loss для генерации высококачественных изображений.
В аудио EnCodec и SoundStream используют RVQ для кодирования речи в дискретные токены, которые затем могут быть использованы в TTS или speech-to-speech моделях. В retrieval и векторных БД product quantization применяется для сжатия эмбеддингов и ускорения ANN-поиска.
Ключевые свойства
- Переход от непрерывных векторов к дискретным кодам.
- Сильное сжатие представлений.
- Упрощение генерации и моделирования последовательностей.
- Контроль ёмкости латентного пространства.
- Совместимость с Transformer-архитектурами.
Проблемы и ограничения
- Codebook collapse — использование малого числа кодов.
- Потеря информации при агрессивной квантовании.
- Сложность стабильного обучения.
- Чувствительность к размеру и инициализации кодбука.
- Артефакты при реконструкции сложных сигналов.
Преимущества и ограничения
- Плюс: компактные, дискретные и управляемые представления.
- Минус: компромисс между точностью и степенью сжатия.
Связанные термины
- VQ-VAE
- VQ-GAN
- Product quantization
- Latent space
- Discrete tokens