Почему утверждается, что self-attention не умеет различать позиции, хотя на самом деле он сордежит Linear на v,k,q?

Рейтинг: 2Ответов: 1Опубликовано: 10.06.2023

Для self-attention утверждается, что он не умеет различать позиции значений, и поэтому делается предварительный энкодинг позиций. Это было бы справедливо, если бы он только умножал матрицы. Но ведь у self-attention на каждый вход есть еще предварительные Linear-ы, которые прекрасно понимают, где какой вход, и как следствие могут добавлять информацию о позиции к значениям. Почему происходит такое утверждение?

Выдержка из описания: "Since our model contains no recurrence and no convolution, in order for the model to make use of the order of the sequence, we must inject some information about the relative or absolute position of the tokens in the sequence". Здесь утверждается, что только рекурентные и конволюционные структуры понимают позиции, а типа простой Linear получается их путает? Почему же тогда до трансформеров, десятки лет использовали Linear без добавления кодирования позиций?

Вероятно добавление кодирования позиций производит некоторую работу, которая улучшает характеристики сетки, но почему необходимость этого объясняется отсутствием рекурентности и конволюции?

Ответы

▲ 0

Как всегда, присмотревшись повнимательней, я увидел то, что до этого проглядел. Для Linear в self-attention входным features является измерение embedding. Т.е. если входной тензор у self-attention это [seq_len,batch_sz,embedding], то Linear применяется для измерения embedding последовательно для всех [seq_len,batch_sz]. В свою очередь, каждый срез этого измерения это закодированная одна позиция из последовательности seq_len.