складність 2/5 Безкоштовно
Natural language processing
Як комп’ютери обробляють людську мову: перетворити текст на подання, з якими модель може працювати, і вжити їх для класифікації, виведення, перекладу й відповідей на питання.
Інтуїція
Текст має не ту форму, яка потрібна моделі. Модель споживає вектори чисел; речення — це послідовність символів змінної довжини, чий зміст залежить від порядку, контексту й безлічі того, чого ніколи не записують. Усе в цій галузі стоїть нижче за течією від цієї невідповідності.
Історична дуга — це один довгий відступ від ручно збудованої структури. Спершу лінгвісти писали правила; потім ознаки рахували, а модель вивчала ваги; потім вивчали саме подання; а тепер подання вивчають із нерозміченого тексту ще до того, як ваша задача взагалі відома. Кожен крок прибирав місце, де людина мусила вказати, що важить.
D2L формулює обсяг прямо: «обробка природної мови вивчає взаємодію комп’ютерів і людей за допомогою природних мов» [1, ch. 15, introduction]. Інженерне питання під цим вужче й корисніше — що таке вектор і звідки він узявся?
Формальне визначення
Галузь не має одного визначального рівняння. Що вона має — це двоетапну архітектуру, спільну майже для кожної сучасної системи, і обидва етапи мають точні формулювання в літературі.
Етап перший — попереднє навчання. Модель підганяють під нерозмічений текст, передбачаючи приховані його частини з навколишнього контексту. D2L будує свій виклад саме навколо цього, відрізняючи незалежні від контексту подання, де слово дістає один вектор незалежно від ужитку, від залежних від контексту, де вектор залежить від навколишніх токенів [1, §15.8.1]. Канонічною залежною від контексту моделлю є BERT, яку «спроєктовано, щоб попередньо навчати глибокі двоспрямовані подання з нерозміченого тексту, обумовлюючи їх спільно і лівим, і правим контекстом на всіх шарах» [2, abstract].
Етап другий — донавчання параметрів. Попередньо навчену модель пристосовують до конкретної задачі. Економіка цього і є всією причиною, чому галузь перебудувалася навколо нього: попередньо навчений BERT «можна донавчити лише одним додатковим вихідним шаром, щоб створити найкращі моделі для широкого кола задач, як-от відповіді на питання та виведення природною мовою, без суттєвих змін архітектури під конкретну задачу» [2, abstract].
Як це працює
Токенізація. Текст стає послідовністю одиниць. Слова є очевидним вибором і поганим — словники необмежені, і кожне небачене слово стає діркою. Підслівні одиниці є стандартною відповіддю, і D2L розглядає їх як окрему тему [1, §15.6].
Ембединги. Кожен токен стає вектором. Незалежна від контексту родина — word2vec [1, §15.1] і GloVe [1, §15.5] — призначає один вектор на тип слова, а це означає, що bank дістає єдине подання і для річки, і для грошей.
Кодування в контексті. Саме тут архітектура важить. Transformer було введено як «нову просту мережеву архітектуру, Transformer, засновану виключно на механізмах уваги, яка цілком відмовляється від рекурентності та згорток» [3, abstract].
Механізм — це одна формула. У «Scaled Dot-Product Attention» модель обчислює «скалярні добутки запиту з усіма ключами, ділить кожен на √d_k і застосовує softmax, щоб дістати ваги на значеннях» [3, §3.2.1]. Прогоніть це кілька разів паралельно — стаття «виявила, що корисно лінійно проєктувати запити, ключі та значення h разів різними вивченими лінійними проєкціями» [3, §3.2.2] — і ви маєте багатоголову увагу.
Прибрати рекурентність — не дрібниця, і власне обґрунтування статті називає три речі, якими вона торгувала: «загальна обчислювальна складність на шар», «обсяг обчислень, які можна розпаралелити» і «довжина шляху між далекосяжними залежностями в мережі» [3, §4]. Рекурентна модель мусить опрацювати токен 5 після токена 4, тож шлях між віддаленими токенами довгий, а робота послідовна. Увага робить цей шлях сталим.
Ціна викидання рекурентності в тому, що разом із нею йде порядок слів. «Оскільки наша модель не містить ні рекурентності, ні згортки, щоб модель могла скористатися порядком послідовності, ми мусимо впорснути якусь інформацію про відносну чи абсолютну позицію токенів у послідовності» [3, §3.5] — саме цим і є позиційні кодування, і саме тому практичний приклад нижче є задачею, якої увага задарма не розв’язує.
Голова задачі. Невеликий шар згори, навчений на ваших розмічених даних. Процедура така проста, як і звучить: «для кожної задачі ми просто вставляємо специфічні для задачі входи й виходи в BERT і донавчаємо всі параметри наскрізно» [2, §3.2].
Результати, які зробили це типовим вибором, варто процитувати, а не заявити. Transformer повідомив 28.4 BLEU на WMT 2014 англійська→німецька, «поліпшивши наявні найкращі результати, зокрема й ансамблі, більш ніж на 2 BLEU», і 41.8 BLEU англійська→французька «після 3.5 дня навчання на восьми GPU» [3, abstract]. BERT тоді повідомив нові найкращі результати «на одинадцяти задачах обробки природної мови», зокрема оцінку GLUE 80.5 — абсолютне поліпшення на 7.7 пункту — і тестовий F1 на SQuAD v1.1, що дорівнює 93.2 [2, abstract].
Де застосовується
D2L бере дві задачі як представницькі, і цей вибір повчальний: аналіз тональності та виведення природною мовою, «які аналізують відповідно поодинокий текст і зв’язки текстових пар» [1, ch. 16, introduction]. Майже кожна прикладна задача має одну з цих двох форм.
- Задачі на одному тексті — тональність, розмічання тем, виявляння спаму, класифікація намірів, фільтрування токсичності [1, §16.1].
- Задачі на парі текстів — виведення природною мовою, виявляння дубльованих питань, пошук і переранжування [1, §16.4].
- Задачі рівня токена, які D2L розглядає поряд із задачами рівня послідовності [1, §16.6], — розпізнавання іменованих сутностей, розмічання частин мови, екстрактивні відповіді на питання: мітка на токен, а не на текст.
- Задачі «послідовність у послідовність» — переклад і реферування, та постановка, на якій Transformer і ввели [3, abstract].
- Пошук і семантична подібність, збудовані просто на ембедингах, а не на класифікаторі.
Чому і коли
Починайте з попередньо навченої моделі. Не тому, що це модно, а через арифметику і міток, і обчислень: попереднє навчання вжило нерозмічений текст, а щоб його пристосувати, потрібен «лише один додатковий вихідний шар» [2, abstract]. Другу половину цієї угоди легко недоказати — «порівняно з попереднім навчанням, донавчання параметрів є відносно недорогим», і результати цілої статті відтворювані «щонайбільше за 1 годину на одному Cloud TPU» [2, §3.2]. Кілька тисяч розмічених прикладів тепер сягають туди, куди раніше треба було сотень тисяч.
Віддавайте перевагу простому базовому рівню, коли сигнал лексичний. Деякі задачі справді є задачами про ключові слова. Лінійна модель над підрахунками слів швидша, інтерпретовна, працює будь-де і не є очевидно гіршою у виявленні того, чи згадує лист рахунок.
Стежте за мовою. Результати вище — це англійські бенчмарки. Покриття, якість токенізатора й дані попереднього навчання різко рідшають поза жменькою мов, і конвеєр, який працює англійською, може тихо зламатися в іншій.
Закладайте в бюджет висновування, а не лише точність. Попередньо навчена модель велика. Ця вартість платиться на кожному запиті, довіку, тоді як точність вимірюють один раз.
Практичний приклад
Найважливіше з того, що подання здатне викинути, у дев’яти рядках.
Python 18 рядків Показати код Сховати код
import numpy as np
sentences = ["the dog bit the man",
"the man bit the dog"]
vocab = sorted({w for s in sentences for w in s.split()})
print("vocabulary:", vocab)
def bag_of_words(s):
counts = np.zeros(len(vocab), dtype=int)
for w in s.split():
counts[vocab.index(w)] += 1
return counts
a, b = (bag_of_words(s) for s in sentences)
print("sentence 1:", a)
print("sentence 2:", b)
print("identical vectors:", np.array_equal(a, b))Вивід
vocabulary: ['bit', 'dog', 'man', 'the']
sentence 1: [1 1 1 2]
sentence 2: [1 1 1 2]
identical vectors: TrueДва речення з протилежними змістами, один вектор. Жоден класифікатор далі по конвеєру не відновить різниці, бо різницю знищено ще до того, як класифікатор запустився, — і модель подасть на одному з них упевнену, послідовну й хибну відповідь без жодного знаку, що чогось бракує.
Усе після мішка слів є відповіддю на це. Порядок слів і є та інформація, якої бракує, а рекурентні мережі давали з нею раду, читаючи послідовно.
Увага не успадкувала це просто так. Самоувага дає кожному токену дивитися на кожен інший напряму, що лагодить довжину шляху [3, §4] — але набір векторів, які звертають увагу один на одного, лишається набором, і його перестановка не змінює нічого. Тому Transformer мусить покласти порядок назад руками: «щоб модель могла скористатися порядком послідовності, ми мусимо впорснути якусь інформацію про відносну чи абсолютну позицію токенів» [3, §3.5].
Коли ці позиційні кодування на місці, результатом є залежні від контексту ембединги — вектор для bit різниться між двома реченнями, бо різняться його сусіди та їхні позиції [1, §15.8.1].
Типові помилки
Припускати, що токенізатор нейтральний. Він вирішує, що модель може подати. Токенізатор, збудований для англійської, погано ріже інші писемності, роздуваючи довжини послідовностей і вартість, і він стоїть вище за течією від усього — саме тому підслівні методи є предметом, а не налаштуванням [1, §15.6].
Читати числа бенчмарків як спроможність. GLUE на 80.5 і SQuAD F1 на 93.2 є результатами на конкретних наборах даних [2, abstract], а не твердженнями про розуміння мови взагалі. Тестуйте на власних даних.
Один вектор на слово для слів із кількома значеннями. Це відома межа незалежної від контексту родини й причина, чому існує залежна від контексту [1, §15.8.1].
Витік через дані попереднього навчання. Ваша вибірка для оцінювання, можливо, вже була в корпусі попереднього навчання. Дисципліна поділу навчання й тесту, яка застосовна до ваших власних даних, не поширюється на корпус, якого ви не збирали і не можете оглянути.
Вважати плавність коректністю. Модель, яка видає добре сформований текст, демонструє, що вона моделює розподіл тексту, бо саме під це її й підганяли. Це не є свідченням, що зміст правдивий.
Ще не прочитаноДочитайте сторінку до кінця — і вона вважатиметься прочитаною.
Зберігайте свій прогресЗ доступом назавжди кожна дочитана сторінка позначається, і ви продовжуєте з того місця, де зупинилися, на всіх своїх пристроях.
Відкрити доступПеревірте себе
3 запитання
Кожну відповідь пояснено: який розділ вона перевіряє і з якого джерела.
Джерела
- Dive into Deep Learningbook · звірено 2026-09-05https://d2l.ai/
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2019)paperhttps://ar5iv.labs.arxiv.org/html/1810.04805
- Attention Is All You Need (2017)paperhttps://ar5iv.labs.arxiv.org/html/1706.03762