대학원 수업/강화학습

4. The Bellman Equation and Dynamic Programming(2/3) - Dynamic Programming - Value Iteration 계산

따옹 2022. 10. 22. 06:04

Dynamic Programming - Value Iteration

 

이런 환경에서

V값을 계산 iterative하게 진행(계속해서 반복해서 값을 update)

 

1. 초기값을 random값으로

2. value값을 가지고 Q table 만듦.

해당 과정으로 value table 업데이트 해나감 / A state에 대한 value값을 모두 update / maximum 값으로 update

3. 앞의 iteration과 뒤의  iteration차이가 거의 없을 때까지 반복

한 번 더 value값으로 Q값을 계산 - 목적은? action을 정하기 위해, policy를 정하기 위해

 

차이가 threshold(1e-20)값 이하면 그만 하겠다.

gamma = 0.99

value_tabel = np.zeros(env.observation_space.n) #16개 벡터를 0으로 초기화

for s in range(env.observation_space.n) : #각 state에 대하여 값 4개 짜리 vector, '_' terminal 값이냐 아니냐 

1. sum[prob*(r + gamma * update_value_table[s_]) #2값을 대입

2. for prob, s_, r, _ in env.P[s][a]  #계산

3. for a in range(env.action_space.n) #4개에 대하여

 

discount vector

gamma : hyper parameter 

gamma를 높은 값인 0.9로 준 경우, 목적지에서 멀 수록 가치 떨어짐

목적은? 목적지에 가까워질 수록 가치가 높고 가치가 점점 낮아짐 r의 역할

빙빙 돌지 않고 목적지에 도착할 수 있음 / r을 너무 작게 하면 학습 효과가 떨어짐