В первой части мы остановились на неудобном вопросе. Если языковая модель строит внутри себя представления объектов и отношений, почему эти представления не существуют в виде устойчивой структуры, к которой система может обращаться независимо от конкретной последовательности токенов?
Мы предложили возможный ответ: добавить слой семантических полюсов — устойчивых точек, к которым система возвращается, прежде чем двигаться дальше. Подробнее об этом — в первой части цикла.
Но нарисовать карту просто. Гораздо труднее заставить систему построить её самостоятельно — и сделать так, чтобы эта карта отражала структуру данных, а не превратилась в ещё один набор скрытых векторов с красивым названием.
Откуда модель должна знать, что два состояния относятся к одному понятию? Кто решает, где проходит граница между двумя понятиями? Что происходит с понятием, значение которого зависит от контекста? И как обучить систему дискретной карте, если почти вся нейросетевая оптимизация построена вокруг непрерывных градиентов?
Здесь заканчивается архитектурная схема и начинается инженерия.
Карта не даётся заранее
Первый соблазн — поступить просто. Взять словарь понятий, назначить каждому собственный вектор, заставить модель выбирать соответствующий.
кошка → pole_001 собака → pole_002 автомобиль → pole_003
Но такая система почти сразу упирается в ограничение. Человеческие понятия не образуют фиксированный словарь. Одно слово обозначает разные вещи. Разные слова — практически один объект. А одно понятие состоит из подпонятий, которые в одном контексте нужно считать единым целым, в другом — различать.
Возьмём слово «ключ». Физический ключ от двери. Ключ в криптографии. Ключ в базе данных. Ключ музыкального произведения. Ключ как объяснение некоторого вопроса. Если заранее создать один полюс KEY, он окажется слишком грубым. Если создать отдельный для каждого значения — кто решает, где заканчивается одно и начинается другое?
Семантическая карта не может быть словарём. Она должна возникать из самой динамики представлений.
Что представляет полюс
Полюс не обязан означать слово. И даже конкретный объект. Он может соответствовать устойчивой конфигурации признаков, которая регулярно возникает в данных.
Представим, что модель много раз встречает ситуации: человек намеренно меняет состояние объекта с помощью инструмента. Конкретные предложения совершенно разные, но за ними возникает похожая структура отношений. Если она достаточно устойчива, система может сформировать вокруг неё координату.
Такой полюс означает не слово «действие», а устойчивый паттерн отношений. Это принципиально. Если полюс привязан к слову — мы строим улучшенный словарь. Если привязан к конфигурации представлений — появляется карта, работающая независимо от формулировки.
Но ближайший вектор ничего не гарантирует
Формально всё выглядит знакомо. У нас есть скрытое представление z и набор обучаемых векторов p₁, p₂, …, p_K. Система выбирает ближайший:
z → argmin ‖z − pᵢ‖² → pᵢ*
Это vector quantization. Идея не новая.
Но мы не хотим просто сжать представление. Мы хотим семантическую систему координат. Разница кажется небольшой, а последствия огромные. Если задача — компрессия, полюсам достаточно хорошо покрывать распределение входов. Если задача — карта смысла, необходимо, чтобы полюса приобрели устойчивую интерпретируемую структуру.
И вот здесь появляется проблема. Представим, что после обучения мы смотрим на полюса и обнаруживаем: один соответствует «предложениям длиной от 12 до 17 токенов, содержащим числительное». Другой — «текстам, в которых часто встречается двоеточие». Третий — «определённой статистической комбинации синтаксических признаков».
С технической точки зрения всё работает. Семантической карты при этом нет.
Нужно отличать кластеризацию от семантической организации. И для этого нужен тест.
Как проверить, что карта действительно семантическая
Один критерий — устойчивость при перефразировании. Два очень разных выражения, описывающие одну ситуацию, должны активировать близкие полюса.
«Самолёт задержали из-за сильного снегопада».
«Из-за метели рейс пришлось перенести».
Лексически предложения отличаются. Причинная структура похожа. Если карта отражает семантику, изменение формулировки не должно разрушать координаты.
Другой критерий — контекстное разделение. Слово «ключ» в «он вставил ключ в замок» и «система использует закрытый ключ» должно приводить к разным состояниям, несмотря на одинаковую последовательность символов.
Получается двойная проверка: одинаковый смысл сохраняется при изменении формы, разный смысл разделяется при сохранении формы. Это содержательнее, чем perplexity.
Таблица 1. Как проверить, что карта действительно семантическая
| Тест | Что проверяем | Ожидаемое поведение карты | Если тест провален |
|---|---|---|---|
| Перефразирование | Устойчивость смысла к изменению формы | Близкие формулировки активируют тот же или близкий полюс | Карта кодирует форму текста, а не смысл |
| Контекстное разделение | Различение омонимов и многозначных слов | «Ключ от двери» и «криптографический ключ» попадают в разные области | Карта слишком грубая или не учитывает контекст |
| Иерархия понятий | Связи между уровнями абстракции | «Такси» связано с «автомобилем» и «транспортом», но не сводится к ним | Карта является плоским codebook |
| Перенос | Использование уже сформированной структуры | Новая задача использует существующие полюса, а не создаёт новые для каждой формулировки | Полюса не выполняют функцию устойчивых координат |
| Редактирование | Отделение семантики от изменяемого знания | Изменение факта не требует перестройки карты | Карта хранит факты вместо структуры представлений |
| Абляция Layer 1 | Реальную полезность карты | Удаление семантического слоя заметно ухудшает хотя бы часть задач | Полюса выполняют декоративную функцию |
Проблема границы
Предположим, два состояния очень близки. Где заканчивается один концепт и начинается другой?
автомобиль автомобиль с водителем такси такси бизнес-класса транспорт общественный транспорт
Это не набор независимых категорий. Здесь иерархия, частичное совпадение, контекст. Для одного вопроса «такси» — автомобиль. Для другого — коммерческая услуга. Для третьего — элемент транспортной системы.
Если каждому уровню назначить отдельный полюс, карта станет раздробленной. Если объединить — потеряет информацию. Поэтому семантическая карта, скорее всего, не может быть плоским массивом прототипов. Ей нужна структура отношений между самими полюсами.
«Кошка» и «мышь» могут быть близки по контексту употребления, но одно не является разновидностью другого. «Автомобиль» и «двигатель» постоянно встречаются вместе, но находятся в отношении часть–целое. Одной евклидовой геометрии недостаточно. Карте нужны не только координаты, но и отношения между ними.
Дискретный выбор ломает обучение
До сих пор всё выглядело относительно спокойно. Но теперь системе нужно выбрать один из K полюсов, а операция выбора недифференцируема. Если выбор изменился с полюса 137 на полюс 138, между ними нет плавного перехода.
Нейросеть привыкла получать сигнал: «измени параметр немного в эту сторону». Дискретный выбор отвечает: «либо этот, либо другой». Градиент на скачке равен нулю почти везде. Обучение ломается.
Приходится использовать приближённые методы.
Straight-through estimator. На прямом проходе система делает настоящий дискретный выбор. При обратном распространении ведёт себя так, будто операция была непрерывной, и пропускает градиент сквозь. Это не точный градиент дискретной операции — это инженерное приближение, позволяющее оптимизатору двигаться в системе с дискретным выбором. Сам по себе он не гарантирует, что сформированные коды семантические. Он лишь делает обучение возможным.
Commitment loss. Если скрытое состояние выбрало полюс, его дополнительно подтягивают к этой точке. Иначе модель научится использовать полюса формально, передавая почти всю информацию через непрерывный канал. Тогда дискретный слой будет присутствовать на схеме, но не участвовать в вычислении. Архитектурно слой существует. Функционально его нет. Это один из самых опасных сценариев.
Скользящее обновление. Сами полюса не двигаются градиентом — это нестабильно. Они медленно дрейфуют к среднему положению всех состояний, которые к ним притянулись. Карта меняется, следуя статистике данных, а не прыгает с каждым шагом оптимизатора.
Но и здесь возникает обратная проблема. Можно слишком сильно заставить модель доверять полюсам. Тогда два состояния, относящиеся к одному широкому понятию, но отличающиеся деталями, жёстко сведутся к одному полюсу, и часть различий исчезнет. В языке маленькая деталь иногда меняет всё: «он не взял деньги» и «он взял деньги». Одна частица полностью меняет утверждение.
Поэтому семантическая карта не заменяет непрерывное представление. Она его координирует. Полюс фиксирует опору. Непрерывное состояние сохраняет нюансы. Именно поэтому в первой статье мы разделили Layer 1 и Layer 2.
Мёртвые полюса
Пусть у нас 65 536 полюсов. Распределение данных неравномерно. Некоторые области встречаются постоянно, другие крайне редко. Через некоторое время:
pole 001 → 18 400 000 активаций pole 002 → 12 700 000 ... pole 48192 → 3 pole 48193 → 0 pole 48194 → 1
Часть полюсов практически перестала участвовать. Мы можем написать на схеме «65 тысяч семантических координат», но фактически используются несколько тысяч. Иллюзия ёмкости.
Решение — периодически переинициализировать неиспользуемые полюса, перемещая их в области с высокой плотностью представлений и плохим покрытием. Но просто поставить их в случайную точку недостаточно. Нужно искать места, где данных много, а существующие полюса справляются плохо.
И здесь возникает фундаментальный компромисс. Слишком быстрое обновление разрушит стабильность. Слишком медленное — сделает карту неспособной адаптироваться. Модель долго обучалась на научных текстах, сформировала устойчивые области. Затем начинает получать медицинские тексты. Если карта полностью пластична, старые структуры разрушатся. Если почти неизменяема, новые понятия будут втиснуты в старые координаты.
Классическая проблема continual learning: как научиться новому, не разрушив старое. Для семантической карты она особенно остра, потому что карта должна быть стабильнее текущего контекста. Иначе она превращается в ещё один быстро меняющийся скрытый слой.
Возможно, карте нужен разный темп жизни. Быстрый уровень реагирует на контекст текущего диалога. Средний адаптируется к локальным сдвигам. Медленный хранит устойчивые семантические координаты. Разные типы информации требуют разной скорости обновления.
Таблица 2. Инженерные проблемы семантических полюсов
| Проблема | Что происходит | Возможный механизм | Главный риск |
|---|---|---|---|
| Дискретный выбор | Нельзя напрямую передать обычный градиент через выбор полюса | Straight-through estimator | Приближённый градиент может вести к нестабильному обучению |
| Collapse | Слишком много состояний притягиваются к одним полюсам | Commitment loss, ограничения на использование карты | Потеря различий между понятиями |
| Мёртвые полюса | Часть координат почти никогда не активируется | Переинициализация по областям плохого покрытия | Разрушение уже сформированной структуры |
| Drift | Полюса слишком быстро перемещаются вслед за данными | Медленное обновление, EMA | Потеря устойчивых координат |
| Катастрофическое забывание | Новые данные изменяют старую карту | Разные темпы обновления, защита стабильных полюсов | Новое знание вытесняет старое |
| Пограничные состояния | Объект одновременно близок к нескольким понятиям | Soft assignment | Карта снова становится почти непрерывной |
| Контекстная зависимость | Один и тот же объект меняет смысл в разных контекстах | Context-conditioned routing | Усложнение маршрутизации |
| Масштаб карты | Один уровень не способен одинаково хорошо представлять общие и конкретные понятия | Иерархия полюсов | Рост сложности и связей |
Контекст усложняет выбор
Пусть система видит: «банк закрыли». Без дополнительного контекста невозможно определить, речь о финансовом учреждении или о береговой структуре. Полюс нельзя выбрать по одному слову. Нужна последовательность:
банк + счёт + кредит + проценты → финансовый контекст банк + река + берег + вода → другое значение
Выбор полюса зависит от состояния контекста. Семантическая карта не заменяет attention — она должна взаимодействовать с ним.
И здесь же возникает вопрос геометрии. Понятие «автомобиль» занимает не одну точку: спортивный, грузовой, электрический, старый, автономный. Все связаны. Один полюс может оказаться слишком грубым. Можно представить полюс как локальную область — центр плюс форма распределения. Но чем сложнее структура одного полюса, тем меньше преимуществ даёт дискретизация. В какой-то момент вместо простой карты мы построим ещё одно непрерывное латентное пространство.
Мягкий выбор и его пределы
Когда состояние находится примерно одинаково далеко от двух полюсов, жёсткий выбор заставляет выбрать один. Но контекст может находиться на границе. Вместо единственного полюса можно использовать мягкое распределение:
автомобиль ├── 0,65 → транспорт ├── 0,25 → личный транспорт └── 0,10 → коммерческая услуга
При высокой температуре распределение мягкое. При уменьшении — становится более дискретным. Это даёт механизм: во время обучения карта мягкая, во время работы постепенно заостряется.
Но если каждый объект одновременно принадлежит десяткам полюсов, дискретность теряет смысл. Вместо одной координаты — распределённое непрерывное состояние. Нужен баланс: достаточно компактный выбор, но не настолько жёсткий, чтобы уничтожить пограничные случаи. Обучаемая система координат с контролируемой неопределённостью.
Карта должна платить за себя
Предположим, все эксперименты показывают: полюса устойчивы, мёртвых мало, перефразирование сохраняет координаты, контекст различает омонимы. Можно ли сказать, что мы получили семантическую память?
Нет. Остаётся последний тест: может ли модель использовать карту для новых вычислений?
Если полюса просто фиксируют то, что модель и без них вычисляла, они — дополнительная визуализация. Но если система использует полюс как промежуточное состояние для нового вывода — ситуация меняется. Карта становится не описанием модели, а частью её вычислительного механизма.
Именно поэтому главный эксперимент — не про кластеризацию. Можно построить красивую визуализацию, раскрасить точки по категориям, увидеть кластеры. И всё это почти ничего не доказывает. Гораздо содержательнее эксперимент на переносе: обучить модель, сформировать карту, изменить формулировки, добавить новые комбинации известных понятий, проверить, использует ли модель старые полюса, измерить качество. Если карта — устойчивая координатная система, новая задача должна использовать существующую структуру, а не создавать новый полюс для каждого предложения.
И ещё один тест — редактирование. Если архитектура действительно разделяет устойчивую семантическую координату и изменяемое знание, то смена факта в графовой памяти не требует переобучения слоя полюсов. Изменяется только соответствующий участок памяти. Одна из причин существования отдельной карты — сделать структуру вычисления стабильнее фактического содержимого.
И, наконец, абляция. Что произойдёт, если убрать карту? Если после удаления Layer 1 качество почти не изменится — карта была декоративной. Это, пожалуй, самый важный тест.
В инженерии новый слой не получает право на существование потому, что красиво выглядит. Он должен давать что-то, чего существенно труднее получить без него. Иначе проще оставить хорошо масштабируемый Transformer. Предлагаемая архитектура не должна доказывать, что Transformer плох. Она должна доказать, что дополнительная структура иногда стоит своей цены.
Одна карта или несколько
Семантика не имеет одного масштаба. Есть очень общие понятия: объект, событие, время, причина. Есть промежуточные: транспорт, экономика, программирование. Есть конкретные: модель процессора, конкретный API, конкретный препарат.
Если разместить всё в одной плоской карте, она станет либо слишком грубой, либо чудовищно большой. Естественнее использовать несколько уровней:
абстрактные полюса
│
доменные полюса
│
локальные полюса
Один объект одновременно имеет координату на нескольких уровнях. Tesla Model 3 — автомобиль, электромобиль, транспорт, физический объект. Это уже больше похоже на иерархическую семантическую систему, чем на обычный codebook.
И если полюса связываются между собой, возникает граф. Если граф становится большим — он превращается в отдельную структуру. Мы возвращаемся к Layer 3. Layer 1 отвечает: «в какой системе координат мы находимся?» Layer 3: «какие конкретные сущности и связи существуют?» Layer 2: «что происходит с ними прямо сейчас?» Три разных режима вычисления.
Пока это гипотеза
Мы не знаем оптимальное количество полюсов. Не знаем, должны ли они быть точками, распределениями или чем-то ещё. Не знаем, нужна ли одна карта или иерархия. Не знаем, как формировать отношения между полюсами. Не знаем, возникнет ли из этих механизмов действительно полезная семантическая структура.
Но теперь у нас есть конкретный объект исследования. Не «понимание». Не «сознание машины». А обучаемая дискретная структура, которая должна сохранять устойчивые координаты смысла и использовать их в последующих вычислениях. Это можно реализовать. И сломать. В инженерии это хорошая новость.
Вопрос, который сложнее всех предыдущих
Допустим, мы научились строить устойчивую карту. Полюса не вымирают, сохраняются при перефразировании, контекст разделяет значения. Layer 2 использует координаты.
Остаётся вопрос: что делать, когда карта противоречит памяти?
Семантический слой говорит: X является частью Y. Графовая память содержит: X не является частью Y. Что побеждает? Модель получает текст, противоречащий старой информации. Менять полюс? Менять граф? Сохранять обе версии? Учитывать источник? Добавлять временную координату?
Семантическая карта сама по себе не решает проблему знания. Она создаёт место, где эту проблему можно формализовать. Память должна не просто хранить связи — она должна различать факт, источник, время и степень доверия.
В следующей части мы разберём именно это: почему графовая память недостаточна сама по себе, как работает изменяемая память поверх семантической карты и почему проблема противоречивых знаний в конечном счёте превращается в проблему времени.
