3 KiB
3 KiB
Журнал работы — 15 октября 2026
Ночь (продолжение): выход, обучаемый дофамином по ошибке, внутри KNP
Пользователь: «начинай, связь со мной не нужна». Цель — перенести в KNP правило, проверенное в симуляторе (выход «цель − ответ» × вход).
Код
examples/.../models/altai/construct_network.cpp: режимKNP_DELTA=<a>,<b>. Метка подаёт дофамин +a нейронам своего класса с задержкой 1 на каждом активном шаге; собственный спайк нейрона даёт ему дофамин −b на следующем шаге (проекция input→input, исключена из сети распознавания). Нет торможения по метке (−30000) и принуждения через гейт; у нейронов выключены Хебб (d_h=0), стабильность и порог от суммы весов. Используется сKNP_COL_SIZE=1(один нейрон на класс)..../models/altai/spike_generators.cpp: приKNP_DELTAметка отправляется на шагах 0–9 (а не на 11-м).readout/build_delta_cpu.py→/home/int/run/delta-cpu/libknp-cpu-delta-backend.so: изолированная копия бэкенда;KNP_DELTA_RULE=<скорость>— у нейрона с дофамином D ≠ 0 каждый обучаемый синапс, чей входной спайк пришёл с отставаниемKNP_DELTA_LAGшагов, меняет ресурс на скорость·D (независимо от спайка самого нейрона);KNP_DELTA_DEBUGпечатает гистограмму отставаний. Оригинальные библиотеки не менялись.- Отладка: при отставании 0 обновлений не было (веса не менялись); гистограмма: отставания 1/2/3 = 406 тыс./252 тыс./120 тыс., 0 — ни одного. Дофамин приходит на шаг позже входа →
KNP_DELTA_LAG=1. - Пробный прогон (признаки coarse, 3000 обучение, 1000 проверка, 10 нейронов): скорость 0,3 — 48,5%, 1 — 76,8%, 3 — 77,4% (колонки 200 нейронов на том же объёме: 69,8% без наказания, до 79% с наказанием).
cats-dogs/source: те же изменения (construct_network.cpp,spike_generators.cpp), пересобранcats_dogs;cats-dogs/run.py --backend delta.- Запущены:
readout/delta_runs.sh(MNIST coarse, 30 000, 6 вариантов) и кошки/собаки на плотных признакахfeatures-v3/kmeans_validation(2048 входов, 18 000 обучение, скорости 0,3/1/3).