---
title: "CFG vs Flow Matching"
author: "Dne Cna"
published_at: "2026-10-04T14:32:08.719Z"
updated_at: "2026-10-04T14:32:08.719Z"
tags: ["cfg","flow matching","ml","ai"]
canonical_url: "https://ariser.io/@writer_8706b598dfee/cfg-vs-flow-matching"
ai_assisted: false
---

# CFG vs Flow Matching

[원문](https://ariser.io/@writer_8706b598dfee/cfg-vs-flow-matching)

두 방법은 둘 다 생성모델의 생성 품질을 제어하는 방법론이다. 둘은 실제 파이프라인에서는 자주 함께 호출된다. 

## CFG: 조건부 생성을 더 강하게 밀어붙이는 가이드

CFG는 Classifier-Free Guidance이다. 'Guidance'로써 conditional한 예측과 unconditional한 예측을 동시에 얻고 두 예측을 향해 뻗은 벡터를 빼서 최종 예측을 보정하는 방법을 말한다. "코끼리를 예측해!"라고 프롬프트를 넣었을 때 나온 예측이 conditional한 에측이고 "그냥 예측해" 라고 했을 때 나온 예측이 unconditional한 예측인데, 이 둘 간의 간극에 해당하는게 진짜 액기스, 진국이라 할 수 있는 '예측의 정수'이다. 따라서 그냥 두 벡터의 뺄셈을 진행하고 그 둘 간의 비율을 조정하는 것이 CFG이다. 

구조가 정말 간단하다는 장점이 있다.

## Flow Matching

Flow Matching은 깔끔하고 연속적인 형태로 데이터를 한 분포에서 다른 분포로 옮기는 방법론이다. 시작에서 목표로 가는 길을 생각해놓고 그 경로를 따라서 데이터를 밀어내는 벡터를 학습한다. 그리고 그 학습한 벡터를 따라서 ODE 형태로 점을 이동시켜서 생성을 진행한다.

어디에서 어디로 이동하는지를 구조적으로 설계를 빡빡하게 할 수 있다는 장점이 있다.

## 둘의 사용

생성모델을 굴릴 때, CFG는 '제어'에 쓰이고 Flow Matching은 '생성 자체'에 쓰인다. 서로 다른 역할을 담당하는 사이인거다. 제목에 'vs'라고 쓴건 일종의 머신러닝 고수들 긁기 위한 레이지베이팅이다 ㅋㅅㅋ

Flow Matching 파이프라인에서도 조건부를 받는 모델과 받지 않는 모델을 함께 두면, 추론 시 두 흐름의 차이를 이용해 조건을 더 강하게 반영할 수 있다. 
그리고 학습된 벡터장을 그대로 따르는 대신, 조건부 벡터와 무조건 벡터의 차이를 일정 비율로 섞어 이동 방향을 조정한다. 이 과정에서 CFG의 계수 역할이 다시 등장한다.
Flow Matching이 궤적 자체를 다루는 프레임워크라면, CFG는 그 궤적 위에서 “조건에 얼마나 근접할 것인가”를 실무적으로 조절하는 손잡이처럼 쓰인다.
즉, 결합은 “Flow Matching으로 흐를 길을 배우고, CFG로 그 길 위에서 조건부 성향을 강화한다”는 식으로 이해하면 자연스럽다.

추론 관점에서 보면 차이가 더 분명해진다.

    CFG 중심 관점: “프롬프트에 얼마나 맞출 것인가”를 바꾸는 계수에 민감하다. 같은 모델이라도 계수 하나로 분위기와 충실도가 달라질 수 있다.
    Flow Matching 중심 관점: “어떤 경로를 따라 이동할 것인가”가 중요하다. 궤적의 설계, 시간 스케줄, 벡터장의 형태에 따라 샘플링 효율이나 생성 특성이 달라질 수 있다.

두 관점을 함께 고려하면, 생성 모델을 설계할 때 “흐름을 어떻게 배울지”와 “조건을 어떻게 강화할지”를 분리해서 생각할 수 있다. 이는 문제 설정이나 계산 비용, 원하는 생성 성질에 따라 선택을 다르게 할 수 있다는 뜻이기도 하다.

CFG로 조건부 성향을 얼마나 강하게 반영할지 조절을 하는데에 특화되어 사용되고 메인스트림으로써 이용되는건 Flow Matching이라고 할 수 있다. 이 둘이 경쟁관계가 아니라는거, 이 글을 통해 가져갔으면 함.

