데브허브 | DEVHUB | Diffusion 코드에 꼭 붙어있는 잡기술
- Classifier-Free Guidance(CFG)는 생성 모델에서 조건(예: '숫자 0 생성')과 노이즈 입력 간의 혼동을 보정하여, 입력 정보가 더 명확하게 반영되도록 돕는 기술입니다. 💡
- CFG의 이론적 배경은 복잡한 수학적 개념을 포함하지만, 실제 코드 구현은 모델을 두 번 호출하는 방식으로 비교적 간단합니다. 🤯
- 'Guidance'는 생성 모델에 '이런 이미지를 만들어라'와 같은 구체적인 지시를 내리는 것을 의미하며, CFG는 이 지시를 효과적으로 반영하는 방법입니다. 🎯
- CFG는 샘플링 과정에서 모델을 두 번 사용합니다. 한 번은 조건을 입력하여(cond) 특정 정보를 반영한 결과를 얻고, 다른 한 번은 조건 없이(uncond) 일반적인 결과를 얻습니다. 🔄
- 최종 결과는
(1+w) * cond - w * uncond 수식을 통해 얻어지며, 이는 cond + w * (cond - uncond)로도 표현될 수 있습니다. ➕
cond - uncond는 모호한(uncond) 출력에서 명확한(cond) 출력으로 향하는 '방향 벡터' 역할을 하며, 이를 통해 입력 정보가 더욱 뚜렷하게 반영됩니다. ➡️
- 수식의
w 값은 모호한 결과로부터 조건에 맞는 '스러움'을 얼마나 강하게 반영할지 조절하는 스케일 역할을 합니다. ⚖️
- CFG 수식은 출발점을 cond 또는 uncond로 잡는 방식에 따라 다르게 보일 수 있으나, w 값 조절을 통해 서로 등가적으로 표현될 수 있습니다. ↔️
- CFG의 핵심 원리는 조건이 있는 모델 결과와 조건이 없는 모델 결과의 차이를 '가이던스 방향'으로 활용하여, 생성될 샘플에 입력된 정보가 더 강력하게 반영되도록 하는 방식입니다. ✨
- CFG의 작동 방식을 이해하면 조건부 생성 모델의 코드를 분석하고 활용하는 데 큰 도움이 됩니다. 🛠️