인공지능의 발전/머신러닝의 부상

벨만 방정식(Bellman Equation)

Seven AI Workers 2025. 4. 28. 22:30
728x90

1950~1960년대, 리처드 벨만(Richard Bellman)은 '최적 제어(optimal control)'와 '동적 프로그래밍(dynamic programming)'이라는 개념을 연구했습니다. 그는 순차적으로 결정을 내려야 하는 문제, 즉 "지금 무엇을 해야 가장 좋은 결과를 얻을 수 있을까?"를 수학적으로 풀어내기 위해 벨만 방정식(Bellman Equation) 을 만들었습니다.


1. 벨만 방정식이 필요한 이유

어떤 문제는 한번에 한 번씩 결정을 내려야 하고, 그 결과가 다음 상황에 영향을 줍니다. 예를 들어,

  • 로봇이 미로를 탈출하려 할 때 어디로 이동할지
  • 게임에서 어떤 행동을 할지
  • 투자에서 매달 얼마를 저축할지

이런 문제들은 한 번의 결정이 끝이 아니라, 계속 이어지는 연속적인 결정을 필요로 합니다.

문제는 "지금 최선의 선택이, 앞으로의 최선 결과를 보장할까?" 하는 점입니다. 벨만은 이 문제를 풀기 위해 '미래를 모두 계산하는 대신, 현재와 미래를 연결하는 간단한 규칙'을 만들었습니다.

그게 바로 벨만 방정식입니다.


2. 벨만 방정식이란?

간단히 말하면, "현재의 가치 = 지금 얻는 보상 + 앞으로 최선을 다했을 때 얻을 수 있는 기대 가치"를 의미합니다.

수식으로는 이렇게 표현됩니다:

이걸 쉽게 풀어보면:

  • V(s) : 현재 상태 s에서 얻을 수 있는 최대 기대 가치
  • a : 가능한 행동(action)
  • R(s,a) : 현재 상태 s에서 행동 a를 했을 때 즉시 얻는 보상(reward)
  • P(s'|s,a) : 행동 a를 했을 때 다음 상태 s'로 갈 확률
  • V(s') : 다음 상태 s'에서 얻을 수 있는 최대 기대 가치
  • γ\gamma(감가율, discount factor): 미래 보상의 현재 가치. 0~1 사이 값입니다.

즉, 현재 가치는:   
       "지금 행동으로 얻는 보상"과 "앞으로 최선을 다했을 때 얻을 미래 보상 (약간 할인해서 계산)"을 더한 것입니다.


3. 왜 이게 중요한가?

벨만 방정식은 다음을 가능하게 합니다.

  • 복잡한 긴 문제를 '현재'와 '미래'로 나눠서 계산할 수 있게 합니다.
  • 작은 조각 문제들을 풀어 전체 문제를 해결할 수 있게 합니다 ("작은 문제를 풀면 큰 문제를 푼다"는 동적 프로그래밍 아이디어).
  • 강화학습(RL)처럼, 스스로 시행착오를 통해 '좋은 행동 방법(정책)'을 배우게 합니다.

4. 아주 쉬운 예시

  • 지금 1,000원을 가지고 있다.
  • 저축하면 매달 이자로 10%를 준다.
  • 언제까지 저축할지는 자유다.

이때, 오늘 저축하는 가치는:

  • 즉시 얻는 보상(없음) + (미래에 얻을 이자 10%와 원금 가치)

입니다.

매달 결정해야 합니다. "지금 돈을 쓸까, 더 기다릴까?" 매 순간 이걸 계산해야 하죠.

이럴 때 벨만 방정식을 이용하면, 어떤 시점에서 어떤 행동(저축 vs 인출)을 해야 총 이익이 최대가 될지 알 수 있습니다.


 

5. 강화학습에서 벨만 방정식의 역할

강화학습은 에이전트(Agent)가 환경(Environment)과 상호작용하면서 최적의 행동(Policy)을 학습하는 방법입니다. 목표는 장기적으로 얻을 수 있는 보상(Reward)을 최대화하는 것입니다.

여기서 벨만 방정식은 "좋은 상태"란 무엇인지 정의하는 데 중요한 역할을 합니다. 벨만 방정식은 다음과 같은 아이디어를 바탕으로 합니다.

지금의 가치 = 현재 얻은 보상 + 미래 가치

즉, 어떤 상태(state)에서 행동을 했을 때 얻는 총 보상은,

  • 지금 즉시 받는 보상과
  • 그 다음 상태에서 앞으로 받을 보상의 합 입니다.

이 간단한 원리가 강화학습 전체를 지탱하는 핵심입니다.


6. Q-러닝과 벨만 방정식

**Q-러닝(Q-Learning)**은 벨만 방정식을 활용하는 대표적인 강화학습 알고리즘입니다.

Q-러닝에서는 "Q값"이라는 것을 학습합니다. Q(s,a)Q(s, a)는 "상태 ss에서 행동 aa를 했을 때 기대할 수 있는 총 보상"을 의미합니다.

Q-러닝은 벨만 방정식을 다음처럼 변형하여 사용합니다.

쉽게 설명하면 다음과 같은 과정입니다:

  1. 현재 상태 ss에서 행동 aa를 선택하고,
  2. 보상 rr을 받고, 다음 상태 s′s'로 이동합니다.
  3. 그 다음 상태 s′s'에서 가능한 행동들 중 가장 큰 Q값(max⁡Q(s′,a′)\max Q(s', a'))을 확인합니다.
  4. 이 정보를 사용해서 현재 Q(s,a)Q(s, a)를 업데이트합니다.

이 과정을 반복하면서 Q값이 점점 실제 최적 보상에 가까워지게 됩니다.

728x90