부록 A — 강화학습으로 이어지는 다리

자주 하는 실수와 요약

자주 하는 실수

실수 나온 문제 바로잡는 법
길 하나의 확률을 도착지의 확률로 씀 1 도착지의 확률은 그곳에 이르는 모든 길을 더해야 한다. 경로의 로그확률은 그림의 로그확률이 아니다
분산을 줄여도 걸음의 로그확률이 한쪽으로만 움직인다고 봄 2 봉우리가 높아지는 몫과 어긋남의 벌점이 겨룬다. 분산이 0 이면 값 자체가 없다
결정적인 걸음에 잡음만 더하면 확률적인 샘플러가 된다고 봄 3 잡음만 넣으면 분포가 퍼진다(10걸음 0.842, 200걸음 1.079). 스코어 몫과 짝을 지은 랑주뱅 쌍이어야 분포를 지킨다
잡음을 넣는 걸음의 평균이 결정적인 걸음의 도착점과 같다고 봄 4 평균에는 스코어 쪽으로 끄는 몫 ½g²sΔt 가 들어간다
그림마다 틈이 다르면 바닥으로 잰 마진은 못 쓴다고 봄 5 마진은 같은 그림을 두 모델로 잰 값을 먼저 뺀다. 같은 그림에서 두 모델의 틈이 비슷하면 지워진다
바닥으로 잰 마진의 부호만 맞으면 된다고 봄 6 손실은 마진의 크기에 기댄다. 모델 모양이 달라 틈이 어긋나면 크기가 여섯 배 넘게 틀릴 수 있다
다시 넣는 잡음을 샘플링 온도와 같은 손잡이로 봄 7 온도는 출력 분포를 바꾸고, 다시 넣는 잡음은 분포를 지킨 채 같은 출발에서의 갈림만 키운다

요약

디퓨전의 그림 한 장은 걸음 T개의 끝에 나온다. 역방향 한 걸음은 신경망이 평균을 정하고 잡음 일정이 분산을 정한 정규분포라, 실제로 뽑힌 다음 자리의 로그확률을 식 하나로 잰다. 이 걸음의 로그확률을 언어모델의 토큰 로그확률 자리에 놓으면, 보상을 곱한 기울기를 걸음마다 나눠 싣는 정책 그래디언트(DDPO)가 된다. 다만 경로의 로그확률은 그림의 로그확률이 아니다.

걸음의 로그확률은 걸음마다 새 잡음을 넣는 샘플러에만 있다. 결정적인 걸음은 다음 자리가 한 점이라 로그확률도 탐색도 없다. 플로우 모델처럼 결정적인 걸음으로 뽑는 모델은, 속도에서 읽은 스코어로 랑주뱅 쌍을 얹어 같은 분포를 지나는 확률적인 걸음으로 바꾼다(잡음 다시 넣기, Flow-GRPO). 이때 잡음은 반드시 스코어 몫과 짝을 지어야 한다.

경로 없이 그림 쌍만 있는 선호 기록으로 배우는 DPO 에서는 네 로그확률을 ELBO 바닥으로 바꾼다. 바닥과 천장 사이의 틈은 그림마다 크게 달라도, 같은 그림에서 두 모델의 틈이 비슷하면 마진의 「차이의 차이」에서 지워진다. 그 단서는 같은 계열의 너무 멀지 않은 두 모델이다(Diffusion-DPO).

flowchart LR
  A["걸음 하나 = 정규분포<br/>걸음의 로그확률"] -->|"보상을 걸음마다"| B["정책 그래디언트<br/>DDPO"]
  A -->|"결정적인 걸음에는 없다"| C["잡음 다시 넣기<br/>랑주뱅 쌍을 얹는다"]
  C -->|"같은 프롬프트로 여러 장"| D["그룹 비교<br/>Flow-GRPO"]
  E["그림의 로그확률은<br/>ELBO 바닥만"] -->|"틈이 차이에서 지워진다"| F["선호 쌍으로 배우기<br/>Diffusion-DPO"]

막힌 곳

이제 디퓨전 모델을 보상이나 선호 쌍으로 고칠 수 있는 재료가 갖춰졌다. 걸음의 로그확률이 있고, 결정적인 모델에도 흔들림을 되돌릴 수 있고, 그림의 로그확률 대신 바닥의 차이를 쓸 수 있다. 그런데 정작 보상은 어디서 오는가? 사람이 고른 기록으로 보상 모델을 배우면, 디퓨전 모델은 곧 그 보상 모델이 좋아하지만 사람은 좋아하지 않는 그림을 찾아낸다. 레퍼런스에서 얼마나 멀어지게 둘지, 같은 프롬프트로 뽑은 그림 여럿을 어떻게 견줄지도 정해야 한다. 이 물음들은 언어모델에서 먼저 부딪혀 온 것들이다.