BREAKING CHANGES: - Removed orphaned dqn.rs monolithic trainer (4,975 lines) - Removed orphaned dqn_ensemble.rs module (816 lines) - Removed orphaned tft.rs and tft_complete_int8_integration_test.rs - TFT trainer split into modular directory structure DQN Module Refactoring: - Split trainers/dqn.rs into modular structure (config.rs, statistics.rs, trainer.rs) - Fixed hyperopt 39D search space (continuous params only) - Boolean flags (use_dueling, use_double_dqn, use_per, use_noisy_nets) are now FIXED architectural decisions - use_distributional defaults to false (Candle BUG #36 - scatter_add gradient issues) Clean Module Structure: - ml/src/trainers/dqn/ directory with proper mod.rs exports - ml/src/trainers/tft/ directory with config.rs, types.rs, model.rs, trainer.rs, tests.rs - All P0 features validated: TD-error clamping, batch diversity, LR scheduler, priority staleness Documentation: - Added comprehensive docs in docs/codebase-cleanup/ - ADR-001 for DQN refactoring decisions - Rainbow DQN component matrix and quick reference guides Build Status: Compiles with zero errors 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
164 lines
17 KiB
Plaintext
164 lines
17 KiB
Plaintext
╔══════════════════════════════════════════════════════════════════════════════╗
|
||
║ SPECTRAL NORMALIZATION RESEARCH SUMMARY ║
|
||
║ Agent 15 - Complete ║
|
||
╚══════════════════════════════════════════════════════════════════════════════╝
|
||
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ 🎯 OBJECTIVE: Research spectral normalization for DQN anti-overfitting │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌────────────────────────────────────────────────────────────────────────────┐
|
||
│ ✅ FEASIBILITY VERDICT: YES - CAN BE IMPLEMENTED │
|
||
│ Complexity: MEDIUM | Time: 5-8 days | Performance: -5-10% │
|
||
└────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────────── KEY FINDINGS ───────────────────────────────────┐
|
||
│ │
|
||
│ 1. CANDLE SUPPORT │
|
||
│ ❌ No built-in spectral normalization in candle-nn v0.9.1 │
|
||
│ ✅ CAN implement using power iteration algorithm │
|
||
│ ✅ Existing power iteration examples in codebase to adapt │
|
||
│ │
|
||
│ 2. IMPLEMENTATION APPROACH │
|
||
│ Algorithm: Power Iteration (Miyato et al., 2018) │
|
||
│ ┌────────────────────────────────────────────────────┐ │
|
||
│ │ for i in 0..n_iters: │ │
|
||
│ │ v = W^T * u / ||W^T * u|| # Right singular vec │ │
|
||
│ │ u = W * v / ||W * v|| # Left singular vec │ │
|
||
│ │ σ = u^T * W * v # Spectral norm │ │
|
||
│ │ W_norm = W / σ # Normalized weights │ │
|
||
│ └────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ 3. INTEGRATION POINT │
|
||
│ Wrap existing NoisyLinear in rainbow_network.rs │
|
||
│ ┌────────────────────────────────────────────────────┐ │
|
||
│ │ pub struct SpectralNoisyLinear { │ │
|
||
│ │ noisy_linear: NoisyLinear, │ │
|
||
│ │ spectral_norm: Option<SpectralNorm>, │ │
|
||
│ │ } │ │
|
||
│ └────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌──────────────────────── COST-BENEFIT ANALYSIS ─────────────────────────────┐
|
||
│ │
|
||
│ 💰 COSTS │ 📈 BENEFITS │
|
||
│ ───────────────────────────────── │ ──────────────────────────────────── │
|
||
│ • Dev time: 5-8 days │ • Overfitting reduction: 10-20% │
|
||
│ • Performance: -5-10% speed │ • Better generalization │
|
||
│ • Complexity: Custom impl needed │ • Training stability │
|
||
│ • Memory: +0.1% params (minimal) │ • State-of-the-art technique │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌──────────────────────── IMPLEMENTATION ROADMAP ────────────────────────────┐
|
||
│ │
|
||
│ 📅 PHASE 1: Core Implementation (2-3 days) │
|
||
│ ├─ Create SpectralNorm struct │
|
||
│ ├─ Implement power iteration │
|
||
│ ├─ Write unit tests │
|
||
│ └─ Benchmark performance │
|
||
│ │
|
||
│ 📅 PHASE 2: DQN Integration (1-2 days) │
|
||
│ ├─ Add use_spectral_norm config flag │
|
||
│ ├─ Wrap NoisyLinear layers │
|
||
│ ├─ Update initialization │
|
||
│ └─ Integration tests │
|
||
│ │
|
||
│ 📅 PHASE 3: Validation (2-3 days) │
|
||
│ ├─ Hyperopt with/without spectral norm │
|
||
│ ├─ Compare validation metrics │
|
||
│ ├─ Measure overfitting reduction │
|
||
│ └─ Ablation studies │
|
||
│ │
|
||
│ ⏱️ TOTAL: 5-8 days │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌─────────────────────── RECOMMENDATION MATRIX ──────────────────────────────┐
|
||
│ │
|
||
│ 🟢 IMPLEMENT IF: │ 🔴 DON'T IMPLEMENT IF: │
|
||
│ ───────────────────────────────── │ ──────────────────────────────────── │
|
||
│ • Validation >> Training loss │ • Current regularization works │
|
||
│ • Overfitting is critical issue │ • Limited dev resources │
|
||
│ • Need SOTA anti-overfit tech │ • Performance overhead unacceptable │
|
||
│ • Can afford 5-8 days + 5-10% │ • Simple alternatives untried │
|
||
│ │
|
||
│ 🟡 SIMPLE ALTERNATIVES (try first): │
|
||
│ ──────────────────────────────────────────────────────────────────────── │
|
||
│ • Increase dropout: 0.3 → 0.5 (1 line change) │
|
||
│ • Add weight decay to optimizer (already supported) │
|
||
│ • Implement early stopping (simple) │
|
||
│ • Reduce network capacity (config change) │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌───────────────────────── TECHNICAL DETAILS ────────────────────────────────┐
|
||
│ │
|
||
│ 📊 Performance Impact │
|
||
│ • Training time: +5-10% slower │
|
||
│ • Memory: +0.1% parameters (2 * hidden_dim per layer) │
|
||
│ • Power iterations: 1-3 typically sufficient │
|
||
│ • Convergence: Fast (track ||σ_new - σ_old||) │
|
||
│ │
|
||
│ 🔧 Implementation Complexity │
|
||
│ • Lines of code: ~300 LOC │
|
||
│ • Dependencies: None (pure candle tensors) │
|
||
│ • Integration: Wrap existing NoisyLinear │
|
||
│ • Testing: Unit + integration + validation │
|
||
│ │
|
||
│ 📚 References │
|
||
│ • Miyato et al. (2018) - Spectral Normalization for GANs │
|
||
│ • Gouk et al. (2021) - Lipschitz Regularization │
|
||
│ • Yoshida & Miyato (2017) - Spectral Norm for DRL │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌───────────────────── EXISTING CODE PATTERNS ───────────────────────────────┐
|
||
│ │
|
||
│ Found power iteration examples in codebase: │
|
||
│ ✅ ml/src/regime/transition_matrix.rs:273 │
|
||
│ └─ Power iteration: π^(k+1) = π^(k) * P │
|
||
│ │
|
||
│ ✅ ml/src/checkpoint/enterprise_implementations.rs:308 │
|
||
│ └─ Simple power iteration for largest eigenvalue │
|
||
│ │
|
||
│ Can adapt these patterns for spectral norm calculation! │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌───────────────────────── DECISION CHECKLIST ───────────────────────────────┐
|
||
│ │
|
||
│ Before implementing, confirm: │
|
||
│ │
|
||
│ [ ] Overfitting measurably severe (validation >> training) │
|
||
│ [ ] Team approved 5-8 days development time │
|
||
│ [ ] Performance overhead (5-10%) acceptable │
|
||
│ [ ] Current regularization proven insufficient │
|
||
│ [ ] Alternative simple solutions already tried │
|
||
│ │
|
||
│ IF ALL CHECKED → 🟢 IMPLEMENT │
|
||
│ IF ANY UNCHECKED → 🟡 CONSIDER ALTERNATIVES │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
┌──────────────────────────── DELIVERABLES ──────────────────────────────────┐
|
||
│ │
|
||
│ 📄 Research Documents Created: │
|
||
│ 1. spectral_normalization_research.md (full report) │
|
||
│ 2. spectral_norm_quick_ref.md (decision guide) │
|
||
│ 3. spectral_norm_visual_summary.txt (this file) │
|
||
│ │
|
||
│ 🎯 Next Steps: │
|
||
│ → Team decision on implementation priority │
|
||
│ → If approved: Begin Phase 1 (core implementation) │
|
||
│ → If not: Try simple alternatives first │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
|
||
╔══════════════════════════════════════════════════════════════════════════════╗
|
||
║ STATUS: ✅ RESEARCH COMPLETE ║
|
||
║ Agent 15 - Spectral Normalization ║
|
||
║ Awaiting Team Decision ║
|
||
╚══════════════════════════════════════════════════════════════════════════════╝
|