본문 바로가기

공부쓰/Concept theoremss

A2C 엉터리 정리

제일 최근에 가장 재밋게 읽었던 논문인  "The Ingredients of Real-World Robotic Reinforcement Learning" 에서도 그렇고 친구들이랑 얘기하면서도 자주 언급되는 Soft Actor-Critic(SAC)를 한번 정리해보려고 한다.

 

SAC를 이해하려면 먼저 강화학습의 Actor-Critic에 대한 개념을 먼저 이해해야한다.

 

Actor-Critic + A2C 

강화학습은 에피소드마다만 학습할 수 있다는 단점이 있는데 에피소드가 길어지면 반환되는 값의 분산이 커져 학습속도가 느려지게 된다. 이 같은 단점을 극복하고 매 time step마다 학습할 수 있도록 한 것이 Actor-Critic 이다.

 

Actor-critic은 Policy interation의 구조를 이용했고 Policy Iteration은 Policy Evaluation과 Policy Improvement 두가지 단계로 나눌 수 있다. 직관적으로 정책을 평가하여 발전시키는 구조라는 것을 알 수 있다.

 

Policy Iteration 구조 

 

여기서는 greedy하게 정책을 업데이트했지만 policy gradient에서는 이 과정을 대체할 수 있다. 

 

Policy gradient 정책신경망 업데이트 식

 

policy gradient 식에서는 q값을 이용해서 정책을 평가하는 역할을 하지만 q값을 가치함수나 큐함수를 저장하는 것이 아니라서 알 수 없는 문제가 발생한다. 따라서 q값을 G로 치환하여 정책신경망에 업데이트하는 것이 강화학습이다.

 

Reinforcement 알고리즘 업데이트 식

 

actor-critic에는 이런 반환값을 사용하지 않고 큐함수를 사용하는데 인공신경망을 이용해서 정책을 근사하고 또다른 인공신경망을 이용하여 큐함수를 근사하는 것이다. 이 구조를 가치신경망이라고 하며 이 가치신경망이 정책을 평가한다고 하여 Critic 이라고 부른다.

 

 

앞서 말한 Policy interation과 actor-critic의 관계를 도식화하면 아래와 같다.

 

 

 

 

 REINFORCE 업데이트 식

 

보통의 DQN이나 딥살사에서는 MSE를 사용하여 큐함수가 그래도 오차함수에 들어가지 않는다.

actor-critic는 크로스 엔트로피와 큐함수의 곱으로 오류함수 값을 표기하는데 이렇게 되면 분산이 많이 커진다.  상태에 따라 행동이 값이 많이 변하지 않도록 잡아주는 기준이 필요한데 이를 위해서 가치함수를 사용한다.(가치함수는 특정상태에서 하나의 값을 가지기 때문!) 가치함수도 v라는 변수로 근사시킨다. 가치함수를 베이스 라인으로 큐함수에서 빼준것을 Advantage 함수라고 한다.

 

advantage 함수의 정의

 

Advantage 함수를 이용해서 표현한 actor-critc의 업데이트식은 아래와 같다. Adavantage 함수를 사용하기 때문에 Advantage-actor-critic이라고해서 A2C라고도 부른다.

 

actor-critic의 업데이트 식

 

가치 신경망은 시간차 오류를 통해 진행한다. 현재 상태와 다음 상태 그리고 보상을 통해 MSE를 계산해서 오류함수를 최소화하는 방향으로 진행한다.

 

가치신경망의 업데이를 위한 오차 함수

 

정책신경망은 크로스 엔트로피 오류함수와 시간차 에러의 곱으로 새로운 오류함수를 정의하고 정책신경망을 업데이트한다. 

 

 

Actor-critic

끝! 

728x90
반응형