Ordinary day

강화학습 스터디 2주차 본문

Study/ML 이론

강화학습 스터디 2주차

minung14 2017. 9. 18. 19:58

(파이썬과 케라스로 배우는 강화학습을 읽고 요약정리 한 것입니다.)

1. 다이내믹 프로그래밍 Dynamic Programing

다이내믹 프로그래밍은 작은 문제가 큰 문제 안에 중첩돼 있는 경우에 작은 문제의 답을 다른 작은 문제에서 이용함으로써 효율적으로 계산하는 방법.

리처드 벨만이 처음 제시했으며, 최적화에 관련된 방정식이다.

기본적인 아이디어는 큰 문제 안에 작은 문제들이 중첩된 경우에 전체 큰 문제를 작은 문제로 쪼개서 풀겠다는 것.

작은 문제의 답들을 서로서로 이용할 수 있어 계산량을 줄일 수 있다.


2. 정책 이터레이션 Policy Iteration

Policy Iteration은 다이내믹 프로그래밍의 한 종류로, 벨만 기대 방정식을 사용해 MDP 문제를 푸는 것.

MDP 문제에서 결국 우리가 알고 싶은 것은 가장 높은 보상을 얻게 하는 정책을 찾는 것이다.

처음에는 이 정책을 알 수 없으므로 보통 무작위로 시작하여 정책을 발전시켜 나간다. 

-> Policy Evaluation, Policy Improvement 를 무수히 반복하여 최적 정책을 찾을 수 있음.


3. 정책 평가 Policy Evaluation

Policy Iteration에서 정책을 평가하고 이를 통해 발전시켜나가야 하는데, 평가는 어떻게 할 수 있을까?

앞에서 말했던 Value Function이 정책이 얼마나 좋은지 판단하는 근거가 된다. (어떤 policy를 따라가야 많은 보상을 받을 수 있을지)

모든 상태에 대해서 그 다음 상태가 될 수 있는 행동에 대한 보상의 합을 현재 상태 자리에 저장하는 것이 Policy Evaluation의 과정이다.

주변 상태의 가치함수와 바로 다음 스텝에서 얻어지는 보상만 고려해서 현재 상태의 다음 가치함수를 계산하겠다는 것이다.

이렇게 계산한 값이 실제 값은 아니지만 무한히 반복한다면 참 값으로 수렴할 것이다.


4. 정책 발전 Policy Improvement

Policy Improvement의 방법은 정해져 있지 않지만 가장 널리 알려진 방법은 Greedy Policy Improvement 이다.

Greedy Policy Improvement 에이전트가 할 수 있는 행동들의 큐함수를 비교하고 가장 큰 큐함수를 가진 행동을 취하는 것이다. 

Greedy Policy Improvement을 통해 policy를 업데이트 하면 이전 가치함수에 비해 업데이트된 정책으로 움직였을 때 받을 가치함수는 무조건 크거나 같다. 따라서 장기적으로 본다면 최적 정책에 수렴할 수 있다.

Comments