# Stanford CS224N: Анализ CNN и TreeRNN в обработке естественного языка

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

---

В рамках курса Stanford CS224N «NLP с использованием глубокого обучения» (весна 2024) профессор Кристофер Мэннинг провёл лекцию, посвящённую архитектурам, которые сегодня считаются менее мейнстримными, чем трансформеры, но сохраняют научную и практическую ценность. Речь пошла о сверточных нейронных сетях (ConvNets) и древовидных рекурсивных сетях (TreeRNNs), их истории развития и уникальных способностях в анализе структуры языка.

## 🎓 Организация курса и проблема GPU-вычислений
[[JUMP:0:05]]

В начале занятия Кристофер Мэннинг поблагодарил студентов за обратную связь в опросах середины квартала. Несмотря на общую удовлетворенность контентом, возникли вопросы по организации часов консультаций (office hours) и доступу к вычислительным мощностям. Мэннинг признал, что очереди на консультации перед дедлайнами могут растягиваться на шесть часов, и идеального решения этой проблемы пока нет.

Что касается обучения моделей, профессор дал практические рекомендации по работе с GPU:

* **Google Colab Pro:** За 10 долларов в месяц пользователи получают значительно более стабильный доступ к видеокартам, чем в бесплатной версии.
* **Kaggle Notebooks:** Могут предоставить лучший доступ к GPU, хотя интерфейс менее удобен, чем в Colab.
* **Modal:** Платформа, которую начали использовать некоторые учебные группы для распределенных вычислений.

---

## 🖼️ Сверточные нейронные сети (CNN) в анализе текста
[[JUMP:4:03]]

Сверточные сети изначально были разработаны для компьютерного зрения, где они обеспечивают инвариантность к сдвигу — способность распознать объект (например, кенгуру) вне зависимости от его положения в кадре. В NLP идея CNN заключается в том, чтобы использовать фильтры как детекторы признаков для n-грамм (словосочетаний из 2, 3 или более слов).

Процесс работы CNN в тексте выглядит так:

1.  Текст представляется как одномерная (1D) последовательность векторов слов.
2.  Фильтр (маска) скользит по этой последовательности, вычисляя скалярное произведение с весами.
3.  Для сохранения размерности часто используется дополнение нулями (**padding**).
4.  Применяется нелинейная функция активации (например, сигмоида или ReLU).

Особое внимание Мэннинг уделил операции **max pooling** (пулинг по максимуму). По его словам, это работает как детектор признаков: неважно, в каком месте предложения встретилось «я-сообщение» или глагол речи, пулинг зафиксирует сам факт наличия этого признака в тексте. В то же время **average pooling** (усредняющий пулинг) может быть полезен, если нужно измерить общее свойство текста, например, степень его формальности.

---

## 🧪 Модель Юн Кима и проблема «уплывающих» векторов
[[JUMP:18:27]]

Одной из самых известных работ в этой области стала статья Юн Кима (Yoon Kim) 2014 года. Он создал простой, но эффективный классификатор настроений на базе CNN. Ким применил фильтры разного размера (биграммы, триграммы, 4-граммы) параллельно, объединяя их результаты в один вектор.

Важным вкладом Кима стала стратегия работы с предобученными векторами слов (GloVe или word2vec). При обучении на малых наборах данных возникает проблема: векторы слов, которые есть в обучающей выборке, начинают «двигаться» (fine-tuning), подстраиваясь под задачу, а редкие слова остаются на месте.

* **Пример:** Слова «скучный» (tedious) и «нудный» (plodding) имеют схожий смысл. Если «скучный» был в обучении, его вектор сместится в сторону негативной зоны. Если «нудный» не встретился, он останется в исходной позиции и может оказаться по другую сторону границы классификации, что разрушит семантические связи.

Чтобы решить эту проблему, Юн Ким предложил использовать **двухканальную архитектуру**: один канал использует статичные векторы, а второй — те, что обновляются в процессе обучения. По утверждению Мэннинга, эта простая модель в свое время показала результаты на уровне лучших специализированных систем.

---

## 📉 Глубокие свертки и VD-CNN
[[JUMP:33:13]]

В 2017 году группа исследователей (Conneau et al.) предложила архитектуру **VD-CNN** (Very Deep CNN), вдохновленную успехами VGGNet и ResNet в зрении. До этого в NLP стандартом были 2–3 слойные рекуррентные сети, тогда как в зрении слои исчислялись десятками.

Особенности VD-CNN:

* **Уровень символов:** Модель работает не со словами, а с отдельными буквами (16-мерные векторы).
* **Глубина:** Исследователи тестировали сети в 9, 17 и 29 слоев.
* **Остаточные связи (Residual connections):** Позволяют информации проходить через глубокие слои без затухания градиента.

Мэннинг отметил, что эта модель смогла достичь уровня state-of-the-art на больших датасетах (например, Yelp или Amazon reviews), работая с «сырым» сигналом символов без предварительных знаний о словах.

---

## 🌳 Древовидные рекурсивные сети (TreeRNNs)
[[JUMP:42:33]]

Вторая часть лекции была посвящена TreeRNNs — направлению, которое активно развивалось в Стэнфордском университете под руководством самого Мэннинга с 2010 года. Лингвистической основой здесь служит идея Ноама Хомского о рекурсивной структуре языка.

Человеческий язык иерархичен: фразы вложены друг в друга (например, именная группа внутри предложной группы). Идея TreeRNN заключается в том, чтобы вычислять векторное представление предложения, следуя его синтаксическому дереву, а не просто читая слова слева направо.

### Принцип композициональности
По словам профессора, смысл фразы должен определяться смыслами её частей и правилами их объединения. В простейшем случае два дочерних вектора ($c_1$ и $c_2$) объединяются через матрицу весов $W$ и функцию активации, формируя родительский узел. Этот процесс продолжается до корня дерева, давая финальное представление всего предложения.

---

## 🎭 RNTN и магия отрицания
[[JUMP:54:32]]

Пиком развития этой ветки стала модель **Recursive Neural Tensor Network (RNTN)**. Проблема обычных TreeRNN была в том, что одна матрица $W$ не могла адекватно описать разные типы взаимодействий: например, «красный мяч» (прилагательное + существительное) и «пнуть мяч» (глагол + дополнение) требуют разной логики объединения смыслов.

RNTN ввела тензорный слой, который позволил векторам слов буквально «взаимодействовать» друг с другом через умножение, что дало огромный прирост в анализе сложных конструкций.

Для обучения был создан **Stanford Sentiment Treebank (SST)** — база из 12 000 предложений, где каждое слово и каждая фраза в дереве были размечены людьми по 5-балльной шкале настроения. Это позволило модели научиться понимать нюансы, которые недоступны обычным «мешкам слов»:

* **Скрытый негатив:** Фраза «фильм должен был быть веселее» содержит позитивные слова «веселее» и «развлекательнее», но RNTN понимает, что конструкция «должен был быть» превращает их в негатив.
* **Двойное отрицание:** В то время как обычные модели часто игнорируют частицу «не», RNTN корректно обрабатывает фразу «not dull» (не скучный), превращая негатив в позитив.

Мэннинг подчеркнул, что даже современные трансформеры иногда справляются с логикой отрицания хуже, чем эти специализированные древовидные модели.

---

## 🏁 Почему TreeRNN проиграли трансформерам?
[[JUMP:1:10:13]]

Несмотря на лингвистическую элегантность, TreeRNN сегодня используются редко. Мэннинг выделил ключевую причину: **ограниченность потока информации**. В древовидной модели информация течет строго по веткам дерева. В трансформерах же механизм внимания (attention) позволяет каждому слову «смотреть» на любое другое слово напрямую, что дает гораздо большую гибкость и вычислительную мощность.

Тем не менее, Мэннинг выразил надежду на появление гибридных архитектур, которые объединят мощь трансформеров с глубоким пониманием структуры языка, заложенным в древовидных сетях.