Головна / Статті / Від правил до трансформерів: як 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.