DeepLearning Blog

Связь word2vector с SVD

Published Dec. 17, 2025, 2:08 p.m. by railot116

Word2Vec — это умный, эффективный и "нейросетевой" способ приближённого вычисления SVD для гигантской матрицы "слово-контекст".

Давайте разберём это по шагам с простым примером.


📊 Шаг 1: Общая основа — Матрица совместных встречаемостей

И SVD-подход (например, GloVe), и Word2Vec начинают с одного принципа: "Значение слова определяется его окружением".

Пример корпуса:

"кот любит рыбу. собака любит кость. кот и собака — животные."

  1. Строим матрицу M "Слово-Контекст":

    • Строки — уникальные слова из текста (целевые слова).
    • Столбцы — уникальные контекстные слова (чаще всего это тот же словарь).
    • В ячейке M[i][j]сколько раз слово i встречалось в окрестности слова j.

    Для нашего примера с окном = 1 получится такая матрица (упрощённо):

кот любит рыбу собака кость ...
кот 0 2 0 1 0 ...
любит 1 0 1 1 1 ...
рыбу 0 1 0 0 0 ...
собака 1 1 0 0 1 ...
кость 0 1 0 1 0 ...
Число 2 в ячейке (`кот`, `любит`) — потому что "кот" дважды был соседом "любит" ("**кот** *любит*" и "*любит* **кот**").

Это и есть ключевой объект: гигантская, разреженная, статистическая матрица.


🔬 Шаг 2: SVD-подход — Прямая факторизация матрицы

Идея SVD: Любую матрицу M (размера m×n) можно разложить в произведение трёх матриц:
M = U * Σ * V^T

  • U (размер m×r) — векторные представления слов как целевых (строка = вектор слова).
  • Σ (размер r×r) — диагональная матрица важности этих компонент.
  • V^T (размер r×n) — векторные представления слов как контекстных.

Что это даёт?
1. Берём первую (левую) сингулярную матрицу U (или иногда U * Σ).
2. Строки в U — это и есть наши векторные представления слов!
3. SVD автоматически находит оптимальное низкоранговое приближение. Мы можем взять только первые d столбцов U (например, 300), отбросив "шум".

Проблема SVD: Вычисление полного SVD для матрицы 10^5 x 10^5 (100k слов) чрезвычайно затратно по памяти и времени. Нужно хранить всю матрицу.


🧠 Шаг 3: Word2Vec — Неявная, нейросетевая аппроксимация

Word2Vec не строит матрицу M в явном виде. Вместо этого он неявно оптимизирует её разложение с помощью нейронной сети.

Ментальная модель: * Входной (V) и выходной (U) слои сети в Skip-gram — это, по сути, две матрицы, которые мы пытаемся найти. * Обучая сеть предсказывать контекст, мы заставляем скалярные произведения векторов V_i • U_j приближаться к логарифмам значений той самой гипотетической матрицы совместных встречаемостей.

Формально можно показать, что Skip-gram с negative sampling (SGNS) неявно факторизует матрицу M', где:
M'[i][j] = PMI(word_i, context_j) - log(k)
(PMI — точечная взаимная информация, k — параметр negative sampling)

Проще говоря:

Word2Vec — это стохастический, онлайн-алгоритм для приближённого вычисления разложения матрицы совместных встречаемостей, адаптированный под гигантские объёмы данных.


📌 Сравнение в таблице

Аспект Классический SVD (напр., LSA) Word2Vec (SGNS)
Основной объект Явная матрица совместных встречаемостей M Неявная. Обучается на потоках пар (слово, контекст).
Вычислительная сложность Высокая. Нужно хранить/факторизовать всю (часто разреженную) матрицу. Низкая. Обучение через стохастический градиентный спуск, не нужно хранить всю матрицу.
Данные Пакетная обработка. Нужен весь корпус сразу. Онлайн-обучение. Может обрабатывать поток данных.
Контекст Часто документ (в LSA). Скользящее окно (несколько слов). Лучше захватывает синтаксис.
Целевая функция Аппроксимация M ≈ U Σ V^T (среднеквадратичная ошибка). Вероятностная: максимизация правдоподобия появления реальных пар слов.
Гиперпараметры Размерность усечения d. Размер окна, размер вектора, количество негативных примеров, скорость обучения.
Семейство Count-based (статистические) методы. Predict-based (предсказательные) методы.

🌉 Мост между подходами (теорема Леви и Голдберга)

В 2014 году Йовель Леви и Йоав Голдберг в работе Neural Word Embedding as Implicit Matrix Factorization строго показали, что:

Алгоритм Word2Vec-SGNS эквивалентен разложению матрицы M, элементами которой являются PMI (Pointwise Mutual Information) слов, сдвинутый на логарифм параметра k (числа негативных примеров).

PMI(word, context) = log( P(word, context) / (P(word) * P(context)) )
Это мера того, насколько чаще слова встречаются вместе, чем если бы они были независимы.

Вывод: Оптимальные векторы Word2Vec стремятся к разложению матрицы M_shifted_PMI ≈ V * U^T.


🧪 Практическая иллюстрация

Давайте посмотрим, как векторы косинусная близость отражает схожесть в матрице совместных встречаемостей.

Пара слов Интуитивная связь В матрице M (сходство строк) В Word2Vec / SVD (близость векторов)
кот — собака Оба домашние животные, могут быть подлежащими. Строки будут похожи (высокие значения в столбцах "любит", "и", "животные"). Векторы v_кот и v_собака будут близки в пространстве.
кот — рыбу Типичная связь "объект-действие". Строки не похожи, но у них будет сильная связь через контекст (столбец "любит"). Векторы будут далеки, но v_кот • v_рыбу может быть высоким.

✅ Итог: Главная мысль

  1. Одна цель: И SVD, и Word2Vec ищут низкоразмерные векторные представления слов, сохраняющие их контекстное сходство.
  2. Одна математика: Оба метода в своей основе факторизуют (разлагают) матрицу статистик "слово-контекст", просто делают это по-разному.
  3. Разные пути:
    • SVD делает это явно, точно, но дорого для всей матрицы.
    • Word2Vec делает это неявно, приближённо, но эффективно через оптимизацию нейросети на потоках данных.
  4. Исторически: SVD (LSA) был первым. Word2Vec — это прорыв в масштабируемости и качестве представлений для больших данных, формализующий ту же идею через призму нейросетей.

Понимание этой связи позволяет увидеть элегантную общность методов: от "старой школы" линейной алгебры до современных нейросетей — все они, по сути, извлекают скрытую структуру из паттернов совместного появления слов.

0.0
0 оценок
5★
0
4★
0
3★
0
2★
0
1★
0

Оставить отзыв

Нажмите на звезду для оценки от 1 до 5
Необязательно. Используется только для связи
0/2000

Комментарии

Все С ответами Проверенные Только 4-5★