스텝별 로그확률은 경로가 있어야 계산된다. 그런데 사람들이 모아 둔 선호 데이터셋에 있는 것은 완성된 이미지 쌍뿐이다. 그 이미지를 만든 디노이징 경로는 어디에도 없다. 경로 없이 DPO를 할 수 있을까?
역사: 같은 달에 나온 두 갈래
2023년 11월, 디퓨전용 DPO 논문 두 편이 같은 달 arXiv에 올라왔고 둘 다 2024년 CVPR에 실렸다. 둘은 서로 다른 고민에서 출발했다.
Salesforce와 스탠퍼드의 브램 월리스(Bram Wallace) 등이 낸 Diffusion-DPO에는 DPO 저자 중 한 명인 라파엘 라파일로프(Rafael Rafailov)도 참여했다. 이들의 고민은 이미 쌓인 데이터였다. Pick-a-Pic은 웹 앱 사용자들이 같은 프롬프트로 만든 두 그림 가운데 하나를 고른 기록으로, 비긴 쌍을 빼고도 85만 1,293쌍(프롬프트 5만 8,960개)이었다. 이 쌍만으로 SDXL(Stability AI가 2023년에 공개한 텍스트-이미지 디퓨전 모델 Stable Diffusion XL)을 다듬었더니, 사람 평가자들은 다듬은 모델의 그림을 원래 모델의 그림보다 70.0%의 비교에서 더 낫다고 골랐다(PartiPrompts 프롬프트 기준).
칭화대의 양카이(Kai Yang) 등이 낸 D3PO의 고민은 반대로 데이터가 없는 문제였다. 디퓨전 모델은 손가락 개수가 틀린 손을 자주 그린다. 이것을 보상 모델로 고치려면 같은 프롬프트로 만든 정상 그림과 일그러진 그림을 많이 모아 판별기를 따로 학습해야 하고, 손이 정상인지 믿고 맡길 심사 모델(사람 대신 출력을 채점하는 모델)도 없었다. 그래서 「1 hand」라는 프롬프트로 한 번에 1,000장을 만들어 사람이 일그러진 것을 직접 골라내고, 그 표시로 모델을 곧바로 다듬기를 다섯 번 되풀이했다. 보상 모델 없이도 정상인 손의 비율이 올라갔다.
완성된 그림 쌍만 가진 쪽과, 그림을 만드는 과정을 지켜볼 수 있는 쪽. 두 갈래의 차이는 결국 디노이징 경로를 어디서 얻는가다.
Diffusion-DPO (Wallace et al., 2024)
D3PO (Yang et al., 2024)
데이터
이미 있는 선호 이미지 쌍 (Pick-a-Pic 등) — 오프라인
모델이 직접 생성한 이미지에 사람이 선호 표시
경로
그림을 만든 경로가 없다
생성할 때의 실제 디노이징 경로를 기록해 둔다
로그확률 대리
노이즈 예측 오차 ∥ε−εθ(xt,t)∥2 (ELBO에서 유도)
기록된 경로의 스텝별 가우시안 로그확률
관점
이미지 전체의 우도(likelihood, 모델이 이 이미지를 낼 확률)를 ELBO로 근사
디노이징을 여러 스텝의 MDP(Markov decision process, 마르코프 결정 과정: 지금 상태만 보고 행동을 고르면 다음 상태가 정해지는 틀)로 보고 스텝마다 DPO
Diffusion-DPO의 손실은 LLM DPO와 구조가 같다. logπ 자리에 "음의 노이즈 예측 오차"가 들어갈 뿐이다. 식보다 숫자로 먼저 보자. 선호 이미지와 비선호 이미지에 노이즈를 섞어 두 모델에게 맞히게 했더니, 복원 오차가 아래처럼 나왔다고 하자(설명을 위해 고른 값).
선호 이미지
비선호 이미지
레퍼런스 모델의 오차
1.00
1.00
학습 모델의 오차
0.90
1.05
학습 모델 − 레퍼런스
−0.10 (더 잘 복원)
+0.05 (더 못 복원)
오차가 작을수록 모델이 그 이미지를 더 그럴듯하게 본다는 뜻이다. LLM DPO가 선호 응답의 로그확률을 레퍼런스보다 올리고 비선호 응답의 로그확률을 내렸던 것처럼, 여기서는 선호 쪽 오차를 레퍼런스보다 줄이고 비선호 쪽 오차를 늘린다. 두 칸을 빼면 (−0.10)−(+0.05)=−0.15. 음수라는 것은 선호 쪽으로 잘 갈라놓았다는 뜻이다. 아래 식에서 β′=10으로 두면 손실은 −logσ(10×0.15)=−logσ(1.5)≈0.201로, 학습 모델이 레퍼런스와 같을 때의 log2≈0.693보다 작다.
L=−logσ(−β′[선호: 레퍼런스보다얼마나잘복원?(eθw−erefw)−비선호(eθl−erefl)]),eθw=∥εw−εθ(xtw,t)∥2Lβ′eθw,eθlerefw,ereflεθεw,xtwDiffusion-DPO 손실KL 강도 (스텝수등상수를흡수한값)학습모델의노이즈복원오차 (선호 / 비선호이미지)레퍼런스모델의복원오차학습모델의노이즈예측실제로넣은노이즈, 그노이즈를섞은선호이미지
글자 셋을 짚어 두자. e는 오차(error)의 머리글자이고, 위첨자 w·l은 선호(winner)·비선호(loser) 쪽이라는 표시다. σ(⋅)는 시그모이드 함수로, 디퓨전 스케줄의 노이즈 크기 σt와 글자만 같다. β′(베타 프라임)에는 β와 타임스텝 가중치(스텝마다 손실에 곱하는 수 — 신경망 파라미터가 아니다)가 합쳐져 있어 ′(프라임)을 붙였다. 위 장난감의 10은 읽기 쉽게 고른 값이고, 원 논문은 2000~5000 범위의 값이 잘 들었다고 적었다. 읽는 법: 선호 이미지는 레퍼런스보다 더 잘 복원하고, 비선호 이미지는 더 못 복원하도록 — 복원 오차의 마진을 레퍼런스 대비로 벌린다. 레퍼런스 모델은 학습 전 디퓨전 모델이다. LLM DPO와 똑같다.
(참고: DDPM에서 모델의 평균은 μθ=αt1(xt−ctεθ)(αt, ct 는 노이즈 스케줄에서 정해지는 상수) 꼴로 노이즈 예측 εθ의 일차식이고, 참 평균도 εθ 자리에 실제 노이즈 ε이 들어간 같은 꼴이다. 그래서 두 평균의 거리 제곱은 ct2/αt⋅∥ε−εθ∥2 — 오차 ∥xt−1−μθ∥2의 xt−1 자리에 참 평균을 넣으면, 노이즈 예측 오차 ∥ε−εθ∥2와 스텝마다 정해진 상수배 차이만 난다.)
ML에서: 길이 편향이 매끈함 편향으로?
LLM DPO와 한 줄씩 맞대 보면 약점까지 함께 옮겨 올 수 있다. LLM에서는 긴 응답일수록 음수인 로그확률이 더 많이 더해져 불리해지는 길이 편향이 있었다. 디퓨전에서 같은 자리에 오는 것은 그림의 복잡도다. 생성 모델의 우도가 그림의 복잡도에 크게 휘둘린다는 것은 따로 보고되어 있다. 세라(Joan Serrà)와 동료들(2020)은 우도 기반 생성 모델이 단순한 그림에 높은 우도를 주는 경향이 강해, 학습 데이터와 전혀 다른 그림을 가려내는 데 우도를 그대로 쓰면 실패한다는 것을 실험으로 보였다. 디테일이 많은 그림일수록 복원 오차가 커지기 쉽다면, 매끈한 그림이 유리해지는 「매끈함 편향」이 생길 수 있다. 레퍼런스와의 차이를 쓰는 DPO 손실이 이 몫을 얼마나 지우는지는, 길이 편향 때처럼 따로 재 봐야 한다. 아래 표는 이 책이 짐작으로 맞댄 것이다.
LLM
디퓨전
토큰별 logP
타임스텝별 −∥ε−εθ∥2
∑ilogP(ti)
−∑t∥ε−εθ∥2 (= ELBO)
정확한 값
하한 (근사)
긴 문장 → 합이 마이너스로 멀어짐
디테일 이미지 → 오차가 커짐
길이 편향
매끈함 편향 (디테일 페널티, 짐작)
문제 5 — 경로를 거꾸로 만들면?
Diffusion-DPO는 선호 이미지 쌍만 있고 그 이미지를 만든 디노이징 경로는 없다. 민준은 「DDIM 역변환(지금 모델로 그림을 노이즈 쪽으로 거꾸로 되돌려 경로를 얻는 계산)으로 경로를 만들면, D3PO처럼 스텝별 로그확률을 쓸 수 있다」고 한다. (가) 그렇게 얻은 경로는 무엇의 경로인가? (나) 손실을 한 번 계산하는 비용은 Diffusion-DPO의 방식과 견주어 어떤가?
김민준
경로가 없으면 만들면 되죠. DDIM 역변환으로 이미지를 노이즈까지 거꾸로 돌리면 경로가 나오잖아요.
선생님
민준 학생, 그렇게 얻은 경로는 누구의 경로죠? 그리고 손실을 한 번 계산할 때마다 수십 스텝 역변환을 돌려야 하나요?
김민준
지금 모델로 거꾸로 돌린 경로니까… 이 이미지를 실제로 만든 경로는 아니네요. 비용도 크고요.
이서연
그리고 필요도 없어. 순방향 q(xt∣x0)는 닫힌 형태의 가우시안이라, 선호 이미지 x0w에 노이즈 ε을 한 번 섞으면 임의의 t에서 xtw가 바로 나와. 모델이 그 ε을 얼마나 잘 맞히는지가 복원 오차고.
선생님
그래요. 경로를 기록하는 건 D3PO 쪽 방식이고, Diffusion-DPO는 순방향으로 만든 xt에서의 노이즈 예측 오차를 로그확률 대리로 써요. 그래서 기존 선호 데이터셋만으로 오프라인 학습이 되죠.
김민준
실험 보고서에서 원래 측정 과정을 거꾸로 추적하지 말고, 조교님이 준 표준 조건에서 다시 재라는 거랑 비슷하네요.
정리 (가) 지금 모델로 되돌린 경로라, 그 이미지를 실제로 만든 경로가 아니다(학습으로 모델이 바뀌면 경로도 바뀐다). (나) 손실마다 수십 스텝의 역변환을 돌려야 해 훨씬 비싸다. Diffusion-DPO는 순방향 과정 q(xt∣x0)로 노이즈를 한 번 섞어 xt를 만들고, 노이즈 예측 오차 ∥ε−εθ(xt,t)∥2를 로그확률의 대리로 쓴다. 경로 복원이 필요 없다.
문제 6 — 손실은 줄었는데 둘 다 나빠졌다
본문 장난감과 같은 레퍼런스 오차(선호·비선호 모두 1.00)와 β′=10에서, 학습 모델의 복원 오차가 선호 1.05, 비선호 1.30이 되었다. (가) 손실은 얼마인가? 본문 예의 0.201과 견주면? (나) 선호 이미지의 복원은 레퍼런스보다 나아졌는가? (다) 학습 중에 손실 곡선만 지켜보면 무엇을 놓치는가?
김민준
괄호 안이 (1.05 − 1.00) − (1.30 − 1.00) = −0.25, 손실은 −log σ(2.5) ≈ 0.079예요. 본문 예의 0.201보다 작으니까 이 모델이 더 잘 배운 거죠.
선생님
민준 학생, 선호 이미지의 오차 1.05는 레퍼런스의 1.00보다 큰가요, 작은가요?
김민준
커요… 선호 그림을 레퍼런스보다 못 복원하는데 손실은 더 작네요.
이서연
손실에는 오차 넷이 「차이의 차이」로만 들어가잖아. 비선호 쪽이 0.30이나 나빠지면, 선호 쪽이 0.05 나빠진 건 묻혀 버려.
선생님
그래요. 그럼 학습을 지켜보는 사람은 무엇을 봐야 할까요?
이서연
손실 하나로는 선호 그림의 품질이 떨어지는 걸 못 봐요. 선호 쪽 오차를 따로 그려 봐야 해요.
김민준
조별 과제에서 우리 조 점수는 떨어졌는데 옆 조가 더 망해서 등수가 오른 거랑 같네요. 등수만 보면 우리가 잘한 줄 알죠.
정리 (가) 괄호 안 −0.25, 손실 −logσ(2.5)≈0.079로 본문 예(0.201)보다 작다. (나) 아니다. 선호 쪽 오차가 1.00에서 1.05로 커졌다. (다) 손실은 오차 넷의 「차이의 차이」만 보므로, 비선호 쪽이 더 크게 나빠지면 선호 이미지의 품질이 떨어져도 손실은 내려간다. 선호 쪽 오차를 따로 지켜봐야 한다.