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

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

Перейти к: навигация, поиск

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].

См. также

Примечания

Литература

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