행동가치함수 추정하기
내가 어떠한 상태에서 취할 수 있는 행동의 확률을 구하는 것을 행동가치 라고 하는데, 이걸 구하는 함수를 추정하는 방식을 알아보자.
행동가치함수 는 어떤 상태에서 취한 행동의 좋고 나쁨을 평가한다.
상태가치 함수를 추정하는 대표적인 알고리즘은 다음과 같다.
- MC(Monte-Carlo) Method
- SARSA
- Q-Learning
MC(Monte-Carlo) Method
MC알고리즘은 실제 에피소드가 끝날 때 까지 한번의 경험을 수집한 뒤 해당 값으로 Q값을 갱신하는 추정 알고리즘이다.
$ Q_{\pi}(s, a) = R_{t+1} + \gamma R_{t+2} + \gamma ^{2}R_{t+3} + ... $
MC Method알고리즘의 단점은 한번의 Q값을 갱신하기 위해 에피소드가 끝날 때 까지 기다려야한다는 점이다.
SARSA
SARSA (State-Action-Reward-State-Action) 알고리즘은 행동으로 인한 리워드와 다음 상태의 추정 Q값을 이용해서 행동가치함수 $ Q(s_{t}, a_{t}) $ 을 개선하는 알고리즘이다.
$ Q(s_{t}, a_{t}) = R_{t+1} + \gamma Q(S_{t+1}, a_{t+1}) $
현재 State에서 한번의 Action을 취하고 그로 인해 얻은 다음 state에서 취한 action의 Q값을 이용해서 학습을 진행한다.
$ < s_{t}, a_{t}, R_{t+1}, s_{t1}, a_{t+1} > $ 따라서 갱신에 사용하는 데이터의 형상을 따라서 SARSA알고리즘 이라고 부른다.
한번의 경험만으로 갱신이 된다. 모든 갱신을 하지 않아도 되기 때문에, MC보다 더 효율적이다.
Q-Learning
Q-Learning은 적절한 행동 가치 함수값을 알아내기위한 알고리즘이다. Q-Learning에서 $ Q(s_{t}, a_{t}) $ 는 현재 상태에서 취한 행동에 대한 행동 가치 함수값을 나타낸다.
Q-Learning은 $ Q(s_{t}, a_{t}) $ 를 임의의 값으로 초기화 한 후, 학습이 진행됨에 따라 아래수식 으로 값이 반복해서 업데이트되어 나간다.
$ Q(s_{t}, a_{t}) = R_{t+1} + \gamma \underset{a + 1}{ max } Q(S_{t+1}, a_{t+1}) $
여기서 $ R_{t+1} $ 은 현재 상태에서 다음 상태로 넘어갈 때 얻은 보상, $ \gamma $ 은 Discount Factor, $ \underset{a+1}{max} Q(S_{t+1}, a_{t+1}) $ 은 다음 상태에서 얻을 수 있는 행동 가치 함수들 중에서 가장 큰 값을 의미한다.
위 수식을 통해 반복적으로 $ Q(s_{t}, a_{t}) $ 를 업데이트 할 경우 $ Q(s_{t}, a_{t}) $ 가 최적의 행동 가치 함수에 수렴한다는 사실이 수학적으로 증명되었다.
최적의 값 Q를 구하는 알고리즘(Q-Learning)은 위 수식을 최적의 상태값을 구할 때 까지 반복적으로 업데이트 해주면된다.
상태와 행동에 대한 Q-Table을 만들고 이 테이블을 지속적으로 업데이트 하는 방식을 사용한다.