Комментарии 10
Как, все, что нам действительно нужно, это умножение карт признаков на выходе блока внимания, а как они получаются внутри - уже дело десятое. Отсюда и множество вариантов, как обойти использование softmax
Простите, а можно попросить чуть расширить контекст? Что такое внимание и почему это важно? Я понимаю, что, вероятно, я не из целевой аудитории, но термин для меня совсем новый.
Внимание - концепция в глубоком обучении, конкретно используется для архитектуры трансформеров, важно оно потому что так называется статья, где это внимание предложили ("Attention is All You Need"). Если шарите за математику, то вот вам перевод этой статьи
без математики: потому что "внимание" - это та часть LLM-ов (которые GPT/Claude и прочие гигачаты) , которая тратит ресурсы и время. Если ее ускорить - то вы будете получать ответы в сотни раз быстрее чем сейчас (или запуская эти нейронки на телефоне без интернета)
А для математической части можно почитать тут:
Если не хотите лазить по статьям, то вот краткий ответ: трансформерные нейронные сети (к которым относятся и большие языковые модели, например ChatGPT) обсчитывают каждое слово (на самом деле токен, что является частью слова, изображения или другой сущности, но для простоты пусть будет слово) с помощью последовательных матричных умножений.
Но в языке важен контекст, в котором это слово стоит, поэтому при обработке каждого слова классический трансформер "ходит" за информацией к каждому другому слову.
Этот механизм и называется вниманием, или attention, т.е. слово обрабатывается с обращением внимания на все остальные слова в контексте. Поскольку в классическом трансформере используется внимание "каждый-с-каждым", то вычислительная сложность растет квадратично от длины контекста. Вдобавок там еще и квадратичные требования по памяти из-за операции softmax, т.к. всю матрицу n*n надо держать в памяти.
Длинный контекст позволяет делать многие крутые вещи, которые не позволяет короткий контекст, например сеть с длинным контекстом можно попросить прочитать большую статью и объяснить ее. Поэтому львиная доля работ по трансформерным архитектурам направлено на повышение эффективности механизма внимания за счет снижения его качества. Усилия направлены на то, чтобы эффективность повысить как можно сильнее, а в качестве проиграть как можно меньше.
А почему не померили время на обратный проход?
Было бы круто если бы ещё можно было использовать готовую предоьученную модель и заменить блоки традиционного внимания на линейное
Второе выражение — это произведение матриц Q и V, что даёт матрицу (d_k, d_v). Операция умножения K(QV) в третьем выражении имеет ту же временную сложность.
Мы можем сначала получить произведение карты признаков с K и V (value, значение) для формирования блока KV, а затем — получить произведение с Q.
По моему, автор тут запутался, где какое у него ку. Вначале считаем блок KV, а затем умножаем на Q, Q(KV).
Всё, что вам нужно — это линейное внимание