[Reinforcement] REALM: Retrieval-Augmented Language Model Pre-Training
Intro to policy gradient
Value Based & Policy Based Method
강화학습은 학습 방식에 따라 크게 2가지 방법으로 나뉘어진다. 첫번째는 Q-learning 이나 SARSA 처럼 Value function 을 업데이트하는 Value based RL 이다. 특정 상태 $s \in \mathcal{S}$ 에서의 행동 $a \in \mathcal{A}$ 의 가치를 학습함으로써, Agent 가 어떻게 행동해야 하는지를 (Policy) Implicit 하게 학습하는 것이다. 두번째는 Policy 모델 자체를 최적화 함으로써, 각 상태에 따른 최적의 행동을 모델링할 수 있도록 하는 Policy based RL이다. REINFORCE (Monte Carlo Algorithm) 이나 Actor-Critic 이 이에 속한다.
Policy Gradient
강화학습에서 Policy 는 다음과 같이 나타내어진다. \(\pi(a | s) = Pr[A_t = a | S_t = s]\) 상태 $s \in \mathcal{S}$ 가 주어졌을 때, 그에 대한 행동 $a \in \mathcal{A}$ 을 조건부 확률로 표현하며, 이는 곧 특정 state에 대해 적절한 action을 모델링하는 모델로 해석할 수 있다.
만약 환경이 매우 유한하고, 충분히 적은 수의 $(s, a)$ 로 환경을 표현해낼 수 있다면, $\pi$ 를 직접 모델링 하는 것도 가능하다. 다만 당연하게도 강화학습으로 해결하고자 하는 문제는 단순한 환경이 아닐 것이기 때문에, 이런 복잡한 환경에 대한 정책을 모델링하기 위하여 $\theta$ 라는 매개변수를 두어 다양한 환경에 유동적으로 변화할 수 있는 정책을 표현할 수 있다. 그 식은 아래와 같다. \(\pi_{\theta}(a | s) = Pr[A_t = a | S_t = s ; \theta]\)
결국 정책을 표현하는 매개변수인 $\theta$의 값에 따라 정책의 성능은 좋을 수도, 나쁠 수 있다. 따라서 이 매개변수를 잘 조정하여, 특정 환경에 잘 행동하는 정책을 찾아가는 것이 Policy based 강화학습의 본질이다. 그러기 위해서는 DL 의 Loss function 처럼, 특정 목적 함수를 정의하여 해당 함수의 값을 Maximizing 하거나 Minimizing 하는 방식이 필요하다. 이 목적 함수는 정책 함수의 파라미터 $\theta$ 에 따라 변화하기 때문에, $J(\theta)$ 로 표현한다. ($\eta$ 로 표현하기도 하지만, 본 글에서는 $J$) 파라미터 업데이트 방식은 아래와 같이 표현된다.
\[\theta_{new} = \theta_{old} + \alpha \nabla_{\theta}J(\theta_{old})\]하지만, 실질적으로 강화학습 시 실제 gradient 값인 $\nabla_{\theta}J(\theta_{old})$ 를 구하는 것은 매우 어렵기 때문에, 일반적으로는 stochastic approximation 을 통한 추정치인 $\widehat{\nabla}\theta J(\theta{old})$ 를 사용한다. 이처럼 gradient를 이용해서 Policy 자체를 최적화 하는 방식이 Policy Gradient 방식이다.
Policy Gradient Theorm
그렇다면 이제 Policy Gradient 를 위해 필요한 $J(\theta)$ 라는 지표를 정의해야 한다. 다양한 정의 방식이 있겠지만, 가장 직관적이고 일반적으로 정책의 성능을 평가할 수 있는 지표는 Reward $G$ 이다. r