이번 포스터에서는 Actor-Critic method에서 알아보겠습니다!
우선 DRL을 복습하자면
Funcion approximation method로 state-action value ft이나 policy 를 DNN을 통해 approximating하는 것 이었습니다.
Actor-Critic method의 경우는 두 개의 네트워크로 이루어져있습니다.
value ft (V or Q) 을 estimate하는 network를 Critic network라고 하며 Φ라고 합니다.
policy 를 estimate하는 network를 Actor network라고 하며 Θ라고 합니다.(using Gradient)
기본적으로 actor이 주가 되며, Critic이 도움을 주는 역할을 합니다.
이렇게 Actor-Critic method는 REINFORCE with baseline과 상당히 유사한 모습을 가집니다.
REINFORCE with baseline에서는 목적함수에서 variance를 줄이기 위해 return에서 state value ft을 빼주었습니다.(unbiased가 유지됩니다.)
하지만 여기서는 여전히 return값 Gt를 계산해야 합니다. 그래서 일종의 Monte Carlo method가 되는 것인데 이것의 단점은 V를 빼주어도 return Gt는 모든 값을 계산하는 것 이기에 high variance가 남아있습니다. 또한 return을 사용하면 online learning을 사용할 수 없습니다. 게임이 끝날 때 까지 기다려야 return값이 나오기 때문입니다.
TD Actor-Critic 에서는 return 값을 TD target으로 바꿔줍니다. TD error로 바꾸어 boostrapping이 됩니다. 그렇기에 next state까지만 보기에 학습 속도가 빨라지고 on line learning이 가능해집니다.
그림을 보시면 actor만 사용한다면 policy gradient method였습니다. 여기서는 critic method가 들어와 적당한 Q value ft을 가져옵니다. 이것을 가지고 actor에서 update할 때 도움을 줍니다. 목적함수에서 gradient 앞 부분에 곱함으로 얼마나 나아가야 할 지 도움을 주는 것 입니다. 
하나의 state에 대해서 critic은 state value ft을 output으로, actor은 action을 output으로 꺼냅니다. 그렇기에 앞부분은 같은 네트워크를 사용합니다. 또한 일정 부분까지 weight share을 하기도 합니다.
이번에는 critic 파트의 여러가지 변형을 알아보겠습니다.
policy gradient의 많은 형태인데,
1) REINFORCE : Monte Carlo RG
return을 그대로 사용합니다.
2) REINFORCE with baseline
baseline을 빼주어 앞 부분을 critic으로 보고 있습니다.
REINFORCE는 기본 틀이 Monte Carlo 이기에 sumation이 있습니다.
3,4,5) Actor-Critic
boostrapping을 사용하기에 policy는 동일하고 Q value, AD, TD error를 critic으로 사용합니다.
이렇게 여러가지가 있지만, 최종 Expectation은 바뀌어선 안 됩니다. 그래야 unbiased가 유지됩니다.
REINFORCE는 Gt를 사용하기에 high variance와 slow to learn의 단점이 있었습니다.
REINFORCE with baseline 는 state value ft을 빼줌으로 variance를 줄였습니다.
state value ft대신 TD error를 사용하는 경우 on step return을 사용하게 되는데 Gt와 비슷합니다.
1-step return의 expectation을 계산하면 Q value ft이 됩니다. 따라서 1step return대신 Q - V로 변경합니다. Q-V는 Ad ft이기에 대체할 수 있습니다.
Ad 는 Q-V인데 사실상 V를 뺀다고 해서 expectation값은 변하지 않습니다. 그래서 위와 같이 여러 변형이 나옵니다.(action이 너무 많을 때는 Q, Ad는 불가합니다. 또한 Ad는 두 개의 네트워크를 사용해야 하기에 불편함이 있습니다.)
따라서 보통 TD Actor-Critic은 state value ft만 네트워크로 구현하면 되기에 활용도가 가장 높습니다.
이제는 REINFORCE with baseline과 TD Actor-Critic의 코드를 확인해보겠습니다.
우선 REINFORCE with baseline의 target은 Gt인데 이것을 Monte Carlo target이라고 부르며,
TD Actor-Critic의 target은 r+감마V 인데 이것을 TD target이라고 부릅니다.
Critic네트워크가 value ft을 estimate하는 방법을 보겠습니다.
loss ft을 minimize하는 방향으로 학습합니다. targetㅇ느 MC or TD로 잡고, MSE를 loss ft으로 잡은 후 gradient 를 통해 parameter를 update해줍니다.
이번에는 Actor네트워크가 policy를 estimate할 때, policy gradient방법을 알아보겠습니다.
total reward의 expectation을 maximizing하는 방향으로 파라미터를 업데이트합니다.
TD에서는 discounted factor를 추가로 곱해줍니다.
마지막으로 Actor-Critic 수도코드를 확인해보겠습니다.
우선 두 파라미터를 초기화해줍니다.
초기 state s에서 actor네트워크를 통해 action을 선택합니다.
실제 환경에 action을 취해 immediate reward와 next state을 얻습니다.
TD를 사용한다면(s,a,r,s)을 가지고 넘어갑니다.
TD error를 계산합니다.
Critic에 대한 weight update합니다.
Actor에 대한 weight update합니다.
고려대학교 오승상 교수님 강화학습 : https://www.youtube.com/watch?v=l-9oSDKIaxg