Главная / Статьи / От правил к трансформерам: как NLP научилась понимать контекст

От правил к трансформерам: как NLP научилась понимать контекст

Краткая история обработки естественного языка: системы на правилах, N-граммы, марковские модели, векторы слов, RNN, внимание, трансформеры и большие языковые модели на их основе.

1674 слов

Компьютеры работают с нулями и единицами, так что вполне естественно задаться вопросом, как машина в итоге справляется с английским, греческим, хинди и множеством других человеческих языков. Чат-боты, голосовые ассистенты, переводчики и рекомендательные системы стали частью повседневной жизни. Они отвечают на вопросы, переводят, предлагают помощь и даже пишут ответы, звучащие по-человечески. Мы можем говорить с машинами обычным языком, а не только кодом или фиксированными командами. Область, которая за этим стоит, называется обработкой естественного языка, или NLP.

Что такое NLP

NLP — раздел искусственного интеллекта, машинного обучения и компьютерной лингвистики. Его цель — дать компьютерам возможность обрабатывать, анализировать, понимать и порождать человеческий язык. Работа началась примерно в 1950-х с ранних исследований машинного перевода и вычислительных подходов к языку, и с тех пор область прошла через несколько крупных этапов.

Популярное определение в одну строку гласит, что NLP превращает человеческий язык в форму, с которой может работать компьютер. Отчасти это верно, но с важной оговоркой: сделать язык читаемым для компьютера — не то же самое, что его понять. Перевод предложения в двоичный код не даёт машине никакого знания о его смысле.

Возьмём «Thank you». Совсем простую машину на правилах можно настроить так:

IF input = "Thank you"
THEN response = "You're welcome"
ELSE search for another rule

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

Почему язык труден для машин

Человек, понимая предложение, не смотрит на слова по отдельности. Возьмём английское «She saw a bat». Речь о животном (летучей мыши) или о спортивном инвентаре (бите)? Решает только контекст.

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

1. NLP на правилах и эвристиках

Одним из ранних подходов был NLP на правилах. Программисты и лингвисты вручную прописывали, как обрабатывать язык, вместо того чтобы система училась на больших данных. В арсенале были словари, грамматические правила, сопоставление с шаблонами, регулярные выражения, синтаксические правила и простые условия if-else. Пара примеров:

IF sentence contains "hello"
THEN classify it as a greeting
IF word ends with "ing"
THEN it may represent a verb

Такие системы годились для узких, чётко очерченных задач, но язык полон исключений. «He is going to the bank» указывает на банк, а «He sat beside the river bank» — на берег реки. Фиксированному правилу трудно различить эти случаи без достаточного контекста. Это ограничение подтолкнуло исследователей к методам, которые извлекают языковые закономерности из данных, а не полагаются целиком на правила, написанные вручную.

2. Статистический NLP и машинное обучение

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

Это похоже на то, как люди учат язык. Никто не заучивает все возможные предложения. Закономерности усваиваются постепенно. «She is eating food» звучит естественно, а «Food eating is she» в стандартном английском звучит странно. Машина точно так же может узнать, что определённые слова и конструкции обычно встречаются вместе.

N-граммные модели

Один из ключевых статистических подходов — N-граммная модель, которая предсказывает слово по предшествующим словам. Для «She is going to » вероятные продолжения — school, college, market и work. Модель вычисляет вероятности по закономерностям в обучающих данных. Биграмма смотрит на два слова, триграмма — на три:

I am
am going
going to
to school

Затем она может выучить вероятности вроде таких:

P(school | going to)

Это не значит, что машина понимает слово «school» так же, как человек. Она выучила статистическую связь между словами.

3. Марковские модели и моделирование последовательностей

Ещё одна идея статистического NLP — марковское допущение: следующее состояние или слово можно предсказать по ограниченному объёму предыдущей информации.

Word 1 → Word 2 → Word 3 → Word 4

Вместо того чтобы учитывать всю историю, модель в основном смотрит на последние слова. Так появились марковские модели, скрытые марковские модели (HMM) и N-граммные языковые модели. HMM стали особенно важны для разметки частей речи, распознавания речи, распознавания именованных сущностей и разметки последовательностей. Возьмём такое предложение:

Sonal is learning NLP.

POS-теггер может разметить его так:

Sonal → Proper Noun
is    → Verb
learning → Verb
NLP   → Noun

Модель учится вероятности каждого тега по окружающим словам.

4. От слов к числам

Оставалась более глубокая проблема. Машина не может выполнять математические операции над такими словами:

king
queen
man
woman

Язык нужно было представить математически, и так появились векторные представления. Слово превращается в числовой вектор:

king  → [0.21, 0.73, -0.12, ...]
queen → [0.24, 0.71, -0.10, ...]

Векторы позволяют алгоритмам машинного обучения работать с языком математически, и этот подход вырос в эмбеддинги слов. Известный пример — Word2Vec, который показал, что слова, встречающиеся в похожих контекстах, получают похожие векторы. Это был настоящий сдвиг: вместо того чтобы вручную задавать смысл каждого слова, модель может сама выучить полезные представления из языковых данных.

5. Приход нейросетей

По мере роста вычислительных мощностей и объёмов данных исследователи начали применять нейронные сети к NLP. Эти сети автоматически извлекают из данных полезные представления и закономерности, что снизило зависимость от вручную спроектированных статистических признаков. Основными архитектурами были сети прямого распространения, рекуррентные нейросети (RNN), сети долгой краткосрочной памяти (LSTM) и управляемые рекуррентные блоки (GRU).

RNN хорошо подходили для задачи, потому что язык последователен. Они читают предложение шаг за шагом, сохраняя информацию о предыдущих словах:

I → am → learning → NLP

LSTM и GRU создали, чтобы справляться с длинными зависимостями лучше, чем базовые RNN.

6. Проблема контекста

Контекст часто простирается гораздо дальше нескольких последних слов. В «Sonal went to the restaurant because she was hungry» модель должна связать «she» с «Sonal». А когда кубок не помещается в чемодан, потому что «it is too big», то кто из них «it»? Чтобы разрешить такие связи, нужно обращать внимание на разные части предложения.

Внимание

Эта потребность привела к одному из важнейших достижений современного NLP. Механизм внимания позволяет модели решать, какие части входных данных важнее всего при обработке конкретного слова, присваивая разным словам разные веса, а не относясь ко всем предыдущим словам одинаково. В «The cat sat on the mat because it was tired» для обработки «it» нужно понять, какое из предыдущих слов к нему относится, и внимание даёт способ выучить такие связи.

7. Трансформеры

В 2017 году статья «Attention Is All You Need» представила архитектуру Transformer. Она изменила NLP, потому что улавливает связи между словами через внимание и не зависит от пошаговой рекуррентности, как RNN. Общая схема выглядит так:

Input Text
     ↓
Tokenization
     ↓
Token Embeddings
     ↓
Positional Information
     ↓
Self-Attention
     ↓
Transformer Layers
     ↓
Contextual Representation
     ↓
Prediction / Generation

Центральная идея — self-attention. Каждый токен смотрит на остальные токены последовательности и оценивает, насколько сильно они с ним связаны, что позволяет моделям улавливать связи в гораздо более длинных контекстах.

8. От трансформеров к большим языковым моделям

Трансформеры стали фундаментом многих современных NLP-систем. Такие модели, как BERT, GPT и T5, а также множество других на базе трансформеров, демонстрировали всё более сильные языковые способности. Имея огромные датасеты, большие нейросети и много вычислительных ресурсов, они выучивают гигантское количество языковых закономерностей — так и появились большие языковые модели (LLM).

LLM не просто хранит список заготовленных ответов. В ходе обучения она извлекает статистические и семантические закономерности из огромных объёмов текста. Получив «The capital of India is...», она может предсказать «New Delhi». Получив вопрос, она может сгенерировать последовательность токенов, которая складывается в уместный ответ.

9. От сопоставления слов к пониманию контекста

Эволюцию легко увидеть на одной схеме:

Rule-Based NLP
      ↓
Statistical NLP
      ↓
Machine Learning
      ↓
Word Representations
      ↓
Neural Networks
      ↓
RNN / LSTM / GRU
      ↓
Attention
      ↓
Transformers
      ↓
Large Language Models

Так что история NLP — это не просто человеческий язык, переведённый в двоичный код. Путь ведёт от правил, написанных вручную, к статистическим закономерностям, затем к векторам, выученным представлениям, контекстно-зависимым моделям, вниманию и, наконец, к масштабным языковым моделям. Современные системы по-прежнему не понимают язык в точности так, как люди. Но они выучивают очень сложные закономерности и применяют их на практике: переводят, резюмируют, отвечают на вопросы, классифицируют тексты, извлекают информацию, работают с речью и генерируют текст. Всё это — попытка навести мост между человеческим языком и машинными вычислениями, и путь от простых правил к моделям с миллиардами выученных параметров — один из самых увлекательных в AI.