본문 바로가기
  • 기술을 이야기하지만 사람을 생각합니다.
20. 인공지능과 딥러닝

Asynchronous Methods for Deep Reinforcement Learning (A3C)

by WE DONE IT. 2020. 9. 14.

Asynchronous Methods for Deep Reinforcement Learning 논문과 관련 아티클 등을 참고하여 A3S(Asynchronous Advantage Actor-Critic)을 정리하였습니다. 잘못된 부분이 있으면 말씀해 주세요!

 


A3C는 Google의 Deepmind에서 범용적으로 사용할 수 있는 강화학습 프레임워크를 소개한 논문입니다.

 

기존의 DQN 강화학습은 한 개의 에이전트가 시간 순서대로 경험한 결과를 쌓은 뒤, correlation을 줄이기 위해 랜덤하게 학습하는 replay memory 방식이였다.

A3C는 여러 에이전트를 다른 환경에서 경험을 쌓으나, 학습 시키는 policy network와 value network는 중앙에서 관리하며 각각의 환경에 비동기식으로 공유한다.

 


Asynchronous RL Framework

Diagram of A3C high-level architecture <출처 : Arthur Juliani Medium>

  • actor-learner thread (Environment)가 병렬적으로 있다.
    • actor-learner thread : 경험을 쌓고, 학습하는 것을 각각 진행함
  • 각 thread의 경험을 Global Network에 모아서 합친 후, 다시 공유한다.

Training workflow of each worker agent in A3C <출처 : Arthur Juliani Medium>

  • 4가지 방법을 적용하여 gradient를 계산함 -> 5번 액션을 한 뒤, 중앙 Global Network에 보낸다.
  1. 각각의 actor-learner thread는 5번 액션을 하면서 학습함
  2. gradient를 어떻게 업데이트 해야하는지 Global Network에 shared parameter를 보냄
  3. Global Network는 새로운 정보를 업데이트함 (agent를 바로 업데이트하지 않음)
  4. 업데이트한 네트워크의 shared parameter를 다시 actor-learner thread에 전송함
    (다른 에이전트는 각자의 환경에서 상호작용하며 탐험중)
  5. thread가 학습하고 Global Network와 thread에 업데이트하는 위 과정을 비동기(asynchronous)로 진행함

A3C Algorithm

  • Asynchronous
    • 하나의 네트워크에 하나의 에이전트만 있는 DQN과 달리, A3C는 글로벌 네트워크와 멀티 워커 에이전트가 있음
    • 각 에이전트의 경험을 글로벌 네트워크에 공유하며, 다시 네트워크에 전달하는 과정이 비동기식으로 이루어짐
    • 따라서 각 에이전트는 더욱 다양한 학습 경험을 가질 수 있으므로, 성능에도 긍정적인 영향을 줌

A3C 구조 <출처 : RLCode와 A3C 쉽고 깊게 이해하기 자료>

  • Actor-critic = reinforce(몬테카글로 policy gradient : 에피소드마다 자신을 업데이트) + 실시간 학습
    • Actor : Policy π(s) (Action probabilities 결과값)를 통해 Action을 업데이트하는 에이전트
    • Critic : 에이전트는 Value Function V(s) 를 통해 현재 상태를 추정(estimation)함
    • Value function V(s) : 특정 상태가 얼마나 좋은지, 에이전트가 행동을 선택하는 기준, 특정 상태/전반적인 행동에 따른 값
    • Policy π(s) : 액션의 결과값
      • Policy gradient : 정책을 업데이트하는 기준 - 목표함수 (에이전트가 배워야할 대상)
      • Gradient ascent : 목표함수에 따라 정책을 업데이트하는 방법

Actor-critic <출처 : RLCode와 A3C 쉽고 깊게 이해하기 자료>

  • Q-function : 특정 상태와 행동에 따른 값으로, 정답이 되는 각 행동이 실제로 좋은지, 좋다면 얼마나 좋은지에 대한 함수
    • critic : 업데이트 방향과 크기를 알려줌

Q-function <출처 : RLCode와 A3C 쉽고 깊게 이해하기 (https://www.slideshare.net/WoongwonLee/rlcode-a3c)>

  • Advantage 함수
    • Advantage: A = Q(s,a) - V(s) 베이스라인 -> variance를 낮춤
    • PolicyLoss Lp log(π(s))×A(s)
    • Advantage는 실제값과 예측값이 줄어드는 방향으로 트레이닝 함
    • Advantage A(s)가 기대보다 더 좋은 경우(=양수), Policy에서 해당하는 action은 1의 방향으로,
      A(s)가 기대보다 나쁜 경우(=음수), 0의 방향으로 트레이닝함
  • Worker에 공유하는 네트워크 output
    • Policy π(a_t|s_tθ)
    • Value Function V(s_tθ_v)
  • Actor Loss : 정책에 근사 = 크로스엔트로피 * 시간차 에러
  • Value Loss (critic의 loss function)
    • ValueLosLv (RV(s))^2 = (정답 - 예측값)^2, MSE 방식으로 계산하는 시간차 에러

 

Actor-critic (St 상태에서 at 행동을 Actor 네트워크를 가지고 선택함 -> 다음 상태를 환경이 알려줌 -> 즉각적인 보상을 알려줌 -> Critic을 계산함-> Actor의 loss function을 구할 수 있음)
20단계를 거치는 하나의  thread -> 하나의 loss function을 구한 뒤 -> global network에서 업데이트

A3C Advantage

  1. 특정 방법론에 국한되는 개념은 아니며, Deep RL에 이 방법을 일반적으로 적용할 수 있다.
  2. 간편하게 scall-up을 할 수 있다는 강점이 있다.
  • environment는 같지만, 비동기이기 때문에 한 시점에서는 서로 다른 경험을 하고 있다. (예: 게임 전반부 vs. 후반부)
    • 완전 다른 경험들을 각 thread에서 진행함 (비동기식 과정)
    • reply-memory를 사용하지 않아도 샘플간 강한 correlation 문제를 해결할 수 있음
  • Q. 랜덤하게 적용하는 변수들도 동일한지?
    A. 파라미터를 각각 thread 마다 다르게 하면, 다양성에 도움을 준다. (예:  입실론 값을 다르게 할 수 있음)
  • 여러 에이전트가 환경과 상호작용하기 때문에 상대적으로 학습 속도가빠르다.
  • CPU Core만 충분하다면 모델의 개수는 충분히 늘릴 수 있다

Contribution

  1. 다양한 강화학습 알고리즘의 scale-up 방법 제시
    • off/on policy, value/policy based 등 알고리즘에 상관없이 일반적으로 적용할 수 있음
    • experience replay(데이터의 correlation을 낮추기 위해, 랜덤한 게임 회차를 불러오는 방식)이 필요없게 됨
      (= 병렬적으로 thread를 진행하기 때문에 자동으로 de-correlation을 가능하게 함, 지도학습을 따라하는 방식)
      • Experience replay도 같이 결합하면 성능이 더 좋아짐
    • GPU 대신 CPU thread 사용하므로, 컴퓨팅 측면에서도 효율적으로 쓸 수 있음
      (DQN - 100만 *4 메모리 사용)
    • 시간에 따라서 thread가 많은 알고리즘이 더 빨리좋은 성능을 보임 (=scale-up이 효율적으로 작동함)
    • Scalabiltiy (Superlinear)
      • Act learner thread가 일반적으로 16개가 있으면 16배 빠르게 되지만 (=linear)
        super linear는 16배 보다 빠르게 진행함 (= superlinear)
  2. SOTA(state-of-the-art) 갱신
    • ImageNet으로 이미지 분류하는 것 중 GoogleNet, VGG 등의 모델이 우승한 것처럼,
      Atari 게임에서 점수를 갱신함 
    • 다섯 개의 게임과 알고리즘(DQN, 1-step Q 등) 관계없이, A3C(노란색 선)이 안정적으로 scale-up 할 수 있음
    • A3C vs. otthers : 평균은 사람 점수, 다른 알고리즘(DQN 변형 알고리즘: Gorila, D-DQN, Dueling D-DQN  등)과 비교했을 때,
      • A3C를 하루만에 DQN 8일 학습한 결과를 이김
      • FF(DQN 아케틱쳐) 그대로 가져왔을 때 이득이 없고, LSTM을 적용했더니 압도적인 결과가 나옴

 


논문에서 다루는 4가지 알고리즘

  1. One-step Q-learning (DQN 논문 참고)
  2. N-step Q-learning
  3. One-step SARSA
  4. Advantage-Actor Critic

1. Asynchronous one-step Q-learning  

 

  • 다섯 번(횟수는 변경할 수 있음)동안 축적한 다음에 중앙으로 보냄
  • 입실론을 벡터마다 다르게 설정할 수 있음

2.  Asynchronous n-step Q-learning

   t_max step까지 반복 후 각 step을 multi-step update를 적용하고 gradient들을 합산함

3. Asynchronous one-step SARSA

  •  Q의 target value만 r + rQ(s', a';, ⍬') 으로 바꾸면 됨

4. Asynchronous advantage actor-critic (A3C)

forward view multi-step 사용

  • actor gradient와 critic gradient를 다섯 스텝 돌면서 같이 계산함 -> 중앙에 전달 -> 업데이트 과정을 반복함
  • 다섯 스텝동안 TD target이 변경됨 -> 현실을 얼마나 보고, 부트스트랩 하는지가 다르기 때문에

 

 


References

 

(A3C) Asynchronous Methods for Deep Reinforcement Learning

구글 #google 의 #deepmind 에서 나온 페이퍼입니다. 개념적으로 복잡성이 증가하지 않으면서, 매우 가벼운 RL 프레임워크입니다. 여러 Agent를 동시에 각각 다른 Environment에서 행동하여 경험을 쌓되, ��

openresearch.ai

 

강화학습 알아보기(4) - Actor-Critic, A2C, A3C · greentec's blog

강화학습 알아보기(4) - Actor-Critic, A2C, A3C 07 May 2019 • 0 Comments 지난 글에서는 Grid World 의 ball-find-3 문제를 풀기 위한 DQN 알고리즘의 퍼포먼스를 개선하기 위한 여러 방법들과 Deep SARSA 알고리즘에 �

greentec.github.io

youtu.be/lfaaGQcQ2FE

www.youtube.com/watch?v=gINks-YCTBs

 

댓글