From 39079670c07c7baaae4f0bbed4f1816222207cf7 Mon Sep 17 00:00:00 2001 From: int Date: Thu, 15 Oct 2026 02:32:32 +0300 Subject: [PATCH] K=1600 neural-rule pipeline result Co-Authored-By: Claude Opus 5.5 --- changes-2026-10-14.md | 1 + objects/run_k1600_online.sh | 13 +++++++++++++ Отчёт_объекты_ночь.md | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 objects/run_k1600_online.sh diff --git a/changes-2026-10-14.md b/changes-2026-10-14.md index 2830b18..d7f9ee3 100644 --- a/changes-2026-10-14.md +++ b/changes-2026-10-14.md @@ -336,3 +336,4 @@ KNP, validation: `fc_v_plain` 81,0%, `fc_v_augB` 79,5%. Симулятор (2000 - Опубликовано на тот же адрес: https://claude.ai/artifact/Vc1q1WCZuPY2QAHBSGtrKF (версия 2). - Всё обучение нейронными правилами (validation): признаки онлайн WTA K=800 (400 000 кусочков, то же выбеливание, `v3_k800_online.npz`) → точная симуляция (10 шагов, порог 108,08; 676 тыс. спайков/картинку) → выход: ridge + калиброванный нейрон 72,9–73,1%; **дофаминовое правило + калиброванный нейрон 69,4–69,8%**. Онлайн-WTA не хуже пакетных k-средних (там 71,8% / 69,3%). - Разброс по seed (validation, `objects/seeds_DE.sh`): D (top-256 + колонки, наказание 0,012, t1600) — seed 42/1/2/3: 64,3/64,7/63,4/63,5 → 64,0 ± 0,6; E (v2 sparse HOG, t4000) — 62,6/62,9/62,6/60,3 → 62,1 ± 1,2. Отчёт дополнен. +- K=1600, всё нейронными правилами (`objects/run_k1600_online.sh`; онлайн WTA 600 000 кусочков → точная симуляция, 1,21 млн спайков/картинку, 1098 с → выход): ridge + калиброванный нейрон 72,8–73,5%; **дофамин + калиброванный нейрон 71,6%** (K=800 — 69,4–69,8%). diff --git a/objects/run_k1600_online.sh b/objects/run_k1600_online.sh new file mode 100644 index 0000000..7f23fec --- /dev/null +++ b/objects/run_k1600_online.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Night: neural-rule pipeline with K=1600 (online WTA features → exact spiking → dopamine readout), validation. +cd /home/int/run/cats-dogs +~/anvenv/bin/python - <<'PY' +import sys; sys.path.insert(0, "/mnt/c/knp/objects") +import numpy as np, kmeans_features as kf +kf.CONTRAST_DIVIDE = False +tr = np.load("data-v3/train.npz"); base = dict(np.load("v3_k800_lin.npz")) +m = kf.learn_online(tr["rgb"], k=1600, n_patches=600000, base={"mean": base["mean"], "zca": base["zca"]}) +np.savez("v3_k1600_online.npz", **m) +PY +~/anvenv/bin/python /mnt/c/knp/objects/spiking_pipeline.py --model v3_k1600_online.npz --thr1 108.0791244506836 --out spiking_v3_k1600_online.npz > spiking_v3_k1600_online.log 2>&1 +~/anvenv/bin/python /mnt/c/knp/objects/dopamine_readout.py spiking_v3_k1600_online.npz 2e-4 >> spiking_v3_k1600_online.log 2>&1 diff --git a/Отчёт_объекты_ночь.md b/Отчёт_объекты_ночь.md index 839048a..366e3a4 100644 --- a/Отчёт_объекты_ночь.md +++ b/Отчёт_объекты_ночь.md @@ -59,7 +59,7 @@ Проверено в симуляторе на проверочной выборке: - **Слой признаков, обученный по-нейронному.** Картинки идут по одной, побеждает самый похожий нейрон, и только его веса сдвигаются к кусочку. Это аналог STDP с торможением «победитель забирает всё». Признаки получаются не хуже пакетного метода: 72,9% против 71,8% при одинаковом выходе. -- **Выход, обученный локальным правилом с дофамином.** Синапс меняется на «ошибка × число пришедших спайков». Ошибку переносит сигнал дофамина со знаком, а сам дофамин в KNP уже есть. Результат **69,4–69,8%**, на 3 п.п. ниже, чем у гребневой регрессии. Это лучше колонок STDP (64%). +- **Выход, обученный локальным правилом с дофамином.** Синапс меняется на «ошибка × число пришедших спайков». Ошибку переносит сигнал дофамина со знаком, а сам дофамин в KNP уже есть. Результат **69,4–69,8%** при 800 узорах и **71,6%** при 1600, на 2–3 п.п. ниже, чем у гребневой регрессии. Это лучше колонок STDP (64%). - **Нейрон-решатель без подбора порога.** Смещение нейрона сдвинуто так, что «потенциал дошёл до порога» означает «сумма больше нуля». Результат не зависит от порога. - **Больше шагов на картинку** (20 вместо 10) — +1,3 п.п.: 72,9% вместо 71,6%.