Что такое Sparse Vector vs Dense Vector в контексте NLP? Назовите плюсы и минусы.
Краткий тезис
Векторные представления текстов делятся на разреженные (sparse) и плотные (dense). Разреженные векторы (one-hot, TF-IDF, Bag of Words) имеют высокую размерность, равную размеру словаря, и содержат много нулей. Плотные векторы (word2vec, BERT) имеют фиксированную низкую размерность (обычно 100–768) и ненулевые значения в каждом измерении, что позволяет улавливать семантические связи. Выбор между ними определяется задачей: sparse лучше для интерпретируемости и точного совпадения терминов, dense — для семантического поиска и обобщения.
2. Dense векторы: word2vec, BERT
Плотные векторы получают путём обучения нейросетей на больших корпусах. Каждое слово (или токен) отображается в непрерывное векторное пространство низкой размерности (обычно 100–300 для word2vec, 768 для BERT-base).
- Word2vec (Skip-gram, CBOW): предсказывает контекстные слова, обучая эмбеддинги, сохраняющие линейные семантические отношения (king — man + woman ≈ queen).
- BERT и другие трансформеры: генерируют контекстные эмбеддинги — одно и то же слово может иметь разные векторы в зависимости от окружения («ключ» как инструмент vs «ключ» как родник).
Плюсы dense:
- Семантическая близость: синонимы и тематически связанные слова имеют близкие векторы (косинусное сходство > 0).
- Компрессия: низкая размерность (сотни вместо миллионов) экономит память и ускоряет вычисления.
- Перенос обучения: предобученные модели (BERT, SBERT) можно дообучать под конкретную задачу с малым количеством данных.
Минусы dense:
- Требуют обучения: word2vec нужно обучать на корпусе (или использовать предобученные), BERT требует GPU для инференса.
- Потеря интерпретируемости: каждое измерение не соответствует конкретному слову, сложно объяснить, почему два документа похожи.
- Чувствительность к редким словам: если слово редко встречалось в обучающем корпусе, его эмбеддинг может быть плохим (out-of-vocabulary проблема, хотя BERT решает её через токенизацию на подслова).
3. Sparse: интерпретируемость и размерность
Основное преимущество sparse-векторов — прозрачность. В задачах, где требуется объяснить решение (например, юридический поиск, медицинская диагностика), можно показать, какие именно термины совпали. TF-IDF часто используется как baseline в Information Retrieval.
Однако размерность растёт линейно с размером словаря. Для русского языка с богатой морфологией словарь может достигать 500k+ токенов. Это приводит к:
- Высокому потреблению оперативной памяти (даже в разреженном формате).
- Необходимости стемминга/лемматизации для уменьшения словаря.
- Плохой обобщающей способности: если в тестовом документе встречается слово, отсутствующее в обучающем словаре, оно игнорируется.
4. Dense: семантика, компрессия, требует обучения
Плотные векторы решают проблему семантического разрыва. Например, в word2vec вектор «кошка» близок к «собака», а не к «кошачий корм» (если не учитывать контекст). BERT даёт ещё более точные контекстные представления.
Компрессия: dense-вектор размером 768 занимает 3 КБ (float32), тогда как sparse-вектор из 100k измерений с 1% ненулевых элементов — около 400 КБ (в формате COO). Для миллионов документов разница критична.
Однако dense-векторы требуют:
- Обучения на больших корпусах (word2vec — десятки гигабайт текста).
- Вычислительных ресурсов для инференса (особенно трансформеры).
- Тонкой настройки под домен (например, медицинский BERT).
5. Пет-проект для закрепления
Задача: Сравнить sparse (TF-IDF) и dense (word2vec/BERT) векторы на задаче поиска семантически похожих предложений. Взять 10 коротких текстов на русском языке (например, новости), построить матрицы сходства и проанализировать различия.
Инструменты:
- Python 3.10+
scikit-learn(TfidfVectorizer, cosine_similarity)gensim(KeyedVectors для предобученного word2vec, например, ruscorpora)transformers+torch(для BERT, модельDeepPavlov/rubert-base-cased)numpy,pandas,matplotlib(визуализация)
Шаги:
- Собрать корпус из 10 предложений (например, про погоду, спорт, технологии).
- Вычислить TF-IDF матрицу (sparse).
- Загрузить предобученный word2vec (или BERT) и получить dense-эмбеддинги для каждого предложения (усреднение токенов для BERT).
- Рассчитать попарное косинусное сходство для обоих подходов.
- Визуализировать тепловые карты сходства.
- Выбрать пару предложений-синонимов (например, «Машина едет быстро» и «Автомобиль движется с высокой скоростью») и сравнить значения сходства.
Ожидаемый результат:
- TF-IDF покажет низкое сходство для синонимичных пар (0.1–0.3), так как лексика разная.
- Word2vec/BERT дадут высокое сходство (0.7–0.9) за счёт семантической близости.
- Вы сможете на практике убедиться в компромиссе между интерпретируемостью (TF-IDF) и семантикой (dense).
Связь с другими вопросами
Навигация
- Предыдущий: 925
- Следующий: 927
- Индекс: 00. Индекс разборов