Вступ до градієнта політики

Глибоке навчання з підкріпленням у Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Вступ до Policy-методів у DRL

 

Q-learning:

  • Навчати функцію цінності дії Q

Q-мережа: на вході стан, на виході значення дій

  • Політика: обирати дію з найвищим значенням

 

Policy learning:

  • Навчати політику безпосередньо

Політики-мережа: на вході стан, на виході ймовірності дій

Глибоке навчання з підкріпленням у Python

Навчання політики

 

  • Може бути стохастичною
  • Працює з неперервними просторами
  • Безпосередня оптимізація цільової функції
  • Висока дисперсія
  • Менша ефективність за вибіркою

 

  • У Deep-Q learning: політики детерміновані

 

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

  • Розподіл ймовірностей для $a_t$ у стані $s_t$, де:
    • $a_t$, $s_t$: дія і стан на кроці $t$
    • $\theta$: параметри політики (ваги мережі)
Глибоке навчання з підкріпленням у Python

Мережа політики (дискретні дії)

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

Таблиця, що зіставляє чотири можливі дії з їх індексами та ймовірностями. Дія «up» має індекс 0 і ймовірність 0.21; дія «right» — індекс 1 і ймовірність 0.02; дія «down» — індекс 2 і ймовірність 0.74; дія «left» — індекс 3 і ймовірність 0.03.

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

action = action_dist.sample()
Глибоке навчання з підкріпленням у Python

Цільова функція

 

  • Політика має максимізувати очікувану винагороду

    • За умови, що агент дотримується $\pi_\theta$
    • Оптимізуючи параметр політики $\theta$
  • Цільова функція:

Рівняння: J(pi theta) = математичне сподівання за траєкторіями tau під pi theta від R_tau, де R_tau — повернення епізоду

 

  • Щоб максимізувати $J$: потрібен градієнт за $\theta$:

Градієнт J(pi_theta) за theta

Глибоке навчання з підкріпленням у Python

Цільова функція

 

  • Політика має максимізувати очікувану винагороду

    • За умови, що агент дотримується $\pi_\theta$
    • Оптимізуючи параметр політики $\theta$
  • Цільова функція:

Визначення J(pi theta), як на попередньому слайді

 

  • Щоб максимізувати $J$: потрібен градієнт за $\theta$:

Градієнт J(pi_theta) за theta називається градієнтом політики

Глибоке навчання з підкріпленням у Python

Теорема про градієнт політики

 

  • Дає придатний до обчислень вираз для $\nabla_\theta J(\pi_\theta)$
  • Сподівання за траєкторіями під $\pi_\theta$
    • Збирайте траєкторії та спостерігайте повернення

 

Теорема про градієнт політики: градієнт J(pi_theta) за theta дорівнює сподіванню за траєкторіями tau під pi_theta від...

Глибоке навчання з підкріпленням у Python

Теорема про градієнт політики

 

  • Дає придатний до обчислень вираз для $\nabla_\theta J(\pi_\theta)$
  • Сподівання за траєкторіями під $\pi_\theta$
    • Збирайте траєкторії та спостерігайте повернення
  • Для кожної траєкторії: розглядати повернення $R_\tau$

 

Теорема про градієнт політики: градієнт J(pi_theta) за theta дорівнює сподіванню за траєкторіями tau під pi_theta від повернення епізоду, помноженого на...

Глибоке навчання з підкріпленням у Python

Теорема про градієнт політики

 

  • Дає придатний до обчислень вираз для $\nabla_\theta J(\pi_\theta)$
  • Сподівання за траєкторіями під $\pi_\theta$
    • Збирайте траєкторії та спостерігайте повернення
  • Для кожної траєкторії: розглядати повернення $R_\tau$
  • Множити на суму градієнтів лог-імовірностей обраних дій
  • Інтуїція: зрушуйте theta так, щоб підвищувати ймовірність усіх дій у «хорошому» епізоді

 

Теорема про градієнт політики: градієнт J(pi_theta) за theta дорівнює сподіванню за траєкторіями tau під pi_theta від повернення епізоду, помноженого на суму градієнтів лог-імовірностей дій, підсумованих за всіма діями в траєкторії.

Глибоке навчання з підкріпленням у Python

 

Гіф, що показує гру Pong

Глибоке навчання з підкріпленням у Python

Давайте потренуємось!

Глибоке навчання з підкріпленням у Python

Preparing Video For Download...