Word2Vec — это умный, эффективный и "нейросетевой" способ приближённого вычисления SVD для гигантской матрицы "слово-контекст".
Давайте разберём это по шагам с простым примером.
📊 Шаг 1: Общая основа — Матрица совместных встречаемостей
И SVD-подход (например, GloVe), и Word2Vec начинают с одного принципа: "Значение слова определяется его окружением".
Пример корпуса:
"кот любит рыбу. собака любит кость. кот и собака — животные."
-
Строим матрицу
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_рыбу может быть высоким. |
✅ Итог: Главная мысль
- Одна цель: И SVD, и Word2Vec ищут низкоразмерные векторные представления слов, сохраняющие их контекстное сходство.
- Одна математика: Оба метода в своей основе факторизуют (разлагают) матрицу статистик "слово-контекст", просто делают это по-разному.
- Разные пути:
- SVD делает это явно, точно, но дорого для всей матрицы.
- Word2Vec делает это неявно, приближённо, но эффективно через оптимизацию нейросети на потоках данных.
- Исторически: SVD (LSA) был первым. Word2Vec — это прорыв в масштабируемости и качестве представлений для больших данных, формализующий ту же идею через призму нейросетей.
Понимание этой связи позволяет увидеть элегантную общность методов: от "старой школы" линейной алгебры до современных нейросетей — все они, по сути, извлекают скрытую структуру из паттернов совместного появления слов.
Оставить отзыв
Комментарии
Загрузка комментариев...
★ Оставить отзыв