Архитектура seq2seq
Материал из MachineLearning.
| Строка 1: | Строка 1: | ||
| - | |||
'''Seq2seq''' (от англ. ''sequence-to-sequence'', «последовательность-в-последовательность») — класс архитектур [[Искусственная нейронная сеть|искусственных нейронных сетей]], предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от [[Машинный перевод|машинного перевода]] до анализа временных рядов. | '''Seq2seq''' (от англ. ''sequence-to-sequence'', «последовательность-в-последовательность») — класс архитектур [[Искусственная нейронная сеть|искусственных нейронных сетей]], предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от [[Машинный перевод|машинного перевода]] до анализа временных рядов. | ||
| Строка 14: | Строка 13: | ||
=== Энкодер === | === Энкодер === | ||
| - | Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности | + | Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности <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> \mathbf{c} = h_T = </tex> Энкодер<tex>(x_1, x_2, \dots, x_T) </tex> | |
На практике в качестве ячеек энкодера чаще всего используются модификации 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>. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях. | На практике в качестве ячеек энкодера чаще всего используются модификации 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>. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях. | ||
| Строка 24: | Строка 23: | ||
=== Декодер и Teacher Forcing === | === Декодер и Teacher Forcing === | ||
| - | Декодер является второй рекуррентной сетью, которая получает вектор контекста | + | Декодер является второй рекуррентной сетью, которая получает вектор контекста <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> | |
В процессе обучения для стабилизации и ускорения сходимости применяется техника '''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>. | В процессе обучения для стабилизации и ускорения сходимости применяется техника '''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>. | ||
| Строка 43: | Строка 42: | ||
=== Вычисление контекстного вектора === | === Вычисление контекстного вектора === | ||
| - | Для текущего скрытого состояния декодера | + | Для текущего скрытого состояния декодера <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>t</tex> вычисляется как взвешенная сумма скрытых состояний энкодера: |
| - | + | <tex> \mathbf{c}_t = \sum_{i=1}^{T_x} \alpha_{ti} \mathbf{h}_i </tex> | |
=== Модификации внимания === | === Модификации внимания === | ||
| Строка 55: | Строка 54: | ||
Существует несколько способов вычисления оценки внимания. В работе Бахданау<ref name="bahdanau2015"/> была предложена '''аддитивная''' (или ''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> | |
Позже Т. Луонг и соавторы<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'') модель: | Позже Т. Луонг и соавторы<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> | |
Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова<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>. | Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова<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>. | ||
| Строка 71: | Строка 70: | ||
На каждом шаге выбирается токен с максимальной апостериорной вероятностью: | На каждом шаге выбирается токен с максимальной апостериорной вероятностью: | ||
| - | + | <tex> y_t = \arg\max_{y} P(y \mid y_1, \dots, y_{t-1}, \mathbf{c}) </tex> | |
Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности<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>. | Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности<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''' поддерживает | + | '''Beam Search''' поддерживает <tex>k</tex> (ширина луча) наиболее вероятных частичных гипотез. На каждом шаге для каждой гипотезы рассматриваются все возможные продолжения, и из полученного множества отбираются <tex>k</tex> лучших кандидатов<ref name="koehn2010">{{книга |автор= Koehn, P. |заглавие= Statistical Machine Translation |издательство= Cambridge University Press |год= 2010 |isbn= 978-0521874151}}</ref>. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине: |
| - | ''' | + | '''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. |
== Применение == | == Применение == | ||
Версия 11:52, 7 июля 2026
Seq2seq (от англ. sequence-to-sequence, «последовательность-в-последовательность») — класс архитектур искусственных нейронных сетей, предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от машинного перевода до анализа временных рядов.
В основе архитектуры seq2seq лежит пара рекуррентных нейронных сетей (RNN), которые работают в тандеме: энкодер и декодер. Этот подход был впервые предложен в 2014 году и заложил основы для современных систем обработки естественного языка.
Содержание |
История и предпосылки
До появления архитектуры seq2seq задачи преобразования последовательностей решались с помощью статистических моделей и классических рекуррентных нейронных сетей, которые сталкивались с проблемой обработки последовательностей переменной длины. Прорыв произошёл в 2014 году, когда в работах Ильи Сутскевера (Google Brain)[1] и Киёси Чо (Университет Монреаля)[1] была предложена архитектура, состоящая из двух рекуррентных сетей — энкодера и декодера. Эта структура легла в основу современных систем обработки естественного языка[1].
Архитектура
Общая архитектура seq2seq базируется на двух основных компонентах: кодирующем и декодирующем модулях.
Энкодер
Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности . На каждом временном шаге
сеть обновляет своё внутреннее скрытое состояние
, стремясь аккумулировать смысловую информацию о прочитанной части[1].
По завершении обработки всего входа финальное скрытое состояние интерпретируется как вектор контекста
— сжатое представление всей входной последовательности в виде вектора фиксированной размерности:
Энкодер
На практике в качестве ячеек энкодера чаще всего используются модификации RNN, такие как LSTM (Long Short-Term Memory)[1] или GRU (Gated Recurrent Unit)[1]. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях.
Декодер и Teacher Forcing
Декодер является второй рекуррентной сетью, которая получает вектор контекста и генерирует выходную последовательность
авторегрессионным способом — по одному токену за раз, используя ранее сгенерированные элементы[1]:
В процессе обучения для стабилизации и ускорения сходимости применяется техника Teacher Forcing[1]. На каждом шаге обучения декодеру подаётся не его собственное предсказание с предыдущего шага, а правильный (референсный) токен из обучающей выборки. Это предотвращает накопление ошибок, однако порождает проблему exposure bias — модель привыкает к идеальным входным данным, которые отсутствуют на этапе инференса. Для смягчения этого эффекта используется Scheduled Sampling, при котором доля использования реальных ответов постепенно снижается[1].
Проблема информационного узкого места
Ключевым ограничением базовой архитектуры seq2seq является информационное узкое место, создаваемое вектором контекста фиксированной размерности[1]. Вся информация о входной последовательности, какой бы длинной она ни была, сжимается в один вектор фиксированной размерности. Это приводит к двум негативным эффектам:
- Потеря релевантной информации для длинных или сложных предложений, что ухудшает качество генерации.
- Ослабление долгосрочных зависимостей: связи между элементами, находящимися далеко друг от друга, трудноуловимы для модели.
Механизм внимания
Кардинальным решением проблемы узкого места стало введение механизма внимания (Attention), предложенного Д. Бахданау и соавторами в 2015 году[1]. Вместо использования единственного фиксированного вектора контекста внимание позволяет декодеру на каждом шаге динамически выбирать, какие части входной последовательности наиболее значимы для генерации текущего токена.
Вычисление контекстного вектора
Для текущего скрытого состояния декодера и каждого скрытого состояния энкодера
вычисляется оценка внимания (alignment score)
. Эти оценки нормализуются с помощью функции softmax, формируя веса внимания
[1]:
Вектор контекста для шага вычисляется как взвешенная сумма скрытых состояний энкодера:
Модификации внимания
Существует несколько способов вычисления оценки внимания. В работе Бахданау[1] была предложена аддитивная (или additive) модель:
Позже Т. Луонг и соавторы[1] предложили более простую мультипликативную (или dot-product) модель:
Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова[1].
Стратегии декодирования
На этапе вывода (инференса), когда правильные ответы неизвестны, вместо Teacher Forcing применяются эвристические стратегии поиска.
Жадный поиск
На каждом шаге выбирается токен с максимальной апостериорной вероятностью:
Этот метод вычислительно эффективен, однако склонен к субоптимальным решениям из-за локальной жадности[1].
= Поиск по лучу
Beam Search поддерживает (ширина луча) наиболее вероятных частичных гипотез. На каждом шаге для каждой гипотезы рассматриваются все возможные продолжения, и из полученного множества отбираются
лучших кандидатов[1]. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине:
scoreнорм(y) =
где — гиперпараметр, часто принимающий значение 0.6—0.7.
Применение
Архитектура seq2seq (в том числе в модификациях с вниманием) используется в следующих областях:
- Машинный перевод — преобразование текста с одного естественного языка на другой[1].
- Автоматическое реферирование — построение краткого изложения длинных документов[1].
- Распознавание речи — транскрипция аудиосигнала в текст[1].
- Диалоговые системы и чат-боты — формирование ответов в контексте разговора.
- Генерация изображений по тексту (в гибридных моделях со сверточными сетями).
Влияние и развитие
Хотя оригинальная архитектура seq2seq с RNN-энкодером и декодером постепенно уступает место моделям на основе механизма Трансформер (2017)[1], многие принципы, заложенные в seq2seq, остаются фундаментальными. Концепции авторегрессионной генерации, Teacher Forcing, внимания и Beam Search активно используются в современных больших языковых моделях, таких как GPT[1] и BERT[1].
См. также
- Рекуррентная нейронная сеть
- Механизм внимания
- Трансформер (модель глубокого обучения)
- Машинный перевод
- Обработка естественного языка
Примечания
Литература
- 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.
- Bahdanau, D., Cho, K., Bengio, Y. Neural Machine Translation by Jointly Learning to Align and Translate // ICLR. — 2015.
- Luong, T., Pham, H., Manning, C. D. Effective Approaches to Attention-based Neural Machine Translation // Proceedings of EMNLP. — 2015.
- Vaswani, A., Shazeer, N., Parmar, N. и др. Attention Is All You Need // Advances in Neural Information Processing Systems. — 2017.
- Goldberg, Y. Neural Network Methods for Natural Language Processing. — Morgan & Claypool, 2017. — ISBN 978-1627052986
- Vinokurov I. V. Recovering text sequences using deep learning models // Программные системы: теория и приложения. — 2024. — Т. 15. — № 3. — С. 75–110.
- Neural Machine Translation with Attention // TensorFlow.
- NLP From Scratch: Translation with a Sequence to Sequence Network and Attention // PyTorch.

