# Новая быстрая модель для рисования цифр — 15 октября 2026 ## Результат Сайт: **http://10.9.8.230:8080/fast_viz.html**. На старых altai_viz.html и aug_viz.html добавлена видимая ссылка; прежние модели и симуляция сохранены. На официальном MNIST test новая модель распознала **9830/10000 = 98.30%**, против9223/10000=92,23% у отдельно проверенного штатного KNP-примера. Проверены те же10 000 изображений и метки; новая модель имеет другую архитектуру и подготовку данных. Это сравнение качества моделей, а не улучшение/ускорение существующего KNP backend. Ошибок новой модели170 вместо777. Цифра3 на пользовательском скриншоте (official test index2534) теперь распознана как3. Она была известна как регрессионный пример и не использовалась для обучения/выбора параметров. ## Что именно является спайковой сетью Вход:784 токовых значения пикселей. Скрытый слой:256 integer integrate-and-fire нейронов. На каждом из128 конечных шагов каждый нейрон накапливает постоянный ток; при достижении порога испускает один спайк и вычитает порог. Числа спайков идут в **линейный аналоговый readout** на10 классов. Это гибридная IF-сеть; не вся сеть спайковая. Состояния обнуляются для каждого изображения. JS действительно выполняет все конечные IF-шаги. Python использует математически эквивалентный floor(T*drive/threshold) для счётчика; равенство проверено независимой реализацией браузера. Integer веса и токи хранятся в безопасном диапазоне точной JS Number арифметики. scale4096, hidden cap4, threshold4177920; weights1 и weights2 int16, bias1/bias2 int32. Модель обучена offline: MLP784→256→10 с clipped ReLU, Adam и surrogate gradient через квантование активностей к spike counts после двух стартовых эпох. Это неSTDP. Работа новой модели в KNP, наGPU или физическом AltAI **не проверена**; сайт честно сообщает это. Никакие прежние CUDA/транспортные модели не менялись. ## Разделение данных и выбор Взяты ранее побайтно проверенные канонические MNIST train60000/test10000. Train случайно разделён с seed20261015 на55000 обучения и5000 validation; индексы сохранены в split.npz. Для нового обучения используется только train55000. Аугментации только в train: сдвиг±2px, утолщение/утоньшение крестом радиуса1 по10% образцов. Нормализация bbox по пикселям>16 в рамку20px с bilinear resize и целочисленным сдвигом центра массы к13.5; одинаковый алгоритм Python/JS. 20 эпох, batches256, Adam beta.9/.999, L2.00005, learning rate.001, умножение на.35 на эпохах13 и18. Checkpoint выбран по validation при64 шагах: эпоха17, точность98.54%. Затем число шагов выбрано только по validation: [{"steps": 32, "accuracy": 0.9846}, {"steps": 64, "accuracy": 0.9854}, {"steps": 128, "accuracy": 0.9856}]; зафиксированы128 шагов. После фиксации test оценён один раз и не использовался для тюнинга. train/validation/test provenance и SHA256 сохранены; test gallery — только демонстрация. ## Устойчивость и пределы После выбора модели выполнен заранее фиксированный stress на тех же test-картинках, без последующего подбора: - Сдвиг нормализованной картинки вправо2px:97,74%. - Утолщение крестом радиуса1:96,85%. - Утоньшение крестом радиуса1:91,41%. Утоньшение заметно ухудшает качество; не выдавать98,30% за гарантию для любого рисунка. Stress применяется после нормализации, без повторной нормализации; это отдельный контроль представления. Полная confusion matrix и все покартинковые ответы сохранены. Очень редкий/непривычный почерк всё ещё может ошибаться. Пустой холст UI распознавать не пытается. ## Проверка браузера и скорость Chromium headless/CDP:85 фиксированных raw MNIST примеров, включая2534 и псевдослучайные test-индексы seed444. Для каждого точно совпали все784 байта нормализации,256IFcounts,10выходныхscores и prediction между Python и реальным JS128шагов. В `browser-check.json` записаны: - Gallery2534→3, blank→«—» и отсутствие top scores. - Настоящие CDP mouse и touch события нарисовали1; оба распознаны как1. - Mobile390px без горизонтальногоoverflow. - Очистка остаётся пустой после ожидания debounce150ms. - JavaScript exceptions:0. Для нормализованной настоящей test-картинки2534 после20 прогревов,100 повторов: медиана **0.500мс**, p95 **1.100мс**. Измерен только simulate(), без canvas-нормализации/DOM; это локальный headless Chromium на машине ассистента, не пользовательский компьютер. UI показывает локальную фактическую задержку каждого распознавания. Обучение заняло11.537с wall по сохранённому логу; это NumPyCPU, не CUDA. ## Пути и запуск - Репозиторий: `/home/user/KNP/mnist-fast/{model_core.py,train_fast.py,make_parity.py,browser_check.py,README.md}`. - Веб: `/home/user/KNP/viz/fast_viz.html`, `fast-model.js`, `fast-model.json`, `fast-gallery.json`. - Runtime: `/home/user/run/mnist-fast`; `best.npz`, `split.npz`, `normalized.npy`, `history.json`, `selection.json`, `metrics.json`, `test_results.npz`, `provenance.json`, `model.json`, `gallery.json`. - Проверки: `parity-cases.json`, `browser-check.json`, `fast-viz-desktop.png`, `fast-viz-mobile.png`, `browser-check.log`. - Сервер прежний PID58749: `/home/user/run/mnist-viz/server.py`, порт8080, каталогviz, UTF8. Новый сервис не запускался, перезагрузка сервера не нужна. Команда обучения и предупреждение о перезаписи runtime — в mnist-fast/README.md. Все скрипты, обученные веса, индексы и метрики сохраняются; сырыеMNIST уже сохранены отдельным опытом. После обучения зафиксирован `source-sha256.json`; архив артефактов и локальная копия отчёта сохраняются отдельно. Commit/push не выполнялись.