Giới thiệu về deep Q learning

Deep Reinforcement Learning bằng Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Deep Q Learning là gì?

 

 

Hình minh họa Q(state, action); trạng thái là Trái Đất, hành động là joystick

Deep Reinforcement Learning bằng Python

Ôn tập Q-Learning

 

Hàm giá trị-hành động Q_pi(s,a): tổng thưởng tương lai nếu thực hiện hành động a tại trạng thái s, giả sử sau đó theo chính sách pi. Q_pi(s,a) = kỳ vọng trên các quỹ đạo tương lai khi theo chính sách pi của R_tau với s_t=s và a_t=a

 

 

  • Biết $Q$ cho phép có chính sách tối ưu: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Mục tiêu Q-learning: học $Q$ theo thời gian

Deep Reinforcement Learning bằng Python

Ôn tập Q-Learning

Phương trình Bellman (trong Q-learning) cho môi trường tất định: Q_pi(s_t, a_t) = phần thưởng r_t+1 + hệ số chiết khấu gamma * max trên a_t+1 của Q_pi(s_t+1, a_t+1))

Mục tiêu sai khác thời gian (TD-target), còn gọi là Q-target/target Q-value: vế phải của phương trình Bellman, dùng làm giá trị mục tiêu cho cập nhật Q-learning. r_t+1 + gamma * max trên a_t+1 của Q_pi(s_t+1, a_t+1))

  • Phương trình Bellman: công thức đệ quy cho $Q$
  • Vế phải của Bellman: "TD-target"
  • Dùng TD-target từ Bellman để cập nhật $\hat{Q}$ sau mỗi bước

Quy tắc cập nhật Q-learning: Q_mới = (1-alpha) Q_cũ + alpha * TD-target

Deep Reinforcement Learning bằng Python

Q-Network

Một Q-table với 4 trạng thái và 4 hành động, tổng 16 ô cần điền

Deep Reinforcement Learning bằng Python

Q-Network

Một Q-table với 9 trạng thái và 4 hành động, tổng 36 ô cần điền

Deep Reinforcement Learning bằng Python

Q-Network

Một Q-table với hàng chục trạng thái và 4 hành động, khoảng ~100 ô cần điền

Deep Reinforcement Learning bằng Python

Q-Network

  • Trọng tâm của Deep Q Learning: một mạng nơ-ron

Minh họa mạng nơ-ron fully connected với hai tầng ẩn

Deep Reinforcement Learning bằng Python

Q-Network

  • Trọng tâm của Deep Q Learning: một mạng nơ-ron

Minh họa mạng nơ-ron fully connected với hai tầng ẩn, ảnh Trái Đất ở slide trước đưa vào tầng đầu vào

Deep Reinforcement Learning bằng Python

Q-Network

  • Trọng tâm của Deep Q Learning: mạng nơ-ron ánh xạ trạng thái → Q-value

Minh họa từ slide trước, mỗi nút ở tầng đầu ra gắn với một hành động, biểu diễn bằng hướng trên joystick. Lên = hành động 0, phải = 1, xuống = 2, trái = 3.

  • Mạng xấp xỉ hàm giá trị-hành động gọi là "Q-network"
  • Q-network thường dùng trong các thuật toán Deep Q Learning như DQN.
Deep Reinforcement Learning bằng Python

Cài đặt Q-network

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)
  • Kích thước đầu vào do trạng thái quyết định
  • Kích thước đầu ra do số hành động quyết định

  • Ví dụ này:

    • 2 tầng ẩn, mỗi tầng 64 nút
    • Kích hoạt ReLU
Deep Reinforcement Learning bằng Python

Ayo berlatih!

Deep Reinforcement Learning bằng Python

Preparing Video For Download...