Introducere în policy gradient

Deep Reinforcement Learning în Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Introducere în metodele de politică în DRL

 

Q-learning:

  • Învățați funcția de valoare a acțiunii Q

O rețea Q, cu starea ca intrare și valorile acțiunilor ca ieșire

  • Politică: selectați acțiunea cu cea mai mare valoare

 

Învățarea politicii:

  • Învățați politica direct

O rețea de politică, cu starea ca intrare și probabilitățile acțiunilor ca ieșire

Deep Reinforcement Learning în Python

Învățarea politicii

 

  • Poate fi stocastică
  • Gestionează spații continue
  • Optimizează direct pentru obiectiv
  • Varianță ridicată
  • Eficiență redusă a eșantionării

 

  • În Deep-Q learning: politicile sunt deterministe

 

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

  • Distribuție de probabilitate pentru $a_t$ în starea $s_t$, cu:
    • $a_t$, $s_t$: acțiunea și starea la pasul $t$
    • $\theta$: parametrii politicii (ponderi ale rețelei)
Deep Reinforcement Learning în Python

Rețeaua de politică (acțiuni discrete)

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])

Un tabel care mapează fiecare dintre cele patru acțiuni posibile la indexul și probabilitatea sa. Acțiunea „sus" are indexul 0 și probabilitatea 0,21; acțiunea „dreapta" are indexul 1 și probabilitatea 0,02; acțiunea „jos" are indexul 2 și probabilitatea 0,74; acțiunea „stânga" are indexul 3 și probabilitatea 0,03.

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

action = action_dist.sample()
Deep Reinforcement Learning în Python

Funcția obiectiv

 

  • Politica trebuie să maximizeze randamentele așteptate

    • Presupunând că agentul urmează $\pi_\theta$
    • Prin optimizarea parametrului de politică $\theta$
  • Funcția obiectiv:

O ecuație: J(pi theta) = Valoarea așteptată pe traiectoriile tau care urmează pi theta a lui R_tau, unde R_tau este randamentul episodului

 

  • Pentru a maximiza $J$: este necesar gradientul față de $\theta$:

Gradientul lui J(pi_theta) față de theta

Deep Reinforcement Learning în Python

Funcția obiectiv

 

  • Politica trebuie să maximizeze randamentele așteptate

    • Presupunând că agentul urmează $\pi_\theta$
    • Prin optimizarea parametrului de politică $\theta$
  • Funcția obiectiv:

Definiția lui J(pi theta), nemodificată față de diapozitivul anterior

 

  • Pentru a maximiza $J$: este necesar gradientul față de $\theta$:

Gradientul lui J(pi_theta) față de theta se numește policy gradient

Deep Reinforcement Learning în Python

Teorema policy gradient

 

  • Oferă o expresie tractabilă pentru $\nabla_\theta J(\pi_\theta)$
  • Așteptare pe traiectorii care urmează $\pi_\theta$
    • Colectați traiectorii și observați randamentele

 

Teorema policy gradient: Gradientul lui J(pi_theta) față de theta este egal cu așteptarea pe traiectoriile tau care urmează pi_theta a...

Deep Reinforcement Learning în Python

Teorema policy gradient

 

  • Oferă o expresie tractabilă pentru $\nabla_\theta J(\pi_\theta)$
  • Așteptare pe traiectorii care urmează $\pi_\theta$
    • Colectați traiectorii și observați randamentele
  • Pentru fiecare traiectorie: considerați randamentul $R_\tau$

 

Teorema policy gradient: Gradientul lui J(pi_theta) față de theta este egal cu așteptarea pe traiectoriile tau care urmează pi_theta a randamentului episodului înmulțit cu...

Deep Reinforcement Learning în Python

Teorema policy gradient

 

  • Oferă o expresie tractabilă pentru $\nabla_\theta J(\pi_\theta)$
  • Așteptare pe traiectorii care urmează $\pi_\theta$
    • Colectați traiectorii și observați randamentele
  • Pentru fiecare traiectorie: considerați randamentul $R_\tau$
  • Înmulțiți cu suma gradienților log-probabilităților acțiunilor selectate
  • Intuiție: ajustați theta pentru a crește probabilitatea tuturor acțiunilor dintr-un episod „bun"

 

Teorema policy gradient: Gradientul lui J(pi_theta) față de theta este egal cu așteptarea pe traiectoriile tau care urmează pi_theta a randamentului episodului înmulțit cu suma gradienților log-probabilităților acțiunilor, însumate pentru toate acțiunile din traiectorie.

Deep Reinforcement Learning în Python

 

Un gif reprezentând un joc de Pong

Deep Reinforcement Learning în Python

Să exersăm!

Deep Reinforcement Learning în Python

Preparing Video For Download...