Politika gradyanına giriş

Python ile Deep Reinforcement Learning

Timothée Carayol

Principal Machine Learning Engineer, Komment

DRL'de Politika yöntemlerine giriş

 

Q-öğrenme:

  • Eylem-değer fonksiyonu Q'yu öğrenir

Bir Q-ağı: girdi durum, çıktı eylem değerleri

  • Politika: en yüksek değere sahip eylemi seçer

 

Politika öğrenme:

  • Politikayı doğrudan öğrenir

Bir politika ağı: girdi durum, çıktı eylem olasılıkları

Python ile Deep Reinforcement Learning

Politika öğrenme

 

  • Rastgele olabilir
  • Sürekli uzayları işler
  • Amacı doğrudan eniyiler
  • Yüksek varyans
  • Daha az örnek-verimli

 

  • Deep-Q öğrenmede: politikalar determiniziktir

 

$\pi_\theta(a_t | s_t)$:

  • $s_t$ durumunda $a_t$ için olasılık dağılımı; şu terimlerle:
    • $a_t$, $s_t$: adım $t$'de eylem ve durum
    • $\theta$: politika parametreleri (ağ ağırlıkları)
Python ile Deep Reinforcement Learning

Politika ağı (ayrık eylemler)

class PolicyNetwork(nn.Module):
  def __init__(self, state_size, action_size):
    super(PolicyNetwork, 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))
    action_probs = torch.softmax(self.fc3(x), dim=-1)
    return action_probs

action_probs = policy_network(state) print('Action probabilities:', action_probs)
Action probabilities: tensor([0.21, 0.02, 0.74, 0.03])

Dört olası eylemin her birini indeks ve olasılığıyla eşleyen bir tablo. 'yukarı' eylemi indeks 0 ve olasılık 0.21; 'sağ' 1 ve 0.02; 'aşağı' 2 ve 0.74; 'sol' 3 ve 0.03.

action_dist = (
    torch.distributions.Categorical(action_probs))

action = action_dist.sample()
Python ile Deep Reinforcement Learning

Amaç fonksiyonu

 

  • Politika beklenen getiriyi eniyilemelidir

    • Ajanın $\pi_\theta$'yı izlediğini varsayalım
    • Politika parametresi $\theta$ eniyilenir
  • Amaç fonksiyonu:

Bir denklem: J(pi theta) = pi theta'yı izleyen yörüngeler tau üzerinde beklenen R_tau, burada R_tau bölüm getirisidir

 

  • $J$'yi eniyilemek için: $\theta$'ya göre gradyan gerekir:

J(pi_theta)'nın theta'ya göre gradyanı

Python ile Deep Reinforcement Learning

Amaç fonksiyonu

 

  • Politika beklenen getiriyi eniyilemelidir

    • Ajanın $\pi_\theta$'yı izlediğini varsayalım
    • Politika parametresi $\theta$ eniyilenir
  • Amaç fonksiyonu:

J(pi theta) tanımı, önceki slayttakiyle aynı

 

  • $J$'yi eniyilemek için: $\theta$'ya göre gradyan gerekir:

J(pi_theta)'nın theta'ya göre gradyanına politika gradyanı denir

Python ile Deep Reinforcement Learning

Politika gradyanı teoremi

 

  • $\nabla_\theta J(\pi_\theta)$ için hesaplanabilir bir ifade verir
  • $\pi_\theta$'yı izleyen yörüngeler üzerinde bekleme
    • Yörüngeleri toplayın ve getirileri gözlemleyin

 

Politika gradyanı teoremi: J(pi_theta)'nın theta'ya göre gradyanı, pi_theta'yı izleyen tau yörüngeleri üzerindeki beklentiye eşittir...

Python ile Deep Reinforcement Learning

Politika gradyanı teoremi

 

  • $\nabla_\theta J(\pi_\theta)$ için hesaplanabilir bir ifade verir
  • $\pi_\theta$'yı izleyen yörüngeler üzerinde bekleme
    • Yörüngeleri toplayın ve getirileri gözlemleyin
  • Her yörünge için: getiri $R_\tau$'yu dikkate alın

 

Politika gradyanı teoremi: J(pi_theta)'nın theta'ya göre gradyanı, bölüm getirisiyle çarpılan ... üzerindeki beklentiye eşittir

Python ile Deep Reinforcement Learning

Politika gradyanı teoremi

 

  • $\nabla_\theta J(\pi_\theta)$ için hesaplanabilir bir ifade verir
  • $\pi_\theta$'yı izleyen yörüngeler üzerinde bekleme
    • Yörüngeleri toplayın ve getirileri gözlemleyin
  • Her yörünge için: getiri $R_\tau$'yu dikkate alın
  • Seçilen eylemlerin log olasılıklarının gradyanları toplamıyla çarpın
  • Sezgi: 'iyi' bir bölümde alınan tüm eylemlerin olasılığını artıracak yönde $\theta$'yı ittirin

 

Politika gradyanı teoremi: J(pi_theta)'nın theta'ya göre gradyanı, bölüm getirisi ile, yörüngedeki tüm eylemler için log eylem olasılıklarının gradyanlarının toplamının çarpımının beklentisine eşittir.

Python ile Deep Reinforcement Learning

 

Pong oyununu gösteren bir gif

Python ile Deep Reinforcement Learning

Hadi pratik yapalım!

Python ile Deep Reinforcement Learning

Preparing Video For Download...