5. The Bellman Equation and Dynamic Programming(3/3)-Dynamic Programming - Policy Iteration
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하게 정함
코드 구현
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 를 정하는 게 좀 더 빠르게 계산할 수 있음