Привет, Хабр! Если вы следите за архитектурами современных LLM (например, LLaMA или Gemma), вы могли заметить одну маленькую, но важную деталь, которая стала стандартом де-факто - QK Norm (Query-Key Normalization).

В официальных пейперах её использование объясняют сухим математическим языком: при масштабировании моделей скалярные произведения Q * Kt  начинают неконтролируемо расти, Softmax превращается в единичный вектор (one-hot), градиенты затухают, и обучение разваливается. Нормализация решает эту проблему численной стабильности.

Это правда. Но мне кажется, что за этим скрывается нечто гораздо более интересное. В этой статье я хочу предложить теоретический взгляд на то, почему QK Norm дает буст не только к стабильности лосса, но и к фундаментальному качеству векторных представлений (эмбеддингов) слов.

Анатомия ленивой нейросети

Давайте вспомним, что такое скалярное произведение двух векторов (Query и Key) с точки зрения геометрии.
Формула известна со школы:

AB=∣A∣×∣B∣×cos(θ)

В механизме Attention скалярное произведение определяет, насколько сильно токен A хочет смотреть на токен B. Если нейросети нужно увеличить вес внимания между двумя словами (сделать их семантически близкими), у неё есть два пути:

  1. Изменить угол: Повернуть векторы так, чтобы они указывали в одном направлении в N-мерном пространстве

  2. Изменить длину:  Оставить векторы на месте, но просто удлинить их.

Нейронные сети, как известно, фантастически ленивы. Оптимизатору (тому же AdamW) гораздо проще градиентно "накачать" длину вектора (просто увеличивая веса линейного слоя), чем аккуратно вращать его в высокоразмерном пространстве, пытаясь не сломать угловые расстояния до десятков тысяч других токенов.

В итоге, без нормализации, модель учится выделять важные токены не за счет их точного позиционирования в пространстве смыслов, а за счет их «громкости». Векторы частых или грамматически доминирующих токенов раздуваются в размерах, подавляя более тонкие семантические связи.

Отрезаем путь к отступлению: Геометрия QK Norm

Что мы делаем, когда применяем RMSNorm к матрицам Query и Key перед их перемножением?

Мы принудительно делаем их длину константой

Теперь наша формула скалярного произведения схлопывается до:

QK≈cos(θ)

Скалярное произведение превращается в чистое косинусное сходство (Cosine Similarity). Все векторы токенов оказываются заперты на поверхности N-мерной гиперсферы.

И вот тут начинается магия. Мы физически отрезали нейросети возможность изменять длину вектора. У неё остался только один вариант взаимодействия с данными, изменять положение вектора (угол).

Почему это дает буст к "пониманию"

Представьте себе комнату, в которой люди пытаются договориться.
Без QK Norm (когда длина вектора свободна), если кто-то хочет, чтобы его услышали, он может просто взять рупор и начать орать. Громкость компенсирует тот факт, что он стоит в другом конце комнаты.

С применением QK Norm мы отобрали у всех рупоры. Все говорят одинаково тихо. Теперь, чтобы слова одного человека повлияли на другого, им физически необходимо подойти друг к другу.

С точки зрения машинного обучения это приводит к потрясающим структурным изменениям в латентном пространстве:

  1. Смысловая плотность: Модель вынуждена филигранно кластеризовать векторы на поверхности гиперсферы. Токены собираются в строгие семантические созвездия исключительно по смыслу (по углу), а не по частоте появления в тексте.

  2. Защита от доминирующих токенов: В классическом трансформере "пустые" токены (вроде знаков препинания или предлогов) часто собирают на себя огромный вес внимания просто за счет раздутой длины весов (так называемые attention sinks). На гиперсфере у точек нет массы, есть только координаты.

  3. Лучшая генерализация: Когда пространство смыслов построено исключительно на относительных углах, модели проще интерполировать значения для новых, редко встречающихся слов.

Реализация на Pytorch

Код изменения классического Attention до безобразия прост. Нам нужно добавить всего пару строк:

import torch.nn as nn
import torch.nn.functional as F

class QKNormAttention(nn.Module):
    def __init__(self, d_model, n_heads):
        super().__init__()
        self.q_proj = nn.Linear(d_model, d_model)
        self.k_proj = nn.Linear(d_model, d_model)
        self.v_proj = nn.Linear(d_model, d_model)
        
        # Добавляем нормализацию для Q и K
        self.q_norm = nn.RMSNorm(d_model // n_heads)
        self.k_norm = nn.RMSNorm(d_model // n_heads)
        
    def forward(self, x):
        # ... (стандартное разделение на головы) ...
        
        # Применяем нормализацию ДО скалярного произведения
        q = self.q_norm(q)
        k = self.k_norm(k)
        
        # Теперь это по сути косинусное расстояние
        scores = torch.matmul(q, k.transpose(-2, -1))
        # Масштабирование на sqrt(d_k) часто можно убрать или заменить на обучаемый скаляр
        # (так называемый temperature parameter)
        
        attn = F.softmax(scores, dim=-1)
        # ... (дальше как обычно) ...

Кстати, еще один важный нюанс: если вы в своих тестах использовали RoPE, то критически важен порядок. Если нормализация (QK Norm) шла после RoPE, она могла просто разрушить позиционную информацию, исказив относительные фазы, которые вводит RoPE. В современных архитектурах QK Norm всегда стоит до вращения векторов. Возможно, падение качества у вас было связано именно с конфликтом нормализации и позиционного кодирования.

Заключение

Я не проводил масштабных A/B тестов (обучение LLM с нуля дорогое удовольствие), но этот мысленный эксперимент кажется мне предельно логичным.

Индустрия пришла к QK Norm через боль: модели масштаба 100B+ параметров просто отказывались стабильно обучаться без этого костыля. Но, возможно, решая инженерную проблему "взрыва логитов", инженеры случайно наткнулись на мощнейший регуляризатор репрезентаций.

Лишая сеть одной степени свободы (масштаба), мы заставляем её максимально эффективно использовать оставшуюся (позиционирование), что ведет к более глубокому и геометрически выверенному пониманию языка.

А что вы думаете об этом? Замечали ли вы улучшение качества эмбеддингов при переходе на косинусное внимание в своих проектах?

Комментарии (20)


  1. Kamil_GR
    17.05.2026 16:58

    Я экспериментировал с похожим, качество модели упало... (предполагаю разница между токенами стала слишком мала).

    В любом случае, вашу идею вы можете реализовать и опробовать сами на микросети. Сеть на миллион параметров легко впишется в 6гб видеокарты, используйте например датасет fineweb.

    Организация и первые тесты - часа два вечером, прогон основного обучения часов на 12 на ночь. За неделю вы опробуете основные варианты реализации. Чатгпт, Клод, Гемини - разжуют техническую часть от и до.


    1. YH7H22 Автор
      17.05.2026 16:58

      без температурного масштабирования QK Norm действительно схлопывает динамический диапазон softmax, и внимание становится слишком диффузным. Это как раз то, о чем я писал в комментариях: когда мы переходим на гиперсферу, нам критически важно, как именно мы "заостряем" косинусное сходство.


    1. YH7H22 Автор
      17.05.2026 16:58

      Кстати, еще один важный нюанс: если вы в своих тестах использовали RoPE, то критически важен порядок. Если нормализация (QK Norm) шла после RoPE, она могла просто разрушить позиционную информацию, исказив относительные фазы, которые вводит RoPE. В современных архитектурах QK Norm всегда стоит до вращения векторов.


      1. Kamil_GR
        17.05.2026 16:58

        Проблем и я могу изложить много, тестируйте и рассказывайте о результатах.


  1. Imperius14
    17.05.2026 16:58

    Интересная статья, спасибо!


  1. proxy3d
    17.05.2026 16:58

    Добавив нормализацию в QK, вы таким образом поломали эмбеддинги и их смысл. Они содержат информацию не только о сходстве, но и частотности. Когда вы нормализовали их перед QV, то фактически лишили информации о важности информации (какая встречается чаще, а какая реже).

    Сам эмбеддинг это не только сходство между токена. Норма эмбеддингов содержит информацию о частоте, но когда вы делаете нормализацию конкретного сигнала, то теряет большую часть информации. Было например |-15.45| как частота слова "кот", которая встречалась 1000 раз и |4.3| как частота слова "собака" которая встречалась 100 раз. Вы в данном случае полностью ломаете логику, так как после нормализации Q и K они могут совпасть по норме, станут например оба 0.7 и модель уже больше не может понять, какое из них важнее.

    Я выкладывал обучаемую архитектуру на которой эту логику можно проследить более отчетливо в коде.

    https://t.me/greenruff/2596

    Она ближе к EMB (Energy-Based Models, или Энергетические модели). Там как раз мы извлекает из эмбеддингов разные составляющие. Мы даже можем разделить эмбеддинги на составляющие, которые будут храниться и обучаться отдельно (вместо векторов).


    1. YH7H22 Автор
      17.05.2026 16:58

      Когда вы нормализовали их перед QV, то фактически лишили информации о важности информации (какая встречается чаще, а какая реже).

      Но здесь кроется фундаментальная логическая ловушка: разве "часто встречающееся" = "важное"?

      Самые часто встречающиеся токены в любом языке это предлоги, союзы и знаки препинания (например, точка или предлог "и"). В классическом трансформере без QK Norm их векторы действительно раздуваются до огромных значений. К чему это приводит? К известной проблеме attention sinks (Кладбище внимания). Эти частые, но бессмысленные токены начинают притягивать к себе всё внимание просто за счет своей огромной массы, подавляя действительно важные, но редкие смысловые слова.

      Нормализуя Q и K, мы как раз и ломаем эту порочную логику, когда "прав тот, кто громче кричит" (у кого больше норма).

      И самое главное техническое уточнение: вы пишете, что мы "лишили модель информации о частоте". Это не так!
      Механизм внимания состоит из роутера ( Q и  K ) и полезной нагрузки ( Value ). Мы применяем нормализацию только к роутеру. Матрица V (и весь residual stream трансформера) остается нетронутой. Вся информация о частоте, "важности" и изначальной норме слова "кот" безопасно едет дальше по слоям внутри.


      1. proxy3d
        17.05.2026 16:58

        Нет, "важность" это частотность, она же вероятность. Ломая эту информацию, мы ломаем распределение и создаем неопределенность, это означает что некоторые вещи становятся равно вероятными, хотя это не так. не должна буква "ы" быть чаще буквы "а", так и эти вектора. Это "энергия" в информационном плане (абстрактном), информация о том, сколько система тратить на переход от токена А к токену В, то есть ее затраты. И задача модели научиться найти баланс между затратами и сложностью многообразием. Вы убивая "затраты", оставляете только сложность многообразие и тем самым увеличиваете энтропию системы, а это всегда не определенность. Это ближе к тому, что мы сделаем температуру высокой, и часть вероятностей будут одинаковой важности.

        Q*K это фактически I(P1, P2) взаимная информация между случайными величинами, которую можно представить как две компоненты PMMI матрицу (связи, о которых вы говорите) и "энергия" (затраты на переход между связями). Когда вы нормализуете их, то теряете информацию об этих переходах. Это как если бы для вас не было разницы, произносить А или О, потому что вы приравняли их "энергетические" затраты на открывание рта.

        Информация о частотности при сравнении связей, не менее важна чем и сами связи, потому что стоимость этих переходов меньше и они чаще.

        Поэтому описанная проблема это не QK, можете увеличить кол-во других данных. Или изменить архитектуру, чтобы температура была динамической, тогда в одних случаях модель будет искать баланс между затратами системы (частотность) и ее многообразием (энтропией). Вы сейчас наоборот пытаетесь жестко сделать второй вариант, а задача как раз баланс, дать системе самой определять на сколько важны связи эмбеддингов и на сколько важна частотность эмбеддингов.


        1. YH7H22 Автор
          17.05.2026 16:58

          Ваша аналогия с "энергией" перехода и энтропией была бы абсолютно верной, если бы мы говорили о финальном слое классификатора (LM head / unembedding). Но мы говорим о матрицах Q и K, и здесь эта логика дает осечку из-за непонимания роли attention в архитектуре.

          1. Attention это не матрица переходов. Механизм внимания не предсказывает следующее слово. Он не решает, "произнести А или О". Его задача поиск релевантного контекста внутри текущего окна. Если мы не нормализуем Q и K, то токены с огромной нормой превращаются в гравитационные аномалии. Запятая, предлог "и", точка - они обладают максимальной "энергией". Без QK Norm модель вынуждена тратить огромную вычислительную емкость просто на то, чтобы "отвернуться" от запятой и посмотреть на редкое, но критически важное слово в контексте. Нормализация Q и K возвращает маршрутизацию в плоскость семантических углов.

          2. Где на самом деле живет энергия и частотность?
          Вы пишете: "Ломая эту информацию, мы ломаем распределение". Ничего подобного. Вся статистика частотности, "затраты на переход" и априорные вероятности токенов "А" и "О" надежно хранятся в двух других местах:

          • В векторах value и внутри слоев MLP.

          • В матрице unembedding перед финальным softmax (которая и превращает скрытое состояние в вероятности словаря).
            Мы нормализуем только ключи и запросы. Трансформер по-прежнему прекрасно знает, что буква "ы" встречается реже, чем "а", потому что эта информация зашита в финальном слое проекции, который мы не трогаем.

          3. Про энтропию и температуру.
          Ваша мысль про "динамическую температуру для поиска баланса" в самое яблочко. Именно так на практике и реализуется QK Norm в современных архитектурах.


          Мы не просто делаем косинусное сходство. После нормализации скалярное произведение обязательно умножается на обучаемый скаляр (learnable temperature/scale) или вектор. Модель сама выучивает, когда ей нужно сделать softmax предельно острым (низкая энтропия), а когда равномерным (высокая энтропия). Мы не лишаем ее этой способности, мы просто отвязываем эту способность от сырой длины вектора, которая неконтролируемо растет с глубиной сети и ломает градиенты.


          1. proxy3d
            17.05.2026 16:58

            Вы пытаетесь отвечать через LLM. Я предлагаю вам сделать иначе, чтобы лучше понять что такое Attention, скормить это вашей LLM (вопрос-ответ можно не скармливать, это уточнения которые были у людей по коду, я вынес как отдельные пояснения):

            https://disk.yandex.ru/d/UNyaCbYUm-jpWw

            Я привел вам ссылки и на код, и на текст и визуально показал.

            Предлагаю скормить их вашей модели в том порядке как это указано (это специально было адаптировано для LLM). И после этого, предложить ей дать оценку, вашему предположению (не пытаясь ее переубедить).

            Формально это частично объясняет то, о чем я написал выше https://t.me/greenruff/2596
            Формально это частично объясняет то, о чем я написал выше https://t.me/greenruff/2596

            Для большей строгости можно даже скормить ей код архитектуры, так как в ней Attention реализован как я описал выше (модель отлично обучается):

            https://disk.yandex.ru/d/eJg7Nc__qIeQ9A

            Без этого контекста, рассуждения мало эффективны. Так как выше математически доказанная модель, которая так же была проверена на примере архитектурного кода.

            https://t.me/greenruff/2499

            Что касается регулирования температуры, то как раз я имел ввиду, что вам нужно регулировать температуру внутри Attention, как это показано на рисунке выше. Тогда модель сама решает, когда ей нужно увеличить ее, а когда понизить внутри Atention.


            1. YH7H22 Автор
              17.05.2026 16:58

              Слушайте, предложение "скормить код LLM" звучит немного иронично, учитывая, что простыня из 20 итераций класса HierarchicalMHA с минимальными изменениями выглядит как классический диалог с LLM.

              Еще поздравляю с лоссом 6.4! Правда, для контекста: на таком лоссе модель обычно считает, что "Коты это женщина Владимир (193)". Это не "улавливание структуры", это классический шум недообученной сетки, которая только нащупала статистику символов. Выдавать это за практическое подтверждение теорем это очень смелая идея.

              Прочитав ваш код внимания у меня для вас плохие новости: вы изобрели трансформер.
              Несмотря на заявления в посте, что это "НЕ трансформер", ваш код на 90% состоит из:

              1. MultiHeadSelfAttention

              2. Softmax(Q*K/T)

              3. Linear Projections

              4. Residual Connections


              1. proxy3d
                17.05.2026 16:58

                "Простыня" была специально адаптирована, чтобы ее могла понимать LLM (и другим было проще скармливать). Я дал вам ссылку, потому что ваши ответы выше написаны нейронкоц, поэтому предложил скормить ей материал.

                Что касается loss, то прежде чем делать выводы, надо было увидеть что это обучения длилось 1 день. Где целью являлось подтвердить математическую модель.

                Я предлагаю подтвердить на обучении модели свои утверждения. Я провел вам не только мат модель, но и ее реализацию и показатели обучения.

                В коде нет QV и прочего, вы посмотрели на развитие архитектуры, когда постепенно она приближалась к правильной.

                Я же говорю, про последнюю реализацию HierarchicalMHA_20, которая есть в обоих ссылках. В ней нет классического attention и голов.

                Повторюсь, целью было показать, что совершенно другая форма реализации, совсем не похожая на attention работает согласно математической модели. Как уже сказал, обучение было 1 день и модель уже строит слова, ставит скобки, пытается делать связи.

                В вашем случаев, вам просто следует показать:

                • Математически, что ваши предположения на чем то основаны

                • Обучить небольшую модель, хотя бы сутки или несколько дней с вашим решением и без него и показать, что результат формирования связей (не loss) действительно отличается.

                Тогда вопросы отпадут сами собой. А то сейчас вы отвечаете с помощью сетки, не привели примеры что это работает. Если говорить корректно, вы выдвинули гипотезу, которую надо либо подтвердить или опровергнуть.


                1. YH7H22 Автор
                  17.05.2026 16:58

                  Давайте проясним пару моментов, чтобы дискуссия не превращалась в спор о терминах.

                  Про "мою гипотезу".
                  Мне очень льстит, что вы приписываете авторство QK Norm мне, но это не так. Это не "моя идея", которую нужно проверять сутками на видеокарте. Это признанный архитектурный стандарт, описанный в десятках статей (например, "Query-Key Normalization for Transformers")

                  Её эффективность доказана на бенчмарках уровня MMLU и GSM8K при обучении моделей с миллиардами параметров. Требовать от меня "прогнать тесты на маленькой модели", чтобы доказать пользу QK Norm это всё равно что требовать от инженера nvidia доказать пользу gpu в калькуляторе. На масштабе 10M параметров adamw прожует любую нестабильность, но на масштабе 27B без этого обучение просто взорвется. (Откройте исходный код нашумевшего talkie-1930, и вы увидите там QKN)

                  Про архитектуру.
                  Вы говорите, что там нет классического attention и голов. Но давайте откроем ваш код.
                  Функция forward:
                  attn = F.softmax(score, dim=-1)
                  out = torch.einsum('b n i j, b n j d -> b n i d', attn, v0)

                  вы берете веса (из матрицы v0), вычисляете коэффициенты их важности через softmax и делаете взвешенную сумму (через einsum). Это и есть определение механизма Attention.

                  То, что вы заменили скалярное произведение на разность функций, не делает это не-трансформером.

                  Про лосс и результат.
                  Сутки обучения на современной карте должны давать текст, а не случайный набор слов. Если за 24 часа модель класса "не-трансформер" не научилась ничему, кроме скобочек, это повод задуматься о эффективности алгоритма, а не о подтверждении теоремы.

                  Моя логика основана на линейной алгебре: если мы нормализуем векторы, мы переходим от борьбы амплитуд к анализу углов. Это математический факт, который не требует "суток обучения", чтобы быть истинным.


                  1. proxy3d
                    17.05.2026 16:58

                    Не готов объяснять разницу, если вы не попытались понять что вам дали.

                    Если вы говорите, что описанный вами подход рабочий и есть исследования на эту тему и показания эффективности, то это следовало привести в статье. Сейчас это выглядит как гипотеза, которую вы описали, но не обучили модель чтобы показать разницу и не привели исследования других, где показана разница.

                    Буду рад ошибаться, и с полостью почитаю эти исследования.


                    1. YH7H22 Автор
                      17.05.2026 16:58

                      Справедливое замечание. Формат статьи изначально задумывался как мыслительный эксперимент для инженеров, чтобы объяснить физику процесса "на пальцах", поэтому я не стал перегружать текст библиографией.

                      Но раз вы просите исследования и доказательства эффективности с удовольствием делюсь. Моя статья, это не личная гипотеза, а попытка объяснить то, к чему индустрия уже пришла при масштабировании трансформеров.

                      "Scaling Vision Transformers to 22 Billion Parameters".

                      В этой работе исследователи прямо столкнулись с проблемой нестабильности при обучении гигантских сетей. В разделе 3 они математически описывают, как отказ от масштабирования длины векторов и переход к нормализованным Q и K спасает сеть от расхождения и коллапса энтропии внимания.

                      Gemma 3.

                      В архитектуре gemma 3 нормализация query и key введена как одно из главных архитектурных отличий от второй версии. Это было сделано именно для того, чтобы удержать модель в стабильном состоянии при обучении на триллионах токенов.


                      1. proxy3d
                        17.05.2026 16:58

                        Спасибо почитал, да вижу что в ViT это убрало проблему больших значений в классическом Attention при большом кол-ве блоков.

                        Но это компромисс, так как теряется информация о норме вектора. И как замечают на разных площадках, такой поход снижает "остроту" внимания, модель хуже работает на инференсе. И из того, что я вижу в других работах, там как раз пытаются решить эту проблему нормализации, через добавление обучаемой температуры:

                        Swin Transformer V2: Softmax(τ*cos(Q,K)​+B)V , τ - температура

                        CosScale / Scaled Cosine Attention: β(i,j) ​= Exp(α*cos(θ(i, j)​)) / Sum(Exp(α*cos(θ(i, l)​))) , α температура

                        Теперь вижу, что в крупных ViT решали таким образом взрыв значения, теряя информацию о длине вектора как компромисс. Но это так же приводит к различным проблемам, которые сейчас пытаются решить за счет обучаемой температуры.


                      1. Flokis_guy
                        17.05.2026 16:58

                        Обучаемая температура при QK-нормализации крайне важная вещь, потому что без неё трансформер будет находиться в постоянном жёстком диффузном режиме. Да, и без QK-нормализации мы можем найти глобальную разницу между максимальным и минимальным логитом, и это значение будет меньше бесконечности, то есть в любом случае будет последовательность, где порядок весов 1/n будет доминировать. Но при QK-нормализации без температуры разница будет не выше 2, и это очень сильное ограничение: один вход уже не сможет забрать при длине, равной 10, больше половины.

                        Да, он сможет работать, извлекать информацию, но эффективная длина контекста будет намного меньше, чем у обычного трансформера.

                        Также стоит отметить, что пока температура является скаляром, мы накладываем ограничение, то есть обычный трансформер в этом плане обладает большей выразительностью. Даже если сделать его матрицей, модель становится выразительнее, но всё равно уступает классическому трансформеру.


                      1. YH7H22 Автор
                        17.05.2026 16:58

                        Это правда что скалярное произведение L2-нормализованных векторов строго заперто в диапазоне [−1,1], максимальная разница логитов равна 2, и без температуры softmax впадает в кому.

                        Но дальше вы делаете ошибку, считая, что "бесконечная выразительность" (которой обладает обычный трансформер) это безусловное благо.

                        как вы собираетесь обучать гигантскую модель (на 20B+ параметров), если эта выразительность может улетать в бесконечность?

                        Что такое выразительность обычного трансформера на практике? Это способность длины вектора неконтролируемо расти по мере прохождения через десятки слоев. На масштабах сотен миллиардов параметров скалярное произведение начинает выдавать значения логитов вроде 100, 500 или 1000.

                        К чему это приводит?

                        Переполнение типов: В BF16 вы мгновенно ловите NaN, и обучение взрывается.

                        Коллапс внимания: Softmax от таких огромных логитов превращается в жесткий argmax. Модель начинает смотреть строго на один токен, градиенты затухают до нуля, и обучение останавливается.


                      1. Flokis_guy
                        17.05.2026 16:58

                        Видимо, мы плохо друг друга поняли, потому что в моём понимании выразительность это способность что-то выразить. В данном случае это сводится к тому, что функция может аппроксимировать. И в случае трансформера он не может аппроксимировать всё.

                        Но ок, буду отвечать относительно того, как вы определили:

                        Что такое выразительность обычного трансформера на практике? Это способность длины вектора неконтролируемо расти по мере прохождения через десятки слоев.

                        Неконтролируемый рост с точки зрения математики, это тот случай, когда у нас значения улетают в бесконечность. Но есть одно но: на практике мы всегда работаем с трансформером, который имеет ограниченное количество слоёв. И если мы возьмём функцию вида: принимаем x, получаем нормы Q и K с первого по второй слой, с первого по третий слой и так далее, то она всегда будет глобально ограничена сверху и снизу. То есть при последовательности, стремящейся к бесконечности, мы всегда имеем стабильность BIBO. Да, значение может быть большим, но всё равно ограниченным.

                        Softmax от таких огромных логитов превращается в жесткий argmax.

                        В attention как раз важно больше не абсолютное значение логита, а относительное. Поэтому, хоть логит и будет равен миллиарду, если разброс маленький, то всё ок. Абсолютное значение важно для стабильности оптимизации.

                        По поводу того, что я писал про выразительность, суть в том, что если мы берём классическую QK-нормализацию с обучаемой температурой, даже в виде матрицы, то выразительность падает. То есть данная система не может быть плотной в классе функций обычного QK, она не может, например, обеспечить равномерную аппроксимацию. И это на себя берут MLP и последующие слои, если в этом появляется надобность.

                        В контексте оптимизации QK-нормализация убирает градиент вдоль q и k, в отличие от оригинального трансформера. А в моей архитектуре вообще бьёт напрямую по flexible selective retrieval.

                        Я лично считаю, что вместо QK-нормализации лучше ввести прямой контроль на нормы матриц весов в Q и K (pre-LN очевидно у нас используется), сделать нормы обучаемыми. Только там на масштаб температуры влияет ещё и размерность, поэтому нужно параметризовать так, чтобы они не участвовали. По выразительности это эквивалентно, даёт ещё один путь градиентам. А при обучении просто ввести регуляризацию. В итоге это будет эвристика, как и QK-нормализация, но с равной выразительностью относительно классического трансформера.


  1. YH7H22 Автор
    17.05.2026 16:58

    не туда ответил