Step 1: DQN 개념
DQN(Deep Q-Network)은 Q-Learning을 딥러닝과 결합한 강화학습 알고리즘입니다. Q-Learning이 Q-테이블을 사용하는 것과 달리, DQN은 신경망을 사용하여 Q-값을 근사합니다. 이를 통해 대규모 상태 공간에서도 Q-값을 학습할 수 있습니다.
Step 2: Q-Learning의 한계 해결
기존 Q-Learning은 상태-행동 공간이 커질수록 Q-테이블 관리가 어려워집니다. DQN은 신경망을 통해 연속적이거나 고차원인 상태 공간에서도 효과적으로 학습할 수 있습니다.
Step 3: DQN의 구조
- 입력: 현재 상태 $s$
- 출력: 각 행동에 대한 Q-값 $Q(s,a)$
DQN의 신경망은 상태 $s$를 입력으로 받아 각 행동 $a$에 대한 Q-값을 근사합니다.
Step 4: Experience Replay
- **경험 재현(Experience Replay)**은 DQN의 핵심 기술 중 하나입니다. 에이전트의 경험을 메모리에 저장하고, 그 경험에서 무작위로 샘플링하여 학습합니다. 이는 데이터 샘플 간 상관성을 줄이고 학습 효율을 높입니다.
- 장점: 데이터 상관성을 줄여 학습의 안정성을 높임.
Step 5: Target Network
Target Network는 DQN에서 또 다른 중요한 기법입니다. Target Network는 Q-Network의 파라미터를 주기적으로 복사하여 업데이트합니다. 이를 통해 Q-값의 진동이나 발산을 방지하여 학습의 안정성을 높입니다.
Step 6: 손실 함수
DQN은 TD 오차를 줄이는 방향으로 학습합니다. 이를 위해 손실 함수 $L(\theta)$는 다음과 같이 정의됩니다.
$L(\theta) = E \left[ \left( R + \gamma \max_{a'} Q_{\text{target}}(s', a'; \theta^-) - Q(s, a; \theta) \right)^2 \right]$
- $\theta$: 현재 Q-Network의 가중치
- $\theta^-$: Target Network의 가중치
- $\gamma$: 할인율
- $R$: 즉각적인 보상
이 손실 함수를 최소화하기 위해 역전파를 통해 Q-Network의 가중치 $\theta$가 업데이트됩니다.
Step 7: DQN 학습 절차
- 초기화: Q-Network와 Target Network의 파라미터를 초기화합니다.
- 상태 $s$ 선택: 환경에서 현재 상태 s를 선택합니다.
- 행동 $a$ 선택: ε-탐욕적 정책($ε-greedy$)을 사용하여 행동 a를 선택합니다.
- 보상 $R$ 및 새로운 상태 $s'$ 획득: 환경에서 보상과 새로운 상태를 관찰합니다.
- 경험 메모리 저장: $(s,a,R,s′,done)$ 형태로 경험을 저장합니다.
- 경험 샘플링: 경험 재현 메모리에서 무작위로 미니배치를 샘플링합니다.
- Q-Network 업데이트: 손실 함수를 계산하고 신경망을 업데이트합니다.
- Target Network 업데이트: 일정 주기마다 Q-Network의 가중치를 Target Network로 복사합니다.
- 반복: 학습 종료 조건이 만족될 때까지 위 과정을 반복합니다.
DQN 모델 학습 과정
Step 8: 초기화
- Q-Network 가중치 $θ$를 무작위로 초기화합니다.
- Target Network 가중치 $θ−$를 Q-Network의 가중치를 복사하여 초기화합니다.
- **경험 재현 메모리(Experience Replay)**를 초기화하여, 에이전트가 얻은 경험을 저장할 메모리 버퍼를 생성합니다.
Step 9: 환경 설정
- 환경을 리셋하고 초기 상태 $s_0$를 관찰합니다.
Step 10: 에피소드 반복
에피소드가 진행되는 동안 아래 과정을 반복합니다.
a. 행동 선택 (Action Selection)
- **ε-탐욕적 정책(ε-greedy policy)**을 사용하여 행동 $a_t$를 선택합니다.
- 확률 $\varepsilon$로 무작위 행동을 선택합니다 (탐험).
- 그렇지 않으면 Q-Network에서 최대 Q-값을 갖는 행동을 선택합니다 (활용).
$a_t = \begin{cases} \text{random action}, & \text{with probability } \varepsilon \\ \arg\max_a Q(s_t, a; \theta), & \text{with probability } 1 - \varepsilon \end{cases}$
b. 행동 실행 및 보상 관찰
- 에이전트는 선택한 행동 $a_t$를 환경에 적용하고, 환경으로부터 보상 $r_t$와 다음 상태 $s_{t+1}$를 관찰합니다.
- 에피소드가 종료되었는지 여부를 확인합니다 (종료 시 done = True).
c. 경험 저장
- 현재 경험 $(s_t, a_t, r_t, s_{t+1}, \text{done})$을 경험 재현 메모리에 저장합니다.
d. 미니배치 샘플링
- 경험 재현 메모리에서 무작위로 미니배치를 샘플링합니다. 각 샘플은 ($s_i, a_i, r_i, s_{i+1}, \text{done}_i)$의 형태로 구성됩니다.
e. 타깃 Q-값 계산
- 각 샘플에 대해 타깃 Q-값 $y_i$를 계산합니다.
- 에피소드가 종료된 경우 (done = True):
$y_i = r_i$
-
- 에피소드가 종료되지 않은 경우 (done = False):
$y_i = r_i + \gamma \max_{a'} Q_{\text{target}}(s_{i+1}, a'; \theta^-)$
- 여기서 $\gamma$는 할인율, $\theta^-$는 타깃 네트워크의 가중치입니다.
f. 손실 함수 계산 및 Q-Network 업데이트
- 손실 함수 $L(\theta)$를 계산합니다:
$L(\theta) = \frac{1}{N} \sum_{i=1}^{N} \left( y_i - Q(s_i, a_i; \theta) \right)^2$
- 역전파(Backpropagation)를 사용하여 Q-Network의 가중치 $\theta$를 옵티마이저(예: Adam)로 업데이트합니다.
g. 타깃 네트워크 업데이트
- 일정 스텝마다 타깃 네트워크의 가중치 θ−를 Q-Network의 가중치 $θ$로 업데이트합니다:
$\theta^- = \theta$
Step 11: 상태 업데이트
- 에피소드가 종료된 경우, 환경을 리셋하고 새로운 상태 $s_0$로 시작합니다.
- 에피소드가 종료되지 않았다면, 다음 상태 $s_{t+1}$을 현재 상태 $s_t$로 업데이트합니다.
Step 12: 반복 종료
- 학습 종료 조건이 만족될 때까지 위 과정을 반복합니다.
- 최대 에피소드 수에 도달하거나, Q-값의 변화가 일정 에포크 동안 거의 없을 경우 학습을 종료합니다.
주요 기술
경험 재현 (Experience Replay)
- 목적: 학습 샘플들의 상관성을 줄이고, 데이터 효율성을 높임.
- 방법: 에이전트의 경험을 저장한 후 무작위 샘플링으로 학습에 사용.
타깃 네트워크 (Target Network)
- 목적: 학습의 안정성을 높임.
- 방법: 주기적으로 Q-Network의 가중치를 타깃 네트워크에 복사하여 업데이트. 이로 인해 Q-값 추정의 진동이나 발산을 방지함.
하이퍼파라미터 설정
- 학습률(α): 신경망 옵티마이저의 학습 속도.
- 할인율(γ): 미래 보상의 현재 가치에 대한 할인율.
- 탐험 확률(ε): 탐험과 활용 간의 균형을 맞추는 값. 시간이 지남에 따라 $ε$ 값을 줄여 탐험을 줄임.
- 미니배치 크기(N): 한 번의 학습에서 사용되는 샘플의 수.
- 경험 메모리 크기: 메모리에 저장할 최대 경험 수.
- 타깃 네트워크 업데이트 주기(C): 타깃 네트워크를 얼마나 자주 업데이트할지 결정.
DQN의 장점과 단점
- 장점:
- 고차원 상태 공간에서 Q-Learning의 한계를 극복.
- 경험 재현과 타깃 네트워크로 학습의 안정성과 수렴 속도가 증가.
- 단점:
- Overestimation 문제: Q-값을 과대평가할 가능성이 있음. 이를 해결하기 위해 Double DQN이 제안됨.
- 복잡한 환경에서는 학습이 느리거나 불안정할 수 있음.
DQN의 확장
- Double DQN: Q-값의 과대평가 문제를 해결하기 위해 제안된 알고리즘.
- Dueling DQN: 상태의 가치와 행동 간의 이득을 분리하여, 더 효과적으로 학습을 진행.
'프로그래밍 이론 > AI' 카테고리의 다른 글
[AI] Q-Learning (0) | 2024.10.04 |
---|---|
[AI] 강화학습 (1) | 2024.10.04 |