R-Transformer: Recurrent Neural Network Enhanced Transformer

Zhiwei Wang, Yao Ma, Zitao Liu, Jiliang Tang

Статья: https://arxiv.org/abs/1907.05572

Код: https://github.com/DSE-MSU/R-transformer



Ещё вариация на тему трансформера -- химера с RNN.



Трансформер, как известно, хорош возможностью ловить глобальные зависимости (ну, в пределах своего attention span, конечно), но в целом не очень умеет эффективно моделировать локальные структуры. Рекуррентные сетки хороши в моделировании последовательностей вообще (в трансформеры для этого приходится добавлять позиционные эмбеддинги, иначе ему пофиг про порядок, он смотрит на всё) и локальной структуры в частности (по идее для этого и свёрточные тоже хороши, а у трансформера также есть вариант с относительными позиционными эмбеддингами).



Решение простое: давайте постороим гибрид, где сначала будет left-to-right RNN с ограниченным окном (здесь она называется LocalRNN), а поверх её эмбеддингов будет уже работать трансформер (никаких позиционных эмбеддингов уже не используем). LocalRNN имеет шаринг весов для всех позиций.



В работе рассматривают не полный кейс с seq2seq, а моделирование последовательности (смотрим только влево на предыдущий контекст, вправо не смотрим).



По мне, честно говоря, непонятно, почему здесь нельзя точно так же было свёртки вставить, и авторы пишут, что это в общем аналогично одномерной свёртке, но свёртка, мол, игнорирует информацию о последовательности внутри окна (что мне кажется, фигня). Как минимум было бы интересно проверить. Плюс, свёртки быстрее будут считаться.



Построили, получили более хороший результат, чем у обычного трансформера.



Среди прочего сравниваются со свёрточной TCN (temporal convolutional network, малоизвестная, но с хорошими способностями, она отсюда: https://arxiv.org/abs/1803.01271) Про ней пишут, что TCN тоже локальную информацию о последовательности игнорирует. Спорно, мне кажется.



Следующим гибридом просится CNN-RNN-Transformer. Ибо гибриды CNN-LSTM вполне хорошо работают.