10장 — 최대 엔트로피 원리

최소 상대 엔트로피: 기준 분포가 있을 때

지금까지는 평균을 듣기 전에 아무것도 믿지 않는다고, 곧 모든 상태를 똑같이 믿는다고 두었다. 하지만 이미 수백 번 던져 본 주사위나 이미 학습을 마친 언어 모델처럼, 새 정보를 듣기 전부터 믿던 분포가 있는 경우가 오히려 흔하다. 그런데 평균을 듣기 전부터 믿던 분포가 따로 있다면 무엇을 가장 크게, 또는 가장 작게 만들어야 할까?

찌그러진 주사위

주사위가 원래부터 찌그러져 있어 6이 다른 눈보다 두 배 자주 나온다는 것, 곧 한 번 던질 때 눈의 확률이 q = (1, 1, 1, 1, 1, 2)/7이라는 것을 안다고 하자. 그 위에 평균 눈이 4.5라는 정보가 더해졌다. 이제는 수열마다 확률이 다르므로, 수열을 똑같이 믿는 대신 q로 잰 확률만큼 믿고 첫 절과 같은 방식으로 센다. 합이 4.5N인 수열만 남기고 첫 굴림의 눈 분포를 구하면 다음과 같다.

N 1 2 3 4 5 6
4 0.0571 0.0857 0.1190 0.1571 0.2000 0.3810
100 0.0720 0.0898 0.1115 0.1381 0.1703 0.4184
1000 0.0726 0.0898 0.1111 0.1373 0.1697 0.4194

굴림 1000번의 줄에서 이웃한 눈의 비를 보면 1에서 5까지는 0.0898/0.0726 = 1.236처럼 거의 한 값이고, 5에서 6으로 갈 때만 그 두 배쯤인 2.47이다. 곧 굴림 수가 많을 때의 분포는 q에 e^(0.212 × 눈)을 곱해 합이 1이 되게 나눈 것이다(e^0.212 = 1.236). 찌그러지지 않은 주사위에서 얻은 (0.054, 0.079, 0.114, 0.165, 0.240, 0.347)보다 6이 더 많은 것은 원래 믿던 q가 6에 두 배의 몫을 주었기 때문이다. 이 분포는 평균을 지키면서 q로부터의 KL 발산(Kullback–Leibler divergence, 두 분포가 다른 정도를 재는 양으로 상대 엔트로피라고도 한다)을 가장 작게 하는 분포와 같다.

6이 두 배 자주 나오는 주사위의 기준 분포 q(올리브 테두리), 평균 눈 4.5를 지키며 q에서 가장 적게 멀어진 분포(분홍), 기준이 균등할 때 같은 평균을 지키는 분포(회색 점선). 기준이 6에 준 몫이 새 분포에도 남는다.
6이 두 배 자주 나오는 주사위의 기준 분포 q(올리브 테두리), 평균 눈 4.5를 지키며 q에서 가장 적게 멀어진 분포(분홍), 기준이 균등할 때 같은 평균을 지키는 분포(회색 점선). 기준이 6에 준 몫이 새 분포에도 남는다.
min⁡p DKL(p ∥ q)조건: ⟨ϕa⟩p=ϕˉa  ⟹  p(x)=q(x) exp⁡(∑aθaϕa(x))Z\min_{\textcolor{#e377c2}{p}}\ \textcolor{#9467bd}{D_{\mathrm{KL}}}(\textcolor{#e377c2}{p} \,\|\, \textcolor{#bcbd22}{q}) \quad \text{조건: } \langle \textcolor{#ff7f0e}{\phi_a} \rangle_{\textcolor{#e377c2}{p}} = \textcolor{#ff7f0e}{\bar{\phi}_a} \ \ \Longrightarrow\ \ \textcolor{#e377c2}{p}(\textcolor{#1b9e77}{x}) = \frac{\textcolor{#bcbd22}{q}(\textcolor{#1b9e77}{x})\, \exp\big(\sum_a \textcolor{#1b9e77}{\theta_a} \textcolor{#ff7f0e}{\phi_a}(\textcolor{#1b9e77}{x})\big)}{\textcolor{#667733}{Z}}
q기준 분포 (평균 정보를 알기 전에 믿던 분포)DKL(p ∥ q)기준 분포에서 멀어진 정도 (nat)p평균을 지키며 기준에서 가장 적게 멀어진 분포θa, ϕa(x), Z승수, 평균을 아는 특징, 분배함수\begin{array}{ll} \textcolor{#bcbd22}{q} & \text{기준 분포 (평균 정보를 알기 전에 믿던 분포)} \\ \textcolor{#9467bd}{D_{\mathrm{KL}}}(\textcolor{#e377c2}{p} \,\|\, \textcolor{#bcbd22}{q}) & \text{기준 분포에서 멀어진 정도 (nat)} \\ \textcolor{#e377c2}{p} & \text{평균을 지키며 기준에서 가장 적게 멀어진 분포} \\ \textcolor{#1b9e77}{\theta_a},\ \textcolor{#ff7f0e}{\phi_a}(\textcolor{#1b9e77}{x}),\ \textcolor{#667733}{Z} & \text{승수, 평균을 아는 특징, 분배함수} \end{array}

기준 분포가 균등하면 KL을 줄이는 것은 엔트로피를 늘리는 것과 같으므로 이것은 최대 엔트로피 원리를 넓힌 것이고, 1959년 쿨백이 정리한 이 규칙을 최소 상대 엔트로피 원리 (기준 분포에서 가장 적게 멀어지는 분포를 고르기, principle of minimum relative entropy)라 부른다. 기준 분포는 볼츠만 분포를 에너지 값별로 적을 때 곱해지는 상태의 수 g(E)와 같은 자리에 선다. 연속 변수의 엔트로피 −∫ρ ln ρ dx는 x의 단위만 바꿔도 달라지므로 엄밀하게는 이 형태가 기본이고, 앞의 연속 분포들은 기준 밀도를 평평하게 잡은 경우다.

ML에서: 기준 정책에서 멀어지지 않기, KL 규제와 DPO

LLM의 RLHF(reinforcement learning from human feedback, 사람의 평가를 보상으로 삼는 강화학습)는 보상 r(y)를 높이면서 기준 정책 π_ref에서 KL로 멀어지지 않게 한다. ⟨r⟩_π − β·D_KL(π‖π_ref)를 최대화하는 문제는 보상의 평균을 정해 둔 최소 상대 엔트로피 문제의 쌍대이고, 답은 기준 분포에 지수 인자를 곱한 π*(y) = π_ref(y)e^(r(y)/β)/Z다. 여기서 β는 보상을 nat으로 바꾸는 온도 자리에 있고, π_ref는 볼츠만 분포의 상태의 수 g(E)와 같은 자리에서 보상이 같아도 원래 자주 내던 응답에 더 큰 몫을 준다. DPO(direct preference optimization, 선호 직접 최적화. Rafailov 외 2023)는 이 식을 보상에 대해 뒤집었다.

r(y)=βln⁡π∗(y)πref(y)+βln⁡Z\textcolor{#ff7f0e}{r}(\textcolor{#1b9e77}{y}) = \textcolor{#8c564b}{\beta} \ln \frac{\textcolor{#bcbd22}{\pi^*}(\textcolor{#1b9e77}{y})}{\textcolor{#bcbd22}{\pi_{\mathrm{ref}}}(\textcolor{#1b9e77}{y})} + \textcolor{#8c564b}{\beta} \ln \textcolor{#667733}{Z}
r(y)응답 y의 보상π∗, πref최적 정책, 기준 정책βKL 계수 (온도 자리)Z분배함수 (응답 전체에 대한 합, 계산할 수 없음)\begin{array}{ll} \textcolor{#ff7f0e}{r}(\textcolor{#1b9e77}{y}) & \text{응답 y의 보상} \\ \textcolor{#bcbd22}{\pi^*},\ \textcolor{#bcbd22}{\pi_{\mathrm{ref}}} & \text{최적 정책, 기준 정책} \\ \textcolor{#8c564b}{\beta} & \text{KL 계수 (온도 자리)} \\ \textcolor{#667733}{Z} & \text{분배함수 (응답 전체에 대한 합, 계산할 수 없음)} \end{array}

Z는 모든 응답에 대한 합이라 계산할 수 없다. 그런데도 DPO가 보상 모델 없이 정책의 로그 확률 비만으로 선호를 배울 수 있는 까닭은 아래 문제 12에서 숫자로 확인한다. 논문의 부제 「Your Language Model is Secretly a Reward Model」을 이 장을 마친 독자는 「KL로 묶인 최적 정책은 기준 정책에 보상의 지수를 곱한 분포이므로, 정책과 기준의 로그 확률 비가 상수 하나를 빼면 온도 β로 잰 보상이다」로 읽게 된다.

직접 움직여 보기기준 정책과 KL 계수새 창에서 열기 ↗

문제 11. 쿠폰이 생긴 점심 습관

점심을 세 식당 A, B, C에서 0.6, 0.3, 0.1의 비율로 먹어 왔다. 이번 달에는 쿠폰 때문에 세 식당의 이득 점수가 0, 1, 2가 되었다. 이득 점수가 1 높으면 확률 비로 e배를 쳐 준다고 하자. (가) 평소 비율에서 KL로 가장 적게 멀어지면서 쿠폰 이득을 반영한 새 비율을 구하라. (나) 평소 비율을 잊고 점수만 보고 정한 비율 e^(점수)/Σe^(점수)와 비교하라. (풀어 본 뒤 위젯 4의 「문제 11 불러오기」로 확인해 보자.)

김민준 M11
김민준

쿠폰 점수만큼 더 가는 거니까 평소 비율에 점수를 곱하면 되죠. 0.6 × 0, 0.3 × 1, 0.1 × 2 = (0, 0.3, 0.2)이고, 합이 1이 되게 나누면 (0, 0.6, 0.4)예요.

선생님 T02
선생님

그 비율이면 이번 달에 A 식당에는 몇 번 가죠? 쿠폰 점수 0이 「A가 문을 닫았다」는 뜻이었나요?

김민준 M06
김민준

한 번도 안 가요… 점수 0은 쿠폰이 없다는 뜻일 뿐인데 A를 아예 끊어 버렸네요.

이서연 S01
이서연

문제에 점수가 1 높으면 확률 비를 e배로 친다고 했잖아. 곱할 건 점수가 아니라 e^(점수)야. 점수가 0이면 e⁰ = 1이라 평소 비율이 그대로 남고.

선생님 T01
선생님

그렇게 곱한 뒤 합이 1이 되게 나눠 봐요.

김민준 M07
김민준

0.6 × 1, 0.3 × e, 0.1 × e²가 0.600, 0.815, 0.739이고 합 Z = 2.154니까 (0.279, 0.379, 0.343)이에요. A에도 여전히 네 번에 한 번 넘게 가네요.

이서연 S08
이서연

(나)는 e^(점수)만 쓰면 (0.090, 0.245, 0.665)야. 평소 습관이 빠지니까 C에 몰리고, 습관을 곱하면 A가 0.090이 아니라 0.279로 살아남아. 곱하는 평소 비율이 원래 자주 가던 곳에 몫을 더 주는 거지.

김민준 M12
김민준

새 동네로 이사 가면 쿠폰만 보고 고르지만, 원래 살던 동네에서는 쿠폰이 생겨도 단골집을 아주 끊지는 않는 거랑 같네요.

문제 12. 기준 정책이 있을 때

응답이 세 개인 언어 모델의 기준 정책이 π_ref = (0.5, 0.3, 0.2)이고 보상이 r = (1, 2, 0)이다. (가) β = 1일 때 ⟨r⟩_π − β·D_KL(π‖π_ref)를 최대화하는 정책 π*와 그 최댓값을 구하라. (나) β ln(π*/π_ref)를 계산해 보상과 비교하라. (다) β = 0.5와 2이면 π*는 어떻게 되는가? (풀어 본 뒤 위젯 4의 「문제 12 불러오기」로 확인해 보자.)

김민준 M11
김민준

보상을 에너지 자리에 넣은 최대 엔트로피니까 softmax(r/β)죠. (0.245, 0.665, 0.090)이에요.

선생님 T02
선생님

그 답에서 π_ref는 어디에 들어 있죠? β를 아주 크게 하면 그 답은 어디로 가요?

이서연 S06
이서연

softmax(r/β)는 β가 커지면 균등 분포 (1/3, 1/3, 1/3)로 가요. 그런데 KL 벌점이 세지면 기준 정책 (0.5, 0.3, 0.2)에 머물러야 하잖아요. 민준이 답은 기준 정책이 균등할 때의 답이에요. 기준 분포에 지수 인자를 곱해야 해요.

김민준 M03
김민준

아, 그럼 π_ref × e^r = (0.5e, 0.3e², 0.2) = (1.359, 2.217, 0.2)이고 합이 Z = 3.776이니까 π* = (0.360, 0.587, 0.053)이에요. 최댓값은 β ln Z = 1.329고요. 응답 1이 0.245에서 0.360으로 올라갔어요. 보상은 응답 2보다 1이나 낮은데.

이서연 S08
이서연

점심 쿠폰 문제랑 같은 계산이네. 평소 비율이 기준 정책이고 쿠폰 점수가 보상이야. 그래서 보상이 낮은 응답도 기준 모델이 자주 내던 만큼 살아남는 거고.

선생님 T14
선생님

기준 모델이 원래 응답 1을 절반이나 내던 것이 그대로 반영된 거예요. 이제 (나)요.

김민준 M04
김민준

ln(0.360/0.5), ln(0.587/0.3), ln(0.053/0.2)는 (−0.329, 0.671, −1.329)예요. 보상 (1, 2, 0)보다 셋 다 1.329씩 작아요. 위 DPO 식에 있던 β ln Z가 바로 이만큼이네요.

선생님 T02
선생님

그 상수를 모르면 이 값으로 보상을 쓸 수 없을까요? 사람의 선호 데이터는 무엇을 알려 주죠?

이서연 S08
이서연

두 응답 가운데 어느 쪽이 나은지만이요. 그러면 차이만 있으면 되는데, −0.329 − 0.671 = −1로 보상의 차이 1 − 2와 정확히 같아요. 상수는 빼기에서 사라져요.

선생님 T14
선생님

그게 DPO가 쓰는 식이에요. 계산할 수 없는 ln Z를 몰라도, 정책과 기준의 로그 확률 비의 차이만으로 선호를 배울 수 있어요.

김민준 M07
김민준

(다)는 β = 0.5면 (0.182, 0.808, 0.010)으로 보상 쪽에 몰리고, β = 2면 (0.448, 0.443, 0.109)로 기준 정책 (0.5, 0.3, 0.2)에 가까워져요. β가 온도 자리라서 크면 보상 차이가 nat으로 적게 쳐지는 거네요.

선생님 T13
선생님

그래요. KL을 줄이는 쪽으로 읽으면, 원래 믿던 분포를 가장 적게 바꾸면서 새로 알게 된 보상을 받아들이는 방법이에요.

김민준 M12
김민준

기존 코드베이스에 기능을 넣는데 리뷰어가 바뀐 줄 수만큼 감점하는 PR이랑 같아요. 원래 코드를 최대한 살리면서 기능 점수를 챙기는 거죠.