앞에서 policy와 value function에 대해 알아봤는데 이제 이 policy를 학습하는 방법에 대해 알아보겠다.
Model Based Learning
이 모델 기반 학습은 모델이 있다는 가정하에 학습을 진행하는 것이다.
12-1에서 소개한 MDP의 perfect한 모델이 주어졌을 때를 조건으로 하는 것이다. perfect한 모델은 모든 s, a에 대해서 s'와 r이 나올 확률이 나와 있는 것을 말한다 .
여기서 s 공간과 s'공간이 다른데 이는 s'는 termial state를 포함할 수 있기 때문에 공간을 다르게 하였다.
이렇게 완벽한 모델을 가지고 있을 때는 exploration이 필요 없이, dynamic programming(sub problem의 solution들을 저장해두고 나중에 쓸 수 있도록 하는 것)기법을 이용하여 state value나 action value의 optimal한 값을 찾을 수 있게 된다. (by Bellman optimality equations)
가장 value를 높게하는 action을 선택하여 optimal한 값을 구한다.
s,a일 때 s'으로 가면서 얻는 모든 reward에 대한 확률을 곱해서 더해주면 기댓값이 나오므로 위와 같이 풀어서 쓴다.
여기서는 앞에 max를 취한다. (평균을 취하는게 Bellman equations)
action value function은 아래와 같이 정의할 수 있다.
a'는 다음 액션으로 가장 좋은 액션(리워드가 높은 것)을 취하는 것을 의미한다.
일단 최적의 state value 또는 최적의 action value를 구하면, 최적의 policies를 쉽게 구할 수 있다.
이제 optimal state value function을 계산하는 알고리즘을 소개하겠다.
이 function을 알게되면 자연스럽게 optimal한 policy를 알게된다.
이 function은 Policy iteration이라고 하는데 다음과 같은 방식이다.
초기에는 policy가 임의로 정해져있는 상태이다.
그래서 어떤 정해진 policy가 있으면, dynamic programming으로 그 policy를 따를 때의 state value가 어떤지를 계산할 수 있다.(추정치를 이용해서 추정치를 계산한다.-Bootstrapping)
3번에서는 이 Policy를 개선하게 되는데 제일 좋은 state value로 가는 policy로 갱신하는 것이다.
이 알고리즘을 쉽게 다시 설명해보겠다.
맨 처음에 초기 policy가 주어진다.(파이 제로) 보통 랜덤하게 주어진다.
그 policy로 이룰 수 있는 모든 state에서의 각 discount return 값을 계산(value function-브이파이제로) Policy Evaluation 단계
(이 과정이 위 알고리즘 코드에서 Loop안의 내용)
이 추정치가 갱신되면 또다시 추정해야되고 이 과정을 갱신이 되지 않을 때까지(value function이 수렴) 반복한다.
이 value function이 가르쳐주는대로 내가 가장 높은 reward를 가지려면 어떤 action을 취해야하는지 알 수 있다.
이 과정이 Policy Improvement 단계이다.
마지막에 파이별, 브이별이 각각 optimal한 도출값이라고 볼 수 있다.
하지만 아래와 같은 예시를 통해 의문을 제시할 수 있다.
4X4 grid에서 value function이 수렴할 때까지 policy evaluation을 했는데 자세히 보면 k=3일 때부터 k가 무한대일때까지 value function은 다르지만 optimal policy는 같은 것을 볼 수 있다.
따라서 이 policy evaluation을 끝까지 하는 것이 아니라 중간에 그만두어도 좋은 policy를 구하는데 문제가 없다.
이 이론을 반영한 알고리즘을 value iteration algorithm이라고 하며 다음과 같은 sequence를 가지고 있다.
이 알고리즘은 ,
초기에 임의의 value에서 시작한다.
랜덤한 policy라고 생각하고 시작한다.
액션들의 기대값을 생각하지말고 가장 좋은 액션의 value로만 업데이트한다.
즉 optimal 한 policy라고 치고 그 action에 대한 value로 업데이트하라는 의미.
이것은 Bellman optimality equation을 업데이트룰화하여 돌아가는 알고리즘이다.
'대학원 공부 > 기계학습의원리' 카테고리의 다른 글
CNN 파라미터 개수 계산 (예제) (0) | 2023.10.29 |
---|---|
[머신러닝 원리] 12-4. 강화 학습(Reinforcement Learning) (0) | 2022.12.31 |
[머신러닝 원리] 12-2. 강화 학습(Reinforcement Learning) (0) | 2022.12.13 |
[머신러닝 원리] 12-1. 강화 학습(Reinforcement Learning) (0) | 2022.12.08 |
[머신러닝 원리] 10-1. Features (0) | 2022.11.23 |