Pengantar deep reinforcement learning

Deep Reinforcement Learning dengan Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Mengapa Deep Reinforcement Learning

 

  • RL tradisional cocok untuk tugas berdimensi rendah

 

 

  • Banyak aplikasi punya state dan/atau ruang aksi berdimensi tinggi

 

Seorang agen menjelajahi environment Frozen Lake

Seorang agen memainkan gim klasik Space Invaders

Deep Reinforcement Learning dengan Python

Bahan-bahan DRL

 

  1. Konsep Reinforcement Learning
  2. Deep Learning dan PyTorch

 

  • DRL menggabungkan konsep ini dengan neural network dalam

 

Ilustrasi piksel seorang koki yang mencampur bahan

Deep Reinforcement Learning dengan Python

Kerangka RL

 

  • Langkah t:

 

Sebuah kotak besar dengan dua kotak kecil di dalamnya, berlabel 'Agent' dan 'Environment'

Deep Reinforcement Learning dengan Python

Kerangka RL

 

  • Langkah t:
    • Agen mengamati state $s_t$

 

Sebuah panah merah berlabel State s_t dari environment ke agent.

Deep Reinforcement Learning dengan Python

Kerangka RL

 

  • Langkah t:
    • Agen mengamati state $s_t$
    • Agen mengambil aksi $a_t$

 

Panah merah berlabel action a_t dari agent ke environment. Panah state kini berwarna hitam.

Deep Reinforcement Learning dengan Python

Kerangka RL

 

  • Langkah t:
    • Agen mengamati state $s_t$
    • Agen mengambil aksi $a_t$
  • Langkah t+1:
    • Environment memberi reward $r_t$
    • State berubah menjadi $s_{t+1}$

 

Panah state s_t kini berlabel state s_t+1 dan kembali merah. Panah merah baru berlabel reward r_t+1 dari environment ke agent. Panah action kini hitam.

Deep Reinforcement Learning dengan Python

Kerangka RL

 

  • Langkah t:
    • Agen mengamati state $s_t$
    • Agen mengambil aksi $a_t$
  • Langkah t+1:
    • Environment memberi reward $r_t$
    • State berubah menjadi $s_{t+1}$
  • Ulangi hingga episode selesai

 

Gambar sama seperti slide sebelumnya, tetapi semua panah berwarna hitam.

Deep Reinforcement Learning dengan Python

Kebijakan $\pi(s_t)$

 

  • Pemetaan dari state ke aksi, menjelaskan perilaku agen pada state $s_t$

 

  • Deterministik:
    • Mengembalikan aksi terpilih
  • Stokastik:
    • Mengembalikan distribusi atas aksi
    • Policy adalah distribusi probabilitas atas aksi yang mungkin
Deep Reinforcement Learning dengan Python

Trajektori dan return episode

 

Trajektori tau: Urutan semua state dan aksi dalam satu episode; tau = ((s0, a0), (s1, a1), ... (sT, aT))

 

Return episode Rtau: total reward (terdiskonto) sepanjang trajektori tau. Rtau = jumlah atas t dari gamma pangkat t kali r_t

Deep Reinforcement Learning dengan Python

Menyiapkan environment

env = gym.make("ALE/SpaceInvaders-v5")

# Define neural network architecture class Network(nn.Module): def __init__(self, dim_inputs, dim_outputs): super(Network, self).__init__() self.linear = nn.Linear(dim_inputs, dim_outputs) def forward(self, x): return self.linear(x)
# Instantiate network network = Network(dim_inputs, dim_outputs)
# Instantiate optimizer optimizer = optim.Adam(network.parameters(), lr=0.0001)
Deep Reinforcement Learning dengan Python

Loop dasar

for episode in range(1000):
  state, info = env.reset()
  done = False

while not done:
action = select_action(network, state)
next_state, reward, terminated, truncated, _ = ( env.step(action)) done = terminated or truncated
loss = calculate_loss(network, state, action, next_state, reward, done) optimizer.zero_grad() loss.backward() optimizer.step()
state = next_state

 

  • Loop luar: iterasi episode
  • Loop dalam: iterasi langkah
    • Pilih aksi
    • Amati state baru dan reward
    • Hitung loss dan perbarui network
    • Perbarui state
  • (Loss?)
Deep Reinforcement Learning dengan Python

Selanjutnya

 

 

  • DRL itu kuat!
  • Pendekatan berbasis nilai dan berbasis kebijakan
  • DQN dan pengembangannya
  • Metode policy gradient

Seorang pembelajar Datacamp menyelam dalam untuk menemukan rahasia Deep Reinforcement Learning

Deep Reinforcement Learning dengan Python

Ayo berlatih!

Deep Reinforcement Learning dengan Python

Preparing Video For Download...