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

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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 1: Строка 1:
-
'''Seq2seq''' (от англ. ''sequence-to-sequence'', «последовательность-в-последовательность») — класс архитектур [[Искусственная нейронная сеть|искусственных нейронных сетей]], предназначенных для преобразования одной последовательности данных в другую. В отличие от многих других моделей, seq2seq не требует, чтобы входная и выходная последовательности имели одинаковую длину, что делает её фундаментальным инструментом для решения широкого круга задач, от [[Машинный перевод|машинного перевода]] до анализа временных рядов.
+
'''Sequence-to-Sequence''' (сокращённо '''Seq2Seq''') — класс архитектур [[Искусственная нейронная сеть|искусственных нейронных сетей]], предназначенных для преобразования одной последовательности данных в другую. Ключевой особенностью Seq2Seq является отсутствие требования к равенству длин входной и выходной последовательностей, что делает её универсальным инструментом для решения задач, где требуется генерация структурированного вывода на основе неструктурированного или структурированного входа. Архитектура нашла широкое применение в [[Машинный перевод|машинном переводе]], автоматическом реферировании текстов, [[Распознавание речи|распознавании речи]], диалоговых системах и других областях [[Обработка естественного языка|обработки естественного языка]].
-
В основе архитектуры seq2seq лежит пара [[Рекуррентная нейронная сеть|рекуррентных нейронных сетей]] (RNN), которые работают в тандеме: ''энкодер'' и ''декодер''. Этот подход был впервые предложен в 2014 году и заложил основы для современных систем обработки естественного языка.
+
== История ==
-
== История и предпосылки ==
+
Первые значимые работы в области нейросетевого преобразования последовательностей относятся к началу 2010-х годов. В 2014 году была предложена архитектура, в которой и [[Кодировщик|кодировщик]], и [[Декодировщик|декодировщик]] были реализованы на основе [[Рекуррентная нейронная сеть|рекуррентных нейронных сетей]] (RNN), в частности, сетей долгой краткосрочной памяти ([[LSTM]])<ref name="sutskever2014">Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. ''arXiv:1409.3215''.</ref>. Эта работа стала фундаментальной и определила базовую архитектуру, которая впоследствии подвергалась многочисленным улучшениям.
-
До появления архитектуры 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 была проблема «бутылочного горлышка» — необходимость сжимать всю информацию о входной последовательности в вектор фиксированной размерности. Решением этой проблемы стало введение в 2015 году механизма внимания (attention mechanism)<ref name="bahdanau2015">Bahdanau, D., Cho, K., & Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. ''ICLR 2015''.</ref>, который позволял декодировщику динамически выбирать наиболее релевантные части входной последовательности на каждом шаге генерации.
 +
 
 +
Революционным этапом в развитии Seq2Seq стало появление архитектуры [[Transformer|Трансформер]] в 2017 году<ref name="vaswani2017">Vaswani, A., et al. (2017). Attention Is All You Need. ''NeurIPS 2017''.</ref>. Трансформер полностью отказался от рекуррентных связей, построив кодировщик и декодировщик исключительно на основе механизмов самовнимания и перекрестного внимания, что позволило значительно увеличить эффективность параллельной обработки данных и достичь новых высот в качестве выполнения задач.
== Архитектура ==
== Архитектура ==
-
Общая архитектура seq2seq базируется на двух основных компонентах: кодирующем и декодирующем модулях.
+
Общая архитектура Seq2Seq состоит из двух основных компонентов: [[Кодировщик|кодировщика]] (''encoder'') и [[Декодировщик|декодировщика]] (''decoder''). Оба компонента традиционно являются [[Рекуррентная нейронная сеть|рекуррентными нейронными сетями]], однако в современных реализациях они часто заменяются архитектурой [[Transformer|Трансформер]].
-
=== Энкодер ===
+
=== Кодировщик ===
-
Энкодер представляет собой рекуррентную нейронную сеть, которая последовательно считывает элементы входной последовательности <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>\mathbf{x} = (x_1, x_2, \dots, x_T)</tex>, где <tex>T</tex> — длина последовательности. Каждый токен предварительно преобразуется в [[Векторное представление слов|векторное представление]] (эмбеддинг). На каждом временном шаге <tex>t</tex> кодировщик обновляет своё скрытое состояние <tex>h_t</tex>:
-
По завершении обработки всего входа финальное скрытое состояние <tex>h_T</tex> интерпретируется как '''вектор контекста''' <tex>\mathbf{c}</tex> — сжатое представление всей входной последовательности в виде вектора фиксированной размерности:
+
<tex>
 +
h_t = \text{RNN}(x_t, h_{t-1})
 +
</tex>
-
<tex> \mathbf{c} = h_T = </tex> Энкодер<tex>(x_1, x_2, \dots, x_T) </tex>
+
где <tex>x_t</tex> — векторное представление текущего токена, а <tex>h_{t-1}</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>. Данные ячейки эффективно решают проблему затухающих градиентов, что позволяет обучать модели на длинных последовательностях.
+
Конечной целью кодировщика является создание '''вектора контекста''' <tex>\mathbf{c}</tex> — вектора фиксированной размерности, который представляет собой сжатое представление всей входной последовательности. В простейшей реализации в качестве вектора контекста используется последнее скрытое состояние кодировщика:
-
=== Декодер и Teacher Forcing ===
+
<tex>
 +
\mathbf{c} = h_T
 +
</tex>
-
Декодер является второй рекуррентной сетью, которая получает вектор контекста <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>.
+
Декодировщик генерирует выходную последовательность <tex>\mathbf{y} = (y_1, y_2, \dots, y_{T'})</tex>, где <tex>T'</tex> длина выходной последовательности, которая может отличаться от <tex>T</tex>. Начальное скрытое состояние декодировщика инициализируется вектором контекста:
-
== Проблема информационного узкого места ==
+
<tex>
 +
s_0 = \mathbf{c}
 +
</tex>
-
Ключевым ограничением базовой архитектуры 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>. Вся информация о входной последовательности, какой бы длинной она ни была, сжимается в один вектор фиксированной размерности. Это приводит к двум негативным эффектам:
+
На каждом шаге <tex>t</tex> декодировщик обновляет своё состояние и вычисляет распределение вероятностей для следующего токена:
-
# '''Потеря релевантной информации''' для длинных или сложных предложений, что ухудшает качество генерации.
+
<tex>
-
# '''Ослабление долгосрочных зависимостей''': связи между элементами, находящимися далеко друг от друга, трудноуловимы для модели.
+
s_t = \text{RNN}(y_{t-1}, s_{t-1})
 +
</tex>
 +
 
 +
<tex> P(y_t | y_{<t}, \mathbf{c}) = \text{softmax}(W_s s_t) </tex>
 +
 
 +
где <tex>y_{t-1}</tex> — векторное представление ранее сгенерированного токена (или специального стартового токена), <tex>W_s</tex> — обучаемая матрица весов, а <tex>y_{<t}</tex> — все ранее сгенерированные токены. Процесс генерации является [[Авторегрессионная модель|авторегрессионным]], поскольку каждый новый токен зависит от всех предыдущих.
== Механизм внимания ==
== Механизм внимания ==
-
Кардинальным решением проблемы узкого места стало введение '''механизма внимания''' (''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>. Вместо использования единственного фиксированного вектора контекста внимание позволяет декодеру на каждом шаге динамически выбирать, какие части входной последовательности наиболее значимы для генерации текущего токена.
+
{{Основная статья|Механизм внимания (машинное обучение)}}
-
=== Вычисление контекстного вектора ===
+
'''Механизм внимания''' (''attention mechanism'') был предложен для преодоления проблемы «бутылочного горлышка» — потери информации при сжатии всей входной последовательности в один вектор фиксированной размерности. Вместо использования единственного вектора контекста механизм внимания позволяет декодировщику на каждом шаге генерации динамически выбирать наиболее релевантные части входной последовательности.
-
Для текущего скрытого состояния декодера <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>t</tex> вычисляются веса внимания <tex>\alpha_{t,i}</tex>, которые определяют степень важности <tex>i</tex>-го скрытого состояния кодировщика для генерации <tex>t</tex>-го токена:
-
<tex> \alpha_{ti} = \frac{\exp(e_{ti})}{\sum_{j=1}^{T_x} \exp(e_{tj})} </tex>
+
<tex>
 +
\alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{j=1}^{T} \exp(e_{t,j})}
 +
</tex>
-
Вектор контекста для шага <tex>t</tex> вычисляется как взвешенная сумма скрытых состояний энкодера:
+
где <tex>e_{t,i}</tex> — функция соответствия (''alignment score''), вычисляемая на основе скрытого состояния декодировщика <tex>s_{t-1}</tex> и скрытого состояния кодировщика <tex>h_i</tex>. Наиболее распространённые функции соответствия включают [[Скалярное произведение|скалярное произведение]], аддитивную функцию ([[Bahdanau attention]]) и масштабированное скалярное произведение ([[Luong attention]]).
-
<tex> \mathbf{c}_t = \sum_{i=1}^{T_x} \alpha_{ti} \mathbf{h}_i </tex>
+
Контекстный вектор <tex>\mathbf{c}_t</tex> для шага <tex>t</tex> вычисляется как взвешенная сумма всех скрытых состояний кодировщика:
-
=== Модификации внимания ===
+
<tex> \mathbf{c}_t = \sum_{i=1}^{T} \alpha_{t,i} h_i </tex>
-
Существует несколько способов вычисления оценки внимания. В работе Бахданау<ref name="bahdanau2015"/> была предложена '''аддитивная''' (или ''additive'') модель:
+
Этот подход значительно улучшает качество работы моделей, особенно на длинных последовательностях, и лёг в основу архитектуры [[Transformer|Трансформер]].
-
<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'') модель:
+
Обучение Seq2Seq-моделей осуществляется на больших параллельных корпусах данных, содержащих пары входных и целевых последовательностей. Оптимизация ведётся с использованием методов [[Градиентный спуск|градиентного спуска]], как правило, с применением алгоритма [[Adam|Adam]] или стохастического градиентного спуска.
-
<tex> e_{ti} = \mathbf{s}_t^\top \mathbf{W}_a \mathbf{h}_i </tex>
+
Для стабилизации и ускорения обучения часто используется техника '''{{нп|Teacher Forcing|Teacher Forcing}}''', при которой на этапе обучения на вход декодировщика на каждом шаге подаётся не его собственное предыдущее предсказание, а соответствующий токен из правильной целевой последовательности (''ground truth'').
-
Введение внимания позволило не только значительно повысить качество перевода, особенно для длинных предложений, но и сделало модели интерпретируемыми — визуализация весов внимания показывает, на какие участки исходного текста модель опирается при генерации каждого слова<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>.
+
=== Функция потерь ===
-
== Стратегии декодирования ==
+
В качестве функции потерь для задач [[Классификация|классификации]] токенов обычно используется [[Кросс-энтропия|кросс-энтропия]]:
-
На этапе вывода (инференса), когда правильные ответы неизвестны, вместо Teacher Forcing применяются эвристические стратегии поиска.
+
<tex> \mathcal{L} = -\sum_{t=1}^{T'} \log P(y_t^* | y_{<t}^*, \mathbf{c}) </tex>
-
=== Жадный поиск ===
+
где <tex>y_t^*</tex> — правильный целевой токен на шаге <tex>t</tex>.
-
На каждом шаге выбирается токен с максимальной апостериорной вероятностью:
+
Для задач, где выходная последовательность может иметь различную длину, иногда применяются дополнительные штрафы или модификации функции потерь, учитывающие длину последовательности.
-
<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>.
+
На этапе применения модели (инференса) правильный ответ неизвестен, поэтому используются следующие стратегии выбора токенов:
-
==== Поиск по лучу ===
+
* '''Жадный поиск''' (''greedy 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>. Данный подход значительно улучшает качество генерации для длинных последовательностей. Для устранения смещения в сторону более коротких гипотез применяется нормализация по длине:
+
<tex> y_t = \arg\max_{y} P(y | y_{<t}, \mathbf{c}) </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>
+
* '''Поиск по лучу''' (''beam search''): одновременно поддерживается <tex>k</tex> наиболее вероятных кандидатов (лучей). Функция оценки луча может включать нормализацию по длине для избегания предпочтения коротких последовательностей:
-
где <tex>\alpha</tex> — гиперпараметр, часто принимающий значение 0.6—0.7.
+
<tex> \text{score}_{\text{normalized}}(\mathbf{y}) = \frac{1}{T'^{\alpha}} \sum_{t=1}^{T'} \log P(y_t | y_{<t}, \mathbf{x}) </tex>
-
== Применение ==
+
где <tex>\alpha</tex> — коэффициент штрафа за длину (обычно <tex>0.6 \le \alpha \le 1.0</tex>). Поиск по лучу обеспечивает лучшее качество по сравнению с жадным поиском, но требует больше вычислительных ресурсов.
-
Архитектура seq2seq (в том числе в модификациях с вниманием) используется в следующих областях:
+
== Применения ==
-
* [[Машинный перевод]] — преобразование текста с одного естественного языка на другой<ref name="sutskever2014"/>.
+
Архитектура Seq2Seq (как на основе RNN с вниманием, так и на основе Трансформеров) лежит в основе множества современных систем:
-
* [[Автоматическое реферирование]] — построение краткого изложения длинных документов<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>.
+
-
* [[Распознавание речи]] — транскрипция аудиосигнала в текст<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>.
+
-
* Диалоговые системы и [[Чат-бот|чат-боты]] — формирование ответов в контексте разговора.
+
-
* Генерация изображений по тексту (в гибридных моделях со сверточными сетями).
+
-
== Влияние и развитие ==
+
* '''[[Машинный перевод]]''' — классическая задача, для которой модель была изначально разработана.
 +
* '''Автоматическое реферирование текста''' (''text summarization'') — создание краткого изложения длинного документа<ref name="see2017">See, A., Liu, P. J., & Manning, C. D. (2017). Get To The Point: Summarization with Pointer-Generator Networks. ''ACL 2017''.</ref>.
 +
* '''[[Распознавание речи]]''' — преобразование аудиосигнала в текстовую последовательность.
 +
* '''Диалоговые системы и [[Чат-бот|чат-боты]]''' — генерация ответа на запрос пользователя.
 +
* '''Генерация подписей к изображениям''' (''image captioning'') — описание визуального содержимого текстом на естественном языке.
 +
* '''[[Биоинформатика]]''' — предсказание вторичной структуры белков, генерация последовательностей [[ДНК|ДНК]].
 +
* '''Генерация кода''' — автоматическое написание программного кода по текстовому описанию<ref name="chen2021">Chen, M., et al. (2021). Evaluating Large Language Models Trained on Code. ''arXiv:2107.03374''.</ref>.
-
Хотя оригинальная архитектура 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>.
+
== Связь с когнитивными науками ==
 +
 
 +
Исследования показывают, что принципы работы архитектуры Seq2Seq с вниманием имеют функциональное сходство с моделями человеческой памяти<ref name="kim2025">Kim, G., Awh, E., & Vogel, E. K. (2025). Sequence-to-sequence models with attention mechanistically map to the architecture of human memory search. ''Communications Psychology'', 3, 146.</ref>. В частности, процесс кодирования информации кодировщиком и последующего её извлечения декодировщиком с помощью внимания напоминает процессы запоминания и свободного воспроизведения информации у человека. Это сходство помогает лучше понять роль контекста в процессах памяти и открывает новые возможности для моделирования когнитивных функций.
== См. также ==
== См. также ==
* [[Рекуррентная нейронная сеть]]
* [[Рекуррентная нейронная сеть]]
-
* [[Механизм внимания]]
+
* [[Долгая краткосрочная память]]
-
* [[Трансформер (модель глубокого обучения)]]
+
* [[Механизм внимания (машинное обучение)]]
-
* [[Машинный перевод]]
+
* [[Transformer]]
* [[Обработка естественного языка]]
* [[Обработка естественного языка]]
 +
* [[Машинный перевод]]
 +
* [[Суммаризация текста]]
== Примечания ==
== Примечания ==
Строка 110: Строка 131:
== Литература ==
== Литература ==
-
* {{статья |автор= 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}}
+
* Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. ''arXiv:1409.3215''.
-
* {{статья |автор= 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/}}
+
* Bahdanau, D., Cho, K., & Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. ''ICLR 2015''.
-
* {{статья |автор= 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}}
+
* Vaswani, A., et al. (2017). Attention Is All You Need. ''NeurIPS 2017''.
-
* {{статья |автор= Luong, T., Pham, H., Manning, C. D. |заглавие= Effective Approaches to Attention-based Neural Machine Translation |издание= Proceedings of EMNLP |год= 2015 |ссылка= https://aclanthology.org/D15-1166/}}
+
* See, A., Liu, P. J., & Manning, C. D. (2017). Get To The Point: Summarization with Pointer-Generator Networks. ''ACL 2017''.
-
* {{статья |автор= 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}}
+
* Kim, G., Awh, E., & Vogel, E. K. (2025). Sequence-to-sequence models with attention mechanistically map to the architecture of human memory search. ''Communications Psychology'', 3, 146.
-
* {{книга |автор= 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 |ссылка= https://psta.psiras.ru/2024/3_75.pdf}}
+
-
* {{cite web |url= https://www.tensorflow.org/text/tutorials/nmt_with_attention |title= Neural Machine Translation with Attention |publisher= TensorFlow |year= 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}}
+
-
 
+
-
[[Категория:Машинное обучение]]
+
-
[[Категория:Нейронные сети]]
+
-
[[Категория:Обработка естественного языка]]
+

Версия 14:22, 7 июля 2026

Sequence-to-Sequence (сокращённо Seq2Seq) — класс архитектур искусственных нейронных сетей, предназначенных для преобразования одной последовательности данных в другую. Ключевой особенностью Seq2Seq является отсутствие требования к равенству длин входной и выходной последовательностей, что делает её универсальным инструментом для решения задач, где требуется генерация структурированного вывода на основе неструктурированного или структурированного входа. Архитектура нашла широкое применение в машинном переводе, автоматическом реферировании текстов, распознавании речи, диалоговых системах и других областях обработки естественного языка.

Содержание

История

Первые значимые работы в области нейросетевого преобразования последовательностей относятся к началу 2010-х годов. В 2014 году была предложена архитектура, в которой и кодировщик, и декодировщик были реализованы на основе рекуррентных нейронных сетей (RNN), в частности, сетей долгой краткосрочной памяти (LSTM)[1]. Эта работа стала фундаментальной и определила базовую архитектуру, которая впоследствии подвергалась многочисленным улучшениям.

Ключевым ограничением ранних моделей Seq2Seq была проблема «бутылочного горлышка» — необходимость сжимать всю информацию о входной последовательности в вектор фиксированной размерности. Решением этой проблемы стало введение в 2015 году механизма внимания (attention mechanism)[1], который позволял декодировщику динамически выбирать наиболее релевантные части входной последовательности на каждом шаге генерации.

Революционным этапом в развитии Seq2Seq стало появление архитектуры Трансформер в 2017 году[1]. Трансформер полностью отказался от рекуррентных связей, построив кодировщик и декодировщик исключительно на основе механизмов самовнимания и перекрестного внимания, что позволило значительно увеличить эффективность параллельной обработки данных и достичь новых высот в качестве выполнения задач.

Архитектура

Общая архитектура Seq2Seq состоит из двух основных компонентов: кодировщика (encoder) и декодировщика (decoder). Оба компонента традиционно являются рекуррентными нейронными сетями, однако в современных реализациях они часто заменяются архитектурой Трансформер.

Кодировщик

Кодировщик принимает на вход последовательность токенов \mathbf{x} = (x_1, x_2, \dots, x_T), где T — длина последовательности. Каждый токен предварительно преобразуется в векторное представление (эмбеддинг). На каждом временном шаге t кодировщик обновляет своё скрытое состояние h_t:


h_t = \text{RNN}(x_t, h_{t-1})

где x_t — векторное представление текущего токена, а h_{t-1} — скрытое состояние с предыдущего шага.

Конечной целью кодировщика является создание вектора контекста \mathbf{c} — вектора фиксированной размерности, который представляет собой сжатое представление всей входной последовательности. В простейшей реализации в качестве вектора контекста используется последнее скрытое состояние кодировщика:


\mathbf{c} = h_T

Однако в более совершенных архитектурах вектор контекста может вычисляться как взвешенная сумма всех скрытых состояний кодировщика (см. раздел «Механизм внимания»).

Декодировщик

Декодировщик генерирует выходную последовательность \mathbf{y} = (y_1, y_2, \dots, y_{T'}), где T' — длина выходной последовательности, которая может отличаться от T. Начальное скрытое состояние декодировщика инициализируется вектором контекста:


s_0 = \mathbf{c}

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


s_t = \text{RNN}(y_{t-1}, s_{t-1})

 P(y_t | y_{<t}, \mathbf{c}) = \text{softmax}(W_s s_t)

где y_{t-1} — векторное представление ранее сгенерированного токена (или специального стартового токена), W_s — обучаемая матрица весов, а y_{<t} — все ранее сгенерированные токены. Процесс генерации является авторегрессионным, поскольку каждый новый токен зависит от всех предыдущих.

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

Шаблон:Основная статья

Механизм внимания (attention mechanism) был предложен для преодоления проблемы «бутылочного горлышка» — потери информации при сжатии всей входной последовательности в один вектор фиксированной размерности. Вместо использования единственного вектора контекста механизм внимания позволяет декодировщику на каждом шаге генерации динамически выбирать наиболее релевантные части входной последовательности.

Для каждого выходного шага t вычисляются веса внимания \alpha_{t,i}, которые определяют степень важности i-го скрытого состояния кодировщика для генерации t-го токена:


\alpha_{t,i} = \frac{\exp(e_{t,i})}{\sum_{j=1}^{T} \exp(e_{t,j})}

где e_{t,i} — функция соответствия (alignment score), вычисляемая на основе скрытого состояния декодировщика s_{t-1} и скрытого состояния кодировщика h_i. Наиболее распространённые функции соответствия включают скалярное произведение, аддитивную функцию (Bahdanau attention) и масштабированное скалярное произведение (Luong attention).

Контекстный вектор \mathbf{c}_t для шага t вычисляется как взвешенная сумма всех скрытых состояний кодировщика:

 \mathbf{c}_t = \sum_{i=1}^{T} \alpha_{t,i} h_i

Этот подход значительно улучшает качество работы моделей, особенно на длинных последовательностях, и лёг в основу архитектуры Трансформер.

Обучение

Обучение Seq2Seq-моделей осуществляется на больших параллельных корпусах данных, содержащих пары входных и целевых последовательностей. Оптимизация ведётся с использованием методов градиентного спуска, как правило, с применением алгоритма Adam или стохастического градиентного спуска.

Для стабилизации и ускорения обучения часто используется техника Шаблон:Нп, при которой на этапе обучения на вход декодировщика на каждом шаге подаётся не его собственное предыдущее предсказание, а соответствующий токен из правильной целевой последовательности (ground truth).

Функция потерь

В качестве функции потерь для задач классификации токенов обычно используется кросс-энтропия:

 \mathcal{L} = -\sum_{t=1}^{T'} \log P(y_t^* | y_{<t}^*, \mathbf{c})

где y_t^* — правильный целевой токен на шаге t.

Для задач, где выходная последовательность может иметь различную длину, иногда применяются дополнительные штрафы или модификации функции потерь, учитывающие длину последовательности.

Стратегии инференса

На этапе применения модели (инференса) правильный ответ неизвестен, поэтому используются следующие стратегии выбора токенов:

  • Жадный поиск (greedy search): на каждом шаге выбирается токен с максимальной вероятностью:

 y_t = \arg\max_{y} P(y | y_{<t}, \mathbf{c})

  • Поиск по лучу (beam search): одновременно поддерживается k наиболее вероятных кандидатов (лучей). Функция оценки луча может включать нормализацию по длине для избегания предпочтения коротких последовательностей:

 \text{score}_{\text{normalized}}(\mathbf{y}) = \frac{1}{T'^{\alpha}} \sum_{t=1}^{T'} \log P(y_t | y_{<t}, \mathbf{x})

где \alpha — коэффициент штрафа за длину (обычно 0.6 \le \alpha \le 1.0). Поиск по лучу обеспечивает лучшее качество по сравнению с жадным поиском, но требует больше вычислительных ресурсов.

Применения

Архитектура Seq2Seq (как на основе RNN с вниманием, так и на основе Трансформеров) лежит в основе множества современных систем:

  • Машинный перевод — классическая задача, для которой модель была изначально разработана.
  • Автоматическое реферирование текста (text summarization) — создание краткого изложения длинного документа[1].
  • Распознавание речи — преобразование аудиосигнала в текстовую последовательность.
  • Диалоговые системы и чат-боты — генерация ответа на запрос пользователя.
  • Генерация подписей к изображениям (image captioning) — описание визуального содержимого текстом на естественном языке.
  • Биоинформатика — предсказание вторичной структуры белков, генерация последовательностей ДНК.
  • Генерация кода — автоматическое написание программного кода по текстовому описанию[1].

Связь с когнитивными науками

Исследования показывают, что принципы работы архитектуры Seq2Seq с вниманием имеют функциональное сходство с моделями человеческой памяти[1]. В частности, процесс кодирования информации кодировщиком и последующего её извлечения декодировщиком с помощью внимания напоминает процессы запоминания и свободного воспроизведения информации у человека. Это сходство помогает лучше понять роль контекста в процессах памяти и открывает новые возможности для моделирования когнитивных функций.

См. также

Примечания

Литература

  • Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to Sequence Learning with Neural Networks. arXiv:1409.3215.
  • Bahdanau, D., Cho, K., & Bengio, Y. (2015). Neural Machine Translation by Jointly Learning to Align and Translate. ICLR 2015.
  • Vaswani, A., et al. (2017). Attention Is All You Need. NeurIPS 2017.
  • See, A., Liu, P. J., & Manning, C. D. (2017). Get To The Point: Summarization with Pointer-Generator Networks. ACL 2017.
  • Kim, G., Awh, E., & Vogel, E. K. (2025). Sequence-to-sequence models with attention mechanistically map to the architecture of human memory search. Communications Psychology, 3, 146.
Личные инструменты