12.3.3 다이나믹 프로그래밍
다이나믹(dynamic)은 연속적으로 발생되는 문제들을 푸는 것이고, 프로그래밍(programming)은 개발 언어가 아니라 수학적인 문제를 의미합니다. 따라서 다이나믹 프로그래밍(dynamic programming)은 연속적으로 발생되는 문제를 수학적으로 최적화(optimizing)하여 풀어내는 것이라고 할 수 있습니다.
다이나믹 프로그래밍은 MDP의 모든 상황에 대한 것을 이미 알고 있다고 가정합니다. 그렇기 때문에 계획(planning)이 가능합니다. 어떤 행동을 취했을 때 어떤 상태가 되는지 미리 알고 있기에 계획이 가능한 것과 동일합니다.
MDP와 정책을 입력으로 하여 가치 함수를 찾아내는 것이 예측(prediction) 과정입니다. 그리고 MDP를 입력으로 하여 기존 가치 함수를 더욱 최적화하는 것이 컨트롤(control) 과정입니다. 최종적으로 정책은 가치 함수를 사용하여 최적화된 정책을 찾을 수 있습니다.
정책 이터레이션(policy iteration)
정책을 더 좋게 업데이트하려면 어떻게 해야 할까요? 평가와 발전이라는 두 가지 접근 방식으로 정책을 업데이트할 수 있습니다.
현재 정책을 이용해서 가치 함수를 찾는 것을 평가(evaluate)라고 합니다. 그리고 이 가치 값과 행동에 대한 가치 값을 비교하여 더 좋은 정책을 찾아가는 과정을 발전(improve)이라고 합니다. 이 두 가지 과정을 반복하여 수행하면 정책과 가치는 특정 값으로 수렴하게 되고, 그때가 최적화된 정책과 가치라고 할 수 있습니다.