Обучение с подкреплением seminar:

Cross-Entropy Method
 

Павел Темирчев

@cydoroga

\( p(s_{t+1}|s_t, a_t) \) - динамика переходов в среде (марковская) 

Задача Reinforcement Learning

\( s \sim \mathcal{S} \) - состояния (дискретные \ непрерывные)

\( a \sim \mathcal{A} \) - действия (дискретные \ непрерывные)

\( \pi(a|s) \) - политика агента 

\( p(s_0) \) - распределение над начальными состояниями 

\( r(s, a) \) - награда за действие \(a\) в состоянии \(s\) 

\( p(\tau|\pi) = p(s_0) \prod_{t=0}^T \pi(a_t|s_t) p(s_{t+1}|a_t, s_t)\) - политика агента 

где \( \tau= (s_0, a_0, s_1, a_1, \dots, s_T, a_T) \) - траектория агента 

Не знаем!
Узнаём, взаимодействуя со средой

Хотим найти!

Кросс-энтропийный метод

для оптимизации

Пусть есть некоторая функция \( f(x): \mathcal{X} \rightarrow \mathbb{R} \)

Вообще, мы бы хотели максимизировать по \(\pi\)
среднюю кумулятивную дисконтированную награду:
$$ J(\pi) = \mathbb{E}_{p(\tau|\pi)} \sum_{t=0}^T \gamma^t r(s_t, a_t) $$

Пока абстрагируемся!

  • Хотим ее максимизировать по \(x\)
     
  • Но не умеем считать производную \(\frac{\partial f}{\partial x} \)

Кросс-энтропийный метод

для оптимизации

x_0
x_1

Идея: вместо оптимального \(x^*\) найдем "оптимальное" распределение

​'оптимальное' распределение

Кросс-энтропийный метод

для оптимизации

x_0
x_1

Инициализируем
распределение \(q^0\)

Сэмплим \( x_i \sim q^0\)

Выбираем M x_i
c наибольшим \( f \)
- элиты

Подстраиваем \(q^1\)
под элиты

Повторяем!

Кросс-энтропийный метод

для оптимизации

x_0
x_1

Кросс-энтропийный метод

для оптимизации

Чтобы подстроить \(q\) под элиты, минимизируем KL-дивергенцию:
 

\( KL(p_{data} || q) = \int p_{data}(x) \log \frac{p_{data}(x)}{q(x)} dx \)

\( \min_q KL(p_{data} || q) = \min_q \left[ - \mathbb{E}_{x \sim p_{data}} \log q(x) \right] \)

На k-й итерации:
 

\( q^{k+1} = \arg \min_q \left[ - \sum_{x \in \mathcal{M}^k} \log q(x) \right] \)

где \(\mathcal{M}^k\) - элиты, собранные на прошлой итерации

минимизация кросс-энтропии

Кросс-энтропийный метод

для Reinforcement Learning

Будем максимизировать \(J(\pi_\theta)\) по параметрам \(\theta\).

Где \(\pi_\theta\) - нейронная сеть, параметризующая распределение.

(непрерывные действия)

s

Neural Net.

\(\mu(s)\)

\(\sigma(s)\)

Например:

(дискретные действия)

s

Neural Net.

softmax

\(\pi(\cdot|s)\)

Кросс-энтропийный метод

для Reinforcement Learning

Алгоритм:

  • ввод: \(\alpha\) - процент сохраняемых элит 
  • инициализируем \(\pi_\theta\)
  • повторять
    • пускаем \(\pi_\theta\) собирать траектории \(\mathcal{T}= \{\tau_i\}\)
    • вычисляем перцентиль \(\delta = \text{percentile}(\mathcal{T},p=\alpha)\)
    • выбираем элиты \(\mathcal{M} = \text{filter\_elites}(\mathcal{T}, \delta)\)
    • частично обучаем \(\pi_\theta\) прогнозировать \(a_i\) по \(s_i\), где \((a_i, s_i) \in \mathcal{M}\)

CEM

By cydoroga

CEM

  • 368