배경
Phase 10 (PR #62) 의 결정적 새 발견:
channel_full (adj=1) ≈ plain Linear + 약간 우위 (-0.0148)
channel_uniform_small (adj ∈ [0.05, 0.15], Phase 2 sweet spot 패턴) = +0.18 열위
- 원인:
effective_w = adj * W 에서 adj≈0.10 면 effective magnitude 가 10% 수준 → forward 출력 약화
→ 새 규칙: 0-init 금지 + 적정 magnitude 는 자유도의 의미적 위치에 의존
- residual gate (
y = x + α·f(x)): ~0.10
- weight multiplier (
y = (adj·W)x): ~1.0
본 phase 는 이 규칙을 ChannelGraphLinear 에 직접 적용 — adj_init=uniform[0.95, 1.05] (1.0 근처 small noise).
검증할 가설
- scale 균형 + 0-init 회피 동시 달성 — uniform_around_one 이 channel_full (adj=1) 과 비교?
- adj 학습 활성 — 1.0 근처 noise 가 grad flow + spread 학습?
- uniform_small 의 실패 원인 확정 — 본 phase 가 잘 동작하면 "magnitude rule" 명확 입증
- post-training adj distribution — channel_full vs uniform_around_one 의 학습된 분포 차이?
범위 (Phase 11 = scale-corrected init ablation)
구현 변경 — src/graphlm/neuron/graph_channel.py
adj_init literal 에 "uniform_around_one" 추가
- 동작:
uniform[0.95, 1.05] — 1.0 근처 small noise
- 의미: scale 균형 (effective_w ≈ W) + 0-init 회피 (gradient flow 확보) + adj 학습 활성
테스트 — tests/neuron/test_graph_channel.py
- uniform_around_one init range 검증 ([0.95, 1.05] 내, std > 0.01)
- function preservation 약함 검증 (uniform_around_one ≠ plain 완전 동치, 그러나 magnitude balance)
데모 노트북 — notebooks/02-function-level/10-phase11-scale-corrected-init.ipynb
- 4 × 2 sweep: arch ∈ {plain, channel_full, channel_uniform_small, channel_uniform_around_one} × seed ∈ {42, 123} = 8 run
- Phase 10 baseline (plain 2.1487, channel_full 2.1339, channel_uniform_small 2.3268) 직접 비교
- §6 학습된 adj distribution — uniform_around_one 가 1.0 근처에서 어떻게 spread?
- §7 adj heatmap — uniform_around_one 의 init noise 가 학습으로 structure 형성?
- §8 loss curve 4 arch
완료 조건
후속 (Phase 12+ 계획 유지)
- Phase 12: channel + group hybrid foundations
- Phase 13: Transformer 통합 (Q/K/V/O 모두 GraphLinear)
- Phase 14: scale-up 정량 실험
참고
배경
Phase 10 (PR #62) 의 결정적 새 발견:
channel_full(adj=1) ≈ plain Linear + 약간 우위 (-0.0148)channel_uniform_small(adj ∈ [0.05, 0.15], Phase 2 sweet spot 패턴) = +0.18 열위effective_w = adj * W에서 adj≈0.10 면 effective magnitude 가 10% 수준 → forward 출력 약화→ 새 규칙: 0-init 금지 + 적정 magnitude 는 자유도의 의미적 위치에 의존
y = x + α·f(x)): ~0.10y = (adj·W)x): ~1.0본 phase 는 이 규칙을 ChannelGraphLinear 에 직접 적용 — adj_init=uniform[0.95, 1.05] (1.0 근처 small noise).
검증할 가설
범위 (Phase 11 = scale-corrected init ablation)
구현 변경 —
src/graphlm/neuron/graph_channel.pyadj_initliteral 에"uniform_around_one"추가uniform[0.95, 1.05]— 1.0 근처 small noise테스트 —
tests/neuron/test_graph_channel.py데모 노트북 —
notebooks/02-function-level/10-phase11-scale-corrected-init.ipynb완료 조건
adj_init="uniform_around_one"옵션 추가후속 (Phase 12+ 계획 유지)
참고