핵심 요약
불확실한 환경에서의 의사결정은 고정된 경로가 아닌 정책(Policy)으로 정의되어야 하며, 벨만 방정식을 통한 반복적 계산으로 최적의 정책을 도출할 수 있다.
배경
스탠포드 대학교의 AI 입문 강좌인 CS221의 일환으로, 결정론적 검색 문제를 넘어 확률적 불확실성이 포함된 의사결정 문제를 다룬다.
대상 독자
AI 및 강화학습의 수학적 기초를 다지고 싶은 학생 및 개발자
의미 / 영향
이 강의는 강화학습의 이론적 토대인 MDP를 명확히 정의하여 불확실한 시스템 제어의 프레임워크를 제공한다. 실무적으로는 로봇 제어, 재고 관리, 자율 주행과 같이 결과가 확률적으로 변하는 환경에서 에이전트의 의사결정 로직을 설계할 때 핵심적인 도구가 된다. 특히 벨만 방정식을 통한 가치 수렴 과정은 딥러닝 기반 강화학습(Deep RL)의 손실 함수 설계와 학습 원리를 이해하는 데 필수적인 배경 지식이다.
챕터별 상세
MDP의 개념과 검색 문제와의 차이점
- •Search 문제는 결정론적(Deterministic)이지만 MDP는 확률적(Stochastic)이다
- •Markov Property는 현재 상태가 과거의 모든 정보를 함축하고 있다고 가정한다
- •현실의 교통 체증이나 기계 고장 같은 불확실성을 수학적으로 모델링할 수 있다
MDP의 수학적 정의와 구성 요소
- •Transitions는 행동의 결과가 여러 상태로 나뉠 수 있음을 확률로 표현한다
- •Rewards는 검색 문제의 Cost를 음수 값으로 표현한 것과 유사한 개념이다
- •Discount Factor는 무한한 시간 지평선에서 수렴성을 보장하고 미래 가치를 평가한다
class FlakyTramMDP(MDP):
def __init__(self, num_locs=10, failure_prob=0.4):
self.num_locs = num_locs
self.failure_prob = failure_prob
def successors(self, state):
# Walk action
if state + 1 <= self.num_locs:
results.append(Step(action='walk', prob=1, reward=-1, state=state + 1))
# Tram action with failure probability
if 2 * state <= self.num_locs:
results.append(Step(action='tram', prob=1 - self.failure_prob, reward=-2, state=2 * state))
results.append(Step(action='tram', prob=self.failure_prob, reward=-2, state=state))
return results불확실성이 존재하는 트램 이동 문제를 MDP로 모델링한 클래스 예시
정책(Policy)과 롤아웃(Rollout) 평가
- •Policy는 상태를 행동으로 매핑하는 함수 pi(s)로 정의된다
- •Rollout은 정책을 따라 에피소드를 끝까지 실행해보는 시뮬레이션이다
- •정책의 가치는 롤아웃을 통해 얻은 기대 유틸리티(Expected Utility)로 정의된다
벨만 방정식을 이용한 정책 평가
- •Bellman Equation은 상태 가치 간의 재귀적 관계를 수식화한다
- •Q-Value는 상태와 행동의 쌍(s, a)에 대한 기대 가치를 측정한다
- •Bootstrapping을 통해 이전 단계의 가치 추정치를 이용해 현재 가치를 업데이트한다
가치 반복(Value Iteration)과 최적 정책
- •Value Iteration은 정책 고정 없이 매 단계 최선의 행동을 선택하며 가치를 업데이트한다
- •Bellman Optimality Equation은 최적 가치 함수 간의 관계를 정의한다
- •알고리즘이 수렴하면 각 상태에서의 최적 행동 지침인 최적 정책을 얻을 수 있다
def compute_q_value(successors, discount, values):
q_val = 0
for step in successors:
# Q(s, a) = sum(T(s, a, s') * [R(s, a, s') + gamma * V(s')])
q_val += step.prob * (step.reward + discount * values[step.state])
return q_val전이 확률과 보상을 바탕으로 특정 상태-행동 쌍의 Q-가치를 계산하는 함수
for iter in range(max_iters):
new_values = {}
for state in states:
if mdp.is_end(state):
new_values[state] = 0
continue
# Policy Evaluation: V(s) = Q(s, pi(s))
action = policy(state)
successors = mdp.successors(state, action)
new_values[state] = compute_q_value(successors, mdp.discount(), values)
# Check for convergence
if compute_distance(values, new_values) < tolerance:
break
values = new_values반복적 계산을 통해 주어진 정책의 가치를 평가하는 Policy Evaluation 알고리즘
실무 Takeaway
- 불확실성이 있는 환경에서는 고정된 행동 시퀀스가 아닌 상태별 행동 지침인 정책(Policy)을 설계해야 한다.
- 벨만 방정식을 활용하면 시뮬레이션 없이도 재귀적 관계를 통해 각 상태의 기대 가치를 수학적으로 정확히 계산할 수 있다.
- 할인 계수(Discount Factor)를 조정함으로써 에이전트가 당장의 보상과 장기적인 이득 사이에서 우선순위를 정하도록 제어 가능하다.
- 가치 반복(Value Iteration) 알고리즘은 모든 행동에 대한 최대 기대 가치를 탐색하여 최적의 의사결정 지도를 자동으로 구축한다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.