В рамках курса Стэнфордского университета CS224N «Обработка естественного языка с глубоким обучением» (весна 2024 года) прошла шестая лекция, посвященная эволюции рекуррентных нейронных сетей (RNN). В центре внимания оказались архитектуры Long Short-Term Memory (LSTM) и их революционное применение в задачах машинного перевода (Neural Machine Translation, NMT).
📊 Оценка языковых моделей: от интуиции к перплексии 2:18
Помимо субъективной оценки качества генерируемых текстов, в NLP существует строгий математический стандарт — перплексия (perplexity) . Этот показатель определяет, насколько эффективно модель предсказывает слова в реальных человеческих текстах, на которых она не обучалась.
Основные факты о перплексии:
- Математическая суть: Перплексия является экспонентой от кросс-энтропии (средней негативной логарифмической вероятности на слово) .
- Интерпретация: Значение перплексии можно представить как размер кубика, который модель «бросает» при выборе следующего слова. Если перплексия равна 64, это эквивалентно равновероятному выбору из 64 вариантов .
- Прогресс: В эпоху n-граммных моделей хорошим показателем считалась перплексия около 67 . С появлением LSTM этот показатель упал до 30, а современные большие языковые модели достигают однозначных чисел .
По словам лектора, термин «перплексия» закрепился благодаря Фреду Джелинеку из IBM, который в 70-х годах искал простой способ объяснить информационную теорию специалистам по символьному ИИ, не владевшим глубокой математикой .
📉 Проблема исчезающего градиента: почему простые RNN «забывчивы» 9:22
Главный недостаток базовых рекуррентных сетей заключается в затухании (vanishing) или взрывном росте (exploding) градиентов при обратном распространении ошибки через длинные последовательности .
Проблема затухания градиента:
- При вычислении градиента веса цепочки слов перемножаются по правилу цепной производной .
- Математически это сводится к возведению матрицы весов в степень, соответствующую длине последовательности .
- Если собственные значения матрицы меньше 1, сигнал быстро исчезает. В результате модель обновляет веса только на основе ближайших слов и «не видит» долгосрочных зависимостей .
Лектор приводит пример с текстом о билетах (tickets) на принтер : чтобы предсказать слово «ticket» в конце абзаца, модели нужно помнить о нем на протяжении 20+ слов. Обычные RNN эффективно учитывают контекст лишь на глубину около 7 токенов .
🛠️ Решение проблемы взрывного градиента: Gradient Clipping 18:59
Если затухающий градиент — это фундаментальная архитектурная проблема, то взрывной градиент (когда значения становятся слишком большими) решается с помощью «грубого хака» — клиппинга (отсечения) .
- Инструмент: Gradient Clipping.
- Метод: Вычисляется норма градиента. Если она превышает порог (обычно от 5 до 20), градиент масштабируется вниз перед обновлением параметров .
- Зачем это нужно: Без клиппинга один неудачный шаг обучения с гигантским градиентом может «выбросить» веса модели в случайную область пространства, полностью разрушив обучение .
🧠 Анатомия LSTM: память с избирательным доступом 22:50
Архитектура Long Short-Term Memory (LSTM) была предложена Зеппом Хохрайтером и Юргеном Шмидхубером в 1997 году для расширения «краткосрочной памяти» нейросетей . Ключевое отличие LSTM от простой RNN — наличие специального «состояния ячейки» (cell state) и механизмов управления потоком информации через гейты (ворота) .
Основные компоненты LSTM:
- Forget Gate (Гейт забывания): Определяет, какую часть старой информации из памяти нужно стереть. Лектор замечает, что логичнее было бы назвать его «гейтом сохранения» .
- Input Gate (Входной гейт): Выбирает, какие части нового входа достойны записи в память .
- Output Gate (Выходной гейт): Контролирует, какая часть накопленной памяти будет использована для текущего скрытого состояния и предсказания слова .
Лектор подчеркивает, что «секретным ингредиентом» LSTM является знак плюс в формуле обновления состояния ячейки . В отличие от умножения в обычных RNN, сложение позволяет градиентам течь через цепочку времени практически без затухания, что позволяет модели сохранять информацию на сотни шагов .
🏗️ Варианты и расширения: Bidirectional и Stacked RNN 48:27
Для более сложных задач анализа текста используются модификации рекуррентных сетей:
- Bidirectional RNN (Двунаправленные сети): Обучаются две независимые сети — одна читает текст слева направо, другая — справа налево. Их скрытые состояния конкатенируются . Это позволяет каждому слову «знать» и о прошлом, и о будущем контексте, что критично для классификации, но неприменимо для генерации текста в реальном времени .
- Stacked RNN (Многослойные сети): Вместо одной цепочки выстраивается иерархия из нескольких слоев. Каждый следующий слой извлекает более абстрактные признаки . В практике LSTM обычно использовали 2–4 слоя, так как дальнейшее углубление не давало значительного прироста .
🌍 Прорыв в машинном переводе: Sequence-to-Sequence 1:05:15
До 2014 года доминировал статистический машинный перевод (SMT), основанный на огромных таблицах соответствий фраз. По мнению лектора, эти системы были перегружены сложным кодом и «костылями» для конкретных языковых пар .
Революция Neural Machine Translation (NMT) произошла с внедрением архитектуры Encoder-Decoder :
- Encoder (Кодировщик): RNN (обычно многослойная LSTM) считывает предложение на исходном языке и упаковывает весь смысл в финальный вектор скрытого состояния .
- Decoder (Декодировщик): Другая RNN принимает этот вектор и начинает генерировать предложение на целевом языке слово за словом .
Этот подход сделал перевод «сквозным» (end-to-end), позволяя всей системе оптимизироваться под одну цель . В 2016 году Google полностью перевела свой сервис Google Translate на нейросетевую архитектуру, что привело к мгновенному и заметному скачку качества, который отметили даже обычные пользователи и издания уровня New York Times .