일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- real-time object detection
- 그래프 이론
- machine learning
- Mask Processing
- object detection
- LSTM
- C++
- 딥러닝
- MinHeap
- eecs 498
- CNN
- dynamic programming
- r-cnn
- Reinforcement Learning
- ubuntu
- dfs
- AlexNet
- YoLO
- deep learning
- DP
- 강화학습
- One-Stage Detector
- 머신러닝
- Python
- MySQL
- BFS
- image processing
- opencv
- 백준
- two-stage detector
- Today
- Total
JINWOOJUNG
Dynamic Programming 본문
본 게시글은 인하대학교 유상조 교수님의 Reinforcement Learning Tutorial Seminar
수강 후정리를 위한 포스팅입니다.
모든 포스팅의 저작관은 유상조 교수님에게 있음을 사전 공지합니다.
Before This Episode
https://jinwoo-jung.tistory.com/16
Bellman Optimality Equation
본 게시글은 인하대학교 유상조 교수님의 Reinforcement Learning Tutorial Seminar 수강 후정리를 위한 포스팅입니다. 모든 포스팅의 저작관은 유상조 교수님에게 있음을 사전 공지합니다. Before This Episode
jinwoo-jung.tistory.com
S,A,P,R,γ가 주어진 MDP에서 최적의 policy를 구하는 방법은 이전에 소개한 Bellman Optimality Equations로 계산할 수 있다.
v∗(s)=maxa∑s′,rp(s′,r|s,a)[r+γv∗(s′)]
or
q∗(s,a)=∑s′,rp(s′,r|s,a)[r+γ maxa′ q∗(s′,a′)]


State s에서의 최적의 state-value는 정해진 확률로 다음 state s′로 이동하고, 그때 받는 reward가 $r일 때,
r+γv∗(s′)값이 최대가 되는 action에 의해 변화되는 s′에서의 state-value로 결정되며 이때의 policy가 최적의 policy임을 의미한다.
State s에서의 최적의 action-value 역시 action a를 했을 때, 정해진 확률로 변화되는 s′에서 선택 가능한 action a′중 action-value가 가장 큰 action으로 결정되며, 이때의 policy가 최적의 policy임을 의미한다.
하지만 optimal state-value, action-value 모두 미래의 값으로 정의되기에 현재 state에서는 알 수 없다.
따라서 Model-based setup 즉, 사전에 <S,A,P,R,γ>를 모두 알고있는 경우 우리는 state-values, action-values를 계산하여 최적의 값을 구할 수 있다.
이때, Policy Evalution과 Policy Improvement를 통해 최적의 Policy에 접근할 수 있다.
Policy Evaluation
Policy Evaluation는 임의의 policy π에 대하여 state-value function vπ를 계산하는 것이다.
vπ(s)=∑aπ(a|s)∑s′,rp(s′,r|s,a)[r+γv∗(s′)]
선형적으로 vπ에 대한 계산이 가능하지만, 매우 복잡하기 때문에 iterative solution methods를 적용하여 해결하는 것이 Dynamic Programming이다.
Dynamic Programming
vk+1(s)에서는 vπ(s′)는 k+1의 상황에서 알지 못하는 미래의 값이기 때문에, 이를 iterative하게 해결하기 위해서 vk(s′)으로 바꿈으로써 해결할 수 있다.
vk+1(s)=∑aπ(a|s)∑s′,rp(s′,r|s,a)[r+γvk(s′)]
이때, update하는 방법에는 두가지 방법이 있는데, 먼저 Synchronous(동기식)의 경우 vk(s),vk+1(s) 두가지 값을 각각 다른 배열에 저장하여 모든 정보를 사용한다. Asynchronous(비동기식)의 경우 하나의 배열만 사용하는 in-place 방식으로, vk+1(s)로의 update가 있으면 바로 이전 갚을 update함으로써 동기식 방법보다 더 빠른 속도로 수렴함을 알 수 있다.

위의 MDP가 주어졌다는 가정 하에 Dynamic Programming을 통한 Policy Evaluation을 진행 해 보자.
Reward는 constant, State의 변화는 Diterministic, γ = 1, π는 random selection한다고 가정 해 보자.
Iterative하게 계산하기 위해 초기값 v0(s1)=v0(s2)=v0(s3)=0으로 가정한다.
1st의 경우 v1(s1)=0.5(4+v0(s2))+0.5(2+v0(s3))=3이다. v1(s2)=0.5(2+v0(s1))+0.5(3+v0(s3))=3이다. 이 식을 잘 보면, 이미 s1에 대한 state-value는 v1(s1)을 계산하는 과정에서 update 되었지만, 여전히 v0(s1)의 값을 이용하는 것을 확인할 수 있다. 즉, 동기식이다.
만약 비동기식으로 계산한다면, v1(s2)=0.5(2+v1(s1))+0.5(3+v0(s3))=4가 된다.
v1(s3) 역시 비동기식으로 계산하면 v3(s3)=0.5(4+v0(s1))=2이다.

Dynamic Programming을 통한 Policy Evaluation을 Sudo-Code로 나타내면 위와 같다. 초기 state-value를 설정하고 반복적으로 state-value를 update한 후 이전 값과의 차이가 가장 큰 값이 threshold보다 작을 때 까지 반복한다. 따라서 그때의 policy가 최적의 policy로 도출된다.

위 예시를 통해 더 정확히 이해할 수 있을 것이다. k가 무한대로 가면 각 state에서의 state-value는 최적의 값을 가지게 되고 그때의 policy가 optimal policy가 된다. 음수로 표현되는 것은 모든 state의 변화에 대한 reward가 -1이기 때문이다.
Policy Improvement
Policy Improvement는 Evaluation된 특정한 policy π에 대해서 vpi를 알고 있을 때, greedy action을 통해 Policy Improvement가 가능하다.

즉, evalution된 특정한 policy에 의해서 수행했을 때의 action-value들의 max가 되는 action을 선택하도록 policy를 바꿔준다. 따라서 Evaluation과 Improvement를 반복하면 최적의 Policy로 수렴함을 알 수 있다.

따라서 이를 Sudo-Code로 나타내면 아래와 같다.

하지만 Policy Iteration의 경우 Evaluation 과정에서 반복 횟수가 많아지기에 이를 줄이고 Evaluation과 Improvement를 반복하게 하는 방법이 Value Iteration이다. 실제로 Value Iteration이 더 효과적임을 알 수 있다.

박스 친 부분을 보면 max action을 선택하여 Update를 한다는 의미는 최적의 policy가 되도록 policy가 변하기 때문에 Sudo-Code 상에서는 Policy에 대한 수식은 없지만, update 됨을 예측할 수 있다.
'Reinforcement Learning' 카테고리의 다른 글
Temporal Difference Method (0) | 2024.01.19 |
---|---|
Monte Carlo Method (0) | 2024.01.19 |
Bellman Optimality Equation (0) | 2023.12.30 |
Markov Decision Process(MDP) (1) | 2023.12.29 |
Markov Reward Process(MRP) (1) | 2023.12.29 |