avatar
Сиолошная
@seeallochnaya
01.01.2026 18:07
mHC: Manifold-Constrained Hyper-Connections

DeepSeek переосмыслили residual stream в трансформерах, развивая прошлогодние идеи исследователей из ByteDance. Видимо, это архитектурное решение будет использоваться в DeepSeekV4, в статье на это есть намек.

С момента появления в ResNet в 2016-м году и до наших дней слои в моделях ставят друг на друга так, что каждый слой формирует некоторую «добавку» к тому, что приходит ему на вход. Через всю модель проходит один большой вектор (для каждого токена), в который трансформер может писать информацию (обновляя вектор) и читать её в будущих слоях.

Например, выход 4-го слоя будет равен выходу третьего плюс некоторая функция от выхода третьего: X_4 = X_3 + F(X_3). Если модель решит, что так будет лучше — она может почти ничего не добавлять, не менять и прокидывать информацию в векторе дальше. Видел исследования, которые показывают, что ближе к последним слоям второе слагаемое в сумме становится очень маленьким, то есть почти не влияет на результат (я про это рассказывал вот тут в лекции на примере обрубания последней четверти GPT-2).

Это очень важно для обучения глубоких нейросетей, состоящих из большого количества слоёв — потому что позволяет градиентам (сигналу от ошибок при обучении) протекать до самых первых слоёв. Именно из-за residual и начали появляться всё более глубокие сети. Но в векторе, который проходит через модель, можно хранить лишь определённое количество информации — и хоть размер вектора сильно вырос за последние годы, это всё равно вносит некоторые ограничения. Хочется-то больше!

ByteDance предложили сделать несколько параллельных стримов, по которым будет течь информация, а чтобы не увеличивать количество параметров в слоях (FFN и Self-Attention) каждый из них всё ещё работает лишь с одним вектором того же размера. Трюк в том, что обучаются матрицы, задающие веса в комбинации этих параллельных стримов.

Например, пусть вместо 1 вектора размерности C каждый токен будет представлен 4 векторами такой же размерности. В самом начале модели они просто дублируются и являются одинаковыми, но в более поздних слоях становятся разными. Эти 4 вектора взвешенно усредняются в один вектор (и веса обучаются, это логистическая регрессия из C в 1) — и такой «обычный» по размеру вектор уже обрабатывается FFN/Self-Attention слоем.

Gemini посоветовала дать аналогию для нетехнической аудитории — считайте, что для каждого слова есть труба, по которой течет информация. А тут просто вместо 1 трубы делаем 4.

На выходе слоя делается обратное преобразование, из одного эмбеддинга (вектора) в 4, тоже с разными весами. Но теперь эти 4 эмбеддинга возвращаются не в свои 4 стрима, а в их смесь, которая получается перемножением на обучаемую матрицу 4x4. Это перемножение как бы задаёт преобразование вида «в новый эмбеддинг №1 возьми 80% информации из старого эмбеддинга №1 и добавь 20% из №2». Это нужно для того, чтобы лучше проявить тот или иной тип информации — например, первый стрим из четырех может отвечать за семантику, второй за синтаксис, третий за знания и так далее. И для каждого слоя нужна своя пропорция для решения определённой задачи.
👍 85
❤‍🔥 31
🔥 12
7
🤔 3
🤡 2
👨‍💻 2
9 130 16.8K

Обсуждение 9

Обсуждение не доступно в веб-версии. Чтобы написать комментарий, перейдите в приложение Telegram.

Обсудить в Telegram

Сиолошная

76.3K
Канал SeeAll'а с новостями (и мыслями о них) из мира NLP, VR и космоса.

Более подробно смотри в первом сообщении в канале (оно закреплено). А еще у нас есть чат! Заходи: https://t.me/+i_XzLucdtRJlYWUy
Открыть в Telegram