# Třetí verze: učení skutečných vnitřních spojů

## Co se změnilo

Verze 1 je naše výchozí simulace nad anatomickými daty MaleCNS. Verze 2 má
naučené rozhraní obrazu a motoru. **Verze 3 navazuje na verzi 2, ponechává
oba převodníky beze změny a učí pouze vybrané synaptické váhy uvnitř sítě.**

Nejde o jiný konektom ani o nový plánovač. Pořád simulujeme 166 700 neuronů
a 25 582 938 směrovaných spojení. Tréninku jsme zpřístupnili 8 145 existujících
spojení směřujících do 24 PFL3 neuronů. Ve finálním checkpointu se skutečně
změnilo **2 907 vah**. Ostatní váhy, model neuronu, senzory a motorový
převodník zůstaly pevné. Nová spojení nevznikla.

Váhy jsou součástí naší aproximace nervové aktivity nad anatomickými daty;
nejde o experimentální změnu živého mozku ani biologicky ověřené učení.

## Co se síť učila

Zpřesnit přenos **směrového podnětu** do motorické aktivity. Vygenerovali jsme
náhodné dvojice „aktuální natočení“ a „požadovaný směr“. Jejich rozdíl je
známá správná odpověď. Pevný motorový převodník čte PFL3 aktivitu a odhaduje
tento rozdíl. Chyba jeho výstupu se šíří zpět přes simulaci do povolených
vnitřních vah.

V tomto kroku se nepoužila mapa, navigační síť, výsledky průchodů ani obrazové
tréninkové příklady. Při chůzi verze 3 nadále používá **už dříve naučený
zrakový převodník verze 2**, který navrhuje směr podle hloubky a kompasu.
Úspěch navigace tedy nelze připsat jen novému vnitřnímu tréninku. Ten neučil
celý mozek od začátku orientovat se v Dust2.

## Technický postup

- 1 600 kroků Adam, batch 64, learning rate 0,007, seed 130926.
- 102 400 generovaných dvojic úhlů, rovnoměrně z rozsahu −π až π.
- Trénované parametry jsou logaritmy násobitelů původních synaptických vah:
  `new_weight = old_weight * exp(log_multiplier)`.
- Omezení logaritmu na [−1,5; 1,5] zachovává znaménko a existenci každého spoje.
  Ve výsledku se násobitele pohybují přibližně mezi 0,326 a 4,482.
- Neuronový krok 10 ms, časová konstanta 50 ms. Gradient prochází posledními
  100 ms simulace. Před tím je podle kroku 0, 0, 100 nebo 300 ms rozběhu bez
  zpětného průchodu. Jde o zkrácený zpětný průchod časem.
- Celý zachovaný graf je ve výpočtu aktivity i gradientu; trénovatelné jsou
  pouze povolené hodnoty vah. Původní CSR matice se násobí aktivitou a změny
  vybraných spojů se přičítají. Při běžné inferenci se používá přímo upravená
  CSR matice. Numerická shoda obou výpočtů je ověřena.
- Loss je MSE mezi odhadnutým a správným vektorem `(cos(angle), sin(angle))`
  plus `0.0002 * mean(log_multiplier²)`. Gradient je oříznut normou 1.
- Trénink na RTX 5090 trval přibližně 236 s. Nepočítá to testy navigace.

Před hlavním tréninkem proběhl 100krokový technický pilot. Finální kandidát
vznikl znovu od původních vah, ne pokračováním pilotního checkpointu.

## Vyhodnocení

Vývojový test: 2 048 jiných dvojic úhlů (seed 131026) a 20 uložených
vývojových startů v Dust2. Verze 3 dosáhla B ve 20/20 případech. Potom byl
checkpoint a výpočetní kód zmrazen pomocí hashů v `outputs/v3/frozen.json`.

Závěrečný test směrové odezvy: dalších 2 048 dvojic (seed 132026).

| Doba od podnětu | Verze 2: průměrná chyba | Verze 3: průměrná chyba |
|---|---:|---:|
| 100 ms | 2,398° | 2,005° |
| 200 ms | 1,607° | 1,470° |
| 400 ms | 1,654° | 1,700° |
| 600 ms | 1,683° | 1,750° |

První reakce se zlepšila přibližně o 16 %. Pozdější odezva se mírně zhoršila.
**Nelze tvrdit, že je nová síť přesnější ve všech podmínkách.**

Závěrečná navigace používá stejných 100 uložených startů jako publikované
srovnání verzí 1 a 2. Nejde o nový nezávislý test verze 2. Pro verzi 3 nebyly
tyto průchody použity při tréninku ani při výběru checkpointu.

| Verze | Dosažení B | Průměrný čas úspěšného průchodu |
|---|---:|---:|
| 1. Originální | 0/100 | — |
| 2. Naučená rozhraní | 100/100 | 28,627 s |
| 3. Trénovaná vnitřní síť | 100/100 | 28,751 s |

Vnitřní učení tedy proběhlo a změnilo odezvu, ale **nezlepšilo úspěšnost
chůze na B**, která už u verze 2 byla 100 %. Průměrný průchod byl mírně delší.
Všechna měření se týkají stejné mapy a kinematického těla, bez soupeřů a střelby.

## Volitelný cíl a připravené ukázky

Lokální laboratoř dovoluje kliknout na průchozí plochu nebo zadat souřadnice.
Server ověří cíl a spustí skutečný nový průchod. Model dostává průběžně jen
hloubku, vlastní natočení a směr vzdušnou čarou k zadanému cíli. Celou mapu,
souřadnice a body trasy řadič nedostává. NAV kontroluje pouze pohyb těla.

Libovolný cíl nemusí být dosažen: obrazové rozhraní se učilo cestu na B.
To platí i pro místa ležící na stejné trase, pokud jiný cílový směr změní jeho
reakci. Zastavení či bloudění se ukládá jako neúspěšný pokus.

Showcase nabízí pět předem vybraných cílů a všechny tři verze, tedy 15
uložených průchodů. Cíle byly určeny z dříve uložené trasy verze 2 a pevného
bodu mimo ni; nevybírali jsme je podle úspěchů verze 3. Přesné souřadnice a
výsledky jsou v `showcase-goals.json` a CSV. Neúspěšné pokusy se nevyřazují.

Statický showcase pouze přehrává data. Neprovádí neuronový výpočet a
nekontaktuje Python server. ZIP obsahuje hotové webové soubory a podklady
potřebné k jejich zobrazení. Lokální výpočet cíle je oddělený v `/lab/`.

## Opakování

V projektu s dodanými mapami `de_dust2_simply.glb`, `de_dust2.nav`, prostředím
z `requirements.txt` a připraveným konektomem:

```powershell
python scripts/run_v3.py --model internal --split heldout --tag repeat --record
python scripts/probe_internal_v3.py --checkpoint outputs/v3/checkpoint/internal.pt --seed 132026 --out angular-repeat
python scripts/verify_v3.py
```

Nový trénink proveďte v kopii projektu:

```powershell
python scripts/train_internal_v3.py --steps 1600 --batch 64 --tag repeat
```

Zapíše `outputs/v3/checkpoint/internal-repeat.pt`; zmrazený finální checkpoint
`internal.pt` nepřepíše. K ověření nového výsledku použijte `--checkpoint`.
Přesné hashe mezi verzemi CUDA/PyTorch nejsou zaručené.

Zdroje anatomie, aproximace neuronů a původní učení obou rozhraní popisuje
`METHODS-V2.md`. MaleCNS: HHMI Janelia a spolupracovníci, CC BY 4.0.
Dust2/CS2: Valve; uživatelem dodané podklady. Jsme nezávislý projekt.
