Эволюция Attention: переход к линейным моделям
Это продолжение серии постов про путь линейного Attention. В прошлый раз мы выяснили, что трансформеры имеют квадратичную сложность, из-за чего плохо масштабируются на длинные последовательности и требуют много памяти.
📌 Linear Attention впервые поменял подход к вычислению. Он позволил разложить kernel-функцию и вместо exp(QKᵀ) использовать φ(Q) · φ(K). Благодаря этому получилось:
• перегруппировать вычисления;
• сначала посчитать K · V;
• потом применить Q.
Обычный Attention хранит токены по отдельности, а линейный — складывает информацию в общую «сводку» контекста. Благодаря этому модель хорошо понимает общий смысл, но плохо запоминает детали.
Встала задача: сохранить эффективность линейного Attention, но вернуть локальный контекст.
📌 Эту проблему частично решила RWKV-архитектура. Она не отказалась от идеи компактной памяти, но добавила механизмы, которые делают её более чувствительной к текущему контексту:
• Token shift
Вместо того чтобы рассматривать токен изолированно, модель смешивает его с предыдущим состоянием. Поэтому каждый новый шаг содержит информацию о ближайшем контексте.
• Управление памятью
Память в RWKV не просто накапливается. На каждом шаге часть старой информации забывается, а новая — добавляется. Если ничего не забывать, память быстро превратится в шум. А если забывать слишком агрессивно — потеряется контекст. Модель учится сама находить баланс между крайностями.
• Гейт при извлечении
Когда нужно достать информацию из памяти, используется гейт. Он работает как фильтр: смотрит на текущий токен и решает, какие части памяти сейчас важны, а какие можно игнорировать.
Подробнее о них расскажем в следующих постах.
💜 Этот пост написал Владислав Попов, ML-инженер в Точка Банк
Это продолжение серии постов про путь линейного Attention. В прошлый раз мы выяснили, что трансформеры имеют квадратичную сложность, из-за чего плохо масштабируются на длинные последовательности и требуют много памяти.
📌 Linear Attention впервые поменял подход к вычислению. Он позволил разложить kernel-функцию и вместо exp(QKᵀ) использовать φ(Q) · φ(K). Благодаря этому получилось:
• перегруппировать вычисления;
• сначала посчитать K · V;
• потом применить Q.
Но главное: сложность стала линейной по длине последовательности (вместо квадратичной). Модель работала быстрее и экономнее по памяти, но вместе с этим теряла точность.
Обычный Attention хранит токены по отдельности, а линейный — складывает информацию в общую «сводку» контекста. Благодаря этому модель хорошо понимает общий смысл, но плохо запоминает детали.
Встала задача: сохранить эффективность линейного Attention, но вернуть локальный контекст.
📌 Эту проблему частично решила RWKV-архитектура. Она не отказалась от идеи компактной памяти, но добавила механизмы, которые делают её более чувствительной к текущему контексту:
• Token shift
Вместо того чтобы рассматривать токен изолированно, модель смешивает его с предыдущим состоянием. Поэтому каждый новый шаг содержит информацию о ближайшем контексте.
• Управление памятью
Память в RWKV не просто накапливается. На каждом шаге часть старой информации забывается, а новая — добавляется. Если ничего не забывать, память быстро превратится в шум. А если забывать слишком агрессивно — потеряется контекст. Модель учится сама находить баланс между крайностями.
• Гейт при извлечении
Когда нужно достать информацию из памяти, используется гейт. Он работает как фильтр: смотрит на текущий токен и решает, какие части памяти сейчас важны, а какие можно игнорировать.
RWKV стала своеобразным гибридом предыдущих идей. Она не сделала модель такой же точной, как классический Attention, но при этом вернула локальный контекст. Параллельно с ней развивались другие архитектуры — SSM и Mamba.
Подробнее о них расскажем в следующих постах.
💜 Этот пост написал Владислав Попов, ML-инженер в Точка Банк