Две нейросети по 15 КБ: тернарный KAN и рассуждение без LLM

от автора

Июнь 2026. Две недели экспериментов, 90% точности многошагового рассуждения и 15‑килобайтная модель, которая бьёт FP32‑аналог. Без LLM. Без GPU. Без единого хардкод‑правила.


Ternary GraphKAN — первый тернарный KAN

Kolmogorov‑Arnold Networks (KAN) — альтернатива MLP, предложенная в 2024. Все существующие реализации используют FP32 или 4‑битные веса (QuantKAN, KANtize). До трёх бит никто не опускался.

Что сделано

Тернарные веса {-1, 0, +1} — 1.58 бита на параметр. 79 800 параметров упаковываются в 15.4 КБ. Это первый KAN с квантованием ниже 4 бит.

Модель

Веса

Размер

MNIST

Fashion‑MNIST

GraphKAN 256→100→10

float

15.4 КБ

94.77%

84.1%

GraphKAN 256→100→10

ternary {-1,0,+1}

15.4 КБ

96.15%

86.68%

MLP 256→100→10

float

106.8 КБ

~93%

15.4 КБ — самый маленький KAN с >95% на MNIST.

Эффект регуляризации квантованием

Неожиданное открытие: точность растёт в процессе квантования.

float (94.77%) → STE ternary → hard clamp → finetune (96.15%)                     ↑                    ↑            ↑                 +1.01%               +0.31%       +0.06%

Дискретные веса работают как регуляризатор, отсекая шум в градиентах. В литературе по KAN такой эффект не описан.

Как это устроено

Архитектура. Граф из 366 нейронов, 26 600 направленных связей. Каждая связь — интерполяция по трём контрольным точкам на позициях [-1, 0, 1]. Точки — тернарные {-1,0,+1}. Tanh активация, синхронные циклы обновления.

Обучение. 4-фазный QAT:

  1. Float clamp — веса в [-1, 1]

  2. STE ternary — прямой проход тернарный, обратный float

  3. Hard clamp — принудительная фиксация {-1,0,+1}

  4. Finetune — только scale+bias

Упаковка. Для деплоя тернарные значения упаковываются по 4 штуки в uint8: {-1}→00, {0}→01, {+1}→10. 79 800 параметров = 19 950 байт.

Куда это помещается

Устройство

Память

Вмещается?

Cortex‑M4 L1 cache

16–32 КБ

RISC‑V микроконтроллер

16–64 КБ

DSP смарт‑часов

32–128 КБ

$0.50 чип

16–64 КБ


VSA-Reasoner — рассуждение без LLM

Vector‑Symbolic Architecture (VSA) представляет знания как векторы высокой размерности (1024-8192). Факты кодируются связыванием (bind) и объединяются суперпозицией (bundle). Дёшево, интерпретируемо, но шумно.

Проблема

В VSA при bundle более ~12 фактов возникает шум суперпозиции: unbind даёт 80% точности независимо от размерности векторов. D=1024 или D=8192 — результат одинаковый. Это фундаментальное ограничение: sum_{i≠k} (s_i·s_k)·o_i не зависит от D.

Решение

Три learned‑компонента, собранных в пайплайн:

1. Предикатно‑шардированная память — факты группируются по предикатам. Вместо 100+ фактов в одном векторе — ~12 на шард.

2. Нейронный резонатор (16 КБ, тернарные веса) — learned итеративное уточнение VSA‑запроса:

VSA query → proj(256) → [ternary matmul ×5] → unproj(D) → cleanup

93% точности против 80% у чистого VSA.

3. Контроллер + ChainScorer — float32 MLP выбирает предикат, Transformer оценивает кандидата. Beam search ширины 1-3.

Пайплайн целиком

Question → Parser → (entity, goal)  → PredicateShardedStore (VSA память)  → FastController (MLP, <1 КБ)  → GraphKANResonator (16 КБ, ternary)  → ChainScorer (Transformer)  → Beam search (width 1–3)  → Answer (entity)

Результаты

Метод

Overall

1‑hop

2‑hop

3‑hop

VSA direct

30%

90%

0%

0%

Resonator only

30%

90%

0%

0%

Ctrl + Res + Scorer

90%

100%

100%

70%

96 фактов, 53 сущности, 30 запросов. Все learned‑компоненты, никаких хардкод‑правил.

Размеры

Компонент

Параметры

Размер

GraphKANResonator

65 536 тернарных

16 КБ

FastController

37 384 float

<1 КБ

ChainScorer

~4 000 float

<1 КБ

VSA память (96 фактов)

D=1024

~44 КБ

Итого

<62 КБ

CPU‑only инференс.


Что дальше

Оба изобретения используют один и тот же 4‑фазный QAT и одинаковую упаковку весов. Это не случайность — тернарный формат оказался универсальным: одни и те же 2 бита работают и для KAN, и для резонатора. Код приватный.

Публичные тизеры:


Автор: Fakeonomics, июнь 2026

ссылка на оригинал статьи https://habr.com/ru/articles/1048200/