What is Dynamic Programming?
Dynamic Programming (동적 계획법)이란 복잡한 문제를 다음과 같은 방법으로 푸는 것을 말한다.
- Sub-Structure : 상위 문제를 하위 문제로 쪼갠다
- Table-Structure : 각 하위 문제를 해결한 후 계산된 해를 테이블에 저장하여 여러 번 재사용
- Bottom-up Computation : 작은 하위 문제의 해를 결합하여 더 큰 하위 문제를 해결하고 원래 문제에 접근
동적 계획법은 다음과 같은 조건 하에서 풀린다.
- Optimal Sub-structure : 원 문제의 최적해는 하위 문제들의 최적해들로부터 도출된다
- Overlapping Sub-problems : 동일한 하위 문제의 해가 반복적으로 필요하므로 계산된 해를 테이블에 저장하여 재계산을 피할 수 있다.
"MDP는 위 두 가지 조건을 모두 충족 시킨다"
1) Bellman 방정식은 재귀적 분해 과정으로 해결된다
2) Value Function은 해를 저장하고 재사용한다.

Value Iteration
다음과 같은 단일 수렴을 반복적으로 계산한다.
Vk+1(s)=maxa∑s′,rp(s′,r|s,a)[r+γVk(s′)]
(1) V0(S) 값 초기화
(2) 모든 Vk(s′) 값들로부터 Vk+1(s) 업데이트
[문제 예시]

위의 예시에서 V2(Warm)의 결과를 분석해보자. V2(Warm)은 state가 'Warm'일 경우 2번째 Iteration 후의 ㄸExpected Value를 찾는 함수이다.
우선 S1=Warm이라고 했을 때 현재 state에서 취할 수 있는 action은 'Slow'와 'Fast' 두 가지이다. 이제 각 action에 대하여 Expected Value를 계산해보자. (γ=1 가정)
1) Action = 'Slow' :
V2(s)=p('Cool'|'Warm', 'Slow')∗(r1+V1('Cool'))
+p('Warm'|'Warm', 'Slow')∗(r2+V1('Warm'))
=0.5(1+2)+0.5(1+1)=2.5
2) Action = 'Fast' :
V2(s)=p('Overheated'|'Warm', 'Fast')∗(r1+V1('Cool'))
+p('Warm'|'Warm', 'Fast')∗(r2+V1('Warm'))
=1.0(−10+0)=−10
∴V2(Warm)=max2.5,−10=2.5
(3) Optimal Policy 계산
π∗(s)=argmaxa∑s′,rp(s′,r|s,a)[r+γV∗(s′)]
'산업공학 > Reinforcement Learning' 카테고리의 다른 글
[강화학습] 4. Bellman Equation (1) | 2024.03.20 |
---|---|
[강화학습] 3. Reward and Policy (0) | 2024.03.20 |
[코드 리뷰] RL4CO : PDP (Pickup and Delivery Problem) (0) | 2024.03.19 |
[강화학습] 2. Markov Decision Process (MDP) (1) | 2024.02.21 |
[강화학습] 1. Introduction to Reinforcement Learning (0) | 2024.02.06 |