Введение в глубокое обучение с подкреплением

Глубокое обучение с подкреплением на Python

Timothée Carayol

Principal Machine Learning Engineer, Komment

Зачем нужно глубокое обучение с подкреплением

 

  • Классическое ОП подходит для задач с малой размерностью

 

 

  • Многие приложения имеют пространство состояний и/или действий высокой размерности

 

Агент исследует среду Frozen Lake

Агент играет в классическую видеоигру Space Invaders

Глубокое обучение с подкреплением на Python

Составляющие DRL

 

  1. Концепции обучения с подкреплением
  2. Глубокое обучение и PyTorch

 

  • DRL объединяет эти концепции с глубокими нейронными сетями

 

Пиксельная иллюстрация повара, смешивающего ингредиенты

Глубокое обучение с подкреплением на Python

Фреймворк ОП

 

  • Шаг t:

 

Большой блок с двумя меньшими внутри, подписанными «Агент» и «Среда»

Глубокое обучение с подкреплением на Python

Фреймворк ОП

 

  • Шаг t:
    • Агент наблюдает состояние $s_t$

 

Красная стрелка с подписью «Состояние s_t» идёт от среды к агенту.

Глубокое обучение с подкреплением на Python

Фреймворк ОП

 

  • Шаг t:
    • Агент наблюдает состояние $s_t$
    • Агент выполняет действие $a_t$

 

Красная стрелка с подписью «Действие a_t» идёт от агента к среде. Стрелка состояния теперь чёрная.

Глубокое обучение с подкреплением на Python

Фреймворк ОП

 

  • Шаг t:
    • Агент наблюдает состояние $s_t$
    • Агент выполняет действие $a_t$
  • Шаг t+1:
    • Среда выдаёт награду $r_t$
    • Состояние переходит в $s_{t+1}$

 

Стрелка состояния s_t меняет подпись на s_t+1 и снова становится красной. Новая красная стрелка с подписью «Награда r_t+1» идёт от среды к агенту. Стрелка действия теперь чёрная.

Глубокое обучение с подкреплением на Python

Фреймворк ОП

 

  • Шаг t:
    • Агент наблюдает состояние $s_t$
    • Агент выполняет действие $a_t$
  • Шаг t+1:
    • Среда выдаёт награду $r_t$
    • Состояние переходит в $s_{t+1}$
  • Повторяется до завершения эпизода

 

То же изображение, что и на предыдущем слайде, но все стрелки чёрные.

Глубокое обучение с подкреплением на Python

Политика $\pi(s_t)$

 

  • Отображение состояния в действие, описывающее поведение агента в состоянии $s_t$

 

  • Детерминированная:
    • Возвращает выбранное действие
  • Стохастическая:
    • Возвращает распределение по действиям
    • Политика — это вероятностное распределение по возможным действиям
Глубокое обучение с подкреплением на Python

Траектория и доход за эпизод

 

Траектория tau: последовательность всех состояний и действий в эпизоде; tau = ((s0, a0), (s1, a1), ... (sT, aT))

 

Доход за эпизод Rtau: суммарные (дисконтированные) награды вдоль траектории tau. Rtau = сумма по t от gamma в степени t, умноженного на r_t

Глубокое обучение с подкреплением на Python

Настройка среды

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)
Глубокое обучение с подкреплением на Python

Основной цикл

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

 

  • Внешний цикл: перебор эпизодов
  • Внутренний цикл: перебор шагов
    • Выбор действия
    • Наблюдение нового состояния и награды
    • Вычисление функции потерь и обновление сети
    • Обновление состояния
  • (Функция потерь?)
Глубокое обучение с подкреплением на Python

Что дальше

 

 

  • DRL — мощный подход!
  • Методы на основе ценности и политики
  • DQN и его модификации
  • Методы градиента политики

Учащийся DataCamp ныряет в глубину моря, чтобы познать секреты глубокого обучения с подкреплением

Глубокое обучение с подкреплением на Python

Давайте потренируемся!

Глубокое обучение с подкреплением на Python

Preparing Video For Download...