택시 운전사가 하루를 마치고 셈하는 것은 손님 한 명의 요금이 아니라 하루 동안 받은 요금을 모두 더한 액수다. 그렇다면 「역에서 승차장에 서는 것이 좋은 선택이었나」를 따질 때도, 그 손님의 요금만이 아니라 그 선택 뒤로 이어진 하루 전체를 봐야 한다. 그런데 하루가 끝나지 않는다면 어떨까? 퇴근 없이 손님을 계속 태우면 요금 합은 손님이 늘수록 커지기만 하는데, 끝없이 커지는 두 합은 어느 쪽이 큰지 견줄 수가 없다.
역사: 할인율 하나에 담긴 것
미래의 보상을 지금의 보상보다 덜 치는 셈은 경제학에서 먼저 굳었다. 폴 새뮤얼슨(Paul Samuelson)은 1937년 『경제학 연구 리뷰(Review of Economic Studies)』에 다섯 쪽짜리 글 「A Note on Measurement of Utility」를 냈다. 앞 세기의 학자들은 사람이 왜 미래를 덜 치는지를 여러 심리로 따졌는데, 새뮤얼슨의 모델은 그 모든 것을 할인율 하나로 접었다. 해마다의 만족을 일정한 비율로 깎아 더한 합이 사람이 최대화하는 양이라는 것이다.
새뮤얼슨 자신은 이 모델을 믿으라고 내놓지 않았다. 그는 같은 글에서 사람이 그런 꼴의 합을 최대화한다고 가정하는 것은 「completely arbitrary(완전히 임의적)」라고 적었고, 이 셈이 사람의 행복과 이어진다는 생각도 물리쳤다. 그런데도 셈의 단순함 때문에 이 모델은 곧 시간에 걸친 선택을 다루는 표준이 되었고, 강화학습의 할인율도 같은 길을 걸었다. 앞날을 얼마나 덜 칠지를 숫자 하나로 접고, 할인율이 무엇을 뜻하는지는 쓰는 사람이 정한다.
하루의 리턴
「늘 승차장」 정책으로 역에서 시작한 하루를 한 번 모의실험해 보자(난수 씨앗 7). 운전사는 손님 12명을 태우고 퇴근했고, 손님마다의 보상(요금 − 기다리는 비용, 천 원)은 8, 4, 5, 2, 8, 8, 5, 1, 4, 8, 5, 4였다. 이 하루의 첫 선택 뒤로 받은 보상을 모두 더하면 62다.
어느 시점에서 앞으로 받을 보상의 합을 리턴 (앞으로 받을 보상의 합 / return)이라 한다. 먼 보상을 덜 치고 싶으면 한 스텝 뒤의 보상마다 할인율 γ(감마, discount factor)를 한 번씩 곱한다.
위 하루에서 γ = 1이면 G0 = 62.00, γ = 0.9이면 각 보상에 1, 0.9, 0.81, 0.729, …를 곱해 38.04, γ = 0.5이면 12.37이다. 같은 하루가 γ에 따라 다른 값으로 읽힌다. 아침에 시작해 퇴근으로 끝나는 하루처럼 시작과 끝이 있는 한 판을 에피소드라 부르는데, 에피소드가 언젠가 끝나면 γ = 1로도 리턴이 유한하다.
끝이 없으면 리턴이 유한하다는 보장이 사라진다. 퇴근 없이 늘 배회하는 운전사의 요금 합을 모의실험하면 손님 10명까지 66, 100명까지 502, 1,000명까지 5,143으로, 손님 수에 거의 비례해 한없이 커진다. γ < 1이면 이 일이 막히는데, 보상이 늘 1이라도 할인한 합은 1+γ+γ2+⋯=1/(1−γ)에서 멈춘다.
1/(1−γ)에는 할인한 리턴이 「대략 몇 스텝 앞까지 보는가」로 읽는 쓸모 있는 읽는 법이 하나 더 있다. γ = 0.5이면 2스텝, 0.9이면 10스텝, 0.99이면 100스텝이다. 경계가 칼같지는 않다. γ = 0.9에서 곱하는 수는 6.6스텝쯤에서 절반 아래로 내려가고, 앞 10스텝에 곱하는 수를 더하면 모든 스텝에 곱하는 수를 더한 값의 0.651이다. 그래도 「γ를 0.99로 두면 대략 100스텝 앞까지 신경 쓴다」는 어림은 할인율을 고를 때 가장 먼저 쓰는 잣대다. 이 1/(1−γ) 스텝을 흔히 유효 지평(effective horizon)이라 부른다.
할인을 「먼 보상을 덜 친다」로만 읽을 필요는 없다. 섀플리가 판마다 멈출 확률을 두어 보수의 합을 유한하게 만든 일을 떠올려 보자. 「언젠가 끝날지 모른다」와 「먼 보상을 덜 친다」가 셈에서 어떤 관계인지는 아래 문제 8에서 택시의 퇴근으로 직접 견준다.
ML에서: 언어 모델 RLHF 는 왜 γ = 1 인가
언어 모델을 사람의 선호로 강화학습하는 RLHF(사람의 선호로 학습한 보상 모델의 점수를 강화학습으로 올리는 절차)는 대개 γ = 1을 쓴다. 허깅페이스의 강화학습 라이브러리 TRL 도 PPO 설정에서 할인율의 기본값을 1.0으로 두었다(0.20판 코드에서 확인. 최근 판에는 이 설정이 빠졌다). 응답은 끝 토큰이나 길이 제한에서 반드시 끝나는 에피소드라 할인하지 않아도 리턴이 유한하고, 점수는 대개 응답 끝에 한 번 온다. 그러면 모든 토큰의 리턴이 끝의 점수 그 자체가 되는데, γ를 1보다 작게 두면 무엇이 달라지는지는 문제 9에서 셈한다.
문제 7: 1년 뒤의 100만 원
은행 이자가 해마다 4%라고 하자. (가) 친구가 1년 뒤에 100만 원을 갚겠다고 한다. 지금 받는 돈으로 치면 얼마인가? 2년 뒤라면? (나) 1년 뒤부터 해마다 100만 원을 영원히 받는 권리는 지금 돈으로 얼마인가? 할인하지 않고 더하면 어떻게 되는가?
선생님
민준 학생, 1년 뒤 100만 원은 지금 얼마일까요?
김민준
4% 를 빼서 96만 원이요.
선생님
그 96만 원을 지금 은행에 넣어 두면 1년 뒤에 얼마가 되죠?
김민준
96 × 1.04 = 99.84만 원이라 100만 원이 안 되네요.
선생님
그럼 지금 얼마를 넣어 둬야 1년 뒤에 딱 100만 원이 될까요?
김민준
1.04 를 곱해서 100 이 되는 수니까… 빼는 게 아니라 1.04 로 나눠야 하는 거였어요. 100 / 1.04 = 96.15만 원이에요.
선생님
2년 뒤의 100만 원은요?
김민준
한 해마다 곱하는 수가 1/1.04 이니까, 한 번 더 곱해서 92.46만 원이에요.
선생님
그 곱하는 수가 할인율이에요. (나)는요?
이서연
해마다 하나씩 할인해서 더하면 100 × (γ + γ2 + γ3 + …) 인데, 끝없이 더해야 해요.
할인을 안 하면 10년에 1,000만, 100년에 1억 … 끝이 없어요. 「영원히 받는 권리」 둘을 견줄 수가 없겠네요.
선생님
그래요. 할인은 끝없는 합을 견줄 수 있는 숫자로 만드는 장치이기도 해요.
정리 (가) 100/1.04 = 96.15만 원, 100/1.04² = 92.46만 원. 할인은 빼기가 아니라 해마다 같은 수 γ = 1/1.04 를 곱하는 것이다. (나) 100 × γ/(1 − γ) = 2,500만 원. 할인하지 않으면 합이 한없이 커져 둘을 견줄 수 없다.
문제 8: 끝날지 모르는 하루와 할인
늘 배회하는 운전사가 역에서 하루를 시작할 때, 다음 두 하루를 견준다. A: 퇴근이 없고 끝없이 손님을 태우되, 리턴을 γ = 0.9로 할인한다. B: 손님을 내려 줄 때마다 1/10 확률로 퇴근하고, 리턴은 할인하지 않는다(γ = 1). (가) 두 리턴의 평균 가운데 어느 쪽이 큰가? 모의실험 결과는 A가 51.68 ± 0.05, B가 51.75 ± 0.16이었다. 왜 그런지 설명하시오. (나) 두 리턴의 표준편차는 A 4.90, B 49.18이었다. 평균이 같은데 왜 이렇게 다른가?
선생님
민준 학생은 어느 쪽이 클 거라고 봤어요?
김민준
B요. A는 먼 요금을 깎으니까 손해고, B는 끝날 때까지 받은 요금을 그대로 다 받잖아요.
선생님
B에서 k 번째 뒤의 손님 요금이 리턴에 들어가려면 무엇이 필요하죠?
김민준
그 손님을 태울 때까지 퇴근하지 않아야죠. 손님마다 0.9 니까, k 번 연달아 안 끝날 확률이 0.9k …
김민준
A에서 곱하는 수랑 똑같네요.
이서연
그러면 B의 평균은 「k 번째 요금 × 그때까지 일하고 있을 확률 0.9k」를 더한 것이고, A는 「k 번째 요금 × 0.9k」를 더한 거니까 평균이 같아. 51.68 과 51.75 는 표준오차 안에서 같은 값이고.
선생님
그래요. (나)는요?
이서연
평균만 같지 하루 하나하나는 달라요. A는 요금을 다 받되 조금씩 깎으니까 하루마다 비슷한 값이 나오고, B는 손님 한 명 만에 끝나는 날도, 서른 명을 태우는 날도 있어서 리턴이 0 근처부터 수백까지 퍼져요.
선생님
그럼 「γ = 0.9 로 할인한다」와 「매 스텝 1/10 확률로 끝난다」는 같은 말일까요?
김민준
평균을 셈할 때는 같은 말이고, 하루하루 리턴의 표준편차는 달라요. 시험 점수 평균이 같은 두 반이라도 한 반은 다 70점대, 한 반은 0점과 100점이 섞인 것처럼요.
정리 (가) 평균은 같다. B에서 k 번째 뒤의 보상이 들어올 확률은 0.9k 이고, 이것이 A에서 곱하는 γk 와 같다. 그래서 「할인율 γ」는 「스텝마다 1 − γ 확률로 끝날지 모르는 세상」으로도 읽힌다. (나) 기댓값만 같고 분포는 다르다. 끝나는 시점이 무작위인 B는 하루마다 손님 수가 크게 달라져 리턴의 표준편차가 열 배쯤 크다.
문제 9: 짧은 정답과 긴 정답
수학 문제에 언어 모델이 쓴 두 응답이 있다. 둘 다 정답이고 보상은 응답 끝에 1점, 중간 토큰은 0점이며, 응답 A는 30토큰, 응답 B는 300토큰이다. (가) 첫 토큰에서 본 리턴 G0를 γ = 1, 0.99, 0.999 에 대해 각각 구하시오. (나) γ = 0.99로 학습하면 정책은 어느 쪽 응답을 더 밀어 주게 되는가? (다) γ = 0.99에서 30토큰짜리 응답의 보상이 얼마보다 작아야 300토큰 정답보다 리턴이 작아지는가?
선생님
서연 학생, (가)의 셈은요?
이서연
보상은 마지막 토큰에만 있으니까, 첫 토큰에서 거기까지 몇 스텝인지만 세면 될 것 같아요. 29스텝, 299스텝이요.
선생님
그럼 리턴에는 γ 가 몇 번 곱해져요?
이서연
스텝 수만큼이요. A는 γ29, B는 γ299. 넣어 보면 γ = 1 이면 둘 다 1, γ = 0.99 면 0.747 과 0.050, γ = 0.999 면 0.971 과 0.741 이에요.
김민준
0.99 면 할인이 1% 밖에 안 되는데 B는 0.05 까지 떨어지네요. 거의 0이에요.
선생님
그럼 (나)는요?
김민준
둘 다 정답인데 짧은 A가 열다섯 배쯤 큰 리턴을 받으니까, 정책은 짧게 쓰도록 밀려요. 풀이를 꼼꼼히 써야 맞히는 문제에서도요.
이서연
(다)는 0.99²⁹ × (A의 보상) < 0.99²⁹⁹ 를 풀면 A의 보상 < 0.99²⁷⁰ = 0.066 이야. 짧은 응답이 거의 틀린 수준이어야 긴 정답을 이겨.
선생님
그래요. 학습 목표가 길이 쪽으로 기우는 것을 길이 편향이라고 불러요. 보통 이야기하는 길이 편향은 긴 응답을 좋아하는 쪽인데, γ < 1 은 반대쪽, 짧은 응답으로 기울이는 편향을 만들어요. 응답이 어차피 끝나는 언어 모델 RLHF 에서 γ = 1 을 쓰는 까닭 하나가 이거예요.
김민준
1분 안에 내면 감점이 적은 시험에서 풀이를 생략하고 답만 쓰게 되는 거랑 같네요.
정리 (가) G0=γ길이−1: γ = 1 이면 1과 1, 0.99 면 0.747 과 0.050, 0.999 면 0.971 과 0.741. (나) 짧은 응답이 훨씬 큰 리턴을 받아 정책이 짧은 응답을 쓰도록 밀린다(짧은 응답으로 기우는 길이 편향). (다) 0.99²⁷⁰ = 0.066. 끝나는 에피소드에서 할인은 리턴을 유한하게 만드는 데 필요 없고, 남는 것은 길이에 따른 차별이다.