Derin Q öğrenmeye giriş

Python ile Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

Derin Q Öğrenme nedir?

 

 

Q(durum, eylem) ifadesi; durum Dünya, eylem bir oyun kolu ile temsil edilmiş

Python ile Deep Reinforcement Learning

Q-Öğrenme özeti

 

Eylem-değer fonksiyonu Q_pi(s,a): s durumunda a eylemi alınırsa ve sonra pi politikası izlenirse gelecekteki ödüllerin toplamı. Q_pi(s,a) = pi politikası izlendiğinde, s_t=s ve a_t=a iken, gelecekteki yörüngeler üzerindeki beklenen R_tau

 

 

  • $Q$’yu bilmek, en iyi politikayı sağlar: $$ \pi(s_t) = {\arg\max}_a Q(s_t, a) $$

  • Q-öğrenmenin amacı: zamanla $Q$’yu öğrenmek

Python ile Deep Reinforcement Learning

Q-Öğrenme özeti

Deterministik ortamda (Q-öğrenmede) Bellman denklemi: Q_pi(s_t, a_t) = ödül r_t+1 + iskonto oranı gamma * a_t+1 üzerinde maksimum Q_pi(s_t+1, a_t+1))

Zamansal fark hedefi (TD-target, Q-hedefi): Q-öğrenme güncellemesinde hedef değer olarak kullanılan, Bellman denkleminin sağ tarafı. r_t+1 + gamma * a_t+1 üzerinde maksimum Q_pi(s_t+1, a_t+1))

  • Bellman denklemi: $Q$ için özyinelemeli formül
  • Bellman’ın sağ tarafı: “TD-hedefi”
  • Her adımdan sonra TD-hedefi ile $\hat{Q}$’yu güncelleyin

Q-öğrenme güncellemesi: Q_yeni = (1-alpha) Q_eski + alpha * TD-hedefi

Python ile Deep Reinforcement Learning

Q-Ağı

4 durum ve 4 eylemli bir Q-tablosu, doldurulacak 16 hücre

Python ile Deep Reinforcement Learning

Q-Ağı

9 durum ve 4 eylemli bir Q-tablosu, doldurulacak 36 hücre

Python ile Deep Reinforcement Learning

Q-Ağı

Onlarca durum ve 4 eylemli bir Q-tablosu, yaklaşık 100 hücre

Python ile Deep Reinforcement Learning

Q-Ağı

  • Derin Q Öğrenmenin özünde: bir sinir ağı

İki gizli katmanlı, tam bağlı bir sinir ağının görseli

Python ile Deep Reinforcement Learning

Q-Ağı

  • Derin Q Öğrenmenin özünde: bir sinir ağı

Önceki slayttaki Dünya görselinin giriş katmanına verildiği, iki gizli katmanlı tam bağlı sinir ağı görseli

Python ile Deep Reinforcement Learning

Q-Ağı

  • Derin Q Öğrenmenin özünde: durumu Q-değerlerine eşleyen bir sinir ağı

Önceki slaydın görseli; çıktı katmanındaki her düğüm, koldaki yönlerle temsil edilen bir eyleme karşılık gelir. Yukarı eylem 0, sağ 1, aşağı 2, sol 3.

  • Eylem-değer fonksiyonunu yaklaştıran ağa “Q-ağı” denir
  • Q-ağları, DQN gibi Derin Q Öğrenme algoritmalarında yaygındır
Python ile Deep Reinforcement Learning

Q-ağının uygulanması

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)
  • Girdi boyutu duruma bağlıdır
  • Çıktı boyutu olası eylem sayısına bağlıdır

  • Bu örnekte:

    • Her biri 64 düğümlü 2 gizli katman
    • ReLu aktivasyonu
Python ile Deep Reinforcement Learning

Hadi pratik yapalım!

Python ile Deep Reinforcement Learning

Preparing Video For Download...