비동기 딥 강화학습 (A3C)
경험 재생 대신 병렬 스레드로 상관을 끊은 비동기 액터-크리틱, CPU만으로 아타리 최고 기록
먼저 알아야 할 것
다루는 내용
A3C 논문은 경험 재생 메모리 대신 여러 액터-러너를 CPU 스레드에서 비동기로 돌려 데이터 상관을 줄이고, 이 틀 위에 1단계 Sarsa · 1단계 Q-러닝 · n단계 Q-러닝 · 어드밴티지 액터-크리틱을 얹었습니다. A3C는 n단계 수익으로 어드밴티지를 추정해 정책 기울기를 곱하고, 엔트로피 정규화로 탐색을 유지합니다. CPU 16코어 4일 학습으로 아타리 57게임 평균 사람 대비 점수 496.8%(LSTM 623.0%)를 기록했고 TORCS · MuJoCo · 3D 미로에서도 성공했습니다.
초록
이 논문은 비동기 경사 하강법으로 심층 신경망 제어기를 최적화하는, 개념적으로 단순하고 가벼운 딥 강화학습 틀을 제안합니다. 표준 강화학습 알고리즘 네 가지의 비동기 변형을 제시하고, 병렬로 도는 액터-러너(actor-learner)들이 학습을 안정시키는 효과가 있어 네 방법 모두 신경망 제어기를 성공적으로 학습할 수 있음을 보입니다. 가장 성능이 좋은 방법인 액터-크리틱의 비동기 변형은 GPU 대신 멀티코어 CPU 하나로, 절반의 학습 시간만에 아타리 분야의 기존 최고 성능을 넘어섭니다. 또한 비동기 액터-크리틱이 다양한 연속 운동 제어 문제와, 시각 입력만으로 무작위 3D 미로를 탐색하는 새로운 과제에서도 성공함을 보입니다.
해설
비동기 딥 강화학습 (A3C)
경험 재생 메모리 대신 여러 에이전트를 CPU 스레드에서 동시에 돌려 데이터의 상관을 끊은 논문입니다. 그중 '비동기 어드밴티지 액터-크리틱(A3C)'은 GPU 없이 CPU 16코어로 아타리 최고 기록을 넘었고, 이후 정책 기반 딥 강화학습의 기본형이 됐습니다.
| 항목 | 내용 |
|---|---|
| 원제 | Asynchronous Methods for Deep Reinforcement Learning |
| 저자 | Volodymyr Mnih 외 7명 (Google DeepMind · 몬트리올대) |
| 발표 | 2016 · ICML · arXiv 1602.01783 |
| 트랙 · 수준 | 강화학습 · 심화 |
| 먼저 알면 좋은 것 | Q-러닝, DQN(경험 재생 · 타깃 네트워크), 정책 경사(REINFORCE), 가치 함수, 엔트로피 |
들어가기 전에
이 해설은 아래 내용을 안다고 보고 씁니다. 처음이라면 먼저 읽고 오면 수식과 손계산을 훨씬 쉽게 따라올 수 있습니다.
- OpenAI Spinning Up: 딥 강화학습 입문 — 로그 미분 트릭으로 정책 경사를 유도하고 reward-to-go · 기준값 · 액터-크리틱까지 손계산하는 수업
- 딥 강화학습으로 아타리 게임하기 (DQN) — 픽셀만 보고 아타리 게임을 배운 첫 딥 강화학습 모델 — Q-네트워크와 경험 재생
- 정책 최적화 실전: A2C · 신뢰 영역 · PPO 클리핑 · GAE 손계산 — A2C(동기식 A3C) · 엔트로피 보너스 · 어드밴티지를 손계산으로 먼저 익힙니다
한눈에 보기
- 왜 DQN은 경험 재생(experience replay)이 꼭 필요했고, 그것이 어떤 제약을 낳았는지 압니다.
- "여러 에이전트를 동시에 돌리면 데이터가 자연스럽게 섞인다"는 A3C의 핵심 발상을 이해합니다.
- 어드밴티지(advantage) · 단계 수익 · 엔트로피 정규화가 각각 왜 들어갔는지 수식과 손계산으로 확인합니다.
- 아타리 57게임 · TORCS · MuJoCo · Labyrinth에서 무엇을 보였는지, 스레드 수에 따른 속도 향상이 어땠는지 압니다.
초록 (번역)
이 논문은 비동기 경사 하강법으로 심층 신경망 제어기를 최적화하는, 개념적으로 단순하고 가벼운 딥 강화학습 틀을 제안합니다. 표준 강화학습 알고리즘 네 가지의 비동기 변형을 제시하고, 병렬로 도는 액터-러너(actor-learner)들이 학습을 안정시키는 효과가 있어 네 방법 모두 신경망 제어기를 성공적으로 학습할 수 있음을 보입니다. 가장 성능이 좋은 방법인 액터-크리틱의 비동기 변형은 GPU 대신 멀티코어 CPU 하나로, 절반의 학습 시간만에 아타리 분야의 기존 최고 성능을 넘어섭니다. 또한 비동기 액터-크리틱이 다양한 연속 운동 제어 문제와, 시각 입력만으로 무작위 3D 미로를 탐색하는 새로운 과제에서도 성공함을 보입니다.
무엇을 풀었나
딥러닝과 단순한 온라인 강화학습을 그냥 합치면 학습이 불안정하다고 여겨졌습니다. 이유는 두 가지입니다. 에이전트가 연속으로 겪는 데이터는 서로 강하게 상관되어 있고, 정책이 바뀌면서 데이터 분포도 계속 바뀝니다(비정상성). 같은 방 안의 비슷한 장면만 수천 번 연달아 보고 학습하면 신경망이 그 장면에만 맞춰져 버립니다.
DQN은 이것을 경험 재생으로 풀었습니다. 지난 경험을 메모리에 쌓아 두고 무작위로 뽑아 학습하면 상관이 끊깁니다. 하지만 논문은 두 가지 대가를 지적합니다.
- 실제 상호작용 한 번당 메모리 · 계산이 더 듭니다.
- 옛 정책이 만든 데이터로 학습해야 하므로 오프폴리시(off-policy) 알고리즘(Q-러닝 등)만 쓸 수 있습니다. Sarsa나 액터-크리틱 같은 온폴리시(on-policy) 방법은 쓰기 어렵습니다.
또 기존 방법은 GPU나 Gorila처럼 대규모 분산 구조(100개 액터-러너 프로세스와 30개 파라미터 서버, 총 130대)에 기댔습니다. 이 논문의 질문은 "메모리 없이, 한 대의 CPU로 안정적으로 학습할 수는 없을까?"였습니다.
핵심 아이디어
flowchart LR
G[(공유 파라미터 θ, θv)] -->|복사| W1[스레드 1: 환경 사본]
G -->|복사| W2[스레드 2: 환경 사본]
G -->|복사| W3[스레드 16: 환경 사본]
W1 -->|t_max 걸음 굴린 뒤 기울기| G
W2 -->|기울기| G
W3 -->|기울기| G1. 비동기 병렬 액터-러너
직관: 한 사람이 한 동네만 돌며 지도를 그리면 그 동네에 치우치지만, 16명이 서로 다른 동네를 돌며 한 지도에 동시에 그려 넣으면 지도가 고르게 채워집니다(해설용 비유).
단계:
- 공유 파라미터를 하나 둡니다.
- CPU 스레드마다 환경 사본을 하나씩 주고, 각자 공유 파라미터를 복사해 몇 걸음 행동합니다.
- 그동안 쌓은 기울기를 공유 파라미터에 잠금 없이(Hogwild! 방식) 바로 반영합니다.
- 스레드마다 탐색 정도(예: -greedy의 )를 다르게 줍니다.
왜 이렇게 했나: 어느 순간이든 스레드들은 서로 다른 상태를 겪고 있으므로, 한 번의 업데이트에 섞여 들어가는 데이터가 자연스럽게 다양해집니다. 경험 재생이 하던 '상관 끊기'를 병렬성이 대신하니 메모리가 필요 없고, 그래서 온폴리시 방법도 쓸 수 있습니다. 여러 기계 대신 한 기계의 여러 스레드를 쓰면 기울기 · 파라미터를 네트워크로 주고받는 통신 비용도 사라집니다.
논문은 이 틀에 네 알고리즘을 얹었습니다: 1단계 Sarsa, 1단계 Q-러닝, 단계 Q-러닝, 어드밴티지 액터-크리틱(A3C).
2. 1단계 Q-러닝의 손실과 그 한계
값 기반 방법은 를 다음 손실로 학습합니다.
| 기호 | 뜻 |
|---|---|
| 이번 걸음에 받은 보상 | |
| 할인율 | |
| 다음 상태 | |
| 목표값 계산에 쓰는 (조금 옛) 파라미터 — 타깃 네트워크 |
한계: 보상 은 그 보상을 낳은 한 쌍의 값만 직접 바꿉니다. 그 앞의 상태들까지 보상이 전해지려면 업데이트를 여러 번 거쳐야 해서 느립니다. 그래서 논문은 단계 수익을 씁니다. 처럼 여러 걸음의 실제 보상을 한꺼번에 반영하면, 보상 하나가 앞쪽 개 상태에 바로 전해집니다.
3. 어드밴티지 액터-크리틱 (A3C)
직관: 배우(액터)는 연기를 하고, 평론가(크리틱)는 "그 장면이 평소보다 나았나 못했나"를 알려 줍니다. 배우는 평소보다 나았던 연기를 더 하게 됩니다(해설용 비유).
단계:
- 하나의 신경망이 두 출력을 냅니다: 정책 (소프트맥스)와 가치 (선형 출력). 출력층 말고는 층을 공유합니다.
- 각 스레드는 최대 걸음(또는 종료까지) 행동합니다.
- 걸음마다 단계 수익으로 어드밴티지를 추정합니다.
- 정책은 어드밴티지가 큰 행동 쪽으로, 가치는 수익에 가까워지도록 고칩니다.
정책 업데이트 방향은 다음과 같습니다.
| 기호 | 뜻 |
|---|---|
| 실제로 한 행동의 로그 확률. 이것의 기울기를 따라가면 그 행동의 확률이 올라갑니다 | |
| 어드밴티지 — "이 행동이 그 상태의 평균보다 얼마나 나았나" | |
| 몇 걸음 뒤까지 실제 보상을 쓸지. 상태마다 다르며 이하 | |
| 걸음 뒤 상태의 가치 추정(남은 미래를 이것으로 메웁니다) |
왜 어드밴티지인가: REINFORCE는 수익 를 그대로 곱하는데, 이 값은 분산이 커서 학습이 흔들립니다. 수익에서 상태의 기준값(baseline) 를 빼면 기울기의 기댓값은 그대로이면서 분산이 크게 줄어듭니다. 는 의 추정, 는 그 상태 평균의 추정이므로 둘의 차이가 바로 어드밴티지 의 추정입니다.
숫자로 해 보기(해설용 예): , , 받은 보상 , , , 라 하면
양수이므로 이번에 한 행동의 확률을 올립니다. 만약 가 6이었다면 가 되어 확률을 내립니다. 같은 보상이라도 "기대보다 좋았나"로 판단한다는 점이 핵심입니다.
4. 엔트로피 정규화
직관: 너무 일찍 "이 길만 정답"이라고 굳어 버리지 않도록, 선택지를 고르게 남겨 두는 쪽에 작은 상을 줍니다.
- : 정책의 엔트로피(행동 확률이 고를수록 큼)
- : 엔트로피 항의 세기. 논문의 아타리 · TORCS 실험은 을 썼습니다.
숫자로 해 보기(해설용 예): 행동이 2개일 때 확률이 면 , 이면 입니다. 엔트로피 항은 정책이 한쪽으로 쏠리기 직전에 브레이크를 걸어 탐색을 유지합니다.
왜 이렇게 했나: 결정론적 정책으로 너무 빨리 수렴하면 더 좋은 길을 영영 못 찾습니다. 논문은 이 항을 넣자 탐색이 좋아졌다고 보고합니다.
5. 공유 RMSProp
비동기 환경에서 RMSProp의 '기울기 제곱 이동 평균' 를 스레드마다 따로 둘지, 모두 공유할지 비교했습니다.
- : 감쇠율(논문은 0.99), : 학습률, 연산은 원소별
- 아타리 일부 게임에서 를 스레드끼리 공유하는 쪽이 모멘텀 SGD나 스레드별 RMSProp보다 학습률 · 초기화에 훨씬 덜 민감했습니다. 파라미터 사본도 하나 줄어 메모리도 아낍니다.
6. 실험 설정 (논문 기준)
- 액터-러너 스레드 16개, GPU 없음. 모든 방법이 5걸음마다 업데이트().
- 할인율 , RMSProp 감쇠 0.99. 값 기반 방법의 타깃 네트워크는 40,000프레임마다 갱신.
- 신경망: 8×8 필터 16개(보폭 4) 합성곱 → 4×4 필터 32개(보폭 2) 합성곱 → 은닉 256 완전연결.
- 값 기반 방법은 스레드마다 최종 을 0.1 · 0.01 · 0.5 중 하나(확률 0.4 · 0.3 · 0.3)로 뽑아, 처음 400만 프레임 동안 1에서 줄였습니다.
- 학습률은 에서 뽑아 학습 동안 0까지 줄였습니다(기존 연구와 비교할 때는 고정 하이퍼파라미터).
결과
아타리 57게임 (사람 시작 평가, 사람 대비 정규화 점수)
| 방법 | 학습 시간 | 평균 | 중앙값 |
|---|---|---|---|
| DQN | GPU 8일 | 121.9% | 47.5% |
| Gorila | 100대 4일 | 215.2% | 71.3% |
| Double DQN | GPU 8일 | 332.9% | 110.9% |
| Dueling Double DQN | GPU 8일 | 343.8% | 117.1% |
| Prioritized DQN | GPU 8일 | 463.6% | 127.6% |
| A3C 피드포워드 | CPU 1일 | 344.1% | 68.2% |
| A3C 피드포워드 | CPU 4일 | 496.8% | 116.6% |
| A3C LSTM | CPU 4일 | 623.0% | 112.6% |
- A3C는 CPU 16코어로 4일 학습해, GPU로 8~10일 학습한 기존 방법들보다 평균 점수가 높았습니다. 하루만 학습해도 Dueling Double DQN의 평균 점수에 맞먹었습니다.
- 다섯 게임 학습 속도 비교에서 비동기 방법들은 대체로 GPU의 DQN보다 빨리 배웠고, 그중 A3C가 값 기반 세 방법을 크게 앞섰습니다.
스레드 수에 따른 학습 속도 향상 (일곱 게임 평균, 1스레드 대비)
| 방법 | 2 | 4 | 8 | 16 |
|---|---|---|---|---|
| 1단계 Q | 3.0 | 6.3 | 13.3 | 24.1 |
| 1단계 Sarsa | 2.8 | 5.9 | 13.1 | 22.1 |
| 단계 Q | 2.7 | 5.9 | 10.7 | 17.2 |
| A3C | 2.1 | 3.7 | 6.9 | 12.5 |
16스레드에서 모든 방법이 적어도 10배 넘게 빨라졌습니다. 1단계 방법들은 스레드 수보다 더 빨라지는 '초선형' 향상을 보였는데, 저자들은 여러 스레드가 1단계 방법의 편향을 줄여 데이터를 덜 쓰게 된 덕으로 봅니다.
그 밖의 과제
- TORCS 3D 자동차 경주: 화면 입력만으로, A3C가 네 가지 설정 모두에서 약 12시간 학습으로 사람 시험자 점수의 대략 75~90%에 이르렀습니다.
- MuJoCo 연속 제어: 값 기반 방법은 연속 행동으로 확장이 어려워 A3C만 평가했고, 물리 상태나 픽셀 입력 모두에서 24시간 안에, 보통 몇 시간 안에 좋은 해를 찾았습니다.
- Labyrinth 3D 미로: 매 에피소드 새 미로에서 사과(보상 1) · 포털(보상 10)을 찾는 과제입니다. 84×84 RGB 이미지만 입력으로 받는 A3C LSTM이 평균 점수 약 50을 얻었습니다.
- 안정성: 다섯 게임에서 학습률 · 초기화 50가지씩 돌려 보니 좋은 학습률 구간에서는 점수 0으로 무너지는 경우가 거의 없었습니다.
왜 중요한가 · 이후 영향
- 경험 재생 없이도 딥 강화학습이 안정적으로 될 수 있음을 보였습니다. 그 덕에 온폴리시 액터-크리틱이 딥러닝과 본격적으로 결합됐습니다.
- 액터-크리틱 + 어드밴티지 + 엔트로피 보너스라는 조합은 이후 정책 기반 방법의 기본 틀이 됐습니다. TRPO · GAE · PPO도 같은 '어드밴티지로 정책 기울기를 곱한다'는 구조 위에 있습니다.
- 값 출력과 정책 출력을 한 신경망에서 공유하는 설계는 PPO 구현과 LLM의 RLHF(정책 + 가치 헤드)에서도 흔히 보입니다.
- 비싼 GPU · 대규모 분산 없이도 연구할 수 있게 해 강화학습 연구의 문턱을 낮췄습니다.
한계 · 주의할 점
- 저자들도 경험 재생이 쓸모없다는 뜻은 아니라고 밝힙니다. 데이터를 다시 쓰지 않으므로 환경과의 상호작용이 비싼 분야(예: TORCS)에서는 데이터 효율이 떨어질 수 있습니다.
- 비동기 업데이트는 스레드가 조금 옛 파라미터로 계산한 기울기를 반영하므로, 실행할 때마다 결과가 달라지고 재현이 까다롭습니다.
- A3C의 속도 향상(16스레드에서 12.5배)은 1단계 방법보다 작았습니다. 스레드를 늘리는 이득이 방법마다 다릅니다.
- MuJoCo 결과는 물리 엔진의 접촉 모델이 바뀌어 기존 연구(DDPG 등)와 점수를 직접 비교할 수 없다고 논문이 밝힙니다.
이어서 읽을 것
- 앞: 딥 강화학습으로 아타리 게임하기 (DQN) — 경험 재생의 출발점
- 함께: 신뢰 영역 정책 최적화 (TRPO) · 일반화 어드밴티지 추정 (GAE)
- 뒤: 근접 정책 최적화 (PPO) — A3C 이후 가장 널리 쓰이는 액터-크리틱
- 비교: 연속 제어를 위한 딥 강화학습 (DDPG) — 경험 재생을 쓰는 오프폴리시 액터-크리틱
용어 정리
| 용어 | 쉬운 뜻 |
|---|---|
| 경험 재생(experience replay) | 지난 경험을 메모리에 쌓아 두고 무작위로 다시 뽑아 학습하는 방법 |
| 온폴리시 / 오프폴리시 | 지금 정책이 만든 데이터로만 배우는가 / 다른(옛) 정책의 데이터로도 배우는가 |
| 액터-크리틱(actor-critic) | 행동을 고르는 정책(액터)과 그 행동을 평가하는 가치 함수(크리틱)를 함께 학습 |
| 어드밴티지(advantage) | 어떤 행동이 그 상태의 평균적 가치보다 얼마나 나은지 |
| 기준값(baseline) | 정책 기울기의 분산을 줄이려고 수익에서 빼는 값 |
| 단계 수익 | 걸음의 실제 보상 합 + 그 뒤 상태의 가치 추정 |
| 엔트로피(entropy) | 확률 분포가 얼마나 고르게 퍼져 있는지 |
| Hogwild! | 여러 스레드가 잠금 없이 같은 파라미터를 동시에 고치는 방식 |
스스로 점검
- A3C가 경험 재생 없이도 안정적인 이유는? — 여러 스레드가 서로 다른 상태를 동시에 겪으므로, 공유 파라미터에 들어가는 업데이트가 자연스럽게 섞여 상관이 줄어듭니다.
- 정책 기울기에 수익 대신 어드밴티지를 곱하면 무엇이 좋은가? — 기울기의 기댓값은 유지하면서 분산이 줄어 학습이 덜 흔들립니다. "좋았나"를 절대값이 아니라 "기대보다 나았나"로 판단합니다.
- 엔트로피 항의 를 너무 크게 하면? — 정책이 계속 고르게 퍼져 있으려 해서 좋은 행동에 집중하지 못합니다. 논문은 아타리 · TORCS에서 0.01을 썼습니다.
다음에 볼 것
이 글을 이해했다면 이어서 보면 좋은 항목입니다.
- 신뢰 영역 정책 최적화 (TRPO) — 옛 정책과의 KL 발산을 δ 이하로 묶어 정책을 안전하게 개선하는 신뢰 영역 정책 최적화
- 일반화 어드밴티지 추정 (GAE) — TD 오차를 γλ로 할인해 더하는 어드밴티지 추정 — λ 하나로 편향과 분산을 조절
출처
- 원문: arxiv.org/abs/1602.01783 (2016 · Volodymyr Mnih 외)
AI 원리부터 이해하기 · 강화학습 모듈
강화학습 모듈 학습
이 글은 강화학습 모듈의 학습 자료입니다. 전체 31개 자료 중 16번째입니다.
출처·원문
원문 보기요약만