Post

A3C의 핵심: Actor–Critic, Advantage, 비동기 학습, 멀티 환경, (선택) LSTM

Actor–Critic 분리, 비동기 워커, 멀티 환경, LSTM 활용까지 A3C 핵심을 압축 정리

A3C의 핵심: Actor–Critic, Advantage, 비동기 학습, 멀티 환경, (선택) LSTM

이 글의 목적

핵심 요약

  • A3C는 Value-based 한계를 넘어 정책을 직접 학습하면서도 안정성을 확보한 구조다.
  • 핵심은 알고리즘 이름이 아니라 역할 분리(Actor/Critic) + 비동기 수집이다.
  • 멀티 환경과 비동기 워커로 샘플 상관관계를 구조적으로 제거한다.
  • 부분 관측 문제에서는 LSTM이 성능의 분기점이 된다.

예시

  • 단일 환경에서 정체되던 학습이 멀티 워커로 즉시 진전
  • 같은 보상 구조에서 DQN 대비 더 빠른 수렴

1. Actor–Critic: 왜 역할을 분리하는가

정의

  • Actor: 상태에서 행동을 샘플링하는 정책
    \(\pi(a \mid s)\)

  • Critic: 상태(또는 상태–행동)의 가치를 평가
    \(V(s)\ \text{or}\ Q(s,a)\)

핵심 요약

  • 정책을 직접 학습하면 분산이 커진다.
  • Critic은 Actor의 업데이트를 안정화하는 기준선 역할을 한다.
  • 평가(가치)와 제어(정책)를 분리해 학습 신호의 품질을 높인다.

직관

1
2
3
Actor: 지금 이 행동을 할까?
Critic: 그 선택이 평균적으로 좋은가?
→ Critic의 피드백으로 Actor가 덜 흔들린다

왜 필요했나

  • 순수 Policy Gradient는 변동성이 커 수렴이 느리다.
  • Value-only는 연속 행동/확률적 정책에 취약하다.

2. Advantage: 왜 기준선(baseline)이 필요한가

정의

  • Advantage: 특정 행동이 평균 대비 얼마나 나았는지
  • 보통 ( A(s,a) = R - V(s) ) (직관적 형태)

핵심 요약

  • 보상 (R) 그대로 쓰면 분산이 크다.
  • 기준선 (V(s))를 빼면 불필요한 변동을 제거한다.
  • “평균보다 나았는가?”만 학습 신호로 남긴다.

예시

1
2
3
보상 R = 10
평균 기대 V(s) = 8
Advantage = +2 → 강화

구현 포인트

  • Advantage 정규화(normalization)로 안정성 추가
  • Critic 품질이 곧 Actor 성능 상한

3. A3C 비동기 구조: 여러 워커가 동시에 경험을 모은다

정의

  • A3C(Asynchronous Advantage Actor-Critic) 는 다수의 워커가 각자 환경을 돌며 동시에 경험을 수집·학습한다.

핵심 요약

  • 시간적으로 상관된 샘플 문제를 구조적으로 제거한다.
  • Replay Buffer 없이도 안정적인 학습이 가능하다.
  • CPU 병렬화를 활용해 벽시계 시간(wall-clock) 기준 학습 가속.

직관

1
2
3
4
Worker 1: 경험 수집 → 그래디언트
Worker 2: 경험 수집 → 그래디언트
Worker 3: 경험 수집 → 그래디언트
→ 중앙 파라미터에 비동기 업데이트

왜 필요했나

  • DQN의 Replay/Target 복잡도를 줄이고
  • On-policy 정책 학습을 실용적으로 만들기 위해

4. 멀티 환경(EnvBatch)의 이점

정의

  • 하나의 프로세스에서 여러 환경 인스턴스를 동시에 스텝

핵심 요약

  • 샘플 다양성 증가 → 탐험 향상
  • 단일 환경의 국소 패턴 과적합 감소
  • GPU/CPU 자원 활용도 개선

비교

방식장점단점
단일 환경구현 단순상관관계 큼
멀티 환경안정·빠름관리 복잡

실전 기준

  • 환경이 가볍다면 EnvBatch 우선
  • 무거우면 워커 수를 줄이고 rollout 길이 조정

5. (선택) LSTM: 왜 붙이는가

정의

  • LSTM은 과거 정보를 내부 상태로 유지하는 순환 구조

핵심 요약

  • 관측이 불완전하면 현재 상태만으로 결정이 어렵다.
  • LSTM은 속도/방향/패턴 같은 숨은 정보를 축적한다.
  • 프레임 스택으로 부족한 경우 성능 차이를 만든다.

예시

  • 쿵푸 마스터에서 적의 공격 타이밍 예측
  • 동일 프레임이라도 이전 움직임에 따라 대응이 달라짐

구현 포인트

  • rollout 단위로 hidden state 관리
  • 초기화/리셋 타이밍 명확화

6. A3C 학습 루프 의사코드

initialize global Actor, Critic parameters

for each worker in parallel:
    sync local params from global
    s = env.reset()
    for t in rollout:
        a ~ π(a|s)
        s', r = env.step(a)
        store (s, a, r)
        s = s'

    compute returns R
    compute Advantage A = R - V(s)
    compute gradients (Actor + Critic)
    async update global params

구현 포인트

  • rollout 길이 너무 길면 on-policy 붕괴
  • 너무 짧으면 분산 증가

7. DQN vs A3C 비교

항목DQNA3C
학습 대상Q(s,a)π(a | s) + V(s)
행동 공간이산이산/연속
안정성 장치Replay, TargetAdvantage, Async
샘플 효율높음중간
구현 난이도높음
멀티 환경선택핵심

선택 기준

  • 이산·단순 → DQN
  • 연속·복잡·정책 중심 → A3C

8. 쿵푸 마스터 환경: 성공 기준과 튜닝

성공 기준

  • 평균 reward의 지속적 상승
  • 공격/회피 패턴의 안정적 반복
  • 에피소드 길이 증가

튜닝 우선순위

  1. Advantage 정규화 여부
  2. rollout length
  3. 워커 수
  4. learning rate(Actor/Critic 분리 권장)
  5. (선택) LSTM 사용 여부

흔히 하는 오해 3가지와 교정

오해 1: “A3C는 DQN의 상위호환이다” → 교정: 문제 구조가 다르다. 선택의 문제다.

오해 2: “워커 수를 늘리면 무조건 좋다” → 교정: 그래디언트 노이즈가 커질 수 있다.

오해 3: “LSTM은 항상 성능을 올린다” → 교정: 부분 관측이 아닐 땐 오히려 불안정하다.


핵심 체크리스트 (재학습용)

  • Actor와 Critic의 역할을 명확히 구분하는가
  • Advantage의 목적을 분산 감소로 설명할 수 있는가
  • 비동기 워커 구조를 그림 없이 설명할 수 있는가
  • 멀티 환경의 효과를 데이터 관점에서 이해했는가
  • LSTM이 필요한 조건을 판단할 수 있는가
  • rollout 길이와 워커 수의 트레이드오프를 아는가
  • DQN 대신 A3C를 선택할 이유를 말할 수 있는가

한 줄 요약

A3C는 “정책을 직접 배우되, 분산과 상관관계를 구조적으로 제거한” 실전형 강화학습 설계다.


This post is licensed under CC BY 4.0 by the author.