강화학습 - Actor Critic (A2C) with Python code
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
Baseline
Actor Critic (A2C)는 정책 그레디언트(Policy Gradient, PG) 방법 중 기본 방법이다. PG란, 최적화 된 Policy를 찾는 방법이다. 자세한 사항은 여기를 확인해주세요.
해당 내용은 Sutton 책을 참고하여 작성하였습니다.
먼저, 강화학습 알고리즘은 분산이 커진다는 단점이 발생할 수 있습니다. 이를 해결하기 위하여 Base Line을 정책을 최적화 하는 과정에 도입하였다. 해당 식의 그래디언트는 다음과 같다.
\nabla J(\theta) \propto \sum_s \mu(s) \sum_a (q_\pi(s,a)-b(s))\nabla_\theta \pi(a | s, \theta). [1]
유사 식으로 쓰게 되었는데, 이는 Base line을 추가해도, Gradient 값이 동일하게 나타납니다. 위 식을 보면, Base line은 State에 대한 함수로만 확인할 수 있습니다. 즉, Policy에는 영향이 없으므로 다음과 같은 식이 성립합니다.
b(s)\nabla_\theta \sum_a \pi(a|s,\theta) = b(s)\nabla_\theta 1 =0 [1]
Base line을 추가하는 경우, 수학적으로?는 잘 모르겠지만 경험적으로 더 빠르고, Variance를 감소 시킨다고 합니다. 대략적으로 이해해보자면, 만약 평균이 기대 값이 11인 값이 있다고 생각해봅시다. 그러면 Base line을 11을 넣어, 평균 값을 낮추고, 분산을 감소 시키는 효과를 얻을 수 있습니다.
Actor Critic 방법
Actor Critic은 Policy의 Gradient와 Value function의 Gradient를 동시에 Update하면서 최적화 해나가는 과정입니다. 여기서 Policy 관련된 Network로, Value net을 Critic(평가)으로 정의합니다.
이렇게 되면 서로 독립적으로 작용하기 때문에, Policy와 Actor를 각각 업데이트 할 수 있습니다. 추가로, 공통적인 CNN과 같은 Network를 구성하고, 후단에서 Actor Critic 을 배치할 수 있습니다. 대략적인 과정은 아래와 같습니다.


먼저 Policy가 initial parameter로 neural Networks를 구성할 수 있습니다. 즉, 여러 Data를 얻을 수 있는 환경이 만들어 진 것으로 볼 수 있습니다. 또한, 위의 Update 방식은 PG를 최적화 하면서, Value function을 최대화 하는 과정이 됩니다.
Actor Critic Code
아래에 해당하는 Common net을 만들고, 이에 따른 policy net과 Value net을 구성하는 과정은 다음과 같습니다. 먼저 common net인 fc1을 구성해줍니다. 그 다음으로 여기서 나온 값을 각 action 과 Value 쪽으로 보내주면 되겠습니다.
Value는 스칼라 값이 나와야 하니, 스칼라 값을 받아주고, Action은 각 Action space에 따른 확률 분포 함수로 나오게 될 것입니다.

참고 문헌
[1] Richard S. Sutton,Reinforcement Learning : An Introduction, MIT press, 2018
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기