Loading [MathJax]/jax/output/CommonHTML/jax.js

산업공학/Reinforcement Learning

[강화학습] Dynamic Programming (동적 계획법)

테드리 2025. 3. 31. 22:51

What is Dynamic Programming?

Dynamic Programming (동적 계획법)이란 복잡한 문제를 다음과 같은 방법으로 푸는 것을 말한다.

  • Sub-Structure : 상위 문제를 하위 문제로 쪼갠다
  • Table-Structure : 각 하위 문제를 해결한 후 계산된 해를 테이블에 저장하여 여러 번 재사용
  • Bottom-up Computation : 작은 하위 문제의 해를 결합하여 더 큰 하위 문제를 해결하고 원래 문제에 접근

동적 계획법은 다음과 같은 조건 하에서 풀린다.

  1. Optimal Sub-structure : 원 문제의 최적해는 하위 문제들의 최적해들로부터 도출된다
  2. Overlapping Sub-problems : 동일한 하위 문제의 해가 반복적으로 필요하므로 계산된 해를 테이블에 저장하여 재계산을 피할 수 있다.
"MDP는 위 두 가지 조건을 모두 충족 시킨다"
1) Bellman 방정식은 재귀적 분해 과정으로 해결된다
2) Value Function은 해를 저장하고 재사용한다.

 

출처 : https://yasir-tobbileh.medium.com/dynamic-programming-techniques-with-examples-89b684f406ec

 

Value Iteration

 

다음과 같은 단일 수렴을 반복적으로 계산한다.

Vk+1(s)=maxas,rp(s,r|s,a)[r+γVk(s)]

 

(1) V0(S) 값 초기화

(2) 모든 Vk(s) 값들로부터 Vk+1(s) 업데이트

 

[문제 예시]

출처 : https://www.youtube.com/watch?v=rC6xkxS_myY&list=PLvbUC2Zh5oJtYXow4jawpZJ2xBel6vGhC&index=8

 

위의 예시에서 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)=argmaxas,rp(s,r|s,a)[r+γV(s)]