YaChudo

Seq2seq

Переглядів: 0. Оновлено 06.11.2026.

Анімація моделі seq2seq з РНМ та механізмом уваги

Seq2seq (від англ. sequence to sequence — послідовність в послідовність) — це сімейство підходів машинного навчання, що використовуються для обробки природної мови.[1] Спочатку розроблений в'єтнамським інформатиком та піонером машинного навчання в Google Brain Ле В'єт Куоком, цей фреймворк став фундаментальним для багатьох сучасних систем штучного інтелекту. Застосування включають переклад мов,[2] підписування зображень,[3] діалогові моделі,[4] розпізнавання мовлення,[5] та стиснення тексту.[6]

Seq2seq використовує перетворення послідовностей: він перетворює одну послідовність в іншу.

Історія

Цікаво, чи можна розглядати проблему перекладу як проблему криптографії. Коли я дивлюся на статтю російською, я кажу: «Це насправді написано англійською, але закодовано якимиось дивними символами. Тепер я спробую це розшифрувати».

— Воррен Вівер, Лист до Норберта Вінера, 4 березня 1947 року
Діаграма Шеннона загальної системи зв'язку, що показує процес, за якого надіслане повідомлення стає отриманим (можливо, спотвореним шумом)

seq2seq — це підхід до машинного перекладу (або, більш загально, трансдукції послідовностей), що має коріння в теорії інформації, де зв'язок розуміється як процес кодування-передачі-декодування, а машинний переклад може розглядатися як спеціальний випадок зв'язку. Ця точка зору була розроблена, наприклад, у моделі шумного каналу машинного перекладу.

На практиці seq2seq відображає вхідну послідовність у дійсночисловий вектор за допомогою нейронної мережі (енкодера), а потім відображає її назад у вихідну послідовність за допомогою іншої нейронної мережі (декодера).

Ідея трансдукції послідовностей типу енкодер-декодер була розроблена на початку 2010-х років. Статтями, які найчастіше цитують як такі, що започаткували seq2seq, є дві роботи 2014 року.[2][1]

У запропонованому ними seq2seq і енкодер, і декодер були мережами LSTM. Це мало проблему «вузького місця» (bottleneck), оскільки вектор кодування має фіксований розмір, тому для довгих вхідних послідовностей інформація схильна втрачатися, оскільки її важко вмістити у вектор кодування фіксованої довжини. Механізм уваги, запропонований у 2014 році,[7] вирішив цю проблему. Вони назвали свою модель RNNsearch, оскільки вона «емулює пошук по вихідному реченню під час декодування перекладу».

Проблемою моделей seq2seq на цьому етапі було те, що рекурентні нейронні мережі важко паралелізувати. Публікація Трансформерів у 2017 році[8] вирішила проблему, замінивши кодуючу РНМ на блоки Трансформера з самоувагою («блоки енкодера»), а декодуючу РНМ — на блоки Трансформера з перехресною увагою та причинно-наслідковою маскою («блоки декодера»).

Спір про пріоритет

Однією зі статей, що цитується як першоджерело seq2seq, є (Sutskever et al. 2014),[1] опублікована в Google Brain під час роботи над проектом машинного перекладу Google. Це дослідження дозволило Google оновити Google Translate до Google Neural Machine Translation у 2016 році.[1][9] Томаш Миколов стверджує, що розвинув ідею (до joining Google Brain) використання «нейронної мовної моделі на парах речень... а потім [генерації] перекладу після побачення першого речення» — що він прирівнює до машинного перекладу seq2seq, і що він згадав цю ідею Іллі Суцкеверу та Куоку Ле (під час роботи в Google Brain), які не визнали його у своїй статті.[10] Миколов працював над RNNLM (використання РНМ для мовного моделювання) у своїй докторській дисертації,[11] і більш відомий розробкою word2vec.

Архітектура

Основним джерелом для цього розділу є.[12]

Енкодер

Енкодер РНМ

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

Декодер

Декодер РНМ

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

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

Навчання проти прогнозування

Навчання моделі seq2seq за допомогою teacher forcing
Прогнозування послідовності за допомогою моделі seq2seq

Існує тонка різниця між навчанням та прогнозуванням. Під час навчання відомі як вхідна, так і вихідна послідовності. Під час прогнозування відома лише вхідна послідовність, а вихідна послідовність має бути декодована самою мережею.

Зокрема, розглянемо вхідну послідовність x 1 : n {\displaystyle x_{1:n}} та вихідну послідовність y 1 : m {\displaystyle y_{1:m}} . Енкодер оброблятиме вхід x 1 : n {\displaystyle x_{1:n}} крок за кроком. Після цього декодер братиме вихід від енкодера, а також <bos> як вхід і вироблятиме прогноз y ^ 1 {\displaystyle {\hat {y}}_{1}} . Тепер постає питання: що має бути на вході декодера на наступному кроці?

Стандартним методом навчання є «teacher forcing» (примусове навчання з учителем). При teacher forcing, незалежно від того, що видає декодер, наступним входом для декодера завжди є еталонне значення. Тобто, навіть якщо y ^ 1 ≠ y 1 {\displaystyle {\hat {y}}_{1}\neq y_{1}} , наступним входом для декодера все одно є y 1 {\displaystyle y_{1}} , і так далі.

Під час прогнозування «учитель» y 1 : m {\displaystyle y_{1:m}} буде недоступний. Тому на вході декодера має бути y ^ 1 {\displaystyle {\hat {y}}_{1}} , потім y ^ 2 {\displaystyle {\hat {y}}_{2}} , і так далі.

Виявляється, що якщо модель навчалася виключно за допомогою teacher forcing, її продуктивність під час прогнозування погіршується, оскільки генерація на основі власного виходу моделі відрізняється від генерації на основі виходу вчителя. Це називається похибкою експозиції (exposure bias) або зсувом розподілу train/test. У статті 2015 року рекомендується під час навчання випадковим чином перемикатися між teacher forcing та відсутністю teacher forcing.[13]

Механізм уваги для seq2seq

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

Seq2seq РНМ енкодер-декодер з механізмом уваги, де показана детальна конструкція механізму уваги. Дивіться сторінку механізм уваги для деталей.

У деяких моделях стани енкодера безпосередньо подаються на функцію активації, усуваючи потребу в моделі вирівнювання. Функція активації отримує один стан декодера та один стан енкодера і повертає скалярне значення їхньої релевантності.

Анімація моделі seq2seq з РНМ та механізмом уваги

Розглянемо мовне завдання перекладу з англійської на французьку для seq2seq. Для конкретності розглянемо переклад "the zone of international control <end>", який має бути переведений як "la zone de contrôle international <end>". Тут ми використовуємо спеціальний токен <end> як керівний символ для позначення кінця входу як для енкодера, так і для декодера.

Вхідна послідовність тексту x 0 , x 1 , … {\displaystyle x_{0},x_{1},\dots } обробляється нейронною мережею (яка може бути LSTM, енкодером Трансформера або якоюсь іншою мережею) у послідовність дійснозначних векторів h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } , де h {\displaystyle h} позначає «прихований вектор».

Після завершення обробки енкодером декодер починає працювати з прихованими векторами, щоб створити вихідну послідовність y 0 , y 1 , … {\displaystyle y_{0},y_{1},\dots } , авторегресивно. Тобто він завжди бере як вхід як приховані вектори, згенеровані енкодером, так і те, що сам декодер згенерував раніше, щоб створити наступне вихідне слово:

  1. ( h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } , "<start>") → "la"
  2. ( h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } , "<start> la") → "la zone"
  3. ( h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } , "<start> la zone") → "la zone de"
  4. ...
  5. ( h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } , "<start> la zone de contrôle international") → "la zone de contrôle international <end>"

Тут ми використовуємо спеціальний токен <start> як керівний символ для позначення початку входу для декодера. Декодування припиняється, щойно у вихідних даних декодера з'являється "<end>".

Ваги уваги

Механізм уваги з вагами уваги, огляд

Оскільки ручне створення ваг суперечить меті машинного навчання, модель повинна обчислювати ваги уваги самостійно. Провівши аналогію з мовою запитів до баз даних, ми змушуємо модель конструювати трійку векторів: ключ (key), запит (query) та значення (value). Груба ідея полягає в тому, що ми маємо «базу даних» у вигляді списку пар ключ-значення. Декодер надсилає запит і отримує відповідь у вигляді зваженої суми значень, де вага пропорційна тому, наскільки сильно запит схожий на кожен ключ.

Декодер спочатку частково обробляє вхід "<start>", щоб отримати проміжний вектор h 0 d {\displaystyle h_{0}^{d}} , 0-й прихований вектор декодера. Потім проміжний вектор перетворюється лінійним відображенням W Q {\displaystyle W^{Q}} у вектор запиту q 0 = h 0 d W Q {\displaystyle q_{0}=h_{0}^{d}W^{Q}} . Тим часом приховані вектори, видані енкодером, перетворюються іншим лінійним відображенням W K {\displaystyle W^{K}} у вектори ключів k 0 = h 0 W K , k 1 = h 1 W K , … {\displaystyle k_{0}=h_{0}W^{K},k_{1}=h_{1}W^{K},\dots } . Лінійні відображення корисні для того, щоб надати моделі достатньо свободи для пошуку найкращого способу представлення даних.

Тепер запит і ключі порівнюються шляхом обчислення скалярних добутків: q 0 k 0 T , q 0 k 1 T , … {\displaystyle q_{0}k_{0}^{T},q_{0}k_{1}^{T},\dots } . Ідеально, модель повинна була навчитися обчислювати ключі та значення таким чином, щоб q 0 k 0 T {\displaystyle q_{0}k_{0}^{T}} був великим, q 0 k 1 T {\displaystyle q_{0}k_{1}^{T}} — малим, а решта — дуже малими. Це можна інтерпретувати так, що вага уваги має переважно застосовуватися до 0-го прихованого вектора енкодера, трохи до 1-го і практично жодної до решти.

Щоб створити правильно зважену суму, нам потрібно перетворити цей список скалярних добутків на розподіл ймовірностей за індексами 0 , 1 , … {\displaystyle 0,1,\dots } . Це можна зробити за допомогою функції softmax, що дає нам ваги уваги: ( w 00 , w 01 , … ) = s o f t m a x ( q 0 k 0 T , q 0 k 1 T , … ) {\displaystyle (w_{00},w_{01},\dots )=\mathrm {softmax} (q_{0}k_{0}^{T},q_{0}k_{1}^{T},\dots )} Це потім використовується для обчислення вектора контексту: c 0 = w 00 v 0 + w 01 v 1 + ⋯ {\displaystyle c_{0}=w_{00}v_{0}+w_{01}v_{1}+\cdots }

де v 0 = h 0 W V , v 1 = h 1 W V , … {\displaystyle v_{0}=h_{0}W^{V},v_{1}=h_{1}W^{V},\dots } — це вектори значень, лінійно перетворені іншою матрицею, щоб надати моделі свободу в пошуку найкращого способу представлення значень. Без матриць W Q , W K , W V {\displaystyle W^{Q},W^{K},W^{V}} модель була б змушена використовувати один і той самий прихований вектор і для ключа, і для значення, що може бути недоречним, оскільки ці два завдання не є однаковими.

Обчислення ваг уваги за допомогою скалярного добутку. Це «перехресна увага декодера» (decoder cross-attention).

Це механізм точкової уваги (dot-attention). Конкретна версія, описана в цьому розділі, — це «перехресна увага декодера», оскільки вихідний вектор контексту використовується декодером, вхідні ключі та значення надходять від енкодера, але запит надходить від декодера, звідси — «перехресна увага».

Більш стисло ми можемо записати це як c 0 = A t t e n t i o n ( h 0 d W Q , H W K , H W V ) = s o f t m a x ( ( h 0 d W Q ) ( H W K ) T ) ( H W V ) {\displaystyle c_{0}=\mathrm {Attention} (h_{0}^{d}W^{Q},HW^{K},HW^{V})=\mathrm {softmax} ((h_{0}^{d}W^{Q})\;(HW^{K})^{T})(HW^{V})} де матриця H {\displaystyle H} — це матриця, рядки якої є h 0 , h 1 , … {\displaystyle h_{0},h_{1},\dots } . Зверніть увагу, що вектор запиту h 0 d {\displaystyle h_{0}^{d}} не обов'язково збігається з вектором ключа-значення h 0 {\displaystyle h_{0}} . Фактично, теоретично можливо, щоб вектори запиту, ключа та значення були всі різними, хоча на практиці це трапляється рідко.

Seq2seq РНМ енкодер-декодер з механізмом уваги, навчання
Seq2seq РНМ енкодер-декодер з механізмом уваги, навчання та виведення (прогнозування)

Інші застосування

У 2019 році Facebook оголосив про його використання для символьного інтегрування та розв'язання диференціальних рівнянь. Компанія стверджувала, що він може вирішувати складні рівняння швидше та точніше, ніж комерційні рішення, такі як Mathematica, MATLAB та Maple. Спочатку рівняння розбирається в деревоподібну структуру, щоб уникнути нотаційних особливостей. Потім нейронна мережа LSTM застосовує свої стандартні засоби розпізнавання образів для обробки дерева.[14][15]

У 2020 році Google випустила Meena, чат-бот на основі seq2seq із 2,6 мільярдами параметрів, навчаний на наборі даних обсягом 341 ГБ. Google стверджував, що місткість моделі чат-бота в 1,7 рази перевищує місткість моделі GPT-2 від OpenAI.[4]

У 2022 році Amazon представила AlexaTM 20B, seq2seq мовну модель помірного розміру (20 мільярдів параметрів). Вона використовує архітектуру енкодер-декодер для реалізації few-shot learning (навчання на кількох прикладах). Енкодер видає представлення входу, яке декодер використовує як вхід для виконання конкретного завдання, наприклад, перекладу входу іншою мовою. Модель перевершує набагато більшу GPT-3 у перекладі мов та стисненні тексту. Навчання поєднує денойзинг (належне вставлення відсутнього тексту в рядки) та каузальне мовне моделювання (логічне продовження вхідного тексту). Це дозволяє додавати функції різними мовами без масштабних процесів навчання. AlexaTM 20B досягла передових результатів (state-of-the-art) у завданнях few-shot learning для всіх пар мов Flores-101, перевершивши GPT-3 у кількох завданнях.[16]

Див. також

Посилання

  1. ↑ а б в г Sutskever, Ilya; Vinyals, Oriol; Le, Quoc Viet (2014). Sequence to sequence learning with neural networks. arXiv:1409.3215 [cs.CL].
  2. ↑ а б Cho, Kyunghyun; van Merrienboer, Bart; Gulcehre, Caglar; Bahdanau, Dzmitry; Bougares, Fethi; Schwenk, Holger; Bengio, Yoshua (3 червня 2014). Learning Phrase Representations using RNN Encoder-Decoder for Statistical Machine Translation. arXiv:1406.1078 [cs.CL].
  3. ↑ Xu, Kelvin; Ba, Jimmy; Kiros, Ryan; Cho, Kyunghyun; Courville, Aaron; Salakhudinov, Ruslan; Zemel, Rich; Bengio, Yoshua (1 червня 2015). Show, Attend and Tell: Neural Image Caption Generation with Visual Attention. Proceedings of the 32nd International Conference on Machine Learning (англ.). PMLR: 2048—2057.
  4. ↑ а б Adiwardana, Daniel; Luong, Minh-Thang; So, David R.; Hall, Jamie; Fiedel, Noah; Thoppilan, Romal; Yang, Zi; Kulshreshtha, Apoorv; Nemade, Gaurav; Lu, Yifeng; Le, Quoc V. (31 січня 2020). Towards a Human-like Open-Domain Chatbot. arXiv:2001.09977 [cs.CL].
  5. ↑ Chan, William; Jaitly, Navdeep; Le, Quoc; Vinyals, Oriol (Березень 2016). Listen, attend and spell: A neural network for large vocabulary conversational speech recognition. 2016 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE. с. 4960—4964. doi:10.1109/ICASSP.2016.7472621. ISBN 978-1-4799-9988-0.
  6. ↑ Rush, Alexander M.; Chopra, Sumit; Weston, Jason (Вересень 2015). A Neural Attention Model for Abstractive Sentence Summarization. У Màrquez, Lluís; Callison-Burch, Chris; Su, Jian (ред.). Proceedings of the 2015 Conference on Empirical Methods in Natural Language Processing. Lisbon, Portugal: Association for Computational Linguistics. с. 379—389. doi:10.18653/v1/D15-1044.
  7. ↑ Bahdanau, Dzmitry; Cho, Kyunghyun; Bengio, Yoshua (2014). Neural Machine Translation by Jointly Learning to Align and Translate. arXiv:1409.0473 [cs.CL].
  8. ↑ Vaswani, Ashish; Shazeer, Noam; Parmar, Niki; Uszkoreit, Jakob; Jones, Llion; Gomez, Aidan N; Kaiser, Ł ukasz; Polosukhin, Illia (2017). Attention is All you Need. Advances in Neural Information Processing Systems. Curran Associates, Inc. 30.
  9. ↑ Wu, Yonghui; Schuster, Mike; Chen, Zhifeng; Le, Quoc V.; Norouzi, Mohammad; Macherey, Wolfgang; Krikun, Maxim; Cao, Yuan; Gao, Qin; Macherey, Klaus; Klingner, Jeff; Shah, Apurva; Johnson, Melvin; Liu, Xiaobing; Kaiser, Łukasz (2016). Google's Neural Machine Translation System: Bridging the Gap between Human and Machine Translation. arXiv:1609.08144 [cs.CL].
  10. ↑ Mikolov, Tomáš (13 грудня 2023). Yesterday we received a Test of Time Award at NeurIPS for the word2vec paper from ten years ago. Facebook. Архів оригіналу за 6 серпня 2024. Процитовано 1 липня 2026.{{cite web}}: Обслуговування CS1: bot: Сторінки з посиланнями на джерела, де статус оригінального URL невідомий (посилання)
  11. ↑ Mikolov, Tomáš. "Statistical language models based on neural networks." (2012).
  12. ↑ Zhang, Aston; Lipton, Zachary; Li, Mu; Smola, Alexander J. (2024). 10.7. Sequence-to-Sequence Learning for Machine Translation. Dive into deep learning. Cambridge New York Port Melbourne New Delhi Singapore: Cambridge University Press. ISBN 978-1-009-38943-3.
  13. ↑ Bengio, Samy; Vinyals, Oriol; Jaitly, Navdeep; Shazeer, Noam (2015). Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks. Advances in Neural Information Processing Systems. Curran Associates, Inc. 28.
  14. ↑ Facebook has a neural network that can do advanced math. MIT Technology Review (амер.). 17 грудня 2019. Процитовано 17 грудня 2019.
  15. ↑ Lample, Guillaume; Charton, François (2019). Deep Learning for Symbolic Mathematics. arXiv:1912.01412 [cs.SC].
  16. ↑ Soltan, Saleh; Ananthakrishnan, Shankar; FitzGerald, Jack; Gupta, Rahul; Hamza, Wael; Khan, Haidar; Peris, Charith; Rawls, Stephen; Rosenbaum, Andy; Rumshisky, Anna; Chandana Satya Prakash; Sridhar, Mukund; Triefenbach, Fabian; Verma, Apurv; Tur, Gokhan; Natarajan, Prem (2022). AlexaTM 20B: Few-Shot Learning Using a Large-Scale Multilingual Seq2Seq Model. arXiv:2208.01448 [cs.CL].

Джерело: стаття у Вікіпедії та історія редагувань (автори).