Архитектура seq2seq

Материал из MachineLearning.

(Различия между версиями)
Перейти к: навигация, поиск
(Новая: = Архитектура Seq2seq = '''Sequence-to-Sequence''' (сокр. '''Seq2seq''') — класс архитектур искусственных нейронных сетей, п...)
 
(3 промежуточные версии не показаны)
Строка 1: Строка 1:
-
= Архитектура Seq2seq =
+
'''Seq2seq''' (от англ. ''sequence-to-sequence'', «последовательность-в-последовательность») — класс архитектур [[Искусственная нейронная сеть|искусственных нейронных сетей]], предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от [[Машинный перевод|машинного перевода]] до анализа временных рядов.
-
'''Sequence-to-Sequence''' (сокр. '''Seq2seq''') — класс архитектур искусственных нейронных сетей, предназначенных для преобразования одной последовательности данных в другую[1][2]. Ключевой особенностью данного подхода является отсутствие жесткого требования к равенству длин входной и выходной последовательностей, что делает его универсальным инструментом для решения широкого спектра задач, включая машинный перевод, автоматическое реферирование и анализ временных рядов.
+
В основе архитектуры seq2seq лежит пара [[Рекуррентная нейронная сеть|рекуррентных нейронных сетей]] (RNN), которые работают в тандеме: ''энкодер'' и ''декодер''. Этот подход был впервые предложен в 2014 году и заложил основы для современных систем обработки естественного языка.
== История и предпосылки ==
== История и предпосылки ==
-
До появления архитектуры Seq2seq задачи преобразования последовательностей решались с помощью статистических моделей и классических рекуррентных нейронных сетей (RNN), которые, однако, сталкивались с проблемой обработки последовательностей переменной длины. Прорыв произошел в 2014 году, когда в работах Ильи Сутскевера (Google Brain)[3] и Киёси Чо (Университет Монреаля)[4] была предложена архитектура, состоящая из двух рекуррентных сетей — ''энкодера'' и ''декодера''. Эта структура легла в основу современных систем обработки естественного языка[5].
+
До появления архитектуры seq2seq задачи преобразования последовательностей решались с помощью статистических моделей и классических рекуррентных нейронных сетей, которые сталкивались с проблемой обработки последовательностей переменной длины. Прорыв произошёл в 2014 году, когда в работах Ильи Сутскевера (Google Brain)<ref name="sutskever2014">{{статья |автор= Sutskever, I., Vinyals, O., Le, Q. V. |заглавие= Sequence to Sequence Learning with Neural Networks |издание= Advances in Neural Information Processing Systems |год= 2014 |ссылка= https://papers.nips.cc/paper_files/paper/2014/hash/a14ac55a4f27472c5d894ec1c3c743d2-Abstract.html}}</ref> и Киёси Чо (Университет Монреаля)<ref name="cho2014">{{статья |автор= Cho, K., Van Merriënboer, B., Gulcehre, C. и др. |заглавие= Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation |издание= Proceedings of EMNLP |год= 2014 |ссылка= https://aclanthology.org/D14-1179/}}</ref> была предложена архитектура, состоящая из двух рекуррентных сетей — ''энкодера'' и ''декодера''. Эта структура легла в основу современных систем обработки естественного языка<ref name="goldberg2017">{{книга |автор= Goldberg, Y. |заглавие= Neural Network Methods for Natural Language Processing |издательство= Morgan & Claypool |год= 2017}}</ref>.
== Архитектура ==
== Архитектура ==
-
Общая архитектура Seq2seq базируется на двух основных компонентах: кодирующем и декодирующем модулях.
+
Общая архитектура seq2seq базируется на двух основных компонентах: кодирующем и декодирующем модулях.
=== Энкодер ===
=== Энкодер ===
-
Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности <tex>\mathbf{x} = (x_1, x_2, \dots, x_T)</tex>. На каждом временном шаге <tex>t</tex> сеть обновляет свое внутреннее скрытое состояние <tex>h_t</tex>, стремясь аккумулировать смысловую информацию о прочитанной части[6].
+
Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности <tex>\mathbf{x} = (x_1, x_2, \dots, x_T)</tex>. На каждом временном шаге <tex>t</tex> сеть обновляет своё внутреннее скрытое состояние <tex>h_t</tex>, стремясь аккумулировать смысловую информацию о прочитанной части<ref name="tensorflow2025">{{cite web |url= https://www.tensorflow.org/text/tutorials/nmt_with_attention |title= Neural Machine Translation with Attention |publisher= TensorFlow |year= 2025}}</ref>.
По завершении обработки всего входа финальное скрытое состояние <tex>h_T</tex> интерпретируется как '''вектор контекста''' <tex>\mathbf{c}</tex> — сжатое представление всей входной последовательности в виде вектора фиксированной размерности:
По завершении обработки всего входа финальное скрытое состояние <tex>h_T</tex> интерпретируется как '''вектор контекста''' <tex>\mathbf{c}</tex> — сжатое представление всей входной последовательности в виде вектора фиксированной размерности:
-
<tex> \mathbf{c} = h_T = \text{Энкодер}(x_1, x_2, \dots, x_T) </tex>
+
<tex> \mathbf{c} = h_T = </tex> Энкодер<tex>(x_1, x_2, \dots, x_T) </tex>
-
На практике в качестве ячеек энкодера чаще всего используются модификации RNN, такие как LSTM (''Long Short-Term Memory'') или GRU (''Gated Recurrent Unit'')[7]. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях.
+
На практике в качестве ячеек энкодера чаще всего используются модификации RNN, такие как LSTM (''Long Short-Term Memory'')<ref name="hochreiter1997">{{статья |автор= Hochreiter, S., Schmidhuber, J. |заглавие= Long Short-Term Memory |издание= Neural Computation |год= 1997 |том= 9 |выпуск= 8 |страницы= 1735–1780 |doi= 10.1162/neco.1997.9.8.1735}}</ref> или GRU (''Gated Recurrent Unit'')<ref name="chung2014">{{статья |автор= Chung, J., Gulcehre, C., Cho, K., Bengio, Y. |заглавие= Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling |издание= arXiv:1412.3555 |год= 2014}}</ref>. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях.
=== Декодер и Teacher Forcing ===
=== Декодер и Teacher Forcing ===
-
Декодер является второй рекуррентной сетью, которая получает вектор контекста <tex>\mathbf{c}</tex> и генерирует выходную последовательность <tex>\mathbf{y} = (y_1, \dots, y_{T'})</tex> авторегрессионным способом — по одному токену за раз, используя ранее сгенерированные элементы[8]:
+
Декодер является второй рекуррентной сетью, которая получает вектор контекста <tex>\mathbf{c}</tex> и генерирует выходную последовательность <tex>\mathbf{y} = (y_1, \dots, y_{T'})</tex> авторегрессионным способом — по одному токену за раз, используя ранее сгенерированные элементы<ref name="pytorch2025">{{cite web |url= https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html |title= NLP From Scratch: Translation with a Sequence to Sequence Network and Attention |publisher= PyTorch |year= 2025}}</ref>:
<tex> P(y_1, \dots, y_{T'} \mid x_1, \dots, x_T) = \prod_{t=1}^{T'} P(y_t \mid y_1, \dots, y_{t-1}, \mathbf{c}) </tex>
<tex> P(y_1, \dots, y_{T'} \mid x_1, \dots, x_T) = \prod_{t=1}^{T'} P(y_t \mid y_1, \dots, y_{t-1}, \mathbf{c}) </tex>
-
В процессе обучения для стабилизации и ускорения сходимости применяется техника '''Teacher Forcing'''[9]. На каждом шаге обучения декодеру подается не его собственное предсказание с предыдущего шага, а правильный (референсный) токен из обучающей выборки. Это предотвращает накопление ошибок, однако порождает проблему ''exposure bias'' — модель привыкает к идеальным входным данным, которые отсутствуют на этапе инференса. Для смягчения этого эффекта используется ''Scheduled Sampling'', при котором доля использования реальных ответов постепенно снижается[10].
+
В процессе обучения для стабилизации и ускорения сходимости применяется техника '''Teacher Forcing'''<ref name="williams1989">{{статья |автор= Williams, R. J., Zipser, D. |заглавие= A Learning Algorithm for Continually Running Fully Recurrent Neural Networks |издание= Neural Computation |год= 1989 |том= 1 |выпуск= 2 |страницы= 270–280 |doi= 10.1162/neco.1989.1.2.270}}</ref>. На каждом шаге обучения декодеру подаётся не его собственное предсказание с предыдущего шага, а правильный (референсный) токен из обучающей выборки. Это предотвращает накопление ошибок, однако порождает проблему ''exposure bias'' — модель привыкает к идеальным входным данным, которые отсутствуют на этапе инференса. Для смягчения этого эффекта используется ''Scheduled Sampling'', при котором доля использования реальных ответов постепенно снижается<ref name="bengio2015">{{статья |автор= Bengio, S., Vinyals, O., Jaitly, N., Shazeer, N. |заглавие= Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks |издание= Advances in Neural Information Processing Systems |год= 2015 |ссылка= https://proceedings.neurips.cc/paper/2015/hash/e995f98d56967d946471af29d7bf99f1-Abstract.html}}</ref>.
== Проблема информационного узкого места ==
== Проблема информационного узкого места ==
-
Ключевым ограничением базовой архитектуры Seq2seq является '''информационное узкое место''', создаваемое вектором контекста фиксированной размерности[11]. Вся информация о входной последовательности, какой бы длинной она ни была, сжимается в один вектор. Это приводит к двум негативным эффектам:
+
Ключевым ограничением базовой архитектуры seq2seq является '''информационное узкое место''', создаваемое вектором контекста фиксированной размерности<ref name="seif2022">{{статья |автор= Seif, A., Loos, S. A. M., Tucci, G. и др. |заглавие= The impact of memory on learning sequence-to-sequence tasks |издание= arXiv:2205.14683 |год= 2022 |ссылка= https://arxiv.org/abs/2205.14683}}</ref>. Вся информация о входной последовательности, какой бы длинной она ни была, сжимается в один вектор фиксированной размерности. Это приводит к двум негативным эффектам:
# '''Потеря релевантной информации''' для длинных или сложных предложений, что ухудшает качество генерации.
# '''Потеря релевантной информации''' для длинных или сложных предложений, что ухудшает качество генерации.
Строка 38: Строка 38:
== Механизм внимания ==
== Механизм внимания ==
-
Кардинальным решением проблемы узкого места стало введение '''механизма внимания''' (''Attention''), предложенного Д. Бахданау и соавторами в 2015 году[12]. Вместо использования единственного фиксированного вектора контекста внимание позволяет декодеру на каждом шаге динамически выбирать, какие части входной последовательности наиболее значимы для генерации текущего токена.
+
Кардинальным решением проблемы узкого места стало введение '''механизма внимания''' (''Attention''), предложенного Д. Бахданау и соавторами в 2015 году<ref name="bahdanau2015">{{статья |автор= Bahdanau, D., Cho, K., Bengio, Y. |заглавие= Neural Machine Translation by Jointly Learning to Align and Translate |издание= ICLR |год= 2015 |ссылка= https://ar5iv.labs.arxiv.org/html/1409.0473v1}}</ref>. Вместо использования единственного фиксированного вектора контекста внимание позволяет декодеру на каждом шаге динамически выбирать, какие части входной последовательности наиболее значимы для генерации текущего токена.
=== Вычисление контекстного вектора ===
=== Вычисление контекстного вектора ===
-
Для текущего скрытого состояния декодера <tex>s_{t-1}</tex> и каждого скрытого состояния энкодера <tex>h_i</tex> вычисляется '''оценка внимания''' (alignment score) <tex>e_{ti}</tex>. Эти оценки нормализуются с помощью функции softmax, формируя '''веса внимания''' <tex>\alpha_{ti}</tex>[13]:
+
Для текущего скрытого состояния декодера <tex>s_{t-1}</tex> и каждого скрытого состояния энкодера <tex>h_i</tex> вычисляется '''оценка внимания''' (alignment score) <tex>e_{ti}</tex>. Эти оценки нормализуются с помощью функции softmax, формируя '''веса внимания''' <tex>\alpha_{ti}</tex><ref name="britannica2025">{{cite web |url= https://www.britannica.com/technology/attention-mechanism |title= Attention mechanism |publisher= Encyclopedia Britannica |year= 2025}}</ref>:
<tex> \alpha_{ti} = \frac{\exp(e_{ti})}{\sum_{j=1}^{T_x} \exp(e_{tj})} </tex>
<tex> \alpha_{ti} = \frac{\exp(e_{ti})}{\sum_{j=1}^{T_x} \exp(e_{tj})} </tex>
Строка 52: Строка 52:
=== Модификации внимания ===
=== Модификации внимания ===
-
Существует несколько способов вычисления оценки внимания. В работе Бахданау[12] была предложена '''аддитивная''' (или ''additive'') модель:
+
Существует несколько способов вычисления оценки внимания. В работе Бахданау<ref name="bahdanau2015"/> была предложена '''аддитивная''' (или ''additive'') модель:
<tex> e_{ti} = \mathbf{v}_a^\top \tanh(\mathbf{W}_a \mathbf{s}_{t-1} + \mathbf{U}_a \mathbf{h}_i) </tex>
<tex> e_{ti} = \mathbf{v}_a^\top \tanh(\mathbf{W}_a \mathbf{s}_{t-1} + \mathbf{U}_a \mathbf{h}_i) </tex>
-
Позже Т. Луонг и соавторы[14] предложили более простую '''мультипликативную''' (или ''dot-product'') модель:
+
Позже Т. Луонг и соавторы<ref name="luong2015">{{статья |автор= Luong, T., Pham, H., Manning, C. D. |заглавие= Effective Approaches to Attention-based Neural Machine Translation |издание= Proceedings of EMNLP |год= 2015 |ссылка= https://aclanthology.org/D15-1166/}}</ref> предложили более простую '''мультипликативную''' (или ''dot-product'') модель:
<tex> e_{ti} = \mathbf{s}_t^\top \mathbf{W}_a \mathbf{h}_i </tex>
<tex> e_{ti} = \mathbf{s}_t^\top \mathbf{W}_a \mathbf{h}_i </tex>
-
Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова[15].
+
Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова<ref name="ghader2017">{{статья |автор= Ghader, H., Monz, C. |заглавие= What Does Attention in Neural Machine Translation Pay Attention To? |издание= arXiv:1710.03348 |год= 2017 |ссылка= https://arxiv.org/abs/1710.03348}}</ref>.
== Стратегии декодирования ==
== Стратегии декодирования ==
Строка 72: Строка 72:
<tex> y_t = \arg\max_{y} P(y \mid y_1, \dots, y_{t-1}, \mathbf{c}) </tex>
<tex> y_t = \arg\max_{y} P(y \mid y_1, \dots, y_{t-1}, \mathbf{c}) </tex>
-
Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности[16].
+
Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности<ref name="wiseman2016">{{статья |автор= Wiseman, S., Rush, A. M. |заглавие= Sequence-to-Sequence Learning as Beam-Search Optimization |издание= Proceedings of EMNLP |год= 2016 |ссылка= https://aclanthology.org/D16-1123/}}</ref>.
-
=== Поиск по лучу ===
+
==== Поиск по лучу ===
-
'''Beam Search''' поддерживает <tex>k</tex> (ширина луча) наиболее вероятных частичных гипотез. На каждом шаге для каждой гипотезы рассматриваются все возможные продолжения, и из полученного множества отбираются <tex>k</tex> лучших кандидатов[17]. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине:
+
'''Beam Search''' поддерживает <tex>k</tex> (ширина луча) наиболее вероятных частичных гипотез. На каждом шаге для каждой гипотезы рассматриваются все возможные продолжения, и из полученного множества отбираются <tex>k</tex> лучших кандидатов<ref name="koehn2010">{{книга |автор= Koehn, P. |заглавие= Statistical Machine Translation |издательство= Cambridge University Press |год= 2010 |isbn= 978-0521874151}}</ref>. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине:
-
<tex> \text{score}_{\text{норм}}(\mathbf{y}) = \frac{1}{T'^{\alpha}} \sum_{t=1}^{T'} \log P(y_t \mid y_1, \dots, y_{t-1}) </tex>
+
'''score'''<sub>норм</sub>'''(y)''' = <tex> \frac{1}{T'^{\alpha}} \sum_{t=1}^{T'} \log P(y_t \mid y_1, \dots, y_{t-1}) </tex>
где <tex>\alpha</tex> — гиперпараметр, часто принимающий значение 0.6—0.7.
где <tex>\alpha</tex> — гиперпараметр, часто принимающий значение 0.6—0.7.
Строка 84: Строка 84:
== Применение ==
== Применение ==
-
Архитектура Seq2seq (в том числе в модификациях с вниманием) используется в следующих областях:
+
Архитектура seq2seq (в том числе в модификациях с вниманием) используется в следующих областях:
-
* [[Машинный перевод]] — преобразование текста с одного естественного языка на другой[3].
+
* [[Машинный перевод]] — преобразование текста с одного естественного языка на другой<ref name="sutskever2014"/>.
-
* [[Автоматическое реферирование]] — построение краткого изложения длинных документов[18].
+
* [[Автоматическое реферирование]] — построение краткого изложения длинных документов<ref name="nallapati2016">{{статья |автор= Nallapati, R., Zhou, B., dos Santos, C. и др. |заглавие= Abstractive Text Summarization using Sequence-to-Sequence RNNs and Beyond |издание= CoNLL |год= 2016 |ссылка= https://aclanthology.org/K16-1028/}}</ref>.
-
* [[Распознавание речи]] — транскрипция аудиосигнала в текст[19].
+
* [[Распознавание речи]] — транскрипция аудиосигнала в текст<ref name="chan2016">{{статья |автор= Chan, W., Jaitly, N., Le, Q. V., Vinyals, O. |заглавие= Listen, Attend and Spell |издание= ICASSP |год= 2016 |ссылка= https://arxiv.org/abs/1508.01211}}</ref>.
-
* [[Генерация программного кода]] — трансформация описания задачи на естественном языке в код[20].
+
* Диалоговые системы и [[Чат-бот|чат-боты]] — формирование ответов в контексте разговора.
* Диалоговые системы и [[Чат-бот|чат-боты]] — формирование ответов в контексте разговора.
* Генерация изображений по тексту (в гибридных моделях со сверточными сетями).
* Генерация изображений по тексту (в гибридных моделях со сверточными сетями).
Строка 95: Строка 94:
== Влияние и развитие ==
== Влияние и развитие ==
-
Хотя оригинальная архитектура Seq2seq с RNN-энкодером и декодером постепенно уступает место моделям на основе механизма [[Трансформер (модель глубокого обучения)|Трансформер]] (2017)[21], многие принципы, заложенные в Seq2seq, остаются фундаментальными. Концепции авторегрессионной генерации, Teacher Forcing, внимания и Beam Search активно используются в современных больших языковых моделях, таких как GPT и BERT[22][23].
+
Хотя оригинальная архитектура seq2seq с RNN-энкодером и декодером постепенно уступает место моделям на основе механизма [[Трансформер (модель глубокого обучения)|Трансформер]] (2017)<ref name="vaswani2017">{{статья |автор= Vaswani, A., Shazeer, N., Parmar, N. и др. |заглавие= Attention Is All You Need |издание= Advances in Neural Information Processing Systems |год= 2017 |ссылка= https://export.arxiv.org/abs/1706.03762v5}}</ref>, многие принципы, заложенные в seq2seq, остаются фундаментальными. Концепции авторегрессионной генерации, Teacher Forcing, внимания и Beam Search активно используются в современных больших языковых моделях, таких как GPT<ref name="radford2018">{{статья |автор= Radford, A., Narasimhan, K., Salimans, T., Sutskever, I. |заглавие= Improving Language Understanding by Generative Pre-Training |год= 2018 |ссылка= https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdf}}</ref> и BERT<ref name="devlin2019">{{статья |автор= Devlin, J., Chang, M. W., Lee, K., Toutanova, K. |заглавие= BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание= NAACL |год= 2019 |ссылка= https://aclanthology.org/N19-1423/}}</ref>.
 +
 
 +
== См. также ==
 +
 
 +
* [[Рекуррентная нейронная сеть]]
 +
* [[Механизм внимания]]
 +
* [[Трансформер (модель глубокого обучения)]]
 +
* [[Машинный перевод]]
 +
* [[Обработка естественного языка]]
== Примечания ==
== Примечания ==
-
# {{статья |автор= Bishop, M., Seiberth, G. |заглавие= Recurrent Sequence-To-Sequence Learning |издание= Driving Intelligence |год= 2025 |издательство= Taylor & Francis}}
+
{{примечания}}
-
# {{статья |автор= Beau, N. |заглавие= Sequence-to-Sequence Architecture |издание= Doctoral Thesis |год= 2025 |издательство= HAL}}
+
 
-
# {{статья |автор= Sutskever, I., Vinyals, O., Le, Q. V. |заглавие= Sequence to Sequence Learning with Neural Networks |издание= Advances in Neural Information Processing Systems |год= 2014}}
+
== Литература ==
-
# {{статья |автор= Cho, K., Van Merriënboer, B., Gulcehre, C. и др. |заглавие= Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation |издание= Proceedings of EMNLP |год= 2014}}
+
 
-
# {{книга |автор= Goldberg, Y. |заглавие= Neural Network Methods for Natural Language Processing |издательство= Morgan & Claypool |год= 2017}}
+
* {{статья |автор= Sutskever, I., Vinyals, O., Le, Q. V. |заглавие= Sequence to Sequence Learning with Neural Networks |издание= Advances in Neural Information Processing Systems |год= 2014 |ссылка= https://papers.nips.cc/paper_files/paper/2014/hash/a14ac55a4f27472c5d894ec1c3c743d2-Abstract.html}}
-
# {{cite web |url= https://www.tensorflow.org/tutorials/text/nmt_with_attention |title= Neural Machine Translation with Attention |publisher= TensorFlow |year= 2015}}
+
* {{статья |автор= Cho, K., Van Merriënboer, B., Gulcehre, C. и др. |заглавие= Learning Phrase Representations using RNN Encoder–Decoder for Statistical Machine Translation |издание= Proceedings of EMNLP |год= 2014 |ссылка= https://aclanthology.org/D14-1179/}}
-
# {{статья |автор= Hochreiter, S., Schmidhuber, J. |заглавие= Long Short-Term Memory |издание= Neural Computation |год= 1997 |том= 9 |выпуск= 8}}
+
* {{статья |автор= Bahdanau, D., Cho, K., Bengio, Y. |заглавие= Neural Machine Translation by Jointly Learning to Align and Translate |издание= ICLR |год= 2015 |ссылка= https://ar5iv.labs.arxiv.org/html/1409.0473v1}}
-
# {{статья |автор= Hashimoto Lab. |заглавие= Chapter 3: Seq2Seq Models |издание= AI Knowledge Notes |год= 2025}}
+
* {{статья |автор= Luong, T., Pham, H., Manning, C. D. |заглавие= Effective Approaches to Attention-based Neural Machine Translation |издание= Proceedings of EMNLP |год= 2015 |ссылка= https://aclanthology.org/D15-1166/}}
-
# {{статья |автор= Williams, R. J., Zipser, D. |заглавие= A Learning Algorithm for Continually Running Fully Recurrent Neural Networks |издание= Neural Computation |год= 1989}}
+
* {{статья |автор= Vaswani, A., Shazeer, N., Parmar, N. и др. |заглавие= Attention Is All You Need |издание= Advances in Neural Information Processing Systems |год= 2017 |ссылка= https://export.arxiv.org/abs/1706.03762v5}}
-
# {{статья |автор= Bengio, S., Vinyals, O., Jaitly, N., Shazeer, N. |заглавие= Scheduled Sampling for Sequence Prediction with Recurrent Neural Networks |издание= Advances in NIPS |год= 2015}}
+
* {{книга |автор= Goldberg, Y. |заглавие= Neural Network Methods for Natural Language Processing |издательство= Morgan & Claypool |год= 2017 |isbn= 978-1627052986}}
-
# {{статья |автор= Seif, A., Loos, S. A. M., Tucci, G. и др. |заглавие= The impact of memory on learning sequence-to-sequence tasks |издание= arXiv:2205.14683 |год= 2022}}
+
* {{статья |автор= Vinokurov I. V. |заглавие= Recovering text sequences using deep learning models |издание= Программные системы: теория и приложения |год= 2024 |том= 15 |номер= 3 |страницы= 75–110 |ссылка= https://psta.psiras.ru/2024/3_75.pdf}}
-
# {{статья |автор= Bahdanau, D., Cho, K., Bengio, Y. |заглавие= Neural Machine Translation by Jointly Learning to Align and Translate |издание= ICLR |год= 2015}}
+
* {{cite web |url= https://www.tensorflow.org/text/tutorials/nmt_with_attention |title= Neural Machine Translation with Attention |publisher= TensorFlow |year= 2025}}
-
# {{статья |автор= Hashimoto Lab. |заглавие= Chapter 4: Attention Mechanism |издание= AI Knowledge Notes |год= 2025}}
+
* {{cite web |url= https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html |title= NLP From Scratch: Translation with a Sequence to Sequence Network and Attention |publisher= PyTorch |year= 2025}}
-
# {{статья |автор= Luong, T., Pham, H., Manning, C. D. |заглавие= Effective Approaches to Attention-based Neural Machine Translation |издание= Proceedings of EMNLP |год= 2015}}
+
 
-
# {{статья |автор= Ghader, H., Monz, C. |заглавие= What Does Attention in Neural Machine Translation Pay Attention To? |издание= arXiv:1710.03348 |год= 2017}}
+
[[Категория:Машинное обучение]]
-
# {{статья |автор= Wiseman, S., Rush, A. M. |заглавие= Sequence-to-Sequence Learning as Beam-Search Optimization |издание= Proceedings of EMNLP |год= 2016}}
+
[[Категория:Нейронные сети]]
-
# {{статья |автор= Koehn, P. |заглавие= Statistical Machine Translation |издательство= Cambridge University Press |год= 2010}}
+
[[Категория:Обработка естественного языка]]
-
# {{статья |автор= Nallapati, R., Zhou, B., dos Santos, C. и др. |заглавие= Abstractive Text Summarization using Sequence-to-Sequence RNNs and Beyond |издание= CoNLL |год= 2016}}
+
-
# {{статья |автор= Chan, W., Jaitly, N., Le, Q. V., Vinyals, O. |заглавие= Listen, Attend and Spell |издание= ICASSP |год= 2016}}
+
-
# {{статья |автор= Iyer, S., Konstas, I., Cheung, A., Zettlemoyer, L. |заглавие= Mapping Language to Code in Programmatic Context |издание= EMNLP |год= 2018}}
+
-
# {{статья |автор= Vaswani, A., Shazeer, N., Parmar, N. и др. |заглавие= Attention Is All You Need |издание= Advances in NIPS |год= 2017}}
+
-
# {{статья |автор= Devlin, J., Chang, M. W., Lee, K., Toutanova, K. |заглавие= BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding |издание= NAACL |год= 2019}}
+
-
# {{статья |автор= Radford, A., Narasimhan, K., Salimans, T., Sutskever, I. |заглавие= Improving Language Understanding by Generative Pre-Training |год= 2018}}
+

Текущая версия

Seq2seq (от англ. sequence-to-sequence, «последовательность-в-последовательность») — класс архитектур искусственных нейронных сетей, предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от машинного перевода до анализа временных рядов.

В основе архитектуры seq2seq лежит пара рекуррентных нейронных сетей (RNN), которые работают в тандеме: энкодер и декодер. Этот подход был впервые предложен в 2014 году и заложил основы для современных систем обработки естественного языка.

Содержание

История и предпосылки

До появления архитектуры seq2seq задачи преобразования последовательностей решались с помощью статистических моделей и классических рекуррентных нейронных сетей, которые сталкивались с проблемой обработки последовательностей переменной длины. Прорыв произошёл в 2014 году, когда в работах Ильи Сутскевера (Google Brain)[1] и Киёси Чо (Университет Монреаля)[1] была предложена архитектура, состоящая из двух рекуррентных сетей — энкодера и декодера. Эта структура легла в основу современных систем обработки естественного языка[1].

Архитектура

Общая архитектура seq2seq базируется на двух основных компонентах: кодирующем и декодирующем модулях.

Энкодер

Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности \mathbf{x} = (x_1, x_2, \dots, x_T). На каждом временном шаге t сеть обновляет своё внутреннее скрытое состояние h_t, стремясь аккумулировать смысловую информацию о прочитанной части[1].

По завершении обработки всего входа финальное скрытое состояние h_T интерпретируется как вектор контекста \mathbf{c} — сжатое представление всей входной последовательности в виде вектора фиксированной размерности:

 \mathbf{c} = h_T = Энкодер(x_1, x_2, \dots, x_T)

На практике в качестве ячеек энкодера чаще всего используются модификации RNN, такие как LSTM (Long Short-Term Memory)[1] или GRU (Gated Recurrent Unit)[1]. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях.

Декодер и Teacher Forcing

Декодер является второй рекуррентной сетью, которая получает вектор контекста \mathbf{c} и генерирует выходную последовательность \mathbf{y} = (y_1, \dots, y_{T'}) авторегрессионным способом — по одному токену за раз, используя ранее сгенерированные элементы[1]:

 P(y_1, \dots, y_{T'} \mid x_1, \dots, x_T) = \prod_{t=1}^{T'} P(y_t \mid y_1, \dots, y_{t-1}, \mathbf{c})

В процессе обучения для стабилизации и ускорения сходимости применяется техника Teacher Forcing[1]. На каждом шаге обучения декодеру подаётся не его собственное предсказание с предыдущего шага, а правильный (референсный) токен из обучающей выборки. Это предотвращает накопление ошибок, однако порождает проблему exposure bias — модель привыкает к идеальным входным данным, которые отсутствуют на этапе инференса. Для смягчения этого эффекта используется Scheduled Sampling, при котором доля использования реальных ответов постепенно снижается[1].

Проблема информационного узкого места

Ключевым ограничением базовой архитектуры seq2seq является информационное узкое место, создаваемое вектором контекста фиксированной размерности[1]. Вся информация о входной последовательности, какой бы длинной она ни была, сжимается в один вектор фиксированной размерности. Это приводит к двум негативным эффектам:

  1. Потеря релевантной информации для длинных или сложных предложений, что ухудшает качество генерации.
  2. Ослабление долгосрочных зависимостей: связи между элементами, находящимися далеко друг от друга, трудноуловимы для модели.

Механизм внимания

Кардинальным решением проблемы узкого места стало введение механизма внимания (Attention), предложенного Д. Бахданау и соавторами в 2015 году[1]. Вместо использования единственного фиксированного вектора контекста внимание позволяет декодеру на каждом шаге динамически выбирать, какие части входной последовательности наиболее значимы для генерации текущего токена.

Вычисление контекстного вектора

Для текущего скрытого состояния декодера s_{t-1} и каждого скрытого состояния энкодера h_i вычисляется оценка внимания (alignment score) e_{ti}. Эти оценки нормализуются с помощью функции softmax, формируя веса внимания \alpha_{ti}[1]:

 \alpha_{ti} = \frac{\exp(e_{ti})}{\sum_{j=1}^{T_x} \exp(e_{tj})}

Вектор контекста для шага t вычисляется как взвешенная сумма скрытых состояний энкодера:

 \mathbf{c}_t = \sum_{i=1}^{T_x} \alpha_{ti} \mathbf{h}_i

Модификации внимания

Существует несколько способов вычисления оценки внимания. В работе Бахданау[1] была предложена аддитивная (или additive) модель:

 e_{ti} = \mathbf{v}_a^\top \tanh(\mathbf{W}_a \mathbf{s}_{t-1} + \mathbf{U}_a \mathbf{h}_i)

Позже Т. Луонг и соавторы[1] предложили более простую мультипликативную (или dot-product) модель:

 e_{ti} = \mathbf{s}_t^\top \mathbf{W}_a \mathbf{h}_i

Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова[1].

Стратегии декодирования

На этапе вывода (инференса), когда правильные ответы неизвестны, вместо Teacher Forcing применяются эвристические стратегии поиска.

Жадный поиск

На каждом шаге выбирается токен с максимальной апостериорной вероятностью:

 y_t = \arg\max_{y} P(y \mid y_1, \dots, y_{t-1}, \mathbf{c})

Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности[1].

= Поиск по лучу

Beam Search поддерживает k (ширина луча) наиболее вероятных частичных гипотез. На каждом шаге для каждой гипотезы рассматриваются все возможные продолжения, и из полученного множества отбираются k лучших кандидатов[1]. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине:

scoreнорм(y) =  \frac{1}{T'^{\alpha}} \sum_{t=1}^{T'} \log P(y_t \mid y_1, \dots, y_{t-1})

где \alpha — гиперпараметр, часто принимающий значение 0.6—0.7.

Применение

Архитектура seq2seq (в том числе в модификациях с вниманием) используется в следующих областях:

Влияние и развитие

Хотя оригинальная архитектура seq2seq с RNN-энкодером и декодером постепенно уступает место моделям на основе механизма Трансформер (2017)[1], многие принципы, заложенные в seq2seq, остаются фундаментальными. Концепции авторегрессионной генерации, Teacher Forcing, внимания и Beam Search активно используются в современных больших языковых моделях, таких как GPT[1] и BERT[1].

См. также

Примечания

Литература

Личные инструменты