Если вы когда-нибудь собирали языковую модель с нуля, вы наверняка знаете про Weight Tying (Связывание весов). Этот трюк был предложен в 2016 году в статье «Using the Output Embedding to Improve Language Models» и популяризован OpenAI в архитектуре GPT-2.
Суть предельно проста и математически изящна: мы берем матрицу входных эмбеддингов Win (размером Vocab_Size × Hidden_Dim) и используем её же транспонированную версию как выходной слой классификатора Wout
Смысл? Матрица словаря — самая жирная часть модели. Для словаря в 50 000 токенов и скрытой размерности 4096, одна такая матрица весит сотни мегабайт. Связав их, мы экономим колоссальный объем параметров. К тому же, это считалось отличным способом регуляризации.
Но на самом деле мы совершаем архитектурное преступление. Мы заставляем один и тот же тензор выполнять две прямо противоположные геометрические задачи. И платим за это уничтожением градиентов.
Геометрия чтения против геометрии письма
Чтобы понять масштаб проблемы, давайте подумаем, какова роль токена на входе в трансформер, и какова его роль на выходе.
1. Входной эмбеддинг (Чтение и Контекст)
Задача Win закодировать смысл слова для дальнейшей обработки. На этом этапе сети выгодно группировать (сжимать) похожие понятия. Для входных слоев слова «идти», «шел», «шагал» несут почти идентичную смысловую нагрузку.
Сеть располагает их векторы максимально близко друг к другу в латентном пространстве, чтобы внимание могло абстрагироваться от морфологии и работать со смыслом.
2. Выходной слой (Письмо и Точность)
Задача Wout это классификация. Трансформеру нужно выбрать один единственный правильный токен из 50 000 вариантов. И здесь геометрическая задача меняется на противоположную.
Если на входе «идти» и «шел» — это одно и то же, то на выходе это катастрофически разные вещи! Если сеть предсказывает следующее слово в предложении «Вчера он по улице…», она должна железобетонно выбрать «шел», а не «идти». Выходная матрица должна максимально раздвигать (сепарировать) грамматические и морфологические формы в пространстве, чтобы функция Softmax не «размазалась» между синонимами.
В чем абсурд Weight Tying: мы заставляем сеть использовать одну и ту же матрицу и для сжатия смыслов, и для их точечной сепарации.
Физика уничтожения градиентов
Давайте посмотрим на процесс обучения и увидим, как эта шизофрения разрушает оптимизацию.
Во время обратного прохода градиент течет от loss функции вниз. Сначала он проходит через выходной слой Wout Оптимизатор видит ошибку в предсказании токена и говорит матрице:
«Эй, векторы слов ‘кошка’ и ‘кошки’ расположены слишком близко, Softmax запутался. Раздвинь их!»
Формируется градиент ΔWin который направлен на сближение векторов.
Но постойте! Wout и Win это один и тот же кусок памяти!
Что делает оптимизатор? Он берет два противоположно направленных градиентных вектора и складывает их. Происходит физическая деструктивная интерференция градиентов (Gradient Cancellation).
Они частично гасят друг друга. Матрица весов оказывается в состоянии перетягивания каната: она не может ни нормально сжать пространство для входа, ни нормально растянуть его для выхода. Оптимизатор тратит огромную вычислительную емкость на то, чтобы найти компромиссный локальный минимум, вместо того, чтобы минимизировать Loss.
Выход из иллюзии: почему SOTA-модели развязывают веса
В эпоху моделей на 100-300 миллионов параметров (GPT-2, BERT), регуляризационный эффект от связывания весов перекрывал вред от интерференции градиентов. Модели не хватало данных, и связывание не давало ей переобучиться.
Но сегодня мы обучаем LLM на триллионах токенов. Риск переобучения минимален, а на первое место выходит выразительная способность сети. Нам нужно, чтобы каждый параметр работал на 100%.
Да, модель становится толще на пару гигабайт. Но взамен она получает свободу. Входная матрица строит чистую семантическую топологию, а выходная матрица выучивает идеальные разделительные гиперплоскости для предсказания токенов. Градиенты больше не сталкиваются лбами.
Заключение
Индустрия машинного обучения часто страдает от карго культа. Инженеры копируют архитектурные решения из старых пейперов просто потому, что «так делают все», не задумываясь о том, какую физику градиентов они закладывают в свои модели.
Связывание весов это красивый математический хак из 2016 года, который в 2026 году стал бутылочным горлышком. Не заставляйте вашу модель читать и писать одним и тем же полушарием. Разделите эмбеддинги, позвольте градиентам течь свободно, и вы удивитесь, насколько быстрее сойдется ваш Loss.
ссылка на оригинал статьи https://habr.com/ru/articles/1036188/