EV/Action-Net-Design: Value-Regression auf Rollout-Lehrer, Entscheidungsschicht bleibt klassisch

# EV/Action-Net — Distillations-Design (2026-09-17)

## Aufgabe
`f(Features) → pot-normalisierter EV-Vektor` — **Value-Regression auf die Rollout-Lehrer-EVs**, nicht Aktions-Klassifikation. Die validierte Entscheidungsschicht (Edge, Trust-Gates, Argmax) bleibt klassisch; das Net ersetzt nur den Evaluator (die Enumeration). Das ist das DeepStack-Muster (depth-limited solving + gelernte Blattwerte) und erhält alle 6 Tuning-Lektionen als unveränderliche Regeln.

## Labels (Korpus-Zeilen mit `rollout`-Feld)
`ev_check, ev_call, ev_bets[4], ev_raises[2]` — pot-normalisiert (`EV / pot`) für Skalen-Invarianz. Bestand: 308K, Ziel 1M+ (Batch 3 läuft, Caps 1M/Tisch).

## Features (alles in den Rows vorhanden)
1. **Karten:** hero (2) + board (3-5) → Embedding ODER die bereits berechneten `hs/ppot/npot/nutpot/rpot` + Board-Textur-Features (85-dim-Architektur als Vorlage)
2. **Posterior:** pro Gegner die 169-fach Range (komprimiert: top-K Massen + Entropie) + `opp_stats` (bet/raise/call/vpip/size)
3. **Geometrie:** pot, to_call, current_bet, our_stack, opp_capacity, num_active, street, action_open, bets_trusted (Trust-Gate-Zustand als Feature!)
4. **Aktionshistorie:** street_sizes (4)

## Architektur (Candle, Muster train_gen5_*/EquityNet)
2-Türme-MLP: Karten-Turm (hole+board → 64-dim) ⊕ Numerik-Turm (≈120 dims → 128) → 2×128 Dense → 8 EV-Outputs. Kein Transformer — 1M Samples, tabellarisch, EquityNet-Vorlage reicht. Loss: MSE auf pot-normierten EVs + Beschriftungs-Gewichtung (verfügbare EVs maskieren — ev_call nur bei to_call>0, ev_raises nur bei Raises-ON).

## Trainings-/Eval-Protokoll
1. Split nach TISCH-SEEDS (nicht random — sonst Leckage über gleiche Hand-Verläufe), Held-Out: 2 Label-Tische + Whale/Reg-Familien
2. Metriken: pot-norm. MAE je EV-Kanal, **Decision-Agreement** (Argmax-Match mit Lehrer), Kalibration pro Straße/Stack
3. Härtes Gate: A/B-Batterie einer Net-getriebenen Config (cash_nl_r6n: Net-Evaluator, Fallback auf Enumeration bei OOD/low-confidence) vs r6r1 — gepaart, wie jede Iteration

## Deployment-Pfad
1. Net trainieren (gen5_nn-Feature, Candle CPU)
2. `cash_nl_r6n.toml`: river_rollout_evaluator = "net" mit Konfidenz-Fallback auf Enumeration
3. Gates (Tests, Harrington, Self-Play) + gepaarte Batterie
4. Live-Transfer-Constraint bleibt: Net-Inputs sind live-beobachtete Stats, Held-Out-Persönlichkeiten im Eval

## Offene Fragen (beim Training klären)
- Reicht 1M Labels für 8 Outputs, oder erst River-only-Net (2-3 Outputs) als MVP?
- OOD-Detektor für den Fallback (Posterior-Entropie als Proxy?)
- Gen1-Anteil im Training gewichten? (RangeNet-Diskussion: Labels beschreiben UNSERE Entscheidungen, nicht Gegnerverhalten — sollte unkritisch sein)

id: e502bf85738d4c1795285e7f59e3aadf
parent_id: f68035c61cde4435a9c920d625430815
created_time: 2026-09-17T05:05:36.975Z
updated_time: 2026-09-17T05:05:36.975Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: 
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1789621536976
user_created_time: 2026-09-17T05:05:36.975Z
user_updated_time: 2026-09-17T05:05:36.975Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
is_locked: 0
extracted_resource_ids: 
type_: 1