Ablation Experiment Plan for VLM Emotion Rating Study
Status: Planned (generated from Ralph Loop review feedback, 2026-03-25)
Related Manuscript: docs/manuscript/manuscript_VLM_emotion_2026_v5.md
Motivation: 6명의 리뷰어 (ruthless-paper-reviewer, cognitive-psychology, ai-ml, Hinton, Feynman, Bengio)가 공통으로 지적한 실험적 공백을 해소하기 위한 계획
Priority 1: Critical Ablations (논문 투고 전 필수)
Ablation 1: Text-Only Arousal Estimation
목적: VLM의 arousal “advantage”가 visual perception인지 language-based inference인지 분리
설계:
- 이미지 없이 emotion label만 제공 (“The facial expression is angry. Rate the arousal from 1-9.“)
- 동일 1,440개 라벨에 대해 Gemma3 + LLaMA 실행
- VLM arousal (image+label) vs VLM arousal (label-only) 상관 비교
예상 결과: label-only 조건에서도 높은 arousal 상관이 나오면 → arousal advantage는 language prior에서 기인
구현:src/models/ollama_vlm.py에 text-only mode 추가,src/config.py에 ablation flag
예상 소요: ~2시간 (inference only, 모델 이미 배포됨)
Ablation 2: No-Context (Single-Shot) Prompting
목적: Context-carry의 error propagation + anchoring 효과 분리
설계:
- 한 번의 프롬프트로 emotion + valence + arousal 동시 추출
- JSON 출력:
{"emotion": "...", "valence": N, "arousal": N} - Context-carry 결과와 비교: κ, r, MAE, SD 모두 비교
예상 결과: single-shot에서 within-category variance가 증가하면 → context-carry의 anchoring이 variance를 억제
구현:src/config.py의PromptConfig에 single-shot template 추가
예상 소요: ~2시간
Priority 2: High-Priority Ablations (논문 경쟁력 강화)
Ablation 3: Temperature Variation
목적: Greedy decoding이 fixed-value output pattern의 주된 원인인지 검증
설계:
- Temperature = {0, 0.3, 0.7, 1.0}에서 각각 3회 반복 실행
- Within-category SD를 temperature별로 비교
- Multiple runs의 평균과 SD 보고
예상 결과: temperature 증가 시 within-category SD 증가 → output 제약이 주 원인
구현:configs/default.yaml에 temperature 설정 추가, inference loop에 반복 로직
예상 소요: ~8시간 (4 temperatures × 3 runs × 2 models)
Ablation 4: FP16 vs 4-bit Quantization
목적: Quantization이 output discretization에 미치는 독립적 기여 분리
설계:
- Gemma3-4B를 FP16과 4-bit QAT에서 각각 실행 (동일 프롬프트, temperature=0)
- LLaMA-3.2-11B는 M1 Max 32GB에서 FP16이 불가능할 수 있음 → Gemma3만 비교
- Within-category SD, MAE, κ 비교
예상 결과: FP16에서 약간의 variance 증가 (Hinton 추정: 20-30% variance restoration)
구현:configs/에 fp16 variant 추가, MLX FP16 모드 확인
예상 소요: ~3시간
Ablation 5: Dark Knowledge (Softmax Distribution) Analysis
목적: Output token의 argmax가 아닌 전체 softmax 분포에 within-category variance가 존재하는지 확인
설계:
- 이미 수집된 logits NPZ 파일 활용 (
output_scores=True설정) - Token ID 1-9에 대한 softmax probability 추출
- Emotion category 내에서 probability distribution의 entropy 계산
- 높은 entropy = 모델이 내부적으로 변별하고 있음 (output만 동일)
예상 결과: Entropy > 0이면 → “dimensional collapse”는 output-level 현상, 모델 내부는 변별 가능
구현:src/analysis/에 dark_knowledge_analysis.py 추가
예상 소요: ~1시간 (데이터 이미 존재)
Note: CLAUDE.md에 “Dark knowledge = top-50 softmax distributions per generation step, saved as NPZ files”로 기록되어 있음 → 데이터 이미 수집 완료
Ablation 6: Additional VLM Models (Qwen Series)
목적: N=2에서 N=4+로 VLM 수 확대하여 일반화 가능성 확보
설계:
- Qwen2-VL-7B, Kimi-VL, SmolVLM2 등 추가 모델
- 동일 context-carry 프롬프팅 전략
- 동일 분석 파이프라인
구현:src/models/에 이미ollama_vlm.py백엔드 존재 → config만 추가
예상 소요: 모델당 ~4시간 (1,440 images)
Priority 3: Medium-Priority (Revision 대응용)
Ablation 7: Real Face Stimuli Comparison
목적: AI-generated faces의 OOD 효과 분리 (Bengio 지적)
설계:
- FER-2013 또는 AffectNet subset에서 동일 6 emotions 이미지 선택
- 동일 VLM + FER 모델로 평가
- AI face vs real face 결과 비교
예상 소요: ~6시간
Ablation 8: False Positive Rate by Race
목적: Angry classification의 race bias가 accuracy 차이인지 over-attribution인지 구분
설계:
- 비-분노 얼굴 중 분노로 분류된 비율 (FPR)을 race별 산출
- FPR(Black) > FPR(Korean)이면 → 실제 over-attribution
구현: 기존 predictions.jsonl에서 산출 가능, 추가 실험 불필요
예상 소요: ~30분
Ablation 9: Hidden State Analysis (CKA/RSA)
목적: VLM 내부 표상에 within-category 변별 정보가 존재하는지 확인 (Hinton 권고)
설계:
- Gemma3의 중간 hidden states 추출
- Image-level hidden state similarity matrix 구축
- CKA/RSA로 human rating pattern과 비교
구현:output_attentions=True로 이미 attention data 수집 중 → hidden states 추가 추출 필요
예상 소요: ~4시간
실행 우선순위 및 일정
| 순서 | Ablation | 예상 소요 | 누적 | 논문 영향 |
|---|---|---|---|---|
| 1 | A5: Dark Knowledge | 1h | 1h | Section 5.1 근본적 보강 (데이터 이미 존재!) |
| 2 | A8: FPR by Race | 0.5h | 1.5h | Section 4.5 bias 해석 정밀화 |
| 3 | A1: Text-Only Arousal | 2h | 3.5h | Strength inversion claim 해소/확인 |
| 4 | A2: Single-Shot Prompting | 2h | 5.5h | Context-carry confound 분리 |
| 5 | A3: Temperature Variation | 8h | 13.5h | Fixed-value pattern 원인 분리 |
| 6 | A6: Qwen Series | 4h/model | 17.5h+ | N=2 → N=4+ 일반화 |
| 7 | A4: FP16 Comparison | 3h | 20.5h | Quantization 기여 분리 |
| 8 | A7: Real Face Comparison | 6h | 26.5h | OOD generalization |
| 9 | A9: Hidden State CKA | 4h | 30.5h | Representation vs output 구분 |
최소 투고 요건: A1 + A2 + A5 + A8 (총 ~5.5시간)
경쟁력 있는 투고: A1-A6 (총 ~17.5시간)
완전체: A1-A9 (총 ~30.5시간)
코드 구현 참조
| 파일 | 역할 | 수정 필요 |
|---|---|---|
src/config.py : PromptConfig | 프롬프트 템플릿 | text-only, single-shot 추가 |
src/models/ollama_vlm.py | VLM inference | text-only mode flag |
configs/default.yaml | 실험 설정 | temperature, ablation flags |
src/analysis/bias.py | LMM 분석 | FPR 계산 함수 추가 |
outputs/mlx/*/logits/ | Dark knowledge NPZ | 이미 수집됨 → 분석만 |
src/models/__init__.py | 모델 레지스트리 | Qwen 등록 |