7강 동적 프로그래밍
우리가 6강에서 다루었던 벨만 방정식을 이용하면 연립방정식을 얻을 수 있고, 그 연립방정식을 풀 수 있다면 가치 함수를 구할 수 있었습니다.
하지만 연립방정식을 직접 푸는 방식은 간단한 문제에서만 의미가 있으며, 상태와 행동 패턴의 수가 조금만 많아져도 계산량이 폭발하게 됩니다.

이 7강에서는 상태와 행동의 수가 어느 정도 많아져도 컴퓨터를 이용해 최적 정책과 가치 함수를 효율적으로 구할 수 있도록 돕는 동적 프로그래밍(Dynamic Programming, DP)의 다양한 알고리즘들을 차근차근 배워 봅니다.
학습 목표
이 단원을 충실히 공부하고 나면 아래 네 가지 중요한 강화 학습 질문에 명확하게 답할 수 있습니다!
- 특정 정책의 가치 함수를 평가하는 정책 평가(Policy Evaluation)와 정책을 최적으로 조정하는 정책 제어(Policy Control)의 개념을 정의하고 비교할 수 있다.
- 추정치 가치 함수를 사용하여 다음 상태의 추정치로 개선하는 부트스트랩(Bootstrapping)의 정의와 의미를 설명할 수 있다.
- 정책 평가와 정책 개선을 번갈아 수행하며 최적 정책에 수렴시키는 정책 반복법(Policy Iteration)의 메커니즘을 이해하고 파이썬으로 구현할 수 있다.
- 평가와 개선 단계를 통합하여 최적 벨만 방정식을 직접 갱신하는 가치 반복법(Value Iteration)을 유도하고 파이썬으로 최적 정책을 도출할 수 있다.
학습 목차
- 07.1 동적 프로그래밍의 유래
- 리처드 벨만이 수학 연구 예산을 지켜내기 위해 이름(‘Dynamic Programming’)을 고안했던 비하인드 스토리와 역사적 유래를 배웁니다.
- 07.2 동적 프로그래밍과 정책 평가
- 동적 계획법의 개념과 부트스트랩 원리, 2칸 그리드 월드에서의 정책 평가 연산과 코드 구현을 배웁니다.
- 07.3 더 큰 문제를 향해
- 3 × 4 그리드 월드를 다루는 클래스를 구현하고
defaultdict기반의 대규모 정책 평가 구조를 살펴봅니다.
- 3 × 4 그리드 월드를 다루는 클래스를 구현하고
- 07.4 정책 반복법
- 임의의 정책을 탐욕적으로 더 개선시키는 정책 개선 정리(Policy Improvement Theorem)의 이론적 의의를 배웁니다.
- 07.5 정책 반복법 구현
- 정책 평가와 탐욕적 개선 루프를 합쳐 최적 정책을 도출하는 정책 반복법을 파이썬으로 구현해 봅니다.
- 07.6 가치 반복법
- 정책 없이 가치 함수만을 직접 최적값으로 갱신 수렴시키는 가치 반복법(Value Iteration)의 유도 및 구현 과정을 배웁니다.
- 07.7 정리
- 7강 동적 프로그래밍 단원의 전체 핵심 수식과 알고리즘 비교 테이블을 복습합니다.
서브목차