On-policy : 학습하는 policy와 행동하는 policy가 반드시 같아야만 학습이 가능한 강화학습 알고리즘.

ex) Sarsa

on-policy의 경우 1번이라도 학습을 해서 policy improvement를 시킨 순간, 그 policy가 했던 과거의 experience들은 모두 사용이 불가능하다. 즉 매우 데이터 효율성이 떨어진다. 바로바로 exploration해서 학습하고 재사용이 불가능하다.




Off-policy : 학습하는 policy와 행동하는 policy가 반드시 같지 않아도 학습이 가능한 알고리즘.

ex) Q-learning

off-policy는 현재 학습하는 policy가 과거에 했던 experience도 학습에 사용이 가능하고, 심지어는 해당 policy가 아니라 예를 들어 사람이 한 데이터로부터도 학습을 시킬 수가 있다.




Sarsa는 on-policy인데 Q-learning은 off-policy인 이유 : 

Sarsa는 과거에 했던 데이터에 대해서는 Q(St, At) ß Rt + discount_factor * Q(St+1, At+1) 이 성립하지 않는다. 왜냐하면 Q-function이 한 번이라도 업데이트 되는 순간, 과거의 At+1의 선택지로부터 오는 q-value값은 더이상 Q(St, At)의 value를 estimation하는 데 의미를 줄 수가 없다. 왜냐하면 과거의 At+1 선택지가 아주 안 좋은 q-value를 가져와버리면, 그 행동을 안하면 되는데, 그렇지 않고 Q(St, At)에 대해 그 나쁜 value를 그대로 전파하기 때문이다.

* 이를 정확하게 다시 설명하자면, 과거의 policy가 내놓은 At+1에 대한 확률과 현재의 policy가 내놓은 At+1의 확률이 다르기 때문에, importance sampling을 해서 이 확률을 조절해주는 과정이 필요하다. 즉 과거의 안좋은 policy는 At+1이 90% 확률로 나온다고 생각했었는데, 현재의 좋은 policy At+1이 0.001%의 확률로 나온다고 생각했을 때 생기는 문제를 해결하기 위해 importance sampling을 하게 된다.


반면에 Q-learning에서는 상황이 다르다. Q(St, At) ß Rt + discount_factor * max_a Q(St+1, a ) 이 수식에서는 St+1에서 선택하는 action을 max로 매번 새롭게 가져온다. 따라서 Q함수가 업데이트 되더라도, St+1에서 가져올 수 있는 최적의 선택지를 max_a로 다시 고를 수 있다. 따라서 의미 있는 Q(St, At)에 대한 estimation이 가능하다. 사실 max_a를 골라버리면 저 등식은 성립하는게 아니긴 하다. 엄밀하게는 아마도 a에 대한 expectation을 취한 Expected Sarsa만이 저 등식을 성립시킬 수 있을 것이다. 그럼에도 불구하고 유의미한 것은, Q(St, At)의 값이 미래에 가능한 최고 좋은 value로부터 업데이트 될수가 있기 때문이다.


 

* Importance sampling 해서, 과거 policy 확률 분포로 현재 policy 확률 분포를 나눠주어, 같은 분포가 되도록 맞춰주는 것임.

생각을 해보면, on-policy 학습 policy 탐험 policy 같은 분포여야한다는 조건인데, 이걸 맞춰 주려면 학습 policy 내놓은 확률을 탐험 policy 확률 분포와 같아주게 하면됨. 그걸 하기 위해서 Importance sampling 이용해서 파이(a|s) 확률 분포를 교정해주자.

 

 

https://dnddnjs.gitbooks.io/rl/content/importance_sampling.html


근데 이걸 100step 지나서해도미묘한 분포이 차이가 100제곱이되어서 쓰기가 힘들어진다고 . 


 

 

 

 

 

 

 



# Policy gradient

policy 분포로 pmf를 쓰면 discrete action space, pdf를 쓰면 continuous action space가 된다.
Loss는 그냥 두 케이스 모두에서 log likelihood에 score값을 곱한 다음 gradient ascent하는 개념이다. softmax같은 pmf이면 cross-entropy가 되고, gaussian 같은 pdf 이면 MLE가 된다.



# Actor-Critic

Critic: Q function을 의미하고, TD(0) 혹은 SARSA를 이용해 학습한다.
Actor: policy를 의미하고, Critic을 value로 받는 REINFORCE알고리즘을 이용해 학습을 한다.

https://dnddnjs.gitbooks.io/rl/content/actor-critic_policy_gradient.html



# TRPO(Trust Region Policy Optimization)
업데이트될 policy와 그전 policy의 KL_D 값이 너무 커지게되면 penalty를 줘서 step을 조금만 가도록 제한함. 즉 신뢰할만한 거리까지만 업데이트해라.




# Macro-action

Action들의 고정된 set. 사람이 직접 정의한 primitive action들의 시퀀스를 의미한다.


# Option

Macro-action 과 유사하지만, 함수형태로 되어있어 intra-option policy라고도 불린다. 즉 가장 상위의 policy는 option을 선택하며, 다른 이름으로 policy over options이라고 부르고, 이 때 선택되는 option이 일종의 작은 skill 혹은 작은 policy로, intra-option policy라고 한다.










by 곽동현 이스텔리앙 2017.01.03 23:24