10 — Fusion, loss, thresholds¶
flowchart LR
A["branch A logits\nsignal model"] --> AVG["average votes"]
B["branch B logits\nscalogram model"] --> AVG
AVG --> THR["per-class thresholds\nV set low: catch more"]
THR --> OUT["N / V / S / F / Q"]
- Logits: five raw scores, one per class — one vector per branch.
- Sigmoid: squashes each score to 0–1, five independent yes/no dials. Threshold 0.5 default.
- BCE loss: punishes wrong dials, rare classes weighted heavier. The default head.
- Cross-entropy: alternative if beats turn out single-label — same five dials, only loss + decision rule change.
- Fusion: combine the two branches by averaging logits; learned gate only if averaging disappoints.
Threshold tuning slides each class along its precision-recall tradeoff (lesson 04). V's threshold drops low — accept false alarms, because misses kill. Approach B skips fusion with one shared model on concatenated features.
Next: 11-reading-papers.md, then start ../research/plan.md Phase 1.