🧬 Ранговый токенизатор: переход из каменного века в эпоху Просвещения
Чтобы написать этот пост, потребовалось больше двух месяцев.
Начнем с токенизатора — потом перейдём к эмбеддингам.
Ссылка на ранговый токенизатор и тестовые классические:
https://disk.yandex.ru/d/-HIuDpvjIeSG6Q
stat15_seg.py - файл для его сборки,
llm_tokeniz.py - грубая реализация без оптимизации
🧠 Что показал ранговый токенизатор
Ранговый токенизатор не просто подтвердил теорию ранговых асимметрий — он показал результат, которого сегодня не даёт ни один существующий токенизатор.
📊 Примеры обучения
1000 примеров, ранговый токенизатор
Размер словаря модели: ≈19 592
Продолжить: «Коты это животные, которые» → Генерация:
400 примеров, словарь ≈50 000
Продолжить: «Коты это» → Генерация:
4000 примеров, словарь ≈30 000
Продолжить: «Коты это»
при температуре 0.3 →
при температуре 0.7 →
📉 Для сравнения: обычный токенизатор (SentencePiece / WordPiece / BPE / Unigram)
На тех же 1000 примерах модель выдаёт бесконечный высокочастотный шум одиночных токенов (
Разница колоссальна.
Чтобы получить хотя бы близкий результат, современные токенизаторы требуют десятки тысяч примеров — и всё равно работают хуже.
💡 Что делает ранговый токенизатор
1. Определяет EOS (конец предложения) уже на 100–400 примерах, не уходя в бесконечную генерацию.
2. Начинает выстраивать грамматику при числе примеров < 1000.
3. Формирует слова из морфем (например, «что» = «ч» + «то»).
4. Быстрее переходит к смыслу, а не к частотной болтовне.
⚙️ Почему это работает
Ранговый словарь отражает энергетическую структуру распределения, а не простую частотность сегментов, как в BPE или Unigram.
Например, если «о» — самый частый символ, это не значит, что он получит ранг 1.
Наоборот — он часто становится внутренним элементом более сложных сегментов.
Рост диапазона β (от 0.5 до 2.0) расширяет словарь и выявляет иерархию уровней смысловой сборки — от фонем и морфем к словам и фразам.
🧩 Вывод
Уже на сотнях примеров токенизатор формирует внутреннюю грамматику, правильно расставляет знаки препинания и даже строит согласованные короткие фразы — то, что современные модели не делают без огромных датасетов.
Следующий шаг —показать эмбеддинги и объяснить формирование рангового пространства (токенизатора).
(о них — в следующих постах)
Чтобы написать этот пост, потребовалось больше двух месяцев.
Начнем с токенизатора — потом перейдём к эмбеддингам.
Ссылка на ранговый токенизатор и тестовые классические:
https://disk.yandex.ru/d/-HIuDpvjIeSG6Q
stat15_seg.py - файл для его сборки,
llm_tokeniz.py - грубая реализация без оптимизации
🧠 Что показал ранговый токенизатор
Ранговый токенизатор не просто подтвердил теорию ранговых асимметрий — он показал результат, которого сегодня не даёт ни один существующий токенизатор.
📊 Примеры обучения
1000 примеров, ранговый токенизатор
Размер словаря модели: ≈19 592
Продолжить: «Коты это животные, которые» → Генерация:
", что уже и уже теперь, что"400 примеров, словарь ≈50 000
Продолжить: «Коты это» → Генерация:
" я"4000 примеров, словарь ≈30 000
Продолжить: «Коты это»
при температуре 0.3 →
" дуда ду,"при температуре 0.7 →
" друго его мыся меня ти глю."📉 Для сравнения: обычный токенизатор (SentencePiece / WordPiece / BPE / Unigram)
На тех же 1000 примерах модель выдаёт бесконечный высокочастотный шум одиночных токенов (
что - здесь это один токен):Коты это животные, которые, –, и не, что, –, – и, и, –, что, и, и, и, и, и, и...Разница колоссальна.
Чтобы получить хотя бы близкий результат, современные токенизаторы требуют десятки тысяч примеров — и всё равно работают хуже.
💡 Что делает ранговый токенизатор
1. Определяет EOS (конец предложения) уже на 100–400 примерах, не уходя в бесконечную генерацию.
2. Начинает выстраивать грамматику при числе примеров < 1000.
3. Формирует слова из морфем (например, «что» = «ч» + «то»).
4. Быстрее переходит к смыслу, а не к частотной болтовне.
⚙️ Почему это работает
Ранговый словарь отражает энергетическую структуру распределения, а не простую частотность сегментов, как в BPE или Unigram.
Например, если «о» — самый частый символ, это не значит, что он получит ранг 1.
Наоборот — он часто становится внутренним элементом более сложных сегментов.
Рост диапазона β (от 0.5 до 2.0) расширяет словарь и выявляет иерархию уровней смысловой сборки — от фонем и морфем к словам и фразам.
🧩 Вывод
Уже на сотнях примеров токенизатор формирует внутреннюю грамматику, правильно расставляет знаки препинания и даже строит согласованные короткие фразы — то, что современные модели не делают без огромных датасетов.
Следующий шаг —показать эмбеддинги и объяснить формирование рангового пространства (токенизатора).
(о них — в следующих постах)
🔥12
🚀 Результаты серии экспериментов по обучению моделей на ранговой архитектуре
За последнюю неделю я провёл серию тестов (для проверки ряда теорем) по обучению LLM-модели на крайне малом датасете (всего 1000 примеров) с использованием рангового токенизатора, ранговой теории и нескольких типов архитектурных модификаций.
🔥 Главный результат
Вариант №4 дал беспрецедентный результат.
Условия варианта 4:
• ранговый токенизатор
• 1000 примеров, 4 эпохи
• Постепенное включение блоков (по одному блоку на эпоху)
• Все ранее активированные блоки продолжают обучаться
• Присутствуют дальние skip-connections
• Embedding-слой пробрасывается во все блоки
📌 Именно эта архитектура впервые показала формирование настоящей структуры языка:
• появление морфологии
• соблюдение пунктуации
• предложения с заглавной буквы после точки
• стабильные слова ("что", "уже", "я", "он")
• формирование простых смысловых цепочек ("Да я что и что он?")
Примеры генерации (без очистки):
Да, это ещё не русский язык, но это структура языка, грамматический каркас, связность, морфология и внутренняя логика.
И всё это при скрытом слое большого размера (что усложняет обучение), на 1000 примеров.
🧠 Почему это работает
Использование предсказания ранговой теории, включая:
• Ранговую стоимость и ранговое распределение
Правила токенизации создают пространство, где ранги и их стоимость соответствуют формальному описанию в теории.
Формируются точки излома, которые и становятся основой для сегментации информации.
• Постепенное включение блоков
Теорема о доминирующих уровнях и бифуркациях предсказывает, что система должна строить структуру снизу вверх:
- сначала базовые статистические зависимости, затем локальные максимумы смысла.
Активация блоков по одному создаёт архитектурный аналог иерархической бифуркации.
• Skip-connections между блоками
Дальние skip-connections полностью соответствуют требованию теории о сохранении ранговых структур между уровнями.
Результат: модель выстраивает иерархическую систему локальных максимумов, которая по теореме 5.3 и 5.4 приводит к появлению устойчивых языковых паттернов.
• Skip-connection от эмбеддингов к блокам
В ранговой теории embeddings — это геометрическое отображение ранговой стоимости, точек излома и локальных максимумов. Skip-connection делает так, что каждый уровень иерархии напрямую влияет на это отображение.
• нормы → отражение ранговой стоимости
• расположение кластеров → отражение точек излома
• углы → отражение взаимной информации
• дальность → отражение уровня доминации
• плотность → отражение локальной энтропии
Без этого модель:
• остаётся в раннем «шумовом» режиме
• не может стабилизировать доминирующие-группы
• не фиксирует промежуточные максимумы I(X;Y)
Низкоуровневая грамматика формируется и без skip-connection, но смысловые группы требуют глобального уровня доминации
⚖️ Сравнение с классическими LLM
На тех же параметрах архитектуры:
• столько же слоёв и голов
• такой же размер скрытого слоя
• тот же объём данных: 1000 примеров
Классические трансформеры НЕ могут сформировать:
• морфологию
• синтаксис
• пунктуацию
• связность
• и даже стабильные слова
Их генерация на 1000 примерах — это высокочастотный шум, бесконечные повторения и полное отсутствие структуры.
На сегодняшний день нет известных исследований, где классический LLM смог бы приблизиться к такому результату при таких условиях.
А ранговая архитектура дала такой результат впервые в мире.
Код и результаты других тестов ниже:
https://disk.yandex.ru/d/zWiEmA_17PCdHA
За последнюю неделю я провёл серию тестов (для проверки ряда теорем) по обучению LLM-модели на крайне малом датасете (всего 1000 примеров) с использованием рангового токенизатора, ранговой теории и нескольких типов архитектурных модификаций.
🔥 Главный результат
Вариант №4 дал беспрецедентный результат.
Условия варианта 4:
• ранговый токенизатор
• 1000 примеров, 4 эпохи
• Постепенное включение блоков (по одному блоку на эпоху)
• Все ранее активированные блоки продолжают обучаться
• Присутствуют дальние skip-connections
• Embedding-слой пробрасывается во все блоки
📌 Именно эта архитектура впервые показала формирование настоящей структуры языка:
• появление морфологии
• соблюдение пунктуации
• предложения с заглавной буквы после точки
• стабильные слова ("что", "уже", "я", "он")
• формирование простых смысловых цепочек ("Да я что и что он?")
Примеры генерации (без очистки):
«Мо на свое ее и ноа это Ой.... Да я что и что он?, не что не уже с шу, за и его и это запей»
«Он и как наде глазычо и я и на не за за. По что луго ужо для,»
«что его Гшу, в боль, что уже и не отчу, что за что за и не за за ужо любя..»
«Пой и что же изиво... Выал зее самы, свое, что така и с своеюбязя, что с ужо отчя»
Да, это ещё не русский язык, но это структура языка, грамматический каркас, связность, морфология и внутренняя логика.
И всё это при скрытом слое большого размера (что усложняет обучение), на 1000 примеров.
🧠 Почему это работает
Использование предсказания ранговой теории, включая:
• Ранговую стоимость и ранговое распределение
Правила токенизации создают пространство, где ранги и их стоимость соответствуют формальному описанию в теории.
Формируются точки излома, которые и становятся основой для сегментации информации.
• Постепенное включение блоков
Теорема о доминирующих уровнях и бифуркациях предсказывает, что система должна строить структуру снизу вверх:
- сначала базовые статистические зависимости, затем локальные максимумы смысла.
Активация блоков по одному создаёт архитектурный аналог иерархической бифуркации.
• Skip-connections между блоками
Дальние skip-connections полностью соответствуют требованию теории о сохранении ранговых структур между уровнями.
Результат: модель выстраивает иерархическую систему локальных максимумов, которая по теореме 5.3 и 5.4 приводит к появлению устойчивых языковых паттернов.
• Skip-connection от эмбеддингов к блокам
В ранговой теории embeddings — это геометрическое отображение ранговой стоимости, точек излома и локальных максимумов. Skip-connection делает так, что каждый уровень иерархии напрямую влияет на это отображение.
• нормы → отражение ранговой стоимости
• расположение кластеров → отражение точек излома
• углы → отражение взаимной информации
• дальность → отражение уровня доминации
• плотность → отражение локальной энтропии
Без этого модель:
• остаётся в раннем «шумовом» режиме
• не может стабилизировать доминирующие-группы
• не фиксирует промежуточные максимумы I(X;Y)
Низкоуровневая грамматика формируется и без skip-connection, но смысловые группы требуют глобального уровня доминации
⚖️ Сравнение с классическими LLM
На тех же параметрах архитектуры:
• столько же слоёв и голов
• такой же размер скрытого слоя
• тот же объём данных: 1000 примеров
Классические трансформеры НЕ могут сформировать:
• морфологию
• синтаксис
• пунктуацию
• связность
• и даже стабильные слова
Их генерация на 1000 примерах — это высокочастотный шум, бесконечные повторения и полное отсутствие структуры.
На сегодняшний день нет известных исследований, где классический LLM смог бы приблизиться к такому результату при таких условиях.
А ранговая архитектура дала такой результат впервые в мире.
Код и результаты других тестов ниже:
https://disk.yandex.ru/d/zWiEmA_17PCdHA
🔥6
Эксперимент: динамический β в трансформере
Как модель сама регулирует «температуру» текста
За последние неделю я провёл два эксперимента с теми же 100 примерами, сделав динамический токенизатор на основе ранговой теории с динамическим β — параметром, который в ранговой теории и нейробиологии играет роль модуляции серотонином.
Цель — чтобы модель сама регулировала «температуру» и генерацию, а не полагалась на вручную заданную температуру.
Для этого в процессе обучения LMM, вместе с ней обучался MLP-модулятор β, который предсказывает β по логитам, и интегрировал β в токенизатор и внимание.
Токенизатор динамически выстраивал марковские цепи на основе β, которые становились токенами.
🔬 Условия эксперимента
1000 примеров текста
• 20 эпох обучения
• одинаковая архитектура модели
• ранговый токенизатор
• одинаковая функция потерь
Тесты отличаются только механизмом β:
Тест 4_2 — β предсказывается MLP и применяется на следующем шаге уже в процессе обучения
Модель сама определяет уровень β и использует его в следующем итеративном шаге обучения.
👉 Это аналог:
MPFC → ядрам шва → серотонин регулирует активность коры.
Примеры генерации
Продолжить: Коты это
Коты это что-то он лице не разбозаделисько две беже запуть, но тут ему... Одно как ужащий на головой, что не можащительно он сдать…
Связка: коты → лицо → голова → темный → черная
Модель формирует корректную цепочку связанных признаков, даже если конкретных данных о котах в корпусе почти не было.
Продолжить: Маша пошла гулять
маша пошла гулять!– Андрядом квартиры ужа и раз? – было не было две уза за отпрехнул…
Связки:
гулять → рядом с местом → квартиры → человек → ноги
Продолжить: В далёком будущем люди начали колонизацию других планет
…и ударил и на бухнуть. Поплавной, с голосом, может что-то шепнула…
Связки:
объект → голос → шёпот → коммуникация
Это цепочки верхнего уровня — они не тривиальны и лучше, чем в классических маленьких LLM.
🧠 Что важно:
Модель формирует не случайные, а смысловые и тематические связи:
• текст не расползается
• нет повторов
• нет чистого шума
• семантическая последовательность сохраняется на 2–3 шага вперед
Для моделей такого размера на 1000 примеров — это явно выше нормы.
Тест 3 — фиксированный β, который в цикле увеличивался от 0.3→ 0.7→ 1.1 → 1.5 → 1.9
Здесь β задавался искусственно и плавно увеличивался по эпохам.
Модель не управляла им сама, а MLP учился предсказывать заданный β.
Примеры генерации
Продолжить: Коты это
Коты это а яза уживула в два бамею из это же лего…
Связки слабые, часто случайные.
Много «литературного шума», но меньше смысловых линий.
Продолжить: Маша пошла гулять
…Он в этого записа, и све, и ужу - Пилат, человек…
Здесь есть куски русских слов, но семантическое движение слабое.
Анализ теста:
• текст более случайный
• смысловые цепочки минимальные
• модель не удерживает направление мысли
• β не адаптируется к логитам
• есть больше "галлюцинаторных" вставок и имён
Нейробиологическая интерпретация (аналогия)
Модель постепенно формирует архитектуру, похожую на мозг:
• Ранговый токенизатор → таламус
• Эмбеддинги → слой 4 коры
• Головы внимания → слои 2/3, локальные максимумы
• FFN / MoE → слой 5, бифуркации уровней иерархии
• MLP-модулятор β → ядра шва
• β → серотонин
• Логиты LLM → MPFC
И самое важное:
В тесте 4_2 получилась замкнутая петля:
LLM → MLP → β → Токенизатор → LLM → новый логит → MLP
Именно такие рекуррентные петли стабилизируют поведение биологических систем.
Тест 4_2 выигрывает.
Модель, которая сама регулирует β, формирует значительно более глубокие и устойчивые смысловые цепочки.
Это демонстрирует:
✔️ динамический β действительно работает
✔️ модуль MLP учится правильно интерпретировать неопределённость
✔️ ранговая теория стабилизирует обучение
✔️ саморегулируемая температура лучше фиксированной
На таком маленьком датасете и компактной модели — это очень серьёзный результат.
В тестах выше, β использовался при генерации текста.
Как модель сама регулирует «температуру» текста
За последние неделю я провёл два эксперимента с теми же 100 примерами, сделав динамический токенизатор на основе ранговой теории с динамическим β — параметром, который в ранговой теории и нейробиологии играет роль модуляции серотонином.
Цель — чтобы модель сама регулировала «температуру» и генерацию, а не полагалась на вручную заданную температуру.
Для этого в процессе обучения LMM, вместе с ней обучался MLP-модулятор β, который предсказывает β по логитам, и интегрировал β в токенизатор и внимание.
Токенизатор динамически выстраивал марковские цепи на основе β, которые становились токенами.
🔬 Условия эксперимента
1000 примеров текста
• 20 эпох обучения
• одинаковая архитектура модели
• ранговый токенизатор
• одинаковая функция потерь
Тесты отличаются только механизмом β:
Тест 4_2 — β предсказывается MLP и применяется на следующем шаге уже в процессе обучения
Модель сама определяет уровень β и использует его в следующем итеративном шаге обучения.
👉 Это аналог:
MPFC → ядрам шва → серотонин регулирует активность коры.
Примеры генерации
Продолжить: Коты это
Коты это что-то он лице не разбозаделисько две беже запуть, но тут ему... Одно как ужащий на головой, что не можащительно он сдать…
Связка: коты → лицо → голова → темный → черная
Модель формирует корректную цепочку связанных признаков, даже если конкретных данных о котах в корпусе почти не было.
Продолжить: Маша пошла гулять
маша пошла гулять!– Андрядом квартиры ужа и раз? – было не было две уза за отпрехнул…
Связки:
гулять → рядом с местом → квартиры → человек → ноги
Продолжить: В далёком будущем люди начали колонизацию других планет
…и ударил и на бухнуть. Поплавной, с голосом, может что-то шепнула…
Связки:
объект → голос → шёпот → коммуникация
Это цепочки верхнего уровня — они не тривиальны и лучше, чем в классических маленьких LLM.
🧠 Что важно:
Модель формирует не случайные, а смысловые и тематические связи:
• текст не расползается
• нет повторов
• нет чистого шума
• семантическая последовательность сохраняется на 2–3 шага вперед
Для моделей такого размера на 1000 примеров — это явно выше нормы.
Тест 3 — фиксированный β, который в цикле увеличивался от 0.3→ 0.7→ 1.1 → 1.5 → 1.9
Здесь β задавался искусственно и плавно увеличивался по эпохам.
Модель не управляла им сама, а MLP учился предсказывать заданный β.
Примеры генерации
Продолжить: Коты это
Коты это а яза уживула в два бамею из это же лего…
Связки слабые, часто случайные.
Много «литературного шума», но меньше смысловых линий.
Продолжить: Маша пошла гулять
…Он в этого записа, и све, и ужу - Пилат, человек…
Здесь есть куски русских слов, но семантическое движение слабое.
Анализ теста:
• текст более случайный
• смысловые цепочки минимальные
• модель не удерживает направление мысли
• β не адаптируется к логитам
• есть больше "галлюцинаторных" вставок и имён
Нейробиологическая интерпретация (аналогия)
Модель постепенно формирует архитектуру, похожую на мозг:
• Ранговый токенизатор → таламус
• Эмбеддинги → слой 4 коры
• Головы внимания → слои 2/3, локальные максимумы
• FFN / MoE → слой 5, бифуркации уровней иерархии
• MLP-модулятор β → ядра шва
• β → серотонин
• Логиты LLM → MPFC
И самое важное:
В тесте 4_2 получилась замкнутая петля:
LLM → MLP → β → Токенизатор → LLM → новый логит → MLP
Именно такие рекуррентные петли стабилизируют поведение биологических систем.
Тест 4_2 выигрывает.
Модель, которая сама регулирует β, формирует значительно более глубокие и устойчивые смысловые цепочки.
Это демонстрирует:
✔️ динамический β действительно работает
✔️ модуль MLP учится правильно интерпретировать неопределённость
✔️ ранговая теория стабилизирует обучение
✔️ саморегулируемая температура лучше фиксированной
На таком маленьком датасете и компактной модели — это очень серьёзный результат.
В тестах выше, β использовался при генерации текста.
Сейчас я тестирую интеграцию β в FFN/MOE, чтобы полностью убрать ручную температуру при генерации текста после обучения. Но это этом позже.
🔥4👍3
🎯 Эксперимент с MoE: как по-другому понять экспертов и почему они учатся медленно
Эту неделю я тестирую архитектуру Mixture-of-Experts (MoE) с немного необычной интерпретацией, которая оказывается удивительно полезной.
Для меня MoE — это не «способ ускорения модели», а способ разложить задачу на несколько локальных максимумов C(L) (в терминах ранговой теории доминирования локальных максимумов).
Каждый эксперт в MoE можно рассматривать как:
• отдельную функцию-аппроксимацию одного локального максимума
То есть FFN-эксперт пытается описать свой собственный участок функции C(L), со своей кривизной, своим доминирующим паттерном, своим мини-сюжетом.
Если переписать в терминах модели:
• без MoE — один FFN пытается обобщить ВСЕ локальные максимумы сразу → переобобщение, потеря деталей
• с MoE — каждый FFN отвечает только за свою «зону ответственности» → лучше детализация, меньше конфликтов
Но тут сразу возникает серьёзная практическая проблема.
🚧 Почему стандартное обучение MoE работает плохо
MoE обычно обучают с нуля, и это приводит к двум вещам:
1) Данные размазываются между экспертами
У вас есть, допустим, 1000 примеров.
С четвёркой экспертов реально каждый из них видит ≈250 примеров, а иногда и меньше.
Для FFN это мало → эксперт не может выучить свой локальный максимум.
2) Маршрутизация «не знает», куда слать примеры
В начале обучения эксперты одинаково плохие → маршрутизатор выбирает случайно.
Это создаёт эффект «сломанного выбора» — усреднение без структуры.
3) Эксперты изначально пустые, без общей формы
Они начинают с нуля и конкурируют за данные
без базовой общей аппроксимации.
В итоге MoE теряет смысл: эксперты не учатся своей зоне C(L), а просто шумят.
🔧 Как можно улучшить обучение MoE
Идея, которую была протестирована:
Шаг 1. Сначала обучаем один FFN (без MoE)
Он получает ВСЮ статистику.
Он строит обобщённую аппроксимацию всех локальных максимумов.
Он не идеален для каждого локального максимума, но он даёт каркас:
• морфологию
• синтаксис
• общие смысловые паттерны
• глобальную структуру языка
То, что MoE с нуля просто не успевает создать.
Шаг 2. Затем включаем MoE, но инициализируем все эксперты этим FFN
То есть каждый эксперт стартует с одинакового обобщённого решения.
Это критически важно:
• маршрутизатор видит одинаковые решения — нет хаоса
• эксперты начинают с общей базы, но дальше «специализируются»
• меньше провалов при начале обучения
• не возникает экспертов, которые “так и не поняли задачу”
По сути, мы делаем плавную инициализацию вместо случайной.
🔬 Результаты теста
Проверен на маленьком эксперименте:
• данные: ~1000 примеров (начальные главы «Мастер и Маргарита»)
• 20 эпох
• MoE с 4 экспертами
• динамическая β-регуляция
Несмотря на то, что данных на каждого эксперта стало меньше, модель:
• не сломала морфологию
• не потеряла синтаксис
• генерирует фразы, похожие на литературный текст
• строит смысловые связи («ответил голос», «шептал он»)
• местами держит сюжетность
MoE показал, что даже с грязным обучением эксперты
уже начинают специализироваться.
🧠 Ключевой вывод
MoE действительно работает как набор локальных функций-аппроксимаций C(L).
Но чтобы он начал обучаться правильно, его экспертов нужно инициализировать общим FFN.
Иначе:
• маршрутизатор ведёт себя хаотично
• эксперты получают слишком мало данных
• MoE не раскрывает свой потенциал
А простой двухшаговый процесс
(общий FFN → инициализация MoE → дообучение)
делает обучение заметно устойчивее.
Эту неделю я тестирую архитектуру Mixture-of-Experts (MoE) с немного необычной интерпретацией, которая оказывается удивительно полезной.
Для меня MoE — это не «способ ускорения модели», а способ разложить задачу на несколько локальных максимумов C(L) (в терминах ранговой теории доминирования локальных максимумов).
Каждый эксперт в MoE можно рассматривать как:
• отдельную функцию-аппроксимацию одного локального максимума
То есть FFN-эксперт пытается описать свой собственный участок функции C(L), со своей кривизной, своим доминирующим паттерном, своим мини-сюжетом.
Если переписать в терминах модели:
• без MoE — один FFN пытается обобщить ВСЕ локальные максимумы сразу → переобобщение, потеря деталей
• с MoE — каждый FFN отвечает только за свою «зону ответственности» → лучше детализация, меньше конфликтов
Но тут сразу возникает серьёзная практическая проблема.
🚧 Почему стандартное обучение MoE работает плохо
MoE обычно обучают с нуля, и это приводит к двум вещам:
1) Данные размазываются между экспертами
У вас есть, допустим, 1000 примеров.
С четвёркой экспертов реально каждый из них видит ≈250 примеров, а иногда и меньше.
Для FFN это мало → эксперт не может выучить свой локальный максимум.
2) Маршрутизация «не знает», куда слать примеры
В начале обучения эксперты одинаково плохие → маршрутизатор выбирает случайно.
Это создаёт эффект «сломанного выбора» — усреднение без структуры.
3) Эксперты изначально пустые, без общей формы
Они начинают с нуля и конкурируют за данные
без базовой общей аппроксимации.
В итоге MoE теряет смысл: эксперты не учатся своей зоне C(L), а просто шумят.
🔧 Как можно улучшить обучение MoE
Идея, которую была протестирована:
Шаг 1. Сначала обучаем один FFN (без MoE)
Он получает ВСЮ статистику.
Он строит обобщённую аппроксимацию всех локальных максимумов.
Он не идеален для каждого локального максимума, но он даёт каркас:
• морфологию
• синтаксис
• общие смысловые паттерны
• глобальную структуру языка
То, что MoE с нуля просто не успевает создать.
Шаг 2. Затем включаем MoE, но инициализируем все эксперты этим FFN
То есть каждый эксперт стартует с одинакового обобщённого решения.
Это критически важно:
• маршрутизатор видит одинаковые решения — нет хаоса
• эксперты начинают с общей базы, но дальше «специализируются»
• меньше провалов при начале обучения
• не возникает экспертов, которые “так и не поняли задачу”
По сути, мы делаем плавную инициализацию вместо случайной.
🔬 Результаты теста
Проверен на маленьком эксперименте:
• данные: ~1000 примеров (начальные главы «Мастер и Маргарита»)
• 20 эпох
• MoE с 4 экспертами
• динамическая β-регуляция
Несмотря на то, что данных на каждого эксперта стало меньше, модель:
• не сломала морфологию
• не потеряла синтаксис
• генерирует фразы, похожие на литературный текст
• строит смысловые связи («ответил голос», «шептал он»)
• местами держит сюжетность
MoE показал, что даже с грязным обучением эксперты
уже начинают специализироваться.
🧠 Ключевой вывод
MoE действительно работает как набор локальных функций-аппроксимаций C(L).
Но чтобы он начал обучаться правильно, его экспертов нужно инициализировать общим FFN.
Иначе:
• маршрутизатор ведёт себя хаотично
• эксперты получают слишком мало данных
• MoE не раскрывает свой потенциал
А простой двухшаговый процесс
(общий FFN → инициализация MoE → дообучение)
делает обучение заметно устойчивее.
🔥3👍2