DQN과 그 뒤: 아타리에서 레인보까지
경험 리플레이와 타깃 네트워크를 합성곱 신경망에 얹으면 DQN이 된다. 이 조합은 게임 화면에서 실제로 무엇을 해냈고 무엇을 남겼으며, 남은 것을 메우려고 어떤 고침이 이어졌을까?
역사: 일곱 게임에서 마흔아홉 게임으로
2013년 12월 딥마인드의 볼로디미르 므니(Volodymyr Mnih)와 동료들은 arXiv에 「Playing Atari with Deep Reinforcement Learning」을 올렸다(그해 NIPS 딥러닝 워크숍). 게임마다 손으로 만든 특징 없이, 화면 픽셀만 받는 합성곱 신경망 하나를 Q-러닝 변형으로 학습시켰다. 일곱 게임에 신경망 구조와 학습 설정을 하나로 맞춰 썼고, 여섯 게임에서 앞선 방법들을 넘었으며, Breakout·Enduro·Pong 세 게임에서는 사람 전문가의 점수도 넘었다. 이때는 리플레이만 있었고 타깃 네트워크는 없었다.
2015년 2월 『네이처』에 실린 「Human-level control through deep reinforcement learning」은 타깃 네트워크를 더해 49게임으로 넓혔다. 에이전트가 받은 것은 화면 픽셀과 점수뿐이었고, 모든 게임에 같은 알고리즘, 같은 신경망, 같은 설정을 썼다. 논문에 따르면 49게임 가운데 43게임에서 그때까지 가장 좋던 강화학습 방법들을 넘었고, 절반이 넘는 29게임에서 전문 게임 테스터 점수의 75% 넘게 받았다. Breakout에서는 벽 한쪽을 뚫어 공을 벽돌 뒤로 보내는 전략까지 스스로 찾았다. 그래도 오래 앞을 내다봐야 하는 게임은 남았다. 논문은 Montezuma’s Revenge를 DQN을 포함한 모든 에이전트에게 큰 숙제라고 적었다.
화면에서 행동마다 하나의 Q까지
DQN의 신경망은 최근 화면 네 장을 쌓은 입력을 받아, 고를 수 있는 행동마다 Q를 하나씩 내놓는다. 화면은 회색조로 바꿔 84 × 84로 줄이고, 화면 하나로는 공이 어느 쪽으로 움직이는지 알 수 없으므로 네 장을 겹친다. 그 뒤로 합성곱 층 셋과 512칸짜리 층 하나를 지나, 마지막 층이 행동 수(게임에 따라 4~18개)만큼의 숫자를 낸다.
행동마다 출력을 하나씩 두는 것도 고른 설계다. 앞선 몇몇 방법은 상태와 행동을 함께 입력으로 넣어 Q 하나를 냈는데, 그러면 행동마다 신경망을 한 번씩 돌려야 해서 계산이 행동 수에 비례해 늘었다. 행동마다 출력을 두면 한 번 계산으로 모든 행동의 Q가 나오고, 목표의 max도 그 출력들 가운데 가장 큰 것을 고르면 끝난다.
DQN 뒤의 고침들
DQN 뒤의 고침은 대개 DQN의 한 부분이 무엇을 모자라게 했는지에서 출발했다. 게임마다 점수 크기가 다르므로, 여러 게임의 결과는 「사람 기준 점수」로 맞춰 견준다. 무작위로 누른 점수를 0%, 사람의 점수를 100%로 두고 100 × (에이전트 − 무작위)/(사람 − 무작위)로 매긴다.
| 이름 (발표) | DQN의 무엇이 모자랐나 | 고친 것 |
|---|---|---|
| 더블 DQN (판하설트·궤즈·실버, AAAI 2016) | 목표의 max는 추정이 부풀어 있는 행동을 고르기 쉽다. 여럿 가운데 가장 커 보이는 값은 부풀어 있다는 최대화 편향이 신경망에서도 실제로 크게 생겼다 | 다음 행동을 고르는 일은 지금 신경망이, 그 행동의 값을 매기는 일은 타깃 네트워크가 맡는다 |
| 듀얼링 네트워크 (왕 외, ICML 2016) | 행동이 무엇이든 값이 비슷한 상태가 많은데, 행동마다 Q를 따로 배운다 | 상태의 가치 V와 행동마다의 어드밴티지(그 행동이 평균보다 얼마나 나은지)를 두 출력 머리로 따로 내고 합쳐 Q를 만든다 |
| 우선순위 리플레이 (샤울 외, ICLR 2016) | 버퍼에서 고르게 꺼내면 배울 것이 많은 경험과 이미 맞힌 경험을 같은 빈도로 쓴다 | TD 오차가 큰 경험을 더 자주 꺼낸다. 49게임 가운데 41게임에서 고르게 꺼낸 DQN을 넘었다 |
| 레인보 (헤셀 외, AAAI 2018) | 고침들이 서로 다른 부분을 고치는데 따로따로 시험됐다 | 여섯 고침(더블, 우선순위 리플레이, 듀얼링, n스텝 리턴, 리턴의 분포를 배우는 분포 DQN, 탐색을 신경망의 노이즈로 하는 노이즈 넷)을 한 에이전트에 합쳤다 |
레인보 논문은 57게임에서 각 방법의 사람 기준 점수 중앙값을 견줬는데, 하나하나도 DQN보다 나았고 합친 레인보는 223%였다.
레인보 논문은 고침을 하나씩 빼 보는 실험도 했는데, 빼면 중앙값이 가장 크게 떨어진 것은 우선순위 리플레이와 n스텝 리턴이었다. 우선순위 리플레이는 경험 리플레이에서 경험을 꺼내는 방식을, n스텝 리턴은 부트스트랩으로 만드는 목표를 손본 것이다.
ML에서: 행동마다 하나의 출력
화면 하나를 넣으면 행동마다 숫자 하나가 나오는 DQN의 머리는 언어 모델의 마지막 층과 모양이 같다. 언어 모델도 지금까지의 문맥을 넣으면 어휘의 토큰마다 숫자(로짓) 하나를 낸다. 다른 것은 행동의 수로, 아타리의 행동은 많아야 18개인데 GPT-2의 어휘는 50,257개다. 출력의 모양이 같은 것은 그저 우연일까, 로짓도 어떤 행동 가치로 읽을 수 있을까?
문제 9. 쉬운 시험과 어려운 시험
5지선다 100문항짜리 국어와 수학 모의고사에서, 모두 찍으면 기대 점수가 20점이다. 국어는 학원 강사가 92점을 받았고 민준은 74점, 수학은 시험이 어려워 강사가 60점을 받았고 민준은 50점이다. (가) 「100 × (내 점수 − 찍기 점수)/(강사 점수 − 찍기 점수)」로 두 과목을 환산하라. (나) 원점수로 견줄 때와 무엇이 다른가?






정리 (가) 국어 75.0%, 수학 75.0%. (나) 과목마다 다른 눈금(찍기 점수, 기준 점수)을 걷어 내면 같은 실력이 같은 숫자로 나온다. 아타리의 사람 기준 점수도 게임마다 무작위 점수를 0%, 사람 점수를 100%로 맞춘 눈금이다.
문제 10. 일곱 게임의 중앙값
2013년 DQN 논문의 표 1에 실린 평균 점수(DQN / 무작위 / 사람)는 다음과 같다. Beam Rider 4092 / 354 / 7456, Breakout 168 / 1.2 / 31, Enduro 470 / 0 / 368, Pong 20 / −20.4 / −3, Q*bert 1952 / 157 / 18900, Seaquest 1705 / 110 / 28010, Space Invaders 581 / 179 / 3690. (가) 게임마다 사람 기준 점수를 구하고, (나) 일곱 게임의 평균과 중앙값을 구하라. (다) 여러 게임의 성적을 하나로 말할 때 평균과 중앙값 가운데 무엇이 나은가?








정리 (가) 52.6, 559.7, 127.7, 232.2, 9.6, 5.7, 11.4%. (나) 평균 142.7%, 중앙값 52.6%. (다) 중앙값이 낫다. 평균은 한 게임의 큰 값에 끌려가서, 사람보다 잘한 게임이 일곱 가운데 셋뿐인데도 사람의 1.4배로 보인다.
문제 11. 듀얼링의 덧셈은 왜 평균을 빼나
듀얼링 네트워크는 상태 가치











정리 (가) (
= 0, = (2.0, 2.5, 1.0)), ( = 1, = (1.0, 1.5, 0.0)) 등 끝없이 많다. (나) = 1.8333, = (0.1667, 0.6667, −0.8333). (다) 보통 머리는 (2.3, 2.5, 1.0)처럼 한 칸만, 듀얼링은 를 거쳐 (2.3, 2.8, 1.3)처럼 모든 행동이 함께 움직일 수 있다. 평균을 빼는 것은 와 를 하나로 정하려는 묶음이다.