Всем привет. В этой статье мы рассмотрим идею, которая даст возможность нейросетям строить не только эмбеддинги токенов, но и «смысловые» эмбеддинги. Итак, план:

  • Рассмотрим основную проблему нынешних LLM-моделей.

  • Рассмотрим идею «смыслового» эмбеддинга и то, как эта идея теоретически может помочь в обучении нейросетей.

  • Рассмотрим плюсы и минусы такого подхода.

  • Подведем итоги.

Ну что, приступим!

Проблема современных LLM-моделей

Современные LLM-модели являются чрезвычайно сложной вероятностной машиной, которая предсказывает следующий токен на основе контекста.

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

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

Можно сделать вывод, что просто информации о последовательности и одного эмбеддинга (например, эмбеддинг + Attention или RNN/LSTM) недостаточно, так как, как мы говорили выше, модель не строит небанальные связи, которых нет в обучающей выборке. Это теоретически бы повысило устойчивость модели к последовательностям, которых она не видела в обучающей выборке, за счёт того, что она выявляет небанальные связи между группой (я объяснял ранее).

А подробнее — рассмотрим далее.

Идея и ее разбор

У нас есть слова. Очень много слов. Какую бы пару мы ни взяли — мы найдём общую связь, пусть даже и косвенную, между каждым словом в этой паре. Давайте разберём на примере. Нам даны слова:

  1. Картошка

  2. Дверь

  3. Человек

  4. Батарея

Кажется, просто слова, которые ничем не связаны. Но нет! Смотрите, сколько у них общего:

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

  • Каждое слово — русское, имя существительное, склоняемое по падежам, и является часто используемым словом.

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

Если искать общие связи — их выйдет очень много. Что я этим хотел показать? А я хотел показать то, что даже в такой группе слов, где кажется, что связей нет, — они есть, хоть и не банальные и косвенные.

Так вот, мы разделим все N слов из словаря модели на K групп, по X случайных слов в каждой так, чтобы на каждую группу (X токенов) приходился 1 вектор размерностью d_model, и суммарное количество слов во всех группах было равно количеству слов в словаре (N). Обязательно сделаем эти группы обучаемыми и убедимся, что слово, которое находится в одной группе, не находится в любой другой группе (ибо потом будем мучиться с вопросом, какую группу брать, если это слово окажется в R группах, что создаст дополнительную сложность).

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

Обучаемый вентиль — это некий распределитель внимания, который распределяет внимание между двумя эмбеддингами — смысловым и основным. Желательно, чтобы он не отдавал всё внимание одному, минуя второй. Так что формула будет:

K_1 = \sigma\left(\ W_1\right)K_2 = \sigma\left(\ W_2 \right)S = \mathrm{Softmax}(K_1, K_2)G = \mathrm{Embedding}(\text{word}) \, S[0] + \mathrm{MindEmbedding}(\text{word}) \, S[1]

И далее — прогоняем этот G в основной механизм сети.

Зачем же нам Sigmoid?

Представим ситуацию: один вес равен −1e9, а второй — 1e9. Если подать эти веса в Softmax без Sigmoid, мы получим следующую картину: один забирает всё, второй — ничего. Это противоречит поставленной выше задаче: «Желательно, чтобы он не отдавал всё внимание одному, минуя второй».

Если же прогнать каждый вес через Sigmoid, картина меняется. Первый вес (-1e9) после Sigmoid стремится к нулю и, вероятно, будет округлён до машинного нуля; второй (1e9) после Sigmoid стремится к единице и с большой вероятностью также будет округлён. Тогда на вход в Softmax приходят не −1e9 и 1e9 (что убило бы нашу задачу, ведь выход Softmax был бы равен 0 и 1 с учётом округления), — а 0 и 1. Такой вход даёт на выходе Softmax значения 0.269 и 0.731, что как раз удовлетворяет нашему правилу.

Плюсы и минусы смыслового эмбеддинга

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

Плюс

Минус

Модель вынуждена найти общую связь между токенами в одной группе.

Этот подход может дестабилизировать обучение модели за счёт того, что ей придётся работать с группой токенов как с одним объектом, что усложняет задачу.

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

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

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

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

На самом деле, если продолжать искать плюсы и минусы — их будет очень много. Так что я перечислил только 3 самых основных плюса и минуса, что достаточно для представления этой идеи.

Итог

Понятно, что без сравнения двух моделей: со смысловым эмбеддингом и без — точного результата мы не получим. Но примерно мы можем сказать, что модель будет вынуждена выучить некие связи и представить эту группу как единое целое.

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


  1. pureooplover
    01.10.2026 17:50

    Хорошая идея, но вот что я бы сказал по статье:

    1. Зачем везде курсив и жирное вставлять!?!?!? Это некрасиво выглядит...

    2. Слишком короткая - хотя бы плюсы и минусы бы добавили или более подробный (хотя бы теоретический) разбор вашей идеи.

    3. Бенчмарки должны быть - не обязательно сравнения, хотя бы покажите что модель с вашими смысловыми эмбеддингами вообще работает, а не скатывается в loss 4 или наоборот, оверфиттинг, и всё такое.

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

    И ещё - правильно было бы писать не как:

    \frac{1}{1 + e^{-|W_1|}}

    , как у вас, а вот так:

    \sigma(|W_1|)

    \sigma- это сигмоида.


    1. radmirryan Автор
      01.10.2026 17:50

      1. Большое спасибо за обратную связь! Сейчас я обучаю модель с использованием этой идеи, так что бенчмарки будут. В ближайшее время отредактирую пост и исправлю все недочёты, которые вы отметили.

      2. Насчёт сигмоиды я знаю, что она выражается в формулах так. Но в основном я делал ставку на то, что кто-то может не знать формулу сигмоиды.


      1. pureooplover
        01.10.2026 17:50

        Вы лучше уже новый пишите, потому что старый уже мало кто заметит.