🧠 Векторные представления слов: от простого к контекстному 0:00
В современном обучении NLP (Natural Language Processing) переход от простых методов представления текста к сложным векторным моделям стал фундаментальным шагом. Лектор Массачусетского технологического института (MIT) Рама Рамакришнан на примере курса Deep Learning объясняет, как работают эмбеддинги (векторные представления слов), почему классическое One-Hot кодирование неэффективно и как современные подходы позволяют машинам «понимать» смысл и взаимосвязи между понятиями.
🚧 Проблемы One-Hot кодирования 2:43
Исторически первым способом представления текста было One-Hot кодирование, где каждый токен превращается в вектор, соответствующий позиции слова в словаре.
- Отсутствие семантики: При One-Hot кодировании любые два слова находятся на одинаковом евклидовом расстоянии ($ \sqrt{2} $), независимо от их значения. Векторы для слов «фильм» и «кино» будут так же далеки друг от друга, как «добро» и «зло».
- Высокая размерность: Если словарь насчитывает 500 000 слов, каждый входной вектор имеет длину 500 000. Это ведет к колоссальной нагрузке на вычислительные ресурсы и объемы памяти.
📐 Эмбеддинги: геометрия смыслов 11:43
Решением проблемы стали эмбеддинги — плотные векторы, где семантическая близость слов отражается в их геометрической близости.
- Геометрические отношения: Эмбеддинги позволяют не только измерять расстояние, но и «вычислять» смыслы. Классический пример алгебры эмбеддингов: вектор «брат» минус вектор «мужчина» плюс «женщина» дает результат, близкий к вектору «сестра».
- Контекстуальный разрыв: Даже лучшие статические эмбеддинги страдают от многозначности (полисемии). Например, слово bank (банк или берег реки) в статических моделях будет представлено «усредненным» вектором, что не всегда отражает суть в конкретном предложении.
💡 Метод GloVe: магия контекста 21:20
Для создания статических эмбеддингов широко используется метод GloVe (Global Vectors). Ключевая концепция основана на цитате лингвиста Джона Ферта: «Ты познаешь слово по компании, которую оно держит».
- Матрица сопутствия: Метод строит матрицу, где в каждой ячейке хранится количество раз, которое слова $i$ и $j$ встретились в одном контексте (предложении) во всем корпусе текстов (например, в Wikipedia).
- Обучение как регрессия: Модель пытается подобрать такие векторы $w_i$ и $w_j$ и смещения $b_i, b_j$, чтобы их скалярное произведение максимально точно соответствовало логарифму числа сопутствий в матрице.
- Оптимизация: Для поиска оптимальных весов используется стохастический градиентный спуск.
🛠 Практическая реализация в Keras 50:29
При использовании Keras процесс превращения текста в обучаемые данные выглядит следующим образом:
- Preprocessing: Стандартизация и токенизация через
TextVectorization. - Indexing: Преобразование слов в целые числа (индексы).
- Embedding Layer: Слой, который превращает индексы в векторы (предобученные или обучаемые с нуля).
- Pooling:
GlobalAveragePooling1Dусредняет полученные векторы для подачи в полносвязные слои нейросети.
Рамакришнан подчеркивает: если данных мало, лучше использовать предобученные эмбеддинги (например, GloVe), не меняя их (замораживая веса). Если данных много, то «размораживание» весов или обучение эмбеддингов с нуля под конкретную задачу (например, классификацию жанров песен) часто дает лучшие результаты, повышая точность предсказаний.