89
правок
Изменения
→Конформер
'''Модуль многоголового самовнимания'''
В модуле используется блок многоголового внимания с относительным позиционным кодированием (англ. ''Multi-Head Attention with Relational Positional Encoding''). Такой блок (изначально часть архитектуры Трансформер-XL<ref>Transformer-XL: Attentive Language ModelsBeyond a Fixed-Length ContextZihang Dai, Zhilin Yang, Yiming Yang, Jaime Carbonell1, Quoc V. Le, Ruslan Salakhutdinov</ref>) используется с целью исправить два недостатка архитектуры Трансформер: ограничение на длину входа (что не позволяет модели, например, использовать слово которое появилось несколько предложений назад) и фрагментацию контекста (последовательность разбивается на несколько блоков каждый из которых обучается независимо). Для достижения этой цели используются два механизма: механизм повторения (англ. ''reccurence mechanism'') и относительное позиционное кодирование (англ. ''relational positional encoding''). Механизм повторения позволяет использовать информацию из предыдущих сегментов. Как и в оригинальной версии, Трансформер-XL обрабатывает первый сегмент токенов, но сохраняет выходные данные скрытых слоев. При обработке следующего сегмента каждый скрытый слой получает два входа: 1. Результат результат предыдущего скрытого слоя этого сегмента, как в оригинальной версии.<br>2. Результат Трансформере, и результат предыдущего скрытого слоя из предыдущего сегмента, который позволяет модели создавать зависимости от далеких сегментов. Технически два входа объединяются, а затем используются для вычисления матриц $Key$ и $Value$ текущего сегмента. Это дополнение предоставляет сети дополнительную информацию о весах (важности) каждого токена, но не меняет матрицу значений.
Однако, с использованием механизма повторения возникает новая проблема: при использовании исходного позиционного кодирования каждый сегмент кодируется отдельно, и в результате токены из разных сегментов закодированы одинаково.