흐름 모델의 ODE에 노이즈를 다시 넣으면, 스텝마다 가우시안이라 로그확률이 생기고 같은 시작 노이즈에서도 그림이 갈린다. 그렇다면 LLM에서 비평가 없이 잘 돌던 GRPO를 그대로 올리면 될까?
역사: 작은 프롬프트 모음을 넘지 못한 정책 그래디언트
2025년 5월, 거의 같은 시기에 두 팀이 이 아이디어로 GRPO를 흐름 모델에 이식했다(Flow-GRPO는 5월 8일, DanceGRPO는 5월 12일에 arXiv에 올라왔다). DanceGRPO 팀은 앞선 방법들의 막힌 곳을 이렇게 정리했다. 미분 가능한 보상 모델의 점수를 생성 과정 끝까지 역전파하는 ReFL은 영상에서 메모리를 감당하기 어렵고, Diffusion-DPO 같은 DPO 변형은 화질을 조금밖에 올리지 못했다. 보상을 블랙박스로 다루는 DDPO, DPOK(KL 벌점을 붙인 온라인 정책 그래디언트, 2023)는 작은 프롬프트 모음(100개 미만)을 넘어 키우면 학습이 불안정해졌다. 여기에 흐름 모델의 ODE 샘플링은 애초에 스텝마다 확률을 매기는 틀에 맞지 않았다. 두 팀은 샘플링을 SDE로 바꾸고, 보상의 크기를 그룹 안에서 맞추는 GRPO로 안정성을 얻으려 했다.
Flow-GRPO (Liu et al., 2025)
DanceGRPO (Xue et al., 2025)
ODE → SDE
아래 식의 노이즈 크기 gt로 주입. 주변분포 보존
디퓨전과 rectified flow 모두를 역방향 SDE로 통일
KL 항
두 가우시안 스텝 사이의 KL을 닫힌 형태로 계산(아래 식)
—
효율화
디노이징 축소: 학습 롤아웃(학습용으로 뽑는 샘플)은 10스텝, 실제 생성은 40스텝 (4배 이상 빠른 학습)
GenEval은 「사과 네 개」「빨간 컵 옆의 파란 책」처럼 개수·색·위치 조건을 맞췄는지 검출기로 채점하는 벤치마크이고, 텍스트 렌더링은 「간판에 이 글자를 써라」 같은 프롬프트에서 글자를 맞게 그렸는지의 정확도다. PickScore와 HPS-v2.1은 사람의 쌍비교로 학습한 선호 점수다.
노이즈 크기와 스텝마다의 KL
Flow-GRPO는 스텝마다 넣는 노이즈의 크기를 시점에 따라 다르게 정한다. 논문은 이 크기를 σt로 적지만, 이 장은 그룹 표준편차 σ와 헷갈리지 않게 앞의 SDE 식처럼 gt로 쓴다. 글자만 다르고 같은 양이다. 또 논문은 t=1을 순수 노이즈, t=0을 완성 그림으로 두므로, 생성은 t가 1에서 0으로 줄어드는 방향으로 진행된다.
gt는 노이즈 쪽 끝(t→1)으로 갈수록 커지고, 완성 그림 쪽 끝(t→0)에서는 0으로 줄어든다. a = 0.7은 논문이 실험으로 고른 값이다. a를 0.1, 0.4, 0.7, 1.0으로 바꿔 보니 0.1에서는 탐색이 모자라 보상이 느리게 올랐고, 0.7까지는 올릴수록 빨라졌으며, 1.0으로 더 올려도 나아지지 않았다. 노이즈를 지나치게 넣으면 그림이 망가져 보상이 0이 되고 학습이 실패했다고 한다.
이렇게 나눈 한 스텝은 가우시안이다. 다음 그림이 있을 법한 자리(평균)는 모델의 속도장이 정하고, 그 둘레의 폭(표준편차)은 gtΔt다(Δt는 한 스텝의 시간 간격, 10스텝이면 0.1). 학습 모델과 레퍼런스(학습 전 모델을 얼려 둔 비교 기준)는 같은 노이즈 폭을 쓰고 평균만 다르므로, 두 스텝 사이의 KL 발산(두 분포가 얼마나 다른지 재는 양)은 닫힌 꼴이 된다.
논문은 평균의 어긋남을 다시 두 모델의 속도장 차이로 풀어 적는다. 이 식 덕에 KL 벌점을 샘플로 어림하지 않고 스텝마다 정확히 계산한다.
왜 GRPO가 이전 방법(DDPO, DPOK)보다 안정적인가:
그룹 내 정규화가 프롬프트마다 다른 보상 스케일을 흡수한다 (DDPO의 프롬프트별 정규화를 체계화한 것).
가치 모델이 필요 없어 메모리 부담이 작다 — 이미지·영상 모델은 비평가를 따로 두기엔 너무 크다.
이진 보상(예: GenEval의 “물체 개수가 맞는가”)에서도 학습할 수 있다 — 정답 여부를 검증기로 채점하는 RLVR과 같은 구조다.
그리고 LLM의 GRPO 변종들이 짚은 문제의식 가운데 두 가지가 시각 생성 GRPO에서 모습을 바꿔 다시 나온다. 응답 길이로 평균내던 「토큰 수」는 「디노이징 스텝 수」가 되고, 생성 엔진과 학습 엔진이 같은 토큰에 다른 확률을 매기던 불일치는 「10스텝 학습 샘플러와 40스텝 생성 샘플러의 불일치」가 된다.
자기회귀 이미지 모델: T2I-R1의 “사고 과정”
LLM의 추론 모델이 "생각한 다음 답한다"면, T2I-R1(Jiang et al., “T2I-R1: Reinforcing Image Generation with Collaborative Semantic-level and Token-level CoT”, arXiv:2505.00703, 2025년 5월, NeurIPS 2025)은 "생각한 다음 그린다"를 시도했다. 대상은 디퓨전이 아니라 이미지를 토큰으로 생성하는 자기회귀 모델(Janus-Pro — DeepSeek가 낸, 이미지 이해와 생성을 한 모델로 하는 모델)이다 — 그래서 노이즈를 다시 넣지 않아도 로그확률이 있어 GRPO를 그대로 쓸 수 있다.
생각을 두 층으로 나눈다(CoT = chain-of-thought, 답을 내기 전에 생각을 단계별로 글로 적어 나가는 것). 의미 수준 CoT는 프롬프트를 분석해 구도를 글로 계획하고, 토큰 수준 CoT는 그 계획에 따라 이미지 토큰을 패치 단위로 생성한다. BiCoT-GRPO는 두 단계를 한 번의 GRPO 스텝에서 여러 보상 모델의 앙상블로 함께 최적화한다. 베이스 모델 대비 T2I-CompBench(여러 물체와 속성을 한 그림에 맞게 조합하는지 재는 벤치마크)에서 13%, WISE(세계 지식이 있어야 그릴 수 있는 프롬프트로 재는 벤치마크)에서 19% 향상되어 FLUX.1을 넘어섰다고 보고했다. RL은 모델이 이미 뽑을 수 있는 답의 확률을 키울 뿐 한 번도 뽑히지 않는 답을 새로 만들지는 못한다는 관점에서 보면 흥미로운 시도다 — 먼저 글로 "생각"하게 해서 이미지 생성이 기댈 후보의 폭을 넓히는 것이다.
문제 4 — 같은 어긋남, 다른 KL
Flow-GRPO의 10스텝 학습 샘플러(Δt=0.1, a=0.7)에서, 학습 모델과 레퍼런스의 스텝 평균 μθ와 μref가 모든 스텝에서 똑같이 0.01씩 어긋나 있다고 하자. (가) t=0.9 스텝과 t=0.1 스텝의 KL을 각각 구하시오. (나) KL 벌점은 디노이징의 어느 쪽 끝에 몰리는가? 왜 그런가? (다) 노이즈를 줄이려고 a를 0.1로 낮추면 t=0.1 스텝의 KL은 몇 배가 되는가?
이 논문에서는 t=1이 노이즈니까, t=0.1은 거의 다 그린 끝이에요. 거기서는 넣는 노이즈가 작아서 스텝 분포가 좁은 종이고요.
이서연
그런데 저는 노이즈가 큰 스텝이 더 위험할 줄 알았어요. 크게 흔들리면 레퍼런스에서 더 멀리 갈 테니까요.
선생님
흔들림은 두 모델이 똑같이 받아요. KL이 재는 건 무엇이죠?
이서연
두 분포가 얼마나 구별되는지요. 흔들림이 크면 평균이 조금 어긋난 건 흔들림에 묻혀 구별이 안 되고, 좁은 종 둘은 조금만 어긋나도 확 갈라져요. 분모의 gt2이 그 뜻이네요.
선생님
그래요. 그럼 (다)는요?
김민준
gt가 a에 비례하니까 KL은 a2에 반비례해요. (0.7/0.1)2=49배, 약 0.45예요.
김민준
노이즈를 줄이면 같은 걸음에도 벌점이 49배네요. 채점이 느슨한 조교 앞에서는 넘어가던 오타 하나가, 꼼꼼한 조교 앞에서는 바로 감점되는 거랑 같아요.
정리 (가) t=0.9: gt=2.1, KL ≈ 1.1×10−4. t=0.1: gt≈0.233, KL ≈ 9.2×10−3, 81배. (나) 완성 그림 쪽 끝(작은 t)에 몰린다. 그쪽은 노이즈가 작아 같은 평균 어긋남도 두 분포를 크게 갈라놓는다. (다) KL은 a2에 반비례해 49배(약 0.45)가 된다.