# «Магия» Word2Vec: Преподаватель Стэнфорда о том, как обучаются языковые модели

Источник: https://www.youtube.com/watch?v=nBor4jfWetQ
Канал: Stanford Online
Опубликовано: 04.03.2025

---

## 🧠 Глубокое погружение в Word Vectors и нейронные сети: Лекция Стэнфорда [[JUMP:00:05]]

Вторая лекция курса CS224N от Stanford Online посвящена фундаментальным концепциям обработки естественного языка (NLP): принципам работы векторных представлений слов (word vectors), методам оптимизации и переходу к архитектурам нейронных сетей. Преподаватель рассматривает, как простые математические операции над векторами позволяют моделям улавливать семантические нюансы и культурные связи слов, а также объясняет устройство градиентного спуска.

## 📉 Оптимизация и градиентный спуск [[JUMP:03:02]]

Для обучения моделей необходимо минимизировать функцию потерь, определяющую «расстояние» между прогнозом модели и реальностью. Алгоритм градиентного спуска помогает найти направление к минимуму этой функции.

*   **Классический градиентный спуск:** Вычисляет градиент для всего набора данных. Это крайне затратный процесс, требующий больших вычислительных мощностей.
*   **Стохастический градиентный спуск (SGD):** Вместо всего набора данных используется небольшое подмножество (мини-батчи по 16–32 элемента). Это не только значительно ускоряет обучение, но и вносит полезный шум, который помогает нейронным сетям лучше оптимизироваться.

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

## 🔍 Word2Vec: Магия семантики и аналогии [[JUMP:11:30]]

Модель Word2Vec строится на простой идее: каждое слово представляется вектором, а цель обучения — научиться предсказывать соседние слова. Хотя модель «не знает» структуру предложений, она удивительно эффективно улавливает смысловые отношения.

*   **Векторные аналогии:** Одной из самых ярких особенностей модели является способность выполнять линейные операции: `King - Man + Woman = Queen`.
*   **Ограничения:** Несмотря на то, что модель может угадывать культурные ассоциации (например, «Австралия — пиво», «Франция — вино»), она не является универсальным инструментом, и многие современные системы, такие как ChatGPT, значительно превосходят её в сложности.

Для обучения Word2Vec часто используются два независимых вектора для каждого слова (в центре и в контексте), которые в конце обычно усредняются. В качестве альтернативы классическому «наивному» Softmax, который суммирует все слова в словаре, часто применяется **отрицательное сэмплирование (negative sampling)**. Этот метод обучает модель повышать вероятность настоящего контекстного слова и понижать её для нескольких случайно выбранных «отрицательных» примеров. При сэмплировании отрицательных слов лучше использовать распределение униграмм, возведенное в степень 3/4, что слегка повышает шансы выбора редких слов.

## 🧤 Альтернативы: От частотных матриц к GloVe [[JUMP:34:07]]

Помимо предсказательных моделей, существуют методы, основанные на подсчете частоты совместной встречаемости слов. Исходные матрицы таких подсчетов огромны и неудобны, поэтому для снижения размерности традиционно использовалось сингулярное разложение (SVD).

*   **GloVe (Global Vectors):** Модель, разработанная в Стэнфорде, объединяет лучшие стороны обоих подходов. Она опирается на статистику совместной встречаемости, но моделирует её через логарифм отношений вероятностей, что позволяет добиться линейных семантических компонентов, аналогичных Word2Vec.

## ⚖️ Оценка качества моделей [[JUMP:46:02]]

Важной частью работы над NLP-системами является выбор метрик успеха:

*   **Внутренняя оценка (Intrinsic):** Тестирование на специфических подзадачах (например, предсказание аналогий или сходство слов по шкале человека). Это быстро, но не всегда коррелирует с успехом в реальных задачах.
*   **Внешняя оценка (Extrinsic):** Проверка влияния модели на реальную задачу, например, Named Entity Recognition (распознавание именованных сущностей — имен, локаций).

## 🧩 Многозначность слов и нейронная классификация [[JUMP:52:18]]

Большинство слов, таких как *bank* или *pike*, имеют множество значений. Хотя ранние методы пытались кластеризовать слова по разным смыслам, современные подходы чаще используют один вектор как «суперпозицию» (средневзвешенное значение) всех контекстов. Тем не менее, методы разреженного кодирования (sparse coding) позволяют извлекать отдельные семантические компоненты даже из одного общего вектора.

В финальной части лекции преподаватель переходит к созданию **нейронных классификаторов**:

1.  **Контекстное окно:** Входные данные формируются из слова и его окружения.
2.  **Архитектура:** Использование слоев весов и нелинейных функций активации (например, логистической функции) позволяет модели строить нелинейные границы принятия решений.
3.  **Cross Entropy Loss:** При обучении в PyTorch рекомендуется использовать функцию потерь кросс-энтропии, которая в случае «золотой» разметки эквивалентна максимизации логарифмического правдоподобия.

Вдохновением для нейронных сетей послужили биологические нейроны, которые комбинируют множество входных сигналов и выдают выходной, если общая активность превышает порог. Современные нейросети упрощают эту модель до матричных вычислений, но именно глубина слоев позволяет им «магически» находить полезные способы интерпретации входных данных.