대학원 수업/강화학습

5. The Bellman Equation and Dynamic Programming(3/3)-Dynamic Programming - Policy Iteration

따옹 2022. 10. 22. 06:32

Dynamic Programming- 

model based - policy, 등을 알고있는 상태 

(<-> monte carlo)

policy iteration

모든 경우의 수를 다 구하지 않고

policy를 하나만 정하고 거기로 부터 그 policy에대한 각 state에 대한 value값 정하고

그 value값으로 부터 policy를 update (뭐가 이리 복잡누..)

 

1. policy를 random하게 정함 pi0

그때 그때 random하게 정하는 건 아니고 '한' policy를 random하게 정함

2. 그 policy에 대한 state value값 정함

3. 정해진 value들로 부터 새로운 policy pi1 update

4. 반복

알고리즘

밖 - policy를 계속 없데이트

안 - value를 iterative하게 정함

계산에 사용할 식 / 랜덤 policy 정하기 / 모든 value를 0으로 초기화 / 
계산하고 / value 업데이트 ~반복

 

코드 구현

vlaue_table = np.zeros(env.observation_space.n) #초기는 모두 0으로 세팅

내부, value값 update

a = policy[s] #action은 내가 사용하는 policy에서 정해짐

 

내가 정한 policy에 대해서 value update 

모든 가능한 action에 대해서 구한 다음 maximum을 취하는

 

왜 두 가지가 있는 걸까? 둘 중 하나만 하지

value iteration - 모든 action에 대해서 Q값을 구한 다음 max를 취함

policy iteration - policy를 정해놓고 그 policy에 대해서만 V값을 계산

action이 너무 많은 상태일 때, value iteration으로 하는 거보다

policy 를 정하는 게 좀 더 빠르게 계산할 수 있음