스페이스 인베이더와 딥 Q-러닝
딥 Q-러닝(DQN)은 전통적인 Q-테이블을 신경망으로 대체함으로써 대규모 상태 공간을 가진 환경에서 강화 학습 에이전트가 작동할 수 있게 합니다. 이 접근법은 스페이스 인베이더와 같은 Atari 게임을 플레이하는 등 가능한 상태 수가 표 방식 방법으로 처리하기에 너무 큰 복잡한 작업을 에이전트가 학습하도록 합니다.
Q-러닝에서 딥 Q-러닝으로
전통적인 Q-러닝은 모든 가능한 상태-행동 쌍의 값을 저장하는 Q-테이블을 사용하는 표 방식 방법입니다. 작은 환경(예: 14개의 상태를 가진 FrozenLake 또는 500개의 상태를 가진 Taxi-v3)에서는 효과적이지만 복잡한 환경으로 확장되지 못합니다.
Atari 환경에서는 관찰 공간이 (210, 160, 3)이며 픽셀 값은 0에서 255까지이므로 상태 공간은 $256^{100800}$이 됩니다. 이렇게 많은 상태에 대한 테이블을 만드는 것은 불가능하기 때문에 딥 Q-러닝은 파라미터화된 Q-함수 $Q_{\theta}(s, a)$—즉, 주어진 상태에 대해 가능한 각 행동의 Q값을 근사하는 신경망—을 사용합니다.
딥 Q-네트워크 (DQN) 아키텍처
DQN 아키텍처는 네 개의 전처리된 프레임을 스택으로 입력받아 각 가능한 행동에 대한 Q값 벡터를 출력합니다. 에이전트는 이후 ε-탐욕 정책을 사용해 가장 높은 추정값을 가진 행동을 선택합니다.
입력 전처리 및 시간 정보
입력 프레임의 계산 복잡도와 학습 시간을 줄이기 위해 다음과 같은 전처리를 수행합니다:
- 다운샘플링 및 그레이스케일링: 이미지를 84x84 픽셀로 축소하고 그레이스케일로 변환하여 세 개의 RGB 채널을 하나로 줄입니다.
- 크롭핑: 화면의 불필요한 부분을 제거합니다.
- 프레임 스태킹: 연속된 네 개의 프레임을 함께 스택하여 시간적 제한 문제를 해결합니다. 단일 프레임만으로는 움직임(예: Pong에서 공의 방향)을 전달할 수 없으며, 네 개의 프레임을 스택하면 네트워크가 속도와 방향을 포착할 수 있습니다.
전처리된 입력은 프레임 간의 공간적 관계를 활용하기 위해 세 개의 합성곱 층을 통과한 뒤, 최종 Q값을 출력하는 완전 연결 층으로 이어집니다.
딥 Q-러닝 알고리즘
표준 Q-러닝이 상태-행동 쌍을 직접 업데이트하는 것과 달리, 딥 Q-러닝은 예측된 Q값과 Q-타깃 간의 차이를 계산하는 손실 함수를 사용합니다. 이후 경사 하강법을 통해 네트워크 가중치를 업데이트하여 이 손실을 최소화합니다.
학습은 두 개의 교대로 진행되는 단계로 구성됩니다:
- 샘플링: 에이전트가 행동을 수행하고 그 결과 얻은 경험 튜플(상태, 행동, 보상, 다음 상태)을 리플레이 메모리에 저장합니다.
- 학습: 리플레이 메모리에서 작은 배치의 튜플을 무작위로 샘플링하여 경사 하강 업데이트를 수행합니다.
학습 안정화
비선형 함수 근사기(신경망)와 부트스트래핑을 결합하면 불안정성이 발생할 수 있습니다. DQN은 이를 완화하기 위해 세 가지 주요 해결책을 구현합니다:
1. Experience Replay
Experience Replay는 재사용을 위해 경험 샘플을 저장하는 리플레이 버퍼를 사용합니다. 이는 두 가지 주요 이점을 제공합니다:
- 효율성: 에이전트가 동일한 경험을 여러 번 학습할 수 있습니다.
- 비상관성: 버퍼에서 무작위로 샘플링함으로써 네트워크가 가장 최근의 연속된 경험만을 학습하는 것을 방지하여 재앙적 망각을 피하고 행동 값이 진동하거나 발산하는 것을 막습니다.
2. Fixed Q-Targets
기본 Q-러닝에서는 가중치가 업데이트될 때마다 목표값이 변동하여 "움직이는 목표" 문제를 일으키고 학습이 진동합니다. DQN은 고정된 파라미터를 가진 별도의 타깃 네트워크를 사용해 TD 타깃을 추정함으로써 이를 해결합니다. 타깃 네트워크의 파라미터는 매 $C$ 스텝마다 Deep Q-Network와 일치하도록 업데이트됩니다.
3. Double DQN
Double DQN은 Q값의 과대평가 문제를 해결합니다. 표준 DQN에서는 다음 상태에 대한 최대 Q값을 사용해 타깃을 계산하는데, 이는 노이즈가 많은 추정치가 최적이 아닌 행동에 더 높은 값을 부여하면 잘못된 양성 결과를 초래할 수 있습니다. Double DQN은 행동 선택과 타깃 생성을 분리합니다:
- DQN 네트워크가 다음 상태에 대한 최적 행동을 선택합니다.
- 타깃 네트워크가 해당 행동에 대한 Q값을 계산합니다.
이 분리는 과대평가를 감소시키고 더 빠르고 안정적인 학습을 가능하게 합니다.