딥 Q-러닝 소개

Python으로 배우는 Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

딥 Q-러닝이란?

 

 

Q(state, action)을 나타내는 이미지. 상태는 지구, 행동은 조이스틱으로 표현

Python으로 배우는 Deep Reinforcement Learning

Q-러닝 복습

 

행동가치함수 Q_pi(s,a): 상태 s에서 행동 a를 취하고 이후 정책 pi를 따른다면 기대되는 미래 보상의 합. Q_pi(s,a) = 정책 pi를 따른 미래 궤적에 대한 기댓값 E[R_tau | s_t=s, a_t=a]

 

 

  • $Q$를 알면 최적 정책 가능: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Q-러닝의 목표: 시간에 따라 $Q$ 학습

Python으로 배우는 Deep Reinforcement Learning

Q-러닝 복습

결정적 환경의 벨만 방정식(퀘러닝): Q_pi(s_t, a_t) = r_{t+1} + 감가율 γ * max_{a_{t+1}} Q_pi(s_{t+1}, a_{t+1})

시차차이 목표(TD-target, Q-target, target Q-value): 벨만 방정식 우변. Q-러닝 업데이트의 목표값 r_{t+1} + γ * max_{a_{t+1}} Q_pi(s_{t+1}, a_{t+1})

  • 벨만 방정식: $Q$의 재귀식
  • 벨만 방정식 우변: “TD-target”
  • 각 단계 후 TD-target으로 $\hat{Q}$ 업데이트

Q-러닝 업데이트 규칙: Q_new = (1-alpha) Q_old + alpha * TD-target

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

상태 4개와 행동 4개의 Q-테이블: 총 16칸 채우기

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

상태 9개와 행동 4개의 Q-테이블: 총 36칸 채우기

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

수십 개 상태와 4개 행동의 Q-테이블: 약 100칸 채우기

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

  • 딥 Q-러닝의 핵심: 신경망

완전연결 신경망(은닉층 2개) 그림

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

  • 딥 Q-러닝의 핵심: 신경망

이전 슬라이드의 지구 이미지가 입력층으로 들어가는, 은닉층 2개 완전연결 신경망 그림

Python으로 배우는 Deep Reinforcement Learning

Q-네트워크

  • 딥 Q-러닝의 핵심: 상태를 Q-값으로 매핑하는 신경망

출력층 각 노드가 조이스틱 방향의 행동과 연결된 그림. 위=0, 오른쪽=1, 아래=2, 왼쪽=3.

  • 행동가치 함수를 근사하는 네트워크를 ‘Q-네트워크’라 합니다.
  • Q-네트워크는 DQN 같은 딥 Q-러닝 알고리즘에서 널리 사용됩니다.
Python으로 배우는 Deep Reinforcement Learning

Q-네트워크 구현

class QNetwork(nn.Module):

def __init__(self, state_size, action_size): super(QNetwork, self).__init__()
self.fc1 = nn.Linear(state_size, 64) self.fc2 = nn.Linear(64, 64) self.fc3 = nn.Linear(64, action_size)
def forward(self, state): x = torch.relu(self.fc1(torch.tensor(state))) x = torch.relu(self.fc2(x)) return self.fc3(x)
q_network = QNetwork(8, 4)
optimizer = optim.Adam(q_network.parameters(), lr=0.0001)
  • 입력 차원: 상태로 결정
  • 출력 차원: 가능한 행동 수로 결정

  • 이 예시:

    • 은닉층 2개, 각 64노드
    • ReLU 활성화 함수
Python으로 배우는 Deep Reinforcement Learning

실습해 봅시다!

Python으로 배우는 Deep Reinforcement Learning

Preparing Video For Download...