Від правил до трансформерів: як NLP навчилася розуміти контекст
Коротка історія обробки природної мови: системи на правилах, N-грами, марковські моделі, вектори слів, RNN, увага, трансформери й великі мовні моделі на їхній основі.
Комп'ютери працюють із нулями й одиницями, тож цілком природно спитати, як машина зрештою дає раду англійській, грецькій, гінді та безлічі інших людських мов. Чат-боти, голосові асистенти, перекладачі й рекомендаційні системи стали частиною повсякдення. Вони відповідають на запитання, перекладають, пропонують допомогу й навіть пишуть відповіді, що звучать по-людськи. Ми можемо говорити з машинами звичайною мовою, а не лише кодом чи фіксованими командами. Галузь, що за цим стоїть, називається обробкою природної мови, або 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.