눈앞의 사탕과 멀리 있는 보물
강화학습에서 에이전트는 행동할 때마다 보상을 받습니다. 그런데 여기서 조심해야 할 점이 있습니다. 에이전트가 정말로 원하는 것은 지금 당장 받는 보상 하나가 아닙니다. 에이전트가 원하는 것은 앞으로 이어질 선택들까지 포함했을 때 얻는 전체 보상입니다.
사람의 선택도 비슷합니다. 눈앞에 사탕이 하나 있습니다. 지금 먹으면 바로 기분이 좋아집니다. 이것은 단기 보상입니다. 하지만 운동선수가 중요한 경기를 앞두고 있다면, 지금 사탕을 먹지 않고 컨디션을 관리하는 편이 더 나을 수 있습니다. 당장은 아쉽지만 나중에 더 큰 결과를 얻을 수 있기 때문입니다. 이것이 장기 보상입니다.
강화학습의 어려움은 바로 여기에 있습니다. 지금 좋아 보이는 행동과 나중에 좋은 결과를 만드는 행동이 항상 같지 않습니다. 어떤 행동은 즉시 보상을 줍니다. 어떤 행동은 당장은 손해처럼 보이지만, 시간이 지난 뒤 훨씬 큰 보상으로 이어집니다. 에이전트가 배워야 하는 것은 단순히 "방금 보상을 많이 준 행동"이 아니라 "결국 좋은 결과로 이어지는 행동"입니다.
이 차이를 이해하면 강화학습의 중심 문장이 선명해집니다. 강화학습은 즉시 보상을 최대화하는 기술이 아니라, 장기적으로 누적되는 보상을 최대화하는 기술입니다.

한 걸음의 보상과 전체 여정의 보상
작은 미로를 생각해 봅시다. 에이전트는 왼쪽 아래 칸에서 출발해 오른쪽 위의 출구까지 가야 합니다. 한 번 움직일 때마다 -1점을 받고, 출구에 도착하면 +10점을 받습니다. 왜 움직일 때마다 벌점을 줄까요? 에이전트가 가능한 한 빠르게 출구를 찾도록 만들기 위해서입니다.
어떤 순간만 보면 이상해 보일 수 있습니다. 에이전트가 위로 한 칸 움직였습니다. 보상은 -1입니다. 오른쪽으로 한 칸 움직여도 보상은 -1입니다. 보상만 보면 둘 다 나쁜 행동입니다. 그런데 정말 그럴까요?
아닙니다. 미로에서는 한 걸음의 보상만 보고 행동을 판단하면 안 됩니다. 위로 가는 행동은 막다른 길로 이어질 수 있고, 오른쪽으로 가는 행동은 출구로 이어질 수 있습니다. 둘 다 당장의 보상은 -1이지만, 미래까지 보면 완전히 다른 행동입니다.
여기서 두 가지 보상을 구분해야 합니다.
즉시 보상은 특정 행동을 한 직후 받는 한 단계의 보상입니다.
누적 보상은 현재부터 에피소드가 끝날 때까지 받는 보상을 모두 합친 값입니다.
강화학습의 목표는 즉시 보상이 아니라 누적 보상을 크게 만드는 것입니다.
에피소드란 하나의 시도 단위를 뜻합니다. 미로에서는 출발점에서 시작해 출구에 도착하거나 실패할 때까지가 하나의 에피소드입니다. 게임에서는 한 판이 에피소드가 될 수 있고, 로봇 청소기에서는 충전 후 청소를 마칠 때까지가 하나의 에피소드가 될 수 있습니다.
예를 들어 두 경로가 있다고 해 봅시다. 첫 번째 경로는 출구까지 4번 움직입니다. 움직일 때마다 -1점을 받고, 마지막에 +10점을 받습니다. 전체 보상은 -1 -1 -1 -1 +10, 즉 +6입니다. 두 번째 경로는 출구까지 8번 움직입니다. 전체 보상은 -8 +10, 즉 +2입니다.
두 경로 모두 출구에 도착합니다. 하지만 첫 번째 경로가 더 좋습니다. 출구 보상은 같아도 그곳에 도달하기까지 낭비한 움직임이 적기 때문입니다. 이렇게 강화학습에서는 "마지막에 성공했는가"뿐 아니라 "어떤 과정을 거쳐 성공했는가"도 중요합니다.
지금 좋은 행동이 나중에도 좋을까
이번에는 미로 한쪽에 동전이 있다고 해 봅시다. 동전을 먹으면 즉시 +3점을 받습니다. 그런데 동전이 있는 길은 막다른 길입니다. 에이전트는 동전을 먹고 다시 돌아와야 하므로 많은 이동 벌점을 받습니다. 반대로 동전을 무시하고 바로 출구로 가면 당장 +3점은 얻지 못하지만 훨씬 빨리 도착할 수 있습니다.
이때 초보 에이전트는 동전에 끌릴 수 있습니다. 동전을 먹는 순간 보상이 나오기 때문입니다. "이 행동을 했더니 점수가 올랐다!"라고 기억하기 쉽습니다. 하지만 전체 에피소드가 끝난 뒤 계산해 보면 동전을 먹은 선택이 오히려 손해였을 수 있습니다.
이 장면은 강화학습을 매우 잘 보여 줍니다. 환경은 에이전트에게 매 순간 작은 신호를 줍니다. 하지만 그 신호가 항상 최종 목표와 완벽하게 일치하지는 않습니다. 당장의 칭찬이 장기적으로는 나쁜 습관을 만들 수도 있고, 당장의 손해가 나중에는 더 큰 이익을 만들 수도 있습니다.
게임에서도 비슷한 일이 자주 일어납니다. 적을 바로 공격하면 점수를 조금 얻을 수 있지만, 체력이 크게 줄어 마지막 보스를 이기지 못할 수 있습니다. 반대로 지금은 공격하지 않고 방어하거나 아이템을 모으면 당장 점수는 적어도 마지막에는 더 높은 점수를 얻을 수 있습니다.
로봇도 마찬가지입니다. 로봇 팔이 물건을 빨리 집으려고 무리하게 움직이면 당장은 목표에 가까워지는 것처럼 보입니다. 하지만 물건을 떨어뜨리거나 관절에 부담을 줄 수 있습니다. 조금 느리더라도 안정적인 경로를 선택하는 편이 장기적으로 더 좋은 행동일 수 있습니다.
즉, 좋은 정책은 눈앞의 보상에만 반응하지 않습니다. 좋은 정책은 "이 행동이 앞으로 어떤 상태들을 만들고, 그 상태들에서 어떤 보상을 얻게 할 것인가"를 함께 생각합니다.
누적 보상은 미래를 포함한 점수표다
강화학습에서는 현재부터 미래까지 받을 보상의 합을 흔히 반환값, 또는 리턴(return)이라고 부릅니다. 말 그대로 어떤 행동 이후 돌아오는 전체 결과입니다.
가장 단순하게 생각하면 누적 보상은 이렇게 계산할 수 있습니다.
전체 보상 = 지금 보상 + 다음 보상 + 그다음 보상 + ...
미로에서 네 걸음 뒤 출구에 도착한다면, 에이전트는 지금 한 걸음의 보상만 보는 것이 아니라 앞으로 받을 보상까지 함께 봅니다. 그래서 어떤 행동의 가치는 그 행동 직후의 보상만으로 결정되지 않습니다. 그 행동이 데려다주는 미래까지 포함해서 결정됩니다.
이 생각은 앞에서 본 가치 함수와 연결됩니다. 가치 함수는 어떤 상태나 행동이 얼마나 좋은지를 평가하는 함수였습니다. 그런데 "좋다"는 말의 기준이 무엇일까요? 바로 미래까지 포함한 누적 보상입니다. 어떤 상태의 가치가 높다는 말은 그 상태에 들어갔을 때 앞으로 좋은 보상을 많이 얻을 가능성이 크다는 뜻입니다.
예를 들어 출구 바로 앞 칸은 당장 아무 보상을 주지 않을 수 있습니다. 하지만 그 칸의 가치는 높습니다. 다음 행동으로 출구에 도착할 수 있기 때문입니다. 반대로 동전이 있는 막다른 길 입구는 당장 매력적으로 보일 수 있지만, 전체 여정을 보면 가치가 낮을 수 있습니다.
이렇게 보면 가치 함수는 단순한 점수표가 아닙니다. 그것은 미래를 상상하는 장치입니다. 에이전트는 가치 함수를 통해 지금 보이지 않는 결과를 현재의 선택 안으로 끌어옵니다.
할인율이라는 미래 보상 손잡이
그런데 미래 보상을 모두 똑같이 중요하게 볼까요? 오늘 받는 1만 원과 10년 뒤 받는 1만 원은 같은 느낌이 아닙니다. 미래의 보상은 불확실합니다. 그때까지 상황이 바뀔 수도 있고, 내가 계획한 일이 실패할 수도 있습니다.
강화학습에서는 이 감각을 할인율(discount factor)이라는 값으로 표현합니다. 할인율은 보통 그리스 문자 감마, γ로 표시합니다. 값은 대개 0과 1 사이입니다. 할인율은 "미래 보상을 현재의 선택에서 얼마나 중요하게 볼 것인가"를 정하는 손잡이입니다.
할인율을 넣으면 누적 보상은 이런 느낌이 됩니다.
전체 보상 = 지금 보상 + γ × 다음 보상 + γ² × 그다음 보상 + γ³ × 그다음다음 보상 + ...
수식이 조금 낯설어 보여도 의미는 간단합니다. 미래로 갈수록 보상에 할인율을 곱합니다. 할인율이 작으면 먼 미래의 보상은 빠르게 작아집니다. 할인율이 크면 먼 미래의 보상도 꽤 중요하게 남아 있습니다.
할인율이 0에 가깝다면 에이전트는 매우 성급해집니다. 거의 지금 받는 보상만 봅니다. 미로에서 바로 옆 동전이 보이면 출구보다 동전에 끌릴 가능성이 큽니다. 반대로 할인율이 1에 가깝다면 에이전트는 인내심이 강해집니다. 지금은 손해를 보더라도 나중에 큰 보상이 있다면 그쪽을 선택할 수 있습니다.
할인율을 사람 성격으로 비유하면 이렇습니다. 할인율이 낮은 에이전트는 "지금 좋은 게 최고야"라고 말합니다. 할인율이 높은 에이전트는 "조금 기다리면 더 큰 결과가 올 수 있어"라고 말합니다.
물론 무조건 할인율이 높다고 좋은 것은 아닙니다. 환경에 따라 다릅니다. 아주 먼 미래까지 정확히 이어지는 문제가 있다면 높은 할인율이 도움이 됩니다. 반대로 미래가 매우 불확실하거나 빠른 반응이 중요한 문제라면 낮은 할인율이 더 적절할 수 있습니다. 중요한 것은 할인율이 정답 하나로 고정된 값이 아니라, 문제의 성격에 맞게 미래를 얼마나 볼지 정하는 설정이라는 점입니다.
당장의 손해가 더 나은 길을 만든다
강화학습에서 재미있는 장면은 에이전트가 "일부러 손해 보는 행동"을 배울 때 나옵니다. 겉으로 보면 이상합니다. 보상을 많이 받으라고 학습시키는데 왜 손해를 보는 행동을 할까요?
이유는 간단합니다. 그 손해가 더 큰 보상으로 가는 통행료일 수 있기 때문입니다.
산을 오르는 로봇을 생각해 봅시다. 로봇은 정상에 도착하면 큰 보상을 받습니다. 그런데 정상으로 가려면 처음에는 아래쪽으로 조금 내려가야 합니다. 바로 위로 올라가려 하면 절벽에 막히지만, 아래로 돌아가면 완만한 길이 나옵니다. 이때 "높이 올라갈수록 즉시 보상"만 준다면 로봇은 아래로 내려가는 행동을 나쁘다고 판단할 수 있습니다. 하지만 전체 경로를 보면 아래로 내려가는 행동이 정상으로 가는 유일한 길입니다.
이런 구조는 실제 문제에서도 자주 나타납니다. 공부할 때 어려운 기본 개념을 다시 보는 일은 당장 진도가 느려 보입니다. 하지만 나중에 복잡한 내용을 이해하는 데 큰 도움이 됩니다. 소프트웨어 개발에서도 당장 기능을 빨리 붙이는 대신 테스트 코드를 작성하고 구조를 정리하는 일이 단기적으로는 느려 보일 수 있습니다. 그러나 장기적으로는 버그를 줄이고 개발 속도를 높입니다.
에이전트도 같은 딜레마를 겪습니다. 당장 점수를 올리는 행동을 계속 반복하면 가까운 보상에 갇힐 수 있습니다. 장기적으로 좋은 전략을 배우려면 때로는 작은 보상을 포기하고, 더 나은 미래 상태로 이동해야 합니다.
그래서 강화학습에서는 보상 설계가 중요합니다. 보상을 어떻게 주느냐에 따라 에이전트는 전혀 다른 습관을 배웁니다. 너무 가까운 보상만 강조하면 에이전트는 근시안적으로 행동합니다. 반대로 너무 먼 최종 보상만 주면 학습이 어려워질 수 있습니다. 에이전트가 어떤 행동이 좋은지 알기까지 너무 오래 걸리기 때문입니다.
보상이 늦게 오는 문제
강화학습에서 가장 어려운 문제 중 하나는 보상이 늦게 오는 상황입니다. 행동은 지금 했는데, 그 행동이 좋았는지 나빴는지는 한참 뒤에야 알 수 있습니다. 이것을 보상 지연이라고 부를 수 있습니다.
체스를 생각해 봅시다. 어떤 수를 두었을 때 즉시 "+1점" 또는 "-1점"이 나오지 않습니다. 한 수가 좋아 보였지만 20수 뒤에 약점이 될 수도 있습니다. 반대로 당장은 말을 하나 잃는 것처럼 보이지만, 나중에 상대의 왕을 몰아넣는 결정적 희생일 수도 있습니다.
바둑은 더 극단적입니다. 초반 포석의 가치는 경기 끝에 가서야 드러나는 경우가 많습니다. 지금 돌 하나를 어디에 놓느냐가 수십 수 뒤 집의 크기와 전투의 흐름을 바꿉니다. 그래서 바둑에서 좋은 수를 배운다는 것은 한 수의 즉시 효과만 보는 것이 아니라, 판 전체의 미래 가능성을 보는 일입니다.
긴 대화에서도 같은 문제가 생깁니다. 언어 모델이 사용자와 대화한다고 해 봅시다. 사용자가 모호한 질문을 했을 때, 모델이 바로 그럴듯한 답을 내놓으면 당장은 친절해 보일 수 있습니다. 하지만 질문을 잘못 이해했다면 대화가 뒤로 갈수록 엉킬 수 있습니다. 반대로 모델이 먼저 "어떤 상황을 말씀하시는 건가요?"라고 물으면 즉시 답을 주지 않으므로 덜 시원해 보일 수 있습니다. 그러나 긴 대화의 품질은 더 좋아질 수 있습니다.
이런 상황에서는 마지막 결과만 보고 어떤 행동이 좋았는지 되짚어야 합니다. 체스에서 승리했다면 어떤 수들이 승리에 기여했을까요? 바둑에서 졌다면 어느 시점의 판단이 흐름을 바꾸었을까요? 대화가 만족스럽게 끝났다면 어떤 질문과 답변이 신뢰를 만들었을까요?
이 문제를 신용 할당(credit assignment) 문제라고 합니다. 말은 조금 어렵지만 뜻은 단순합니다. 최종 결과에 대해 과거의 여러 행동들이 각각 얼마나 책임이 있는지 나누어 생각하는 문제입니다. 팀 프로젝트가 성공했을 때 누구의 어떤 기여가 중요했는지 따지는 것과 비슷합니다.
강화학습이 어려운 이유는 보상이 늦게 올수록 이 신용 할당이 복잡해지기 때문입니다. 한두 단계 전 행동이라면 비교적 쉽게 판단할 수 있습니다. 하지만 수십 단계, 수백 단계 전 행동이 현재 결과에 영향을 주었다면 이야기가 달라집니다. 에이전트는 긴 시간의 흔적을 따라가며 "그때 그 선택이 정말 좋았나?"를 배워야 합니다.
긴 대화에서 장기 보상을 생각한다는 것
LLM처럼 말을 생성하는 모델에서도 장기 보상은 매우 중요합니다. 한 문장만 보면 그럴듯한 답변과 정말 좋은 답변을 구분하기 어려울 때가 많습니다. 문제는 대화가 이어질수록 드러납니다.
예를 들어 사용자가 복잡한 법률, 의료, 재무 상황을 질문했다고 합시다. 모델이 자신 있게 단정하면 사용자는 당장 만족할 수 있습니다. 답이 빠르고 명확하기 때문입니다. 하지만 정보가 부족한 상태에서 단정한 답은 위험할 수 있습니다. 장기적으로 보면 신뢰를 떨어뜨리고, 사용자에게 해로운 결정을 유도할 수도 있습니다.
반대로 좋은 모델은 때로 조심스럽게 답합니다. 필요한 전제를 확인하고, 불확실한 부분을 밝히며, 전문가의 도움을 받아야 하는 상황을 구분합니다. 이런 답변은 즉시 보상만 보면 덜 화려할 수 있습니다. 그러나 전체 대화의 품질, 안전성, 신뢰도라는 장기 보상에서는 더 좋은 선택입니다.
이 관점은 나중에 살펴볼 RLHF와도 이어집니다. 인간 피드백을 이용해 언어 모델을 조정할 때도 단순히 "한 문장이 마음에 드는가"만 보는 것으로는 부족합니다. 답변이 사용자의 의도를 잘 따르는지, 사실을 왜곡하지 않는지, 긴 대화에서 일관성을 유지하는지까지 고려해야 합니다. 결국 언어 모델에서도 중요한 질문은 같습니다. 지금 당장 그럴듯한 답이 아니라, 전체 상호작용에서 더 좋은 결과를 만드는 답은 무엇인가?
강화학습의 목표를 다시 말하기
이제 강화학습의 목표를 조금 더 정확히 말할 수 있습니다. 에이전트는 환경 속에서 상태를 보고 행동을 선택합니다. 행동의 결과로 보상을 받고 다음 상태로 이동합니다. 하지만 에이전트가 최적화해야 하는 것은 방금 받은 보상 하나가 아닙니다. 현재부터 미래까지 이어지는 누적 보상입니다.
그래서 강화학습 에이전트는 두 개의 시간을 동시에 봐야 합니다. 하나는 지금입니다. 지금 어떤 행동을 할 수 있는지, 그 행동이 어떤 즉시 보상을 주는지 봐야 합니다. 다른 하나는 미래입니다. 이 행동이 어떤 상태로 이어지고, 그 상태에서 어떤 기회와 위험이 생길지 봐야 합니다.
좋은 정책은 이 둘 사이에서 균형을 잡습니다. 너무 현재만 보면 작은 보상에 갇힙니다. 너무 먼 미래만 보면 지금 해야 할 구체적인 행동을 놓칠 수 있습니다. 할인율은 이 균형을 조절하는 손잡이입니다. 가치 함수는 미래 보상을 현재의 판단으로 가져오는 도구입니다. 누적 보상은 에이전트가 끝까지 바라보아야 할 점수표입니다.
다음 선택이 항상 가장 달콤한 선택일 필요는 없습니다. 미로의 출구는 동전 뒤에 있지 않을 수 있고, 정상으로 가는 길은 잠시 내려가는 길일 수 있습니다. 강화학습이 배우는 것은 바로 이런 선택의 감각입니다. 지금의 작은 보상 너머에 있는 더 큰 결과를 보는 능력, 그것이 장기 보상을 추구하는 에이전트의 핵심입니다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.