Обычный трансформер движется строго снизу вверх по слоям. Каждый слой что-то добавляет во внутреннее состояние и передаёт его дальше.
И вот представим, что на 30-м слое модель наконец поняла связь между двумя кусками текста, которую было бы очень полезно знать ещё на 10-м слое.
Поздравляю. 10-й слой уже пройден. Назад дороги нет.
В новой работе авторы предлагают довольно красивый способ эту проблему обойти — и самое интересное здесь даже не сама обратная связь между слоями, а что именно они передают назад.
Можно было бы взять состояние глубокого слоя целиком и засунуть его обратно в ранний слой. Такие методы уже были.
Но внутреннее состояние трансформера накопительное:
глубокое состояние = старое состояние + всё, что последующие слои успели к нему добавить.
Поэтому, отправляя его назад целиком, мы тащим огромное количество уже известной информации.
Авторы вместо этого берут:
Δ = состояние глубокого слоя − состояние раннего слоя
То есть буквально выделяют:
«Что нового модель успела понять между этими двумя слоями?»
И возвращают назад только эту добавку.
Получается своеобразный канал передачи инсайтов из будущего.
Например, слой 8 передал представление дальше. К слою 25 модель уже разобралась, что местоимение относится именно к конкретному объекту, связала несколько фактов или вытащила нужную сущность из контекста.
ReFlux может взять изменение состояния между слоями 8 и 25 и добавить его обратно к состоянию раннего слоя.
Теперь следующие вычисления ранних слоёв начинаются уже с учётом того, что модель «поняла позже».
Причём эксперимент показывает, что именно Δ работает заметно лучше полного состояния. На Gemma 3 и Qwen 3 передача полного глубокого состояния снижала перплексию примерно на 3–4%, тогда как передача одной Δ давала примерно 5–8% в тех же условиях.
Перплексия — грубо говоря, мера того, насколько модель «удивляется» следующему токену. Чем она ниже, тем лучше модель предсказывает продолжение текста.
То есть падение перплексии здесь означает, что после такого возврата информации модель действительно начинает лучше понимать контекст, а не просто получает красивую внутреннюю перестановку векторов.
Но вручную выбирать пары слоёв было бы слишком скучно, поэтому поверх замороженной модели авторы ставят небольшой маршрутизатор.
Он смотрит на текущий контекст и решает:
какой глубокий слой → в какой ранний слой отправить Δ
и насколько сильно её туда добавить.
Сами веса исходной LLM при этом вообще не меняются — обучается только маршрутизатор. Для Qwen3-4B он занимает около 2,2 млн параметров, то есть на фоне основной модели это мелочь.
А дальше начинается самое интересное.
У ReFlux есть два режима:
В первом модель действительно делает второй проход: сначала получает глубокие состояния, вычисляет Δ, затем возвращает их назад и прогоняет токен ещё раз. Качество лучше, но вычислений примерно в два раза больше.
А вот второй режим гораздо веселее.
Вместо повторной обработки того же токена вычисленная Δ сохраняется и передаётся следующему токену. То есть модель как бы всё время тащит за собой небольшую записку:
«кстати, на предыдущем шаге глубокие слои вот что поняли».
И следующий токен начинает обработку уже с этой поправкой. Дополнительного прохода через всю модель нет.
В тестах такой потоковый режим сохранил 1× вычислений основной модели, а реальное время генерации выросло всего примерно до 1.02–1.08×.
На Qwen3-4B, например, задержка выросла с 16.05 до 17.35 мс на токен, при этом перплексия на C4 упала с 21.6 до 19.0.
C4 — это огромный очищенный набор обычных текстов из интернета. Здесь он используется не как тест на математику или знания, а как проверка базовой способности модели предсказывать нормальный текст.
Но особенно красиво это проявилось там, где нужно связывать несколько фактов. На обычных восьми тестах средний прирост составил примерно +2 пункта, а на задачах с несколькими последовательными переходами между фактами — около +4.7 пункта.
Например, на тесте 2WikiMultiHopQA:
Qwen3-8B: 44.5 → 49.5%
Gemma3-4B: 38.5 → 43.2%
2WikiMultiHopQA — это тест, где ответ нельзя просто вытащить из одного предложения. Нужно соединить несколько фактов, например сначала понять, кто снял фильм, затем найти биографию этого человека и уже оттуда получить окончательный ответ.
То есть как раз тот случай, когда информация, вычисленная моделью на одном этапе, должна пригодиться ей дальше.
И здесь авторы делают, на мой взгляд, очень правильное разделение.
Есть проблема недостатка вычислений.
Модель ещё не нашла ответ — ей действительно надо дать больше времени подумать. Для этого хорошо работает цепочка рассуждений.
А есть другая проблема:
модель ответ уже где-то внутри вычислила, но нужный участок сети больше не имеет к этому вычислению нормального доступа.
И тогда заставлять её рассуждать ещё 500 токенов — немного похоже на сотрудника, который уже нашёл нужный документ, но вместо того чтобы переслать его в соседний отдел, начинает искать его заново.
ReFlux пытается чинить именно доступ к уже выполненному вычислению.
Это хорошо видно на 2WikiMultiHopQA: у Qwen3-8B обычная цепочка рассуждений почти ничего не дала — 44.5 → 44.7%, а ReFlux дал 44.5 → 49.5%.
А вот на GSM8K ситуация обратная.
GSM8K — это стандартный тест из нескольких тысяч школьных текстовых задач по математике, где модели обычно действительно нужно последовательно провести несколько вычислений.
И там дополнительные шаги рассуждения помогают сильнее.
Что вполне логично: если промежуточного ответа ещё нет внутри модели, никакой обратной пересылкой его не достанешь. Его сначала надо вычислить.
Мне эта работа нравится именно сменой точки зрения.
Обычно мы пытаемся сделать модель умнее, добавляя ей вычисления.
А здесь вопрос другой:
может быть, вычислений уже достаточно — просто результаты этих вычислений плохо перемещаются внутри самой модели?
В таком случае очередные +10 миллиардов параметров или +1000 токенов рассуждения могут быть не единственным вариантом.
Иногда мозгу не надо думать больше.
Надо просто дать нижним слоям почитать записки верхних.
arXiv: 2609.32457