반복적 정책 평가법 실습
미끄러운 보행의 경우
- 5번의 상태 가치 = 4번 갈 확률 * 4번의 상태 가치 + 5번에 그대로 있을 확률 * 5번의 상태 가치 + 골을 할 확률 * 골의 상태 가치
- 4번의 상태 가치 = 3번 갈 확률 * 3번의 상태 가치 + 4번에 그대로 있을 확률 * 4번의 상태 가치 + 5번 갈 확률 * 5번의 상태 가치
- ...
- 확률은 정책과 전이 함수에 따라 결정되므로 각 상태 가치를 방정식으로 풀면 되지만, 풀기가 어려움 -> 부트스트래핑을 이용
| 구멍 | 1 | 2 | 3 | 4 | 5 | 골 |
|---|
반복적 정책 평가법
def policy_evaluation(pi, P, gamma=1.0, theta=1e-10):
# pi: 정책, P: 전이 함수, gamma: 할인율, theta: 수렴 판정 조건
prev_V = np.zeros(len(P)) # 상태의 수와 크기가 같은 영(0)벡터
gap = True
while gap:
V = np.zeros_like(prev_V) # prev_V와 모양이 같은 영벡터
for s in range(len(P)): # 모든 상태에 반복
for prob, next_state, reward, done in P[s][pi[s]]:
V[s] += prob * (reward + gamma * prev_V[next_state] * (not done))
gap = np.max(np.abs(prev_V - V)) > theta # 기존 V와 차이가 작으면 중단
prev_V = V.copy()
return V
무조건 왼쪽으로 걷는 정책
LEFT, RIGHT = 0, 1
pi = {
s: LEFT
for s in range(env.observation_space.n)
}
평가
V = policy_evaluation(pi, env.P)
퀴즈
동적 계획법과 부트스트래핑의 관계에 대한 설명으로 올바른 것을 모두 고르세요.
퀴즈를 풀려면 대화형 기능을 불러와야 합니다.