해결된 질문
작성
·
40
0
안녕하세요
아래와 같이 new_action_values 의 max 값이 복수개 발견될경우 맨처음 발견된 index 만 표시 되는게 맞는건가요?
예를 들어 액션값이 좌측이거나 위 .. 이렇게 두개의 값은 갖을 수 없는건가요?
V = np.zeros(num_states)
pi = np.ones([num_states, num_actions]) * 0.25
new_action_values = np.array([0.1, 0.5, 0.5, 0.5])
new_action = np.argmax(new_action_values)
print(new_action)
print(np.eye(num_actions))
print(np.eye(num_actions)[new_action])
답변 1
0
np.argmax는 여러 개의 최대값이 있어도 가장 먼저 등장한 인덱스만 반환합니다. 하지만 2, 3, 4 번째 0.5 중 아무 것의 인덱스를 반환해도 상관없습니다. 중요한 것은 최대값의 index 를 반환하면 결국에는 테이블이 수렴하게 된다는 것입니다. 위의 경우에 [0.1, 0.5, 0.5, 0.5] 인 경우 그 state에서의 최적 정책은 3개가 될 수 있습니다. 왜냐하면 어떤 state에서의 최적 정책은 여러개가 있을 수 있기 때문입니다. 하지만 Value Iteration 이나 Policy Iteration 알고리즘에서는 artmax 로 세개의 같은 값(0.5) 중 맨 처음 index 만 반환해도 가치함수 테이블이 수렴하도록 되어 있습니다. 그래서 argmax 에 문제가 없습니다. 좋은 질문 감사합니다.