미래를 한 칸씩 접어 생각하기
지난 장에서 우리는 강화학습 문제를 MDP라는 틀로 바라보았다. 에이전트는 어떤 상태에 있고, 그 상태에서 행동을 선택하며, 행동의 결과로 보상을 받고, 다음 상태로 이동한다. 이 구조를 머릿속에 넣고 나면 자연스럽게 다음 질문이 떠오른다.
"그렇다면 어떤 상태가 좋은 상태인지는 어떻게 알 수 있을까?"
예를 들어 격자 세계를 생각해 보자. 에이전트는 왼쪽 아래 칸에서 출발하고, 오른쪽 위 칸에 도착하면 +10점을 받는다. 중간에 함정 칸을 밟으면 -10점을 받는다. 나머지 칸에서는 매번 -1점을 받는다고 하자. 이때 출발점은 좋은 상태일까, 나쁜 상태일까?
출발점 자체에서는 아직 아무 보상도 받지 않았다. 하지만 출발점에서 조금만 잘 움직이면 목표에 도달할 수 있다. 그러므로 출발점의 가치는 출발점에서 당장 받는 보상만으로 정할 수 없다. 그 상태가 좋은지는 "앞으로 어디로 갈 수 있는가"에 달려 있다.
벨만 방정식은 바로 이 생각을 수식으로 정리한 것이다. 이름은 어렵지만 핵심은 단순하다.
현재 상태의 가치는 지금 받는 보상과 다음 상태의 미래 가치를 합친 것이다.
이 한 문장이 벨만 방정식의 심장이다.

지금의 가치 = 지금 보상 + 다음 가치
어떤 상태 s에 있다고 하자. 에이전트가 행동 a를 선택하면 보상 r을 받고 다음 상태 s'로 이동한다. 이때 현재 상태의 가치는 대략 이렇게 생각할 수 있다.
현재 상태의 가치 = 지금 받는 보상 + 다음 상태의 가치조금 더 강화학습답게 쓰면 다음과 같다.
V(s) = r + γ V(s')여기서 V(s)는 상태 s의 가치다. r은 지금 받은 보상이다. V(s')는 다음 상태의 가치다. 그리고 γ는 할인율이다. 할인율은 미래 보상을 현재보다 조금 낮게 평가하기 위한 숫자다. 보통 0과 1 사이의 값을 사용한다.
예를 들어 γ = 0.9라면, 다음 상태의 가치를 90%만 반영하겠다는 뜻이다. 미래가 중요하긴 하지만, 너무 먼 미래를 현재와 똑같이 보지는 않겠다는 약속이다.
이 식이 놀라운 이유는 미래 전체를 한 번에 계산하려 하지 않는다는 데 있다. 강화학습의 미래는 길다. 지금 오른쪽으로 한 칸 가면 그다음에 위로 갈 수도 있고, 아래로 갈 수도 있고, 함정을 만날 수도 있다. 그 모든 가능성을 한꺼번에 계산하려 하면 머리가 복잡해진다.
벨만 방정식은 이 복잡한 미래를 이렇게 접는다.
"일단 한 걸음만 보자. 지금 보상은 얼마인가? 그리고 다음 칸은 얼마나 좋은 칸인가?"
다음 칸의 가치도 같은 방식으로 계산된다. 또 그다음 칸의 가치도 같은 방식으로 계산된다. 결국 긴 미래는 짧은 한 걸음들의 연결로 바뀐다.
길 찾기에서 보는 벨만의 생각
다시 격자 세계로 돌아가 보자. 목표 칸은 +10점을 주는 칸이다. 목표 바로 옆 칸에 서 있다면 그 칸은 꽤 좋은 상태일 것이다. 왜냐하면 한 번만 움직이면 목표에 도착할 수 있기 때문이다.
만약 목표 바로 옆 칸에서 오른쪽으로 이동해 목표에 도착하고 +10점을 받는다고 하자. 할인율이 0.9이고 목표 이후에는 더 이상 받을 보상이 없다고 하면, 목표 옆 칸의 가치는 거의 +10에 가깝다. 반대로 목표에서 멀리 떨어진 칸은 어떨까? 그 칸도 목표로 이어지는 길 위에 있다면 좋은 상태일 수 있다. 다만 목표까지 여러 번 움직여야 하므로 중간에 이동 비용을 내야 하고, 미래 보상은 할인된다. 그래서 목표에 가까운 칸보다는 가치가 낮을 가능성이 크다.
함정 옆 칸은 이야기가 다르다. 그 칸에서 잘못 움직이면 -10점을 받을 수 있다. 만약 현재 정책이 자주 함정으로 들어가는 행동을 선택한다면, 그 칸의 가치는 낮아진다. 같은 칸이라도 어떤 행동을 선택하느냐에 따라 미래가 달라지기 때문이다.
여기서 중요한 점은 가치가 지도 위에 따로 붙어 있는 숫자가 아니라는 것이다. 가치는 미래의 행동, 보상, 다음 상태와 연결되어 있다. 어떤 칸이 좋은지는 그 칸에서 이어지는 길이 좋기 때문에 좋다. 어떤 칸이 나쁜지는 그 칸에서 이어지는 길이 위험하기 때문에 나쁘다.
벨만 방정식은 이 연결 관계를 이용해 현재의 가치를 계산한다.
가치가 지도 위로 퍼져 나간다
벨만 방정식을 처음 보면 "그래서 이걸 어떻게 계산한다는 거지?"라는 생각이 들 수 있다. 특히 이상한 점이 하나 있다. 현재 상태의 가치를 계산하려면 다음 상태의 가치가 필요하다. 그런데 다음 상태의 가치도 또 그다음 상태의 가치가 필요하다. 마치 끝없이 이어지는 거울방처럼 보인다.
이 문제를 해결하는 대표적인 방법은 반복 업데이트다. 처음에는 각 칸의 가치를 대충 정한다. 모두 0으로 시작해도 된다. 그런 다음 실제 보상과 이웃 칸의 가치를 이용해 조금씩 값을 고쳐 나간다.
처음에는 목표 칸 주변만 눈에 띈다. 목표에 바로 도착할 수 있는 칸은 좋은 값으로 바뀐다. 그다음 반복에서는 그 칸의 이웃들이 영향을 받는다. "아, 저쪽으로 가면 좋은 칸이 있구나"라는 정보가 한 칸 더 멀리 퍼진다. 또 반복하면 그 정보가 더 멀리 퍼진다.
마치 흰색 지도 위에 색을 칠하는 것과 같다. 목표 칸에 밝은 노란색을 칠하면, 다음 반복에서 목표 주변 칸들이 옅은 노란색으로 물든다. 그다음에는 조금 더 먼 칸들이 더 옅은 색으로 물든다. 반대로 함정 칸은 검붉은 색을 퍼뜨린다. 함정 주변은 어두워지고, 그 위험이 조금씩 주변으로 번져 나간다.
이렇게 반복하다 보면 지도 전체가 점점 의미 있는 색으로 채워진다. 밝은 곳은 좋은 미래로 이어지는 상태이고, 어두운 곳은 나쁜 미래로 이어지는 상태다. 에이전트는 이 색칠된 지도를 보고 더 나은 행동을 선택할 수 있다.
이 과정을 강화학습에서는 종종 백업이라고 부른다. 다음 상태의 정보를 가져와 현재 상태의 값을 갱신하기 때문이다. 미래의 정보를 현재로 끌어와 값을 다시 쓰는 것이다.
완벽한 계산보다 점점 나아지는 추정
벨만 방정식을 이해할 때 꼭 기억해야 할 점이 있다. 강화학습에서 가치는 처음부터 정확히 알려져 있지 않은 경우가 많다. 에이전트는 환경을 돌아다니며 데이터를 모은다. 어떤 행동을 했더니 어떤 보상을 받았고, 어떤 다음 상태로 갔는지 경험한다. 그리고 그 경험을 이용해 가치 추정을 조금씩 고친다.
예를 들어 어떤 칸의 가치를 처음에는 0이라고 생각했다고 하자. 그런데 실제로 그 칸에서 오른쪽으로 갔더니 목표에 가까운 좋은 칸으로 이동했다. 그러면 에이전트는 이렇게 생각할 수 있다.
"이 칸은 내가 생각했던 것보다 괜찮은 칸이네."
반대로 어떤 칸에서 아래로 갔더니 함정 근처로 이동했다면 이렇게 생각할 수 있다.
"이 칸, 혹은 이 행동은 생각보다 위험하네."
이런 식으로 가치는 경험을 통해 수정된다. 한 번의 경험으로 모든 것을 확정하지는 않는다. 대신 여러 번 경험하면서 추정값을 점점 더 현실에 가깝게 만든다.
이것은 우리가 낯선 동네를 익히는 방식과도 비슷하다. 처음 이사 온 날에는 어느 골목이 빠른 길인지 모른다. 몇 번 걸어 보면서 알게 된다. 어떤 길은 지도상으로 가까워 보여도 신호등이 많아 느리고, 어떤 골목은 처음에는 낯설지만 실제로는 지름길이다. 우리는 매번의 경험을 통해 머릿속 지도를 조금씩 업데이트한다.
강화학습의 에이전트도 비슷하다. 다만 에이전트의 머릿속 지도는 숫자로 이루어져 있고, 그 숫자를 고치는 원리가 벨만 방정식이다.
현재 정책의 가치와 최적 가치
여기서 한 가지 중요한 구분이 필요하다. 벨만 방정식에는 크게 두 가지 관점이 있다. 하나는 현재 정책을 따랐을 때의 가치이고, 다른 하나는 가장 좋은 행동을 골랐을 때의 최적 가치다.
먼저 현재 정책의 가치를 생각해 보자. 정책은 상태에서 행동을 고르는 방식이다. 어떤 에이전트가 "대체로 오른쪽으로 가고, 가끔 위로 간다"는 정책을 가지고 있다고 하자. 그러면 그 정책을 따를 때 각 상태의 가치가 정해진다. 이때의 질문은 다음과 같다.
"지금 이 정책대로 행동하면, 이 상태는 얼마나 좋은가?"
이를 정책의 가치 함수라고 한다. 보통 Vπ(s)처럼 쓴다. 여기서 π는 정책을 뜻한다. Vπ(s)는 정책 π를 따를 때 상태 s의 가치라는 뜻이다.
반면 최적 가치는 질문이 조금 다르다.
"가능한 행동 중 가장 좋은 행동을 고른다면, 이 상태는 얼마나 좋은가?"
이때는 현재 정책이 꼭 훌륭하지 않아도 된다. 모든 행동 후보를 비교해서 가장 좋은 미래를 선택한다고 가정한다. 이 값을 최적 가치 함수라고 하고 보통 V*(s)처럼 쓴다.
둘의 차이는 게임을 해 보면 쉽게 느껴진다. 초보 플레이어가 조작하는 캐릭터의 현재 정책은 서툴 수 있다. 그래서 어떤 위치에 있어도 자꾸 엉뚱한 방향으로 가고, 좋은 기회를 놓친다. 이때 현재 정책의 가치는 낮다. 하지만 같은 위치에서 고수 플레이어가 최선의 행동을 고른다면 훨씬 좋은 결과를 얻을 수 있다. 이때의 가치는 최적 가치에 가깝다.
정리하면 다음과 같다.
현재 정책의 가치 함수는 "지금 행동 방식대로 하면 얼마나 좋은가"를 묻는다.
최적 가치 함수는 "가장 좋은 행동을 고르면 얼마나 좋은가"를 묻는다.
강화학습 알고리즘은 대개 현재의 가치를 추정하고, 그 추정을 이용해 더 나은 정책으로 이동한다.
이 구분은 앞으로 Q-learning과 Policy Gradient를 이해할 때 매우 중요하다. 어떤 알고리즘은 최적 가치를 직접 찾아가려 하고, 어떤 알고리즘은 현재 정책의 성능을 평가하면서 정책 자체를 조금씩 개선한다.
상태 가치와 행동 가치
지금까지는 주로 상태의 가치 V(s)를 이야기했다. 하지만 실제로 에이전트가 행동을 선택하려면 "이 상태가 좋은가?"만으로는 부족할 때가 많다. 에이전트에게 더 직접적인 질문은 이것이다.
"이 상태에서 이 행동을 하면 얼마나 좋은가?"
이 값을 행동 가치 함수라고 하고 보통 Q(s, a)라고 쓴다. Q(s, a)는 상태 s에서 행동 a를 선택했을 때 기대되는 장기 보상이다.
예를 들어 어떤 칸에 서 있을 때 그 칸 자체의 가치는 하나의 숫자로 표현될 수 있다. 하지만 그 칸에서 위로 가는 행동, 오른쪽으로 가는 행동, 아래로 가는 행동의 가치는 서로 다를 수 있다. 위로 가면 목표에 가까워지고, 아래로 가면 함정에 가까워진다면 두 행동을 같은 값으로 볼 수 없다.
행동 가치를 사용하면 에이전트는 선택을 더 쉽게 할 수 있다. 각 행동의 Q값을 비교한 뒤 가장 큰 값을 가진 행동을 고르면 된다.
Q(s, a) = 지금 보상 + γ × 다음 상태에서의 좋은 행동 가치이 문장은 다음 장에서 만날 Q-learning의 핵심으로 이어진다. Q-learning은 이름 그대로 Q값을 학습하는 방법이다. 에이전트는 경험을 통해 "이 상태에서 이 행동을 하면 얼마나 좋은가"를 계속 업데이트한다.
벨만 방정식은 예언이 아니라 약속이다
벨만 방정식을 처음 배울 때 종종 오해가 생긴다. 마치 이 방정식을 쓰면 미래를 정확히 예언할 수 있을 것처럼 느껴지는 것이다. 하지만 벨만 방정식은 마법의 예언서가 아니다. 환경이 확률적이면 같은 행동을 해도 다른 결과가 나올 수 있다. 오른쪽으로 움직이려 했는데 바람 때문에 위로 밀려날 수도 있고, 게임에서 같은 공격을 해도 데미지가 조금씩 달라질 수도 있다.
그래서 벨만 방정식은 보통 기댓값의 형태로 이해한다. 기댓값은 여러 가능성을 평균적으로 고려한 값이다. 즉, 벨만 방정식은 "항상 정확히 이렇게 된다"가 아니라 "많이 반복하면 평균적으로 이렇게 볼 수 있다"에 가깝다.
이 관점은 현실적인 강화학습에서 중요하다. 로봇은 바닥 마찰 때문에 매번 똑같이 움직이지 않는다. 게임 AI는 상대의 행동에 따라 결과가 달라진다. 언어 모델도 같은 질문에 대해 여러 후보 답변을 만들 수 있고, 그 답변에 대한 인간의 평가는 사람마다 조금씩 다를 수 있다.
그럼에도 벨만의 생각은 강력하다. 불확실한 미래라도 한 걸음 뒤의 보상과 다음 상태의 가치를 이용해 현재를 평가할 수 있기 때문이다.
벨만 방정식이 알고리즘으로 변하는 순간
벨만 방정식은 단순한 수학 공식으로 끝나지 않는다. 앞으로 만날 여러 강화학습 알고리즘의 뼈대가 된다.
Q-learning은 벨만 아이디어를 가장 직접적으로 사용한다. 에이전트가 어떤 상태에서 행동을 하고, 보상을 받고, 다음 상태를 관찰하면 Q값을 고친다. 이때 기준이 되는 생각은 "현재 Q값은 지금 보상과 다음 상태에서 얻을 수 있는 최고의 Q값에 가까워져야 한다"는 것이다. 즉, 벨만 방정식의 행동 가치 버전이다.
DQN은 이 Q-learning을 딥러닝과 결합한 방법이다. 상태가 단순한 격자 좌표가 아니라 게임 화면처럼 복잡해지면 표 형태로 모든 Q값을 저장하기 어렵다. 그래서 신경망이 Q값을 예측하도록 만든다. 하지만 그 신경망이 맞추려는 목표 역시 벨만식으로 만들어진다. 지금 보상과 다음 상태의 추정 가치가 학습 신호가 된다.
Actor-Critic도 벨만 아이디어와 연결되어 있다. Actor는 행동을 고르는 정책 역할을 하고, Critic은 그 행동이 얼마나 좋았는지 평가한다. 이때 Critic이 상태나 행동의 가치를 추정할 때 벨만식 사고를 사용한다. "지금 받은 보상과 다음 상태의 가치를 보면, 방금 선택이 예상보다 좋았는가 나빴는가?"를 판단하는 것이다.
이 큰 흐름을 기억해 두면 이후 장들이 훨씬 덜 낯설어진다.
Q-learning은 Q값을 벨만 방식으로 업데이트한다.
DQN은 신경망으로 Q값을 예측하지만 학습 목표는 벨만 아이디어에 기대고 있다.
Actor-Critic은 정책을 학습하면서도 Critic의 가치 추정에 벨만식 사고를 사용한다.
겉모습은 달라도 중심에는 같은 질문이 있다.
"지금 받은 보상과 다음 상태의 가치를 합치면, 현재의 선택은 얼마나 좋았는가?"
한 걸음 앞을 보면 먼 미래가 보인다
벨만 방정식의 아름다움은 거창한 미래 계획을 작은 조각으로 나눈다는 데 있다. 강화학습에서 에이전트는 처음부터 전체 경로를 완벽하게 알지 못한다. 대신 한 걸음 이동하고, 보상을 받고, 다음 상태를 본다. 그리고 그 한 걸음의 경험으로 현재의 추정을 조금 고친다.
이 작은 수정이 반복되면 놀라운 일이 일어난다. 목표에서 가까운 곳의 가치가 먼저 바뀌고, 그 변화가 주변으로 퍼진다. 좋은 길은 점점 밝아지고, 위험한 길은 점점 어두워진다. 에이전트는 그 지도를 보며 더 나은 행동을 선택한다.
강화학습의 많은 알고리즘은 결국 이 과정을 더 안정적으로, 더 빠르게, 더 복잡한 환경에서도 가능하게 만들기 위한 시도라고 볼 수 있다.
다음 장에서는 이 아이디어가 가장 선명하게 드러나는 알고리즘인 Q-learning을 만난다. 이제 에이전트는 단순히 "이 상태가 좋은가?"를 넘어 "이 상태에서 어떤 행동이 가장 좋은가?"를 직접 배우기 시작한다. 벨만 방정식이 지도 위에 가치를 퍼뜨렸다면, Q-learning은 그 가치를 이용해 실제로 길을 고르는 방법을 알려 준다.
이 노트는 보도·비평·교육·연구 목적으로 작성되었습니다. 저작권 문의가 있으시면 에서 알려주세요.