Post content
Решил сделать небольшой обзор работ, посвященных снижению квадратичной сложности attention в трансформерах (здесь имеется в виду квадратичная зависимость именно от длины последовательности). Это ограничение является довольно серьезным при работе с длинными контекстами, так что работ накопилось довольно много. Где-то авторы снижают сложность по времени, где-то по памяти, а где-то и там, и там. Linformer: На секунду вспомним, из-за чего появляется квадратичная сложность — из-за умножения Q на K^T. В таком случае давайте проектировать матрицы K и V в некоторое меньшее пространство с константной размерностью. Тогда умножение будет происходить на матрицу, которая не зависит от длины контекста → уходим от квадрата в сложности. Линейная зависимость по времени и по памяти. AFT (Attention Free Transformer): Здесь авторы вообще ушли от классического понятия attention, когда мы считаем скоры между Q и K. Сделали они это следующим образом: вместо Q в attention учим матрицу w размера TxT (T — максимальный размер контекста), элементы которой будем прибавлять к K. Как пишут авторы, w — is the learned pair-wise position biases, то есть, грубо говоря, элемент в матрице на позиции (1,3) — вес, с которым позиция 1 должна обратить внимание на позицию 3. Идея такого представления заключается в том, что оно служит некоторым gating mechanism, указывая на какие позиции обратить больше внимания. Здесь линейная зависимость по памяти (не нужно хранить большую матрицу attention scores), но квадратичная по времени. Однако, есть модификации, чтобы добиться линии и по времени (например, AFT-local).