tgoop.com/quant_prune_distill/91
Last Update:
Метод
Предложенный механизм рассматривается в качестве альтернативы стандартному Attention в трансформер блоках, то есть чередуется с feedforward слоями и применяется на последовательностях токенов.
Retention является по существу версией RNN, c обновляемым вектором состояния, где каждое последующее состояние получается как взвешенная (матрично) сумма прошлого состояния и текущего элемента последовательности, и с выходной проекцией, превращающей скрытое состояние в выход слоя. Все проекции - взвешивающая скрытое состояние, текущий элемент последовательности и выход, получаются линейным преобразованием входа - полный аналог query, key, value проекций в Attention. В частном случае необучаемых проекций архит
Далее авторы диагонализуют матрицу, преобразующую скрытое состояние, перепараметризуют веса и приходят в итоге к форме, удобной для вычисления. Полученная операция включает в себе attention без softmax, causal masking, и экспоненциальное затухание по длине последовательности.
Замечательным свойством retention является возможность представить его в 3 ипостасях:
1️⃣ Параллельная версия (оптимальная для обучения на GPU)
2️⃣ Последовательная версия (бюджетная на инференсе)
3️⃣ Чанковая реализация (trade-off между двумя первыми)
В первой версии одновременно обрабатывается вся последовательность, во второй один элемент, в третьей - блок некоторого размера.
Далее, как и в оригинальном attention, предлагается многоголовая версия Retention. Однако, если обучаемыми разными головами паттерны в MultiHeadAttention имеют случайное поведение, то здесь разные головы отвечают разным масштабам. Коэффициент затухания γ определяет характерный масштаб (длину контекста), с которой работает данная голова. На выход MultiHeadRetention довешивается GroupNorm.
Для повышения выразительности операции выход MultiHeadRetention умножается на swish(XW_G)
- gating механизм, и пропускается через выходную проекцию W_O
.
BY КПД
Share with your friend now:
tgoop.com/quant_prune_distill/91