AI VIDEO BRIEFING
Classifier-free guidance 원리: MIT 6.S184 강의로 배우는 확산 모델 프롬프트 반영 기법
이미지 생성 모델이 프롬프트를 제대로 따르게 만드는 핵심 기법 classifier-free guidance를 MIT 6.S184 강의로 따라간다. 분류기 유도에서 출발하는 수식 전개, 빈 토큰으로 모델 하나에 담는 요령, 다양성과 속도라는 대가까지 짚는다.

핵심 메시지
쉽게 이해하기
MIT 6.S184 'Flow Matching and Diffusion Models' 3B강은 확산·흐름 모델이 프롬프트를 따르게 만드는 방법을 다룬다. 강의는 먼저 목표를 분명히 한다. '아무 이미지나 만들기'가 아니라 '채소로 만든 자동차' 같은 특정 문구에 맞는 이미지를 만드는 것, 즉 유도(guidance)가 주제다.
가장 소박한 접근은 데이터 분포를 이미지 하나가 아니라 (이미지, 프롬프트) 쌍으로 두고, 프롬프트를 신경망의 추가 입력으로 넣는 것이다. 학습 절차는 거의 그대로이고 샘플링도 매 단계 프롬프트를 함께 넣어주면 끝난다. 이론적으로는 이것으로 조건부 분포에서 표본을 뽑아야 하지만, 강사는 '코기 개'라는 프롬프트로 만든 결과가 개 비슷한 무언가로 흩어질 뿐 원하는 그림이 아니라는 점을 보여준다.
그래서 등장하는 것이 분류기 유도다. 베이즈 정리로 p(x|y)를 분해하고 x에 대한 로그 기울기를 취하면 프롬프트와 무관한 항 하나가 사라지고, 유도된 점수는 '유도되지 않은 점수 + 분류기의 로그 기울기'로 정리된다. 분류기는 '이 (잡음 섞인) 이미지가 이 라벨일 확률'을 말해주는 모델이므로, 프롬프트 의존성은 전부 이 한 항에 모여 있다. 그 항에 가중치 w를 곱해 키우자는 것이 핵심 아이디어다.
문제는 비용이다. 벡터장 모델 외에 분류기를 하나 더 학습해야 하고, 그것도 기성 분류기를 가져다 쓸 수 없다. 입력이 잡음 섞인 데이터이기 때문에 잡음 데이터로 새로 학습해야 한다. 게다가 y가 클래스가 아니라 긴 문장이면 그 우도와 기울기를 계산하는 일 자체가 난제가 된다.
CFG의 묘수는 같은 베이즈 관계식을 한 번 더 써서 분류기 항을 '유도된 벡터장과 유도되지 않은 벡터장의 차이'로 바꾸는 것이다. 최종 형태는 두 벡터장의 가중합이며 w ≥ 1일 때 프롬프트 방향이 강화되고, w = 1이면 기본 유도로 되돌아간다. 여기에 '프롬프트를 모른다'를 뜻하는 빈 토큰을 정의해 두면 하나의 신경망이 두 벡터장을 모두 내놓을 수 있고, 학습 시에는 예컨대 20% 확률로 라벨을 떨어뜨리는 최소한의 변경만 하면 된다.
주요 인사이트
- 강사는 CFG의 효과를 과장 없이 단정한다. 오늘날 우리가 보는 생성 이미지는 사실상 전부 CFG로 만들어졌고, 이 기법 없이는 모델이 근처에도 못 미치는 결과를 낸다. 예로 든 확산 모델의 가이던스 스케일 4는 프롬프트 의존 항의 기여를 3배(4−1) 키운다는 뜻이다.
- 동시에 강사는 CFG가 휴리스틱임을 분명히 한다. 강의 내내 전제였던 '데이터 분포에서 표본을 뽑는다'는 원칙에서 처음으로 벗어나며, 완벽한 학습과 완벽한 분포가 있었다면 애초에 필요 없었을 보정이다.
- 그런데 이 이탈이 오히려 이득이 되기도 한다. 인터넷 데이터의 캡션에는 틀린 것이 섞여 있어, 최신 모델이 만든 이미지의 텍스트-이미지 정합도가 실제 인터넷의 무작위 쌍보다 높게 측정되기도 한다. 데이터 분포를 넘어선 첫 사례인 셈이다.
- 대가는 다양성과 속도다. 가중치를 키우면 분포의 봉우리로 붕괴해 변주가 사라지고 이미지가 과포화되며, 매 단계 조건부·무조건부 두 번의 신경망 호출이 필요해 효율이 절반으로 떨어진다.
- 이 강의에 이어지는 내용은 신경망 구조와 잠재 공간(효율과 압축), 그리고 보너스로 이산 확산 모델(확산 원리를 언어에 적용)과 증류를 통한 속도 개선이다.
자주 묻는 질문
프롬프트를 입력으로 넣기만 하면 왜 부족한가요?
이론적으로는 충분해야 합니다. (이미지, 프롬프트) 쌍으로 학습한 모델은 조건부 분포에서 표본을 뽑아야 하니까요. 하지만 경험적으로 결과가 프롬프트를 충분히 따라가지 않는 것이 관찰되며, 강의에서는 '코기 개' 프롬프트가 개 비슷한 잡다한 이미지로 흩어지는 예를 보여줍니다.
왜 '분류기가 없다(classifier-free)'고 부르나요?
수식상 프롬프트 의존 항을 분류기의 로그 기울기로 해석했지만, 이를 유도된 벡터장과 유도되지 않은 벡터장의 차이로 다시 쓰면 실제로 학습해야 할 분류기가 사라집니다. 분류기는 이론적 해석 속에만 존재하고 실체가 없기 때문입니다.
하나의 모델로 조건부와 무조건부를 모두 처리하는 방법은 무엇인가요?
'프롬프트를 알려주지 않았다'를 뜻하는 빈 토큰(예: 추가 클래스 하나)을 정의하고, 학습 중 일정 확률(강의 예시는 20%)로 라벨을 떨어뜨려 학습합니다. 그러면 같은 신경망이 프롬프트를 따르는 법과 모를 때 무엇을 할지를 함께 배웁니다.
CFG에는 어떤 단점이 있나요?
매 샘플링 단계에서 조건부와 무조건부로 두 번 신경망을 호출해야 해 효율이 절반이 됩니다. 또 가중치를 크게 키우면 분포의 봉우리로 몰려 이미지가 과포화되고 다양성이 사라집니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗