ГоловнаСтаттіПослідовність-до-послідовності переклад з механізмом уваги

Послідовність-до-послідовності переклад з механізмом уваги

Переклад речення не схожий на класифікацію зображення: обидва вхідні та вихідні дані є послідовностями, і вони можуть мати різну довжину, з словами в різному порядку. Моделі послідовність-до-послідовності вирішили цю проблему шляхом ланцюгування двох рекурентних мереж разом – кодувальника, який читає вихідне речення, та декодатора, який пише цільове речення, а механізм уваги виправив одну велику слабкість цієї конструкції, дозволивши декодатору дивитися на все вихідне речення замість того, щоб покладатися на один стиснутий підсумок.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Дві послідовності, одна модель

Машинний переклад, узагальнення та транскрипція мовлення мають дивний атрибут: обидва вхідні та вихідні дані є змінною довжиною і рідко відповідають один одному. П’ятисловельне англійське речення може стати семислововим французьким, з іншими словами, слова розташовані абсолютно по-іншому. Класичні нейронні мережі очікують на вхідні та вихідні дані фіксованого розміру, тому вони не можуть обробляти це безпосередньо. Архітектура «послідовність до послідовності» (seq2seq), запропонована Sutskeverом, Vinyalsом і Le у 2014 році та незалежно Cho et al. того ж року, вирішує цю проблему шляхом розподілу роботи між двома рекурентними нейронними мережами: кодувачем, який читає всю вихідну послідовність і стискає її в вектор фіксованого розміру, та декодером, який бере цей вектор і генерує цільову послідовність по одному токену за раз. Оскільки обидва компоненти навчаються спільно, безперервно, мережа вивчає власне внутрішнє представлення значення без необхідності ручної розробки правил перекладу або таблиць вирівнювання.

Кодувальник: читання та стиснення

Кодувальник зазвичай є RNN, LSTM або GRU, який обробляє речення-джерело слово за словом, оновлюючи свій прихований стан на кожному кроці, щоб відображати все, що було побачено до цього моменту. Після споживання останнім словом останній прихований стан кодувальника розглядається як підсумок усього речення, часто називається вектором контексту. Цей єдиний вектор, зазвичай лише кілька сотень чисел, має містити значення, структуру та всі деталі речення, які необхідні декодеру для його відтворення іншою мовою. Це велике завдання для одного фіксованого вектора, і саме тут ранні моделі seq2seq почали мати труднощі. Чим довше речення-джерело, тим більше інформації повинен вмістити кодувальник у контейнер, який не збільшується, тому раніше слова схильні до переписуватися або розмиватися до того, як прийде останнє слово, ніби намагатися підсумувати цілу новели в одному туіттері, незалежно від довжини новели.

Декодер: генерація одного токена за раз

Декодер також є RNN, ініціалізований останнім прихованим станом енкодера, який генерує цільове речення по одному токену на раз. На кожному кроці він використовує свій попередній прихований стан та попередньо згенероване слово як вхідні дані, виробляє розподіл ймовірностей над словником цільової мови, і обирає найбільш ймовірне наступне слово, або відбирає з розподілу під час більш дослідницької генерації. Це обране слово подається назад як вхід для наступного кроку, щоб декодер будував послідовність виводу авторегресивно, слово за словом, доки він не видасть спеціального токена кінця речення. Під час навчання цей процес керується методом "вчителя", де справді попереднє цільове слово подається замість припущення моделі, що стабілізує навчання; під час висновування декодер повинен покладатися на власні прогнози, тому ранні помилки можуть іноді переростати в безладне речення.

Увага: припиняйте стискати, починайте дивитися назад

Фіксований розмір вектора контексту був «Achilles’ heel» архітектури seq2seq, і папір Бахданау, Чо та Бенґіо 2014 року виправив це за допомогою ідеї, яка тепер називається увагою. Замість того, щоб змушувати декодер покладатися лише на один стиснутий підсумок, увага зберігає кожен прихований стан, який створив енкодер, один на кожне джерело, і дозволяє декодеру консультуватися над ними на кожному кроці декодування. На кожному кроці декодер обчислює бал відповідності між поточним станом і кожним прихованим станом енкодера, вимірюючи, наскільки актуальним є це джерело слова зараз. Ці оцінки передаються через softmax, щоб стати вагами уваги, які сумують до одного, і приховані стани об'єднуються у зважену суму, названу контекстом, за допомогою цих ваг. Ефективно декодер отримує можливість повернутися назад і запитати «Які джерела слів найважливіші для слова, яке я зараз збираюся створити», замість того, щоб довіряти одному вектору, який правильно запам’ятав все. Саме тому ваги уваги, коли побудовані як теплова карта, часто простежують приблизно діагональну лінію для мов із подібним порядком слів або чітко вигнуту лінію для мов, які переставляють фрази, наприклад, коли прикметники рухаються перед чи після іменника.

Від уваги до Трансформера

Увага спочатку прикріплювалася до РНМ як корисний додаток, але дослідники швидко помітили щось більш радикальне: сама рекурентність – послідовна петля, яка читає одне слово за іншим – не була тим, що робить увагу корисною. Важливим було здатність безпосередньо пов’язувати будь-яке положення в послідовності з будь-яким іншим положенням. У 2017 році Васивні та інші взяли це спостереження до логічного висновку у статті «Увага – це все, що вам потрібно», повністю відмовившись від рекурентності та побудувавши модель, Трансформер, лише з шарів уваги та прямого поширення. Видалення залежності РНМ крок за кроком означало, що кожне положення в послідовності могло бути оброблено паралельно під час навчання, а не по одному токену, що було величезним проривом у швидкості на сучасних GPU та TPU. Кожна велика мовна модель, яка з’явилася після цього, від BERT до GPT і сучасні передові моделі, безпосередньо походить від цієї інсайту, роблячи скромний механізм уваги encoder-decoder з машинного перекладу однією з найзначніших ідей в історії глибокого навчання.

Часті запитання

Чому не можна просто використовувати більший вектор контексту для звичайного моделі seq2seq?

Збільшення розміру вектора контексту відтермінує вузол, але не усуває його, і воно також робить модель важчою та повільнішою для навчання. Більша проблема полягає в структурі: незалежно від розміру, один фіксований вектор повинен представляти всю речення, незалежно від довжини, тому речення з тридцяти слів і речення з трьох слів стискаються в контейнери однакового розміру. Увага повністю обходить цю проблему, зберігаючи окремий прихований стан для кожного ключового слова джерела замість їхнього об'єднання в один, тому кількість доступної інформації природним чином масштабується з довжиною вхідних даних.

Що таке ваги уваги і як вони навчаються?

Ваги уваги — це набір чисел, по одному для кожного ключового слова джерела, які сумуються до одиниці та вказують, наскільки кожне ключове слово повинно сприяти поточному виходу декодера. Вони походять від невеликої навченої функції оцінювання, часто лише кількох нейронних мережевих шарів, яка порівнює поточний прихований стан декодера з кожним прихованим станом кодувальника і генерує свіжий бал сумісності, який потім нормалізується за допомогою softmax. Оскільки ця функція оцінювання є ще одним набором ваг у мережі, вона навчається автоматично через той самий процес зворотного поширення помилок, як і решта моделі, без окремого нагляду, який би говорив їй, які слова повинні узгоджуватися з якими.

Чи дозволяє увага декодеру бачити ціле речення одночасно, на відміну від звичайної декодера RNN?

Так, в тому сенсі, що увага надає декодеру прямий доступ до кожного прихованого стану кодувальника на кожному кроці декодування, а не лише те, що вижило стиснення в один кінцевий вектор. Це велика відмінність від звичайного декодера seq2seq, який отримує лише останній прихований стан кодувальника. Варто зазначити, що в класичній RNN-увазі сам кодувальник все ще читає речення джерела послідовно, тому його окремі приховані стани вже несуть деякий лівосторонній упередження; насправді само-увага Трансформера повністю видаляє послідовне читання.

Чи все ще використовується дизайн кодувальника-декодера з увагою сьогодні, чи його повністю замінили?

Конкретна комбінація RNN та уваги в основному вийшла з утилізації в системах найсучасніших результатів, замінена трансформерами на основі кодувальників-декодерів або лише декодерами, які використовують самоувагу замість рекурентності. Але концептуальний шаблон — це кодівник, який будує представлення вхідних даних, і декодер, який звертається до нього під час генерації виводу — все ще саме те, як сучасні системи перекладу, моделі зображення-підписів та системи перетворення мовлення на текст структуровані. Розуміння версії RNN з увагою залишається одним із найпростіших способів зрозуміти, чому увага працює, перш ніж додана складність багатоголової самоуваги та кодування позицій у повному Трансформері.

Що представляє собою теплова карта уваги в симуляції?

Кожен рядок теплової карти відповідає одному слову, яке зараз генерує декодер, а кожен стовпець — за одним словом у реченні-джерелі; яскравість комірки показує, наскільки сильно декодер звертав увагу на це ключове слово під час виробництва цього цільового слова. Зазвичай яскравий діагональний шаблон вказує на те, що дві мови мають схожий порядок слів, а яскраві комірки, які стрибають від діагоналі, показують, що модель переставляє слова, наприклад, переміщуючи прикметник після іменника перед ним, що є саме тим, як поведінка, яку важко надійно захоплює фіксований один вектор контексту.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Sequence-to-Sequence Translation with Attention і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Sequence-to-Sequence Translation with Attention

Що ви знайшли?

Додати кроки відтворення (опційно)