20. DDPO — 디퓨전의 정책 그래디언트

리워드 해킹: 보상 모델의 빈틈을 파고든다

보상 모델 점수가 오르고 있으면, 이미지도 정말 좋아지고 있는 걸까?

DDPO는 쌍비교 데이터가 필요 없는 대신 보상 모델에 전적으로 의존한다. CLIP 점수(그림과 글이 얼마나 맞는지 매기는 모델의 점수), 미학 점수, 비전-언어 모델이 매긴 프롬프트 정합도, 인간 선호 모델(ImageReward처럼 사람이 고른 이미지로 학습한 점수 모델) — 모두 "좋은 이미지"의 불완전한 대리인이다. 그리고 LLM의 보상 모델에서도 그랬듯, 불완전한 대리인을 최적화하면 정책은 대리인과 진짜 목표가 어긋나는 틈을 찾아간다. 리워드 해킹이다.

아래 그림은 앞에서 본 1차원 장난감 디퓨전을 「진짜 보상에 더해 x0\textcolor{#1c9c60}{x_0} 가 클수록 조금 더 점수를 주는」 보상 모델로 학습시킨 기록이다. 보상 모델 점수는 계속 오르는데, 진짜 보상은 중간에 정점을 찍고 떨어진다.

0 25 50 75 100 0 0.4 0.8 학습 횟수 평균 점수 보상 모델 점수 진짜 보상 진짜 보상의 정점

실제 이미지 모델에서는 이런 일이 보고되었다.

보상 관찰된 해킹 비유
비압축률 (JPEG로 압축해도 파일이 크게) 학습을 이어 가자 알아볼 수 있는 내용이 사라지고 촘촘한 노이즈만 남았다 (DDPO 논문) 분량으로 채점하자 같은 문장을 되풀이해 쪽수 채우기
프롬프트 정합도 (LLaVA의 설명) 「동물 n마리」 프롬프트에서 동물 수를 맞추는 대신, 그 숫자처럼 읽히는 글자를 그려 넣었다. 거북 여덟 마리 그림 위에 「sixx ttutttas」처럼 (DDPO 논문) 답안지에 정답 단어만 크게 적기
인간 선호 모델 (ImageReward), KL 제약 없이 색이 지나치게 짙고 모양이 부자연스러운 이미지가 나왔다 (DPOK 논문, 판(Ying Fan)과 동료들, 2023) 글씨를 예쁘게 쓰면 점수를 더 주는 채점자 이용하기

그림과 글을 함께 읽는 모델이 이미지 속 글자에 속는다는 것(글자 공격)은 2021년 CLIP을 분석한 연구에서 이미 알려져 있었다. 사과에 「iPod」라고 쓴 쪽지를 붙이면 CLIP이 그 사진을 아이팟으로 읽었다.

DDPO에서 해킹이 특히 심한 이유는 세 가지가 겹치기 때문이다. 온라인 생성이라 보상 모델이 본 적 없는 영역까지 탐색하고, 정책 그래디언트는 보상을 올리는 쪽으로만 밀며, 레퍼런스 모델(학습 전 모델을 얼려 둔 기준)과의 KL 제약(두 분포가 얼마나 다른지 재는 KL로 거는 제약)은 멀리 가는 것만 막을 뿐 목줄이 닿는 범위 안의 빈틈은 막지 못한다. 반대로 Diffusion-DPO는 해킹할 보상 함수 자체가 없고 오프라인 데이터 밖으로 나가기도 어렵다. 정답을 검증기로 채점하는 RLVR과 비교하면 차이가 선명하다 — "답이 42인가?"에는 빈틈이 없지만, "이 이미지가 아름다운가?"에는 빈틈이 가득하다.

완화책 효과 한계
KL 강도 β를 키움 해킹이 줄어든다 학습 자체도 느려진다
보상 앙상블 한 모델의 빈틈을 다른 모델이 메운다 모든 모델이 공유하는 편향은 그대로 (아래 문제 7)
보상 클리핑 극단적 최적화에 상한 적절한 상한을 찾는 것이 또 다른 문제
DPO로 전환 보상 함수가 없으니 구조적으로 회피 탐색을 포기한다

근본적 해결은 아직 없다. 불완전한 보상 모델로 온라인 RL을 돌리면 해킹은 거의 필연이다.

ML에서: 과최적화 곡선

맨 위 그림의 장난감은 아래 위젯과 같은 설정이다. 처음 화면은 보상 모델로 60번 학습한 상태이고, 「진짜 보상으로 학습」으로 바꿔 두 곡선이 어떻게 달라지는지 견줘 볼 수 있다. 보상 모델의 “조금만 더” 편향을 정책이 끝까지 밀어붙이면, 보상 모델 점수와 진짜 보상이 어느 순간 갈라진다. 가오(Leo Gao)와 동료들(2022)이 언어모델의 보상 모델에서 잰 과최적화 곡선도 같은 모양이다. 진짜 점수는 레퍼런스에서 멀어질수록 처음에는 오르다가 정점을 지나 떨어진다.

DDPO 논문의 저자들도 이 곡선 앞에서 일반적인 방지법은 아직 없다고 적었다. 그래서 방법마다 이미지가 망가지기 시작하기 직전의 체크포인트를 눈으로 골라, 그것을 결과로 실었다.

문제 7 — (킬러) 보상 앙상블은 해킹을 막는가

진짜 보상은 x0=2.5\textcolor{#1c9c60}{x_0} = 2.5에서 최대 1이다. 보상 모델 A는 진짜 보상에 "x0>5\textcolor{#1c9c60}{x_0} > 5이면 +1.5"라는 빈틈이 있고, 보상 모델 B는 "x0<−2\textcolor{#1c9c60}{x_0} < -2이면 +1.5"라는 빈틈이 있다(빈틈 영역에서 진짜 보상은 ≈ 0). (가) A만으로 학습하면 정책은 어디로 가는가? (나) A와 B의 평균을 보상으로 쓰면? (다) 두 모델의 빈틈이 같은 곳(x0>5\textcolor{#1c9c60}{x_0} > 5)에 있다면? (라) 이로부터 "보상 앙상블"의 한계를 한 문장으로 쓰시오.

−2 0 2.5 5 0 1 1.5 완성된 이미지 x0 진짜 보상 A의 빈틈 B의 빈틈
선생님 (평상)
선생님
(가)부터 볼까요.
김민준 (평상)
김민준
A는 x0>5\textcolor{#1c9c60}{x_0} > 5에서 1.5, 진짜 최고점에서는 1이니까 5 너머로 가요. 해킹이죠.
선생님 (평상)
선생님
(나) A와 B를 평균내면요?
김민준 (자신만만)
김민준
앙상블이면 해결이죠. 여러 모델이 서로 빈틈을 메워 주니까요.
이서연 (의심)
이서연
빈틈이 "메워진다"기보다 "절반이 된다"야. A의 빈틈에서 평균은 (1.5 + 0)/2 = 0.75. 여전히 0보다 크잖아. 보상이 양수인 곳이 남아 있으니 그쪽으로 조금은 끌려가고, 해킹은 줄어들 뿐 남을 것 같아.
선생님 (질문)
선생님
서연 학생, 정책이 결국 가는 곳은 보상이 "양수인 곳"인가요, "가장 큰 곳"인가요?
이서연 (생각)
이서연
가장 큰 곳이요. 진짜 최고점 2.5에서는 A도 B도 1을 주니까 평균도 1이에요. 빈틈의 0.75보다 커요.
이서연 (깨달음)
이서연
최적점은 진짜 최고점으로 돌아오네요. 빈틈 근처에 우연히 간 경로가 조금 끌리긴 해도, 최댓값을 두고 경쟁하면 이기지 못해요.
선생님 (평상)
선생님
그래요. 서연 학생은 "양수면 끌린다"로 봤는데, 최적화는 순위 싸움이에요. 그럼 (다)는요?
김민준 (평상)
김민준
둘 다 5 너머에 빈틈이 있으면 평균도 거기서 1.5…
김민준 (당황)
김민준
그대로 해킹이네요. 앙상블이 만능이 아니었어요.
선생님 (평상)
선생님
민준 학생은 "여러 개면 해결"이라고 봤죠. 앙상블이 지우는 건 모델마다 다른 빈틈뿐이에요.
김민준 (평상)
김민준
조교 두 명이 채점해도 둘 다 “분량 많으면 가산점” 습관이 있으면 소용없는 거랑 같네요.

정리 (가) x0>5\textcolor{#1c9c60}{x_0} > 5로 간다(1.5 > 1). (나) 평균은 진짜 최고점에서 1, 각 빈틈에서 0.75 → 최적점은 진짜 최고점. (다) 공유된 빈틈에서는 평균도 1.5 → 여전히 해킹. (라) 보상 앙상블은 모델마다 다른 빈틈만 지울 수 있고, 공유된 편향은 그대로 남는다.