Изменения

Перейти к: навигация, поиск

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

101 байт добавлено, 20:04, 13 января 2019
м
Нет описания правки
т.е. множество действий будет <tex>A={1,2,…,N}</tex>.<br />
Выбор действия <tex>a_t</tex>, на шаге <tex>t</tex>, влечет награду <tex>R(a_t)</tex> при этом <tex>R(a), a \in A</tex> есть случайная величина, распределение которой мы не знаем.
Состояние среды у нас от шага к шагу не меняется, а значит множество <tex>S = \{s\}</tex> тривиально, ни на что не влияет, так что мы его игнорируем.<br />
Для простоты пока будем полагать, что каждому действию соответствует некоторое распределение, которое не меняется со временем. Если бы мы знали, что за распределение, соответствуют каждому действию, то очевидная стратегия заключалась бы в том, чтобы подсчитать математическое ожидание для каждого из распределений, выбрать действие с максимальным математическим ожиданием и теперь совершать это действие на каждом шаге.<br />
Проблема ровно одна: про распределения мы ничего не знаем.<br />
Однако, оценивать математическое ожидание некоторой случайной величины <tex>\xi</tex> c неизвестным распределением мы умеем. Делаем <tex>P</tex> экспериментов, получаем <tex>{\xi_p|p=1..P}</tex> величин, берем среднее арифметическое:
<tex>\xi′ = \frac{1}{P} \cdot \sum_{p=1}^{P}{\xi_p} </tex>
== Жадные и эпсилон-жадные стратегии ==
Объединяя всё вышеизложенное, получаем простую <<"жадную>> " стратегию.
Жадная (greedy) стратегия
Заведем массивы <br />
<tex>{P_a=0|a=1,…,N}</tex>, <tex>P_a</tex> - сколько раз было выбрано действие <tex>a</tex> <br /><tex>{Q_a=0|a=1,…,N}</tex>, <tex>Q_a</tex> - текущая оценка математического ожидания награды для действия <tex>a</tex> <br />
На каждом шаге <tex>t</tex>.
Выбираем действие с максимальной оценкой математического ожидания: <br />
<tex>a_t = argmax{Q_a|a=1..N}</tex> <br />Выполняем действие at и получаем награду <tex>R_t</tex> <br />Обновляем оценку математического ожидания для действия <tex>a_t</tex>:<br /><tex>P_{a_t} = P_{a_{t+1}}</tex> <br />
<tex>Q_{a_t} = Q_{a_{t+1}} P_{a_t} (R_t − Q_{a_t})</tex>
Пример.<br />
Пусть у нас есть <<"двурукий>> " бандит. Первая ручка всегда выдаёт награду равную 1, вторая всегда выдаёт 2. Действуя согласно жадной стратегии мы дёрнем в начале первую ручку (поскольку в начале у нас оценка математических ожиданий одинаковые и равны нулю) повысим её оценку до <tex>Q_1 =1. И в дальнейшем всегда будем выбирать первую ручку, а значит на каждом шаге будем получать на 1 меньше, чем могли бы.
Т.е. желательно всё таки не фиксироваться на одной ручке. Понятно, что для нашего примера достаточно попробовать в начале каждую из ручек.
<tex>\epsilon</tex>-жадная (<tex>\epsilon</tex>-greedy) стратегия
 
Зададимся некоторым параметром <tex>\epsilon \in (0,1)</tex>
Заведем массивы<br />
<tex>{P_a=0|a=1,…,N}</tex>, <tex>P_a</tex> - сколько раз было выбрано действие <tex>a</tex> <br /><tex>{Q_a=0|a=1,…,N}</tex>, <tex>Q_a</tex> - текущая оценка математического ожидания награды для действия <tex>a</tex> <br />
На каждом шаге <tex>t</tex>.
Получаем значение <tex>\alpha</tex> случайной величины равномерно расределенной на отрезке <tex>(0,1)</tex> <br />Если <tex>\alpha \in (0,\epsilon)</tex>, то выберем действие <tex>a_t</tex> из набора <tex>A</tex> случайно и равновероятно.<br />
Иначе как и в жадной стратегии выбираем действие с максимальной оценкой математического ожидания:
<tex>a_t = argmax{Q_a|a=1,...,N}</tex> <br />Выполняем действие <tex>a_t</tex> и получаем награду <tex>R_t</tex> <br />
Обновляем оценку математического ожидания для действия <tex>a_t</tex>:
<tex>P_{a_t} = P_{a_{t+1}}</tex> <br />
<tex>Q_{a_t} = Q_{a_{t+1}} P_{a_t}(R_t−Q_{a_t})
Ясно, что если выбрать <tex>\epsilon = 0</tex> мы вернемся к просто жадной стратегии. Однако, если <tex>\epsilon > 0</tex>, в отличии от просто <<жадной>>, у нас на каждом шаге с вероятностью <tex>\epsilon</tex> присходит <<"исследование>>".
== Метод UCB (upper confidence bound) ==
== Стратегия Softmax ==
Мягкий вариант компромисса <<"exploitation-exploration>>":<br />чем больше <tex<>Q_t(a)</tex>, тем больше вероятность выбора <tex>a</tex>:<br /><tex>\pi_{t+1}(a) = \frac{exp(Q_t(a)/τ)}{\sum\limits_{b \in A} {exp(Q_t(b)/τ)}}</tex> <br />
где <tex>\tau</tex> — параметр температуры,<br />
при <tex>\tau \rightarrow 0</tex> стратегия стремится к жадной,<br />
77
правок

Навигация