1632
правки
Изменения
м
'''Обучение с подкреплением''', идея которого была почерпнута в смежной области психологии, является подразделом [[машинное обучение|машинного обучения]], изучающим, как ''агент'' должен ''действовать'' в ''окружении'', чтобы максимизировать некоторый долговременный ''выигрыш''.
Алгоритмы с частичным обучением пытаются найти ''стратегию'', приписывающую ''состояниям'' окружающей среды действия, которые должен предпринять агент в этих состояниях.
В экономике и теории игр обучение с подкреплением рассматривается в качестве интерпретации того, как может установиться равновесие.
Окружение В обучении с подкреплением существует агент (''agent'') взаимодействует с окружающей средой (''environment''), предпринимая действия (''actions''). Окружающая среда дает награду (''reward'') за эти действия, а агент продолжает их предпринимать. Алгоритмы с частичным обучением пытаются найти стратегию, приписывающую состояниям (''states'') окружающей среды действия, одно из которых может выбрать агент в этих состояниях. Среда обычно формулируется как [http://en.wikipedia.org/wiki/Markov_decision_process марковский процесс принятия решений] (МППР) с конечным множеством состояний, и в этом смысле алгоритмы обучения с подкреплением тесно связаны с динамическим программированием.
# * инициализация стратегии <tex>\pi_1(a|s)</tex> и состояния среды <tex>s_1</tex>;# * для всех <tex>t = 1..\ldots T</tex>:## ** агент выбирает действие <tex>a_t ∼ \pi_t(a|s_t)</tex>;## ** среда генерирует премию награду <tex>r_{t + 1} ∼ p(r|a_t, s_t)</tex> и новое состояние <tex>s_{t + 1} ∼ p(s|a_t, s_t)</tex>;## ** агент корректирует стратегию <tex>\pi_{t + 1}(a|s)</tex>.
# * опробовать все возможные стратегии;# * выбрать стратегию с наибольшим ожидаемым выигрышем.
Все вышеупомянутые используют различные методы приближения, но в некоторых случаях сходимость не гарантируется.
Для уточнения оценок используется метод градиентного спуска или [[метод наименьших квадратов]] в случае линейных приближений.
# * инициализация стратегии <tex>\pi_1(a)</tex>;# * для всех <tex>t = 1..\ldots T</tex>:## ** агент выбирает действие (ручку) <tex>a_t ∼ \pi_t(a)</tex>;## ** среда генерирует награду <tex>r_t ∼ p_{a_t}(r)</tex>;## ** агент корректирует стратегию <tex>\pi_{t+1}(a)</tex>. <tex>Q_t(a) = \frac{\sum^{t}_{i=1}{r_i[a_i = a]}}{\sum^{t}_{i=1}{[a_i = a]}} \rightarrow max </tex> {{---}} средняя награда в <i>t</i> играх <br />,<tex>Q^∗(a) = \lim \limits_{t \rightarrow \infty} Q_t(a) \rightarrow max </tex> {{---}} ценность действия <tex>a</tex>. У нас есть автомат {{---}} <tex>N</tex>-рукий бандит, на каждом шаге мы выбираем за какую из <tex>N</tex> ручек автомата дернуть,т.е. множество действий <tex>A = {1,2 \ldots ,N}</tex>. Выбор действия <tex>a_t</tex> на шаге <tex>t</tex> влечет награду <tex>R(a_t)</tex> при этом <tex>R(a)</tex> <tex>\forall a \in A</tex> есть случайная величина, распределение которой неизвестно. Состояние среды у нас от шага к шагу не меняется, а значит множество состояний <tex>S</tex> тривиально, ни на что не влияет, поэтому его можно проигнорировать. Для простоты будем полагать, что каждому действию соответствует некоторое распределение, которое не меняется со временем. Если бы мы знали эти распределения, то очевидная стратегия заключалась бы в том, чтобы подсчитать математическое ожидание для каждого из распределений, выбрать действие с максимальным математическим ожиданием и теперь совершать это действие на каждом шаге.
Задача выглядит следующим образом. <br />У нас есть автомат - "=== Жадные и <tex>N\epsilon</tex>-рукий бандит", на каждом шаге мы выбираем за какую из <tex>N</tex> рук автомата дернуть,т.е. множество действий будет <tex>A={1,2,…,N}</tex>.<br />Выбор действия <tex>a_t</tex>, на шаге <tex>t</tex>, влечет награду <tex>Rжадные стратегии (a_t)</tex> при этом ''greedy & <tex>R(a), a \in Aepsilon</tex> есть случайная величина, распределение которой мы не знаем. Состояние среды у нас от шага к шагу не меняется, а значит множество <tex>S -greedy'') === \{s\}</tex> тривиально, ни на что не влияет, так что мы его игнорируем.<br />
Для простоты пока будем полагать, что каждому действию соответствует некоторое распределение, которое не меняется со временем. Если бы мы знали, что за распределение, соответствуют каждому действию, то очевидная ==== Жадная (''greedy'') стратегия заключалась бы в том, чтобы подсчитать математическое ожидание для каждого из распределений, выбрать действие с максимальным математическим ожиданием и теперь совершать это действие на каждом шаге.<br />Проблема ровно одна: про распределения мы ничего не знаем.<br />Однако, оценивать математическое ожидание некоторой случайной величины <tex>\xi</tex> c неизвестным распределением мы умеем. Делаем <tex>P</tex> экспериментов, получаем <tex>{\xi_p|p=1..P}</tex> величин, берем среднее арифметическое:===
это и будет * <tex>Q_a = 0</tex> <tex>\forall a \in \{1 \ldots N\}</tex> {{---}} текущая оценка математического ожидания. Очевидно, что чем больше награды для действия <tex>Pa</tex> тем оценка точнее.
== Жадные и эпсилон-жадные стратегии == На каждом шаге <tex>t</tex>* Выбираем действие с максимальной оценкой математического ожидания:
Объединяя всё вышеизложенное:<tex>a_t = argmax_{a \in A} Q_a </tex>, получаем простую "жадную" стратегию.
Жадная * Выполняем действие <tex>a_t</tex> и получаем награду <tex>R(greedya_t) стратегия</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>aa_t</tex>:
На каждом шаге <tex>t</tex>.<br />Выбираем действие с максимальной оценкой математического ожидания: <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>,
Почему это не так хорошо как кажется?:<tex>Q_{a_t} = Q_{a_t} + \frac{1}{P_{a_t}} (R(a_t) − Q_{a_t})</tex>.
Пример.<br />Пусть у нас есть "двурукий" бандит. Первая ручка всегда выдаёт награду равную 1, вторая всегда выдаёт 2. Действуя согласно жадной стратегии мы дёрнем в начале первую ручку (поскольку в начале у нас оценка математических ожиданий одинаковые и равны нулю) повысим её оценку до <tex>Q_1 = 1</tex>. И в дальнейшем всегда будем выбирать первую ручку, а значит на каждом шаге будем получать на 1 меньше, В чем могли бы.проблема?
ТПусть у нас есть "двурукий" бандит.еПервая ручка всегда выдаёт награду равную 1, вторая всегда выдаёт 2. желательно всё таки не фиксироваться на одной ручке. ПонятноДействуя согласно жадной стратегии мы дёрнем в начале первую ручку, что для нашего примера достаточно попробовать так как в начале каждую из ручекоценки математических ожиданий равны нулю, увеличим её оценку до <tex>Q_1 = 1</tex>.Но если награда все-таки случайная величинаВ дальнейшем всегда будем выбирать первую ручку, а значит на каждом шаге будем получать на 1 меньше, то единичной попытки будет явно не достаточночем могли бы. В связи с этим предлагается следующая модификация жадной стратегии:
<tex>\epsilon</tex>-жадная (<tex>\epsilon</tex>-greedy) стратегияВ данном случае достаточно попробовать в начале каждую из ручек вместо того, чтобы фокусироваться только на одной.Но если награда случайная величина, то единичной попытки будет не достаточно. Поэтому модифицируем жадную стратегию следующим образом:
Зададимся некоторым параметром ==== <tex>\epsilon </tex>-жадная (<tex>\in (0,1)epsilon</tex>-''greedy'') стратегия ====
Заведем массивы<br /><tex>\{P_a=0[[File:Eps-greedy.png|thumb|313px|alink=1,…,N\}<https://tex>, <tex>P_a<vbystricky.github.io/tex> - сколько раз было выбрано действие <tex>a<2017/tex> <br 01/><tex>\{Q_a=0rl_multi_arms_bandits.html|a=1,…,N\}</tex>, <tex>Q_a</tex> - текущая оценка математического ожидания награды Пример. Награда для действия стратегии с различными <tex>a\epsilon</tex>]]
На каждом шаге <tex>t</tex>.<br />Получаем значение Введем параметр <tex>\alpha</tex> случайной величины равномерно расределенной на отрезке <tex>(0,1)</tex> <br />Если <tex>\alpha epsilon \in (0,\epsilon1)</tex>, то выберем действие <tex>a_t</tex> из набора <tex>A</tex> случайно и равновероятно. <br />
Иначе как и в жадной стратегии выбираем действие с максимальной оценкой математического ожидания:На каждом шаге <tex>t</tex>
Ясно, что если выбрать <tex>\epsilon = 0</tex> мы вернемся к просто жадной стратегии. Однако, если <tex>\epsilon > 0</tex>, в отличии от просто "жадной", у нас на каждом шаге с вероятностью <tex>\epsilon</tex> присходит "исследование".== Стратегия Softmax ===
ПримерОсновная идея алгоритма ''softmax'' {{---}} уменьшение потерь при исследовании за счёт более редкого выбора действий, которые небольшую награду в прошлом. Награда Чтобы этого добиться для стратегии с различными каждого действия вычисляется весовой коэффициент на базе которого происходит выбор действия. Чем больше <tex>Q_t(a)</tex>, тем больше вероятность выбора <tex>\epsilona</tex>:[[File:Eps-greedy.png]]
Предыдущие алогритмы при принятии решений используют данные о среднем выигрыше. Проблема заключается в том<tex>\tau \in (0, что если рука даёт выигрыш с какой\infty)</tex> {{---то вероятностью}} параметр, то данные от наблюдений получаются шумные и мы можем считать самой выгодной рукой ту, которая на самом деле таковой не являетсяс помощью которого можно настраивать поведение алгоритма.
Алгоритм верхнего доверительного интервала При <tex>\tau \rightarrow \infty</tex> стратегия стремится к равномерной, то есть softmax будет меньше зависеть от значения выигрыша и выбирать действия более равномерно (''Upper confidence bound'' или просто UCBexploration) - это семейство алгоритмов, которые пытаются решить эту проблему, используя при выборе данные не только о среднем выигрыше, но и о том, насколько можно доверять этим значениям выигрыша. В книге описывается один такой алгоритм - UCB.
Как и в softmax в UCB при выборе рук используется весовой коэффициентПри <tex>\tau \rightarrow 0</tex> стратегия стремится к жадной, который представляет собой верхнюю границу доверительного интервала то есть алгоритм будет больше ориентироваться на известный средний выигрыш действий (upper confidence bound, что и дало название алгоритмуexploitation) значения выигрыша:.
<tex>Q_a = average_arm_reward + arm_bonus</tex><br /><tex>average_arm_reward</tex> - это среднее значение выигрыша руки на момент выбора. Он ничем не отличается от Экспонента используется для того, что используется в других алгоритмахчтобы данный вес был ненулевым даже у действий, награда от которых пока нулевая.
Алгоритм мягкого максимума (softmax) На основе получаемого от среды вознаграждения агент формирует функцию полезности <tex>Q</tex>, что впоследствии дает ему возможность уже не случайно выбирать стратегию поведения, а учитывать опыт предыдущего взаимодействия со средой. Одно из преимуществ <tex>Q</tex>-обучения {{-- это чуть более сложный алгоритм. Его основная идея - уменьшение потерь при исследовании за счёт более редкого выбора рук}} то, которые дали маленький выигрыш что оно в прошломсостоянии сравнить ожидаемую полезность доступных действий, не формируя модели окружающей среды. Чтобы этого добиться Применяется для каждой руки вычисляется весовой коэффициентситуаций, на базе которого происходит выбор руки:которые можно представить в виде МППР.
<tex>Q_a = \exp(average_arm_reward / temperature)</tex>Таким образом, алгоритм это функция качества от состояния и действия:
temperature - это параметрПеред обучением <tex>Q</tex> инициализируется случайными значениями. После этого в каждый момент времени <tex>t</tex> агент выбирает действие <tex>a_t</tex>, с помощью которого можно настраивать поведение алгоритма (он называется температура). Он получает награду <tex>r_t</tex>, переходит в новое состояние <tex>s_{t+1}</tex>, которое может принимать значения от нуля до бесконечности. Если он близок к бесконечности, то softmax будет меньше зависеть от значения выигрыша предыдущего состояния <tex>s_t</tex> и выбирать руки более равномерно (т.е. перейдёт в режим исследования). Если он близок к нулювыбранного действия, то алгоритм будет больше ориентироваться на известный средний выигрыш рук (т.е. перейдёт в режим эксплуатации)и обновляет функцию <tex>Q</tex>.Обновление функции использует взвешенное среднее между старым и новым значениями:
Экспонента используется для того:<tex>Q^{new}(s_{t}, чтобы данный вес был ненулевым даже у рукa_{t}) \leftarrow (1-\alpha) \cdot \underbrace{Q(s_{t},a_{t})}_{\text{old value}} + \underbrace{\alpha}_{\text{learning rate}} \cdot \overbrace{\bigg( \underbrace{r_{t}}_{\text{reward}} + \underbrace{\gamma}_{\text{discount factor}} \cdot \underbrace{\max_{a}Q(s_{t+1}, a)}_{\text{estimate of optimal future value}} \bigg) }^{\text{learned value}} </tex>, выигрыш от которых пока нулевой.
Вероятность выбора руки равна отношению её весового коэффициента где ''<tex>r_{t}</tex>'' это награда, полученная при переходе из состояния <tex>s_{t}</tex> в состояние <tex>s_{t+1}</tex>, и сумме весовых коэффициентов всех рук. При выборе генерируется случайное число от <tex>\alpha</tex> это скорость обучения (<tex>0 до < \alpha \le 1, на основании которого произойдёт выбор конкретной руки</tex>).
Мягкий вариант компромисса "exploitationАлгоритм заканчивается, когда агент переходит в терминальное состояние <tex>s_{t+1}</tex>. === Aлгоритм Q-exploration"learning === [[File:Q-Learning.png|thumb|313px|link=https:<br />/en.wikipedia.org/wiki/Q-learning|Процесс Q-обучения]] чем больше * <tex>Q_t(a)S</tex>— множество состояний, тем больше вероятность выбора * <tex>aA</tex>: <br />— множество действий,* <tex>\pi_{t+1}(a) R = S \frac{exp(Q_t(a)/τ)}{times A \sum\limits_{b rightarrow \in A} mathbb{exp(Q_t(b)/τ)}R}</tex> <br />{{---}} функция награды,где * <tex>T = S \tautimes A \rightarrow S</tex> — параметр температуры{{---}} функция перехода,<br />при * <tex>\tau alpha \rightarrow in [0, 1]</tex> стратегия стремится к жадной{{---}} learning rate (обычно 0.1), чем он выше, тем сильнее агент доверяет новой информации,<br />при * <tex>\tau gamma \rightarrow \inftyin [0, 1]</tex> — к равномерной{{---}} discounting factor, чем он меньше, т.е. чисто исследовательской<br />Эвристика: параметр <tex>\tau</tex> имеет смысл уменьшать со временемтем меньше агент задумывается о выгоде от будущих своих действий.
rollbackEdits.php mass rollback
{{Определение
|definition=
'''Обучение с подкреплением''' (англ. ''reinforcement learning'') {{---}} способ машинного обучения, при котором система обучается, взаимодействуя с некоторой средой.
}}
== Обучение с подкреплением ==
Вероятности выигрышей и перехода состояний в МППР обычно являются величинами случайными, но стационарными в рамках задачи.
При обучении с подкреплением, в отличии от [[обучение с учителем|обучения с учителем]], не предоставляются верные пары „входные "входные данные-ответ“ответ", а принятие субоптимальнх решений (дающих локальный экстремум) не ограничивается явно.Обучение с подкреплением пытается найти компромисс между исследованием неизученных областей и применением имеющихся знаний(''exploration vs exploitation'').Баланс изучения-применения при обучении с подкреплением исследуется в задаче [http://en.wikipedia.org/wiki/Multi-armed_bandit многорукого бандитао многоруком бандите].
Формально простейшая модель обучения с подкреплением состоит из:# * множества состояний окружения (''states'') <itex>S</itex>;# * множества действий (''actions'') <itex>A</itex>;# * множества вещественнозначных скалярных "выигрышей"(''rewards'').
В произвольный момент времени <itex>t</itex> агент характеризуется состоянием <tex>s_t \in S</tex> и множеством возможных действий <tex>A(s_t)</tex>.
Выбирая действие <tex>a \in A(s_t)</tex>, он переходит в состояние <tex>s_{t+1}</tex> и получает выигрыш <tex>r_t</tex>.
Основываясь на таком взаимодействии с окружающей средой, агент, обучающийся с подкреплением, должен выработать стратегию <tex>\pi: S \to A</tex>, которая максимизирует величину <tex>R=r_0 + r_1+\cdots+r_n</tex> в случае МППР, имеющего терминальное состояние, или величину <br />: ::<tex>R=\sum_t \gamma^t r_t</tex> <br /> , для МППР без терминальных состояний (где <tex>0 \leq \gamma \leq 1</tex> {{--- }} дисконтирующий множитель для „предстоящего выигрыша“"предстоящего выигрыша").
Таким образом, обучение с подкреплением особенно хорошо подходит для решения задач, связанных с выбором между долгосрочной и краткосрочной выгодой.
=== Постановка задачи обучения с подкреплением ===
[[File:RL.png|thumb|link=https://econophysica.ru/services/machine-learning/|Взаимодействие агента со средой]] <itex>S</itex> {{- --}} множество состояний среды <br />
Игра агента со средой:
Это марковский процесс принятия решений (МППР), если
<tex>P(s_{t+1} = s′, r_{t+1} = r | s_t, a_t, r_t, s_{t−1}, a_{t−1}, r_{t−1}, .. ,s_1, a_1) == P(s_{t+1} = s′,r_{t+1} = r | s_t, a_t)</tex>,
МППР называется финитным, если <tex>|A| < \infty</tex>, <tex>|S| < \infty</tex>
Наивный подход к решению этой задачи подразумевает следующие шаги:
Первая проблема такого подхода заключается в том, что количество доступных стратегий может быть очень велико или же бесконечно.
Вторая проблема возникает, если выигрыши стохастические — чтобы точно оценить выигрыш от каждой стратегии потребуется многократно применить каждую из них.
Этих проблем можно избежать, если допустить некоторую структуризацию и, возможно, позволить результатам, полученным от пробы одной стратегии, влиять на оценку для другой.
Подход с использованием функции полезности использует множество оценок ожидаемого выигрыша только для одной стратегии <tex>\pi</tex> (либо текущей, либо оптимальной).
При этом пытаются оценить либо ожидаемый выигрыш, начиная с состояния <itex>s</itex>, при дальнейшем следовании стратегии <tex>\pi</tex>, <br />::<tex>V(s)=E[R|s,\pi]</tex>, <br />либо ожидаемый выигрыш, при принятии решения <i>a</i> в состоянии <i>s</i> и дальнейшем соблюдении <tex>\pi</tex>, <br />::<tex>Q(s,a)=E[R|s,\pi,a]</tex>. <br />Если для выбора оптимальной стратегии используется функция полезности <i>Q</i>, то оптимальные действия всегда можно выбрать как действия, максимизирующие полезность.Если же мы пользуемся функцией <i>V</i>, необходимо либо иметь модель окружения в виде вероятностей <tex>P(s'|s,a)</tex>, что позволяет построить функцию полезности вида <br />::<tex>Q(s,a)=\sum_{s'}V(s')P(s'|s,a)</tex>, <br />либо применить т.н. метод исполнитель-критик, в котором модель делится на две части: критик, оценивающий полезность состояния <i>V</i>, и исполнитель, выбирающий подходящее действие в каждом состоянии.
::<tex>V(s) = E[R|s, \pi]</tex>, либо ожидаемый выигрыш, при принятии решения <tex>a</tex> в состоянии <tex>s</tex> и дальнейшем соблюдении <tex>\pi</tex>, ::<tex>Q(s, a) = E[R|s, \pi, a]</tex>, Если для выбора оптимальной стратегии используется функция полезности <tex>Q</tex>, то оптимальные действия всегда можно выбрать как действия, максимизирующие полезность. Если же мы пользуемся функцией <tex>V</tex>, необходимо либо иметь модель окружения в виде вероятностей <tex>P(s'|s, a)</tex>, что позволяет построить функцию полезности вида ::<tex>Q(s, a) = \sum_{s'}V(s')P(s'|s, a)</tex>, либо применить т.н. метод исполнитель-критик, в котором модель делится на две части: критик, оценивающий полезность состояния <tex>V</tex>, и исполнитель, выбирающий подходящее действие в каждом состоянии. Имея фиксированную стратегию <tex>\pi</tex>, оценить <tex>E[R|\cdot]</tex> при <tex>\gamma=01</tex> можно просто усреднив непосредственные выигрыши.Наиболее очевидный способ оценки при <tex>\gamma>\in (0, 1)</tex> — {{---}} усреднить суммарный выигрыш после каждого состояния.
Однако для этого требуется, чтобы МППР достиг терминального состояния (завершился).
Поэтому построение искомой оценки при <tex>\gamma>\in (0, 1)</tex> неочевидно. Однако, можно заметить, что <itex>R</itex> образуют рекурсивное уравнение Беллмана: <br /> ::<tex>E[R|s_t]=r_t+\gamma E[R|s_{t+1}]</tex>. <br />, Подставляя имеющиеся оценки, <itex>V</itex>, и применяя метод градиентного спуска с квадратичной функцией ошибок, мы приходим к алгоритму [http://en.wikipedia.org/wiki/Temporal_difference_learning обучения с временными воздействиями](''temporal difference (TD) learning'').
В простейшем случае и состояния, и действия дискретны и можно придерживаться табличных оценок для каждого состояния.
Другие похожие методы: Адаптивный эвристический критик (Adaptive Heuristic Critic, AHC), [http://en.wikipedia.org/wiki/SARSA SARSA] и Q-обучение ([http://en.wikipedia.org/wiki/Q-Learning Q-learning]).
== Задача о многоруком бандите (''The multi-armed bandit problem'') ==
[[File:bandit.jpg|thumb|link=http://toppromotion.ru/blog/seo-category/novyij-algoritm-pod-nazvaniem-%C2%ABmnogorukij-bandit%C2%BB.html|Многорукий бандит]]
=== Формулировка ===
<tex>A</tex> — {{---}} множество возможных ''действий'' <br />(ручек автомата), <tex>p_a(r)</tex> — {{---}} неизвестное распределение ''награды'' <tex>r \in R</tex> за <tex>\forall a \in A</tex> <br />, <tex>\pi_t(a)</tex> — {{---}} ''стратегия'' агента в момент <tex>t</tex>, распределение на <tex>\forall a \in A</tex> <br />.
Игра агента со средой:
Проблема в том, что распределения неизвестны, однако можно оценить математическое ожидание некоторой случайной величины <tex>Q_t(a) = \frac{\sum^{t}_{i=1}{r_i[a_i = a]}}{\sum^{t}_{i=1}{[a_i = a]}} \rightarrow max xi</tex> — средняя награда в <i>t</i> играх <br />c неизвестным распределением. Для <tex>Q^∗(a) = \lim \limits_{y \rightarrow \infty} Q_t(a) \rightarrow max K</tex> — ценность действия экспериментов <tex>a\xi_k</tex>, оценка математического ожидания это среднее арифметическое результатов экспериментов:
<tex>E(\xi) = \frac{1}{K} \sum_{k=1}^{K}{\xi_k} </tex>,
Задача является модельной для понимания конфликта между ''exploitation'' (применение, эксплуатация) и -''exploration'' (изучение, исследование).
* <tex>P_a = 0</tex> <tex>\xi′ = forall a \in \frac{1}{P} \cdot ldots N\sum_} </tex> {p=1}^{P---}{\xi_p} сколько раз было выбрано действие <tex>a</tex>,
* Получим значение <tex>a_t = argmax{Q_a|a=1,...,N}\alpha</tex> <br />Выполняем действие {{---}} случайной величины равномерно распределенной на отрезке <tex>a_t(0, 1)</tex> и получаем награду ;* Если <tex>R_t\alpha \in (0, \epsilon)</tex> <br />Обновляем оценку математического ожидания для действия , то выберем действие <tex>a_t\in A</tex>:случайно и равновероятно, иначе как в жадной стратегии выберем действие с максимальной оценкой математического ожидания;* Обновляем оценки так же как в жадной стратегии.
Если <tex>P_{a_t} \epsilon = P_{a_{t+1}}0</tex> , то это обычная жадная стратегия. Однако если <tex>\epsilon > 0<br /tex>, то в отличии от жадной стратегии на каждом шаге с вероятностью <tex>Q_{a_t} = Q_{a_{t+1}} P_{a_t}(R_t−Q_{a_t})\epsilon</tex>присходит "исследование" случайных действий.
<tex>\pi_{t+1}(a) == Метод UCB \frac{exp(Q_t(a) / \tau)}{\sum\limits_{b \in A} {exp(Q_t(upper confidence boundb) == / \tau)}}</tex>,
Эвристика: параметр <tex>arm_bonus\tau</tex> - это бонусное значение, которые показывает, насколько недоисследована эта рука по сравнению с остальнымиимеет смысл уменьшать со временем. Он вычисляется следующим образом:
=== Метод UCB (''upper confidence bound'') === Предыдущие алгоритмы при принятии решения используют данные о среднем выигрыше. Проблема в том, что если действие даёт награду с какой-то вероятностью, то данные от наблюдений получаются шумные и мы можем неправильно определять самое выгодное действие. Алгоритм верхнего доверительного интервала (''upper confidence bound'' или UCB) {{---}} семейство алгоритмов, которые пытаются решить эту проблему, используя при выборе данные не только о среднем выигрыше, но и о том, насколько можно доверять значениям выигрыша. Также как ''softmax'' в UCB при выборе действия используется весовой коэффициент, который представляет собой верхнюю границу доверительного интервала (upper confidence bound) значения выигрыша: <tex>\pi_{t+1}(a) = Q_t(a) + b_a</tex>arm_bonus , <tex>b_a = \sqrt{\frac{2 \cdot ln{\log{total_countsum_a P_a}}{arm_countP_a}} </tex><tex>total_count</tex> {{--- это суммарное количество использований всех рук}} бонусное значение, а <tex>arm_count</tex> - это количество использований данной рукикоторые показывает, насколько недоисследовано действие по сравнению с остальными.
Доказательство [http://banditalgs.com/2016/09/18/the-upper-confidence-bound-algorithm здесь]
В отличие от предыдущих алгоритмов UCB не использует в своей работе ни случайные числа для выбора рукидействия, ни параметры, которыми можно влиять на его работу. В начале работы алгоритма каждая каждое из рук действий выбирается по одному разу (это нужно для того, чтобы можно было вычислить размер бонуса для всех рукдействий). После этого в каждый момент времени выбирается рука действие с максимальным значением весового коэффициента.
Несмотря на это отсутствие случайности, результаты работы этого алгоритма выглядят довольно шумно по сравнению с остальными. Это происходит из-за того, что данный алгоритм сравнительно часто выбирает недоисследованные рукидействия.
== Стратегия Softmax Q-learning ==
:<tex>average_arm_rewardQ: S \times A \to \mathbb{R}</tex> - это среднее значение выигрыша руки на момент выбора. Оно позволяет придать больший вес выгодным рукам.,
'''fun''' Q-learning(<tex>S, A, R, T, \alpha, \gamma</tex>): '''for''' <tex> s \in S</tex>: '''for''' <tex> a \in A</tex>: Q(s, a) = rand() '''while''' Q is not converged: s = <tex> \forall s \in S</tex> '''while''' s is not terminal: <tex>\pi(s) = argmax_{a}{Q(s, a)}</tex> a = <tex>\pi(s)</tex> r =R(s, a) s' = T(s, a) <tex>Q(s', a) = (1 -learning =\alpha) Q(s', a) + \alpha (r + \gamma \max\limits_{a'}{Q(s', a')})</tex> s = s' return Q
== Ссылки ==
*[http://en.wikipedia.org/wiki/Reinforcement_learning Wikipedia: Reinforcement learning]
*[https://login.cs.utexas.edu/sites/default/files/legacy_files/research/documents/1%20intro%20up%20to%20RL%3ATD.pdf Sutton, Richard S., and Andrew G. Barto. Introduction to reinforcement learning. Vol. 135. Cambridge: MIT press, 1998.]
*[https://web.stanford.edu/class/psych209/Readings/SuttonBartoIPRLBook2ndEd.pdf Sutton R. S., Barto A. G. Reinforcement learning: An introduction. – 2011.]
*[http://www.machinelearning.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC Обучение с подкреплением]
* [https://en.wikipedia.org/wiki/Multi-armed_bandit Многорукий бандит]
* [http://www.machinelearning.ru/wiki/images/archive/3/35/20121120213057%21Voron-ML-RL-slides.pdf Обучение с подкреплением (Reinforcement Learning) К.В.Воронцов]
* [https://pryazhnikov.com/ru/bandit-algorithms-for-website-optimization/ Обзор книги «Bandit Algorithms for Website Optimization»]
* [https://en.wikipedia.org/wiki/Q-learning Q-learning]
* [https://medium.freecodecamp.org/an-introduction-to-q-learning-reinforcement-learning-14ac0b4493cc An introduction to Q-Learning: reinforcement learning]
[[Категория: Машинное обучение]]
[[Категория: Обучение с подкреплением]]