[Обучение с подкреплением] Метод Монте-Карло

искусственный интеллект обучение с подкреплением
[Обучение с подкреплением] Метод Монте-Карло

Эта статья была впервые опубликована на:Уокер ИИ

введение

Метод Монте-Карло — это не конкретный алгоритм, а общий термин для класса случайных алгоритмов, в основе которого лежит идея замены «вероятности» события «частотой» события. В машинном обучении этот подход можно использовать в ситуациях, когда модель неизвестна, ей нужно только учиться на опыте, который включает в себя состояние, действие и вознаграждение последовательности образцов. После ряда опытов задача обучения с подкреплением решается путем усреднения отдачи по всем выборкам.

1. Оценка стратегии

Мы можем использовать метод Монте-Карло, чтобы узнать функцию ценности состояния, учитывая политику, то есть ожидаемую доходность в начале этого состояния — ожидаемое кумулятивное будущее дисконтированное вознаграждение, формула выглядит следующим образом:

vчисло Пи(s)=Eчисло Пи[GtSt=s]v_\pi(s)=E_\pi[G_t|S_t=s]

То есть мы хотим оценитьvчисло Пи(s)v_\pi(s)значение, т.е. следовать политикечисло Пи\piГосударствоss​​ значение, мы можем рассчитать состояние первого посещения во всех раундахssсредняя доходность какvчисло Пи(s)v_\pi(s)​​ , этот метод является методом МК первого визита, соответственно другой метод вычисляет состояние каждого визита во всех раундахss​​ Средняя доходность – это метод MC за посещение.

чтобы оценитьvчисло Пи(s)v\pi(s)Стоимость заключается в оценкеqчисло Пи(s,a)q_\pi(s,a). Поскольку функция значения состояния не может напрямую определять стратегию, когда модель неизвестна, нам нужно передать функцию значения действия состояния.qчисло Пи(s,a)q_\pi(s,a)Чтобы решить. Мы используем эти два метода оценки для оценкиqчисло Пи(s,a)q_\pi(s,a)​​Это запросить доступ ко всем эпизодам(s,a)(s,a)Среднее значение полученных доходов.

Первое посещение потока алгоритма MC:

Вход: политика для оценкичисло Пи\pi

инициализация:

всемssSSлюбойV(s)еRV(s)\in R

Returns(s)Returns(s)\leftarrowпустой список для всехssеSS

Продолжайте повторять (для каждого хода):

использоватьчисло Пи\piСоздать раунд:S0,A0,R1,S1,,ST1,AT1,RTS_0,A_0,R_1,S_1,\dots,S_{T-1},A_{T-1},R_T

G0G\leftarrow0

​ Для каждого шага петли в раунде,t=T1,T2,,0t=T-1,T-2,\dots,0​:

GγG+Rt+1G\leftarrow\gamma G+R_{t+1}

если толькоStS_tпоявляться вS0,S1,,St1S_0,S_1,\dots,S_{t-1}середина:

будетGGдобавить в списокReturns(s)Returns(s)середина

V(s)average(Returns(s))V(s)\leftarrow average(Returns(s))

2. Контроль политики

2.1 Обсуждение проблемы

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

Рисунок 1. Процесс управления политикой

Метод повышения политики предназначен для функции текущего значения, даже если политика является жадной. Нам просто нужно для каждогоsе\Ss\in\SВыберите действие, которое максимизирует функцию ценности действия:

число Пи(s)=argmaxQ(s,a)\pi(s)=argmax Q(s,a)

Тогда мы для каждогочисло Пиk+1(s)\pi_{k+1}(s)взять всеQчисло ПиkQ_{\pi k}является жадным, поэтому мы получаем:

Qчисло Пиk(s,число Пиk+1(s))=Qчисло Пиk(s,argmaxQчисло Пиk(s,a))Qчисло Пиk(s,число Пиk(s))Q_{\pi k}(s,\pi_{k+1}(s))=Q_{\pi k}(s,argmaxQ_{\pi k}(s,a))\geq Q_{\pi k}(s,\pi_{k}(s))

То есть каждыйчисло Пи(k+1)\pi_(k+1)чемчисло Пиk\pi_kЕще лучше, просто пройдите достаточное количество раундов, чтобы прийти к оптимальной политике и функции стоимости. Для сходимости этого процесса необходимо выполнение следующих двух предположений:

(a) У нас есть бесконечное количество раундов для оценки политики.

б) Раунды — это все способы исследования начала.

2.2 Рассмотрение первой гипотезы

Очевидно, невозможно проходить бесконечные эпизоды, и наш лучший способ здесь — это вписатьсяqчисло Пиkq_{\pi k}Существует два основных метода укладки:

Метод 1: Сделайте каждую оценку стратегии бесконечно близкойqчисло Пиkq_{\pi k}. Используя некоторые методы и некоторые предположения, и после достаточного количества шагов, вы можете гарантировать некоторую степень сходимости.

Метод 2. Откажитесь от попыток завершить оценку стратегии, прежде чем переходить к ее продвижению. На каждом шаге оценки мы сдвигаем функцию ценности кqчисло Пиkq_{\pi k}Двигаться. Крайним примером является итерация значения, то есть один шаг итеративной оценки политики выполняется для каждого шага улучшения политики.

2.3 Обращение ко второй гипотезе

Есть два конкретных подхода к решению второй гипотезы, которые мы называем политическим подходом и внеполитическим подходом. Методы, основанные на политике, пытаются оценить и повысить ту же политику, которую мы используем для принятия решений, в то время как неполитические методы оценивают и повышают политику, которая отличается от политики, используемой для получения данных.

2.3.1 политическая стратегия

В частности, мы используемϵgreedy\epsilon-greedyСтратегия, этот алгоритм на самом деле является компромиссом между разработкой и исследованием. т. е. выбирать действие с наибольшей оценочной ценностью действия большую часть времени, но все жеϵ\epsilonВероятность выбора случайного действия.

Алгоритм управления алгоритмом первого доступа согласно политике:

инициализация:

число Пи\piлюбойϵsoft\epsilon-softСтратегия

всемsеS,aеA(s)s\in S,a\in A(s), любойQ(s,a)еRQ(s,a)\in R

всемsеS,aеA(s)s\in S,a\in A(s),Returns(s)Returns(s)\leftarrowпустой список

продолжайте зацикливаться:

следовать стратегиичисло Пи\pi, сгенерировать раунд:S0,A0,R1,S1,,ST1,AT1,RTS_0,A_0,R_1,S_1,\dots,S_{T-1},A_{T-1},R_T

G0G\leftarrow 0

За каждый шаг в этом раундеt=T1,T2,,0t=T-1,T-2,\dots,0​:

GγG+Rt+1G\leftarrow\gamma G+R_{t+1}

если толькоSt,AtS_t,A_tпоявляется вS0,A0,S1,A0,,St1,At1S_0,A_0,S_1,A_0,\dots,S_{t-1},A_{t-1}В:

будетGGДобавить в списокReturns(St,At)Returns(S_t,A_t)Средний

Q(St,At)average(Returns(St,At))Q(S_t,A_t)\leftarrow average(Returns(S_t,A_t))

A*argmaxQ(St,a)A^*\leftarrow argmax Q(S_t,a)​​

всемaеA(St)a\in A(S_t):

число Пи(aSt){1ϵ+ϵ/A(St)if a=A*ϵ/A(St)if aA*\pi(a|S_t)\leftarrow \begin{cases} 1-\epsilon+\epsilon/|A(S_t)| & if\ a = A^* \\ \epsilon/|A(S_t)| & if\ a \neq A^* \end{cases}

2.3.2 внеполитическая стратегия

Вне политики используются две стратегии для оценки стратегии и продвижения стратегии, одна из которых - стратегия поведения.μ\mu: Исследовательская стратегия, предназначенная для создания эпизодов для накопления опыта; другая стратегия является целевой.число Пи\pi: о поведенческих стратегияхμ\muПолученный опыт изучается, чтобы максимизировать вознаграждение и стать оптимальной политикой.

2.3.2.1 Выборка по важности в неполитических стратегиях

Выборка по важности — это оценка ожидаемого значения случайной величины в одном распределении, но выборка выборок из другого распределения. Метод применения выборки важности к внеполитике заключается в взвешивании вознаграждения в соответствии с отношением вероятностей траектории события, полученным в рамках целевой стратегии и стратегии поведения. Отношение двух вероятностей называется частотой выборки важности. заданное начальное состояние\St\S_t​, то в стратегиичисло Пи\pi​, траектория действия следующего состоянияAt,St+1,At+1,,StA_t,S_{t+1},A_{t+1},\cdots,S_tВероятность возникновения

k=tT1число Пи(AkSk)p(Sk+1Sk,Ak)\prod_{k=t}^{T-1}{\pi(A_k|S_k)p(S_{k+1}|S_k,A_k)}

вppпредставляет собой функцию вероятности перехода состояния. Таким образом, частота выборки важности в соответствии с целевой политикой и политикой поведения составляет:

ρt:T1=k=tT1число Пи(AkSk)p(Sk+1Sk,Ak)k=tT1μ(AkSk)p(Sk+1Sk,Ak)=k=tT1число Пи(AkSk)μ(AkSk)\rho_{t:T-1}=\frac{\prod_{k=t}^{T-1}{\pi(A_k|S_k)p(S_{k+1}|S_k,A_k)}}{\prod_{k=t}^{T-1}{\mu(A_k|S_k)p(S_{k+1}|S_k,A_k)}}=\prod_{k=t}^{T-1}\frac{\pi(A_k|S_k)}{\mu(A_k|S_k)}

Из приведенной выше формулы видно, что частота выборки важности в конечном итоге зависит только от двух стратегий и последовательностей и не имеет ничего общего с MDP. Далее следует формула стратегии оценки вне политики:

(1) Выборка исходной важности

V(s)=tет(s)ρt:T(t)1Gtт(s)V(s)=\frac{\sum_{t\in\tau(s)}^{}\rho_{t:T(t)-1}G_t}{|\tau(s)|}

(2) Взвешенная выборка важности

V(s)=tет(s)ρt:T(t)1Gttет(s)ρt:T(t)1V(s)=\frac{\sum_{t\in\tau(s)}^{}\rho_{t:T(t)-1}G_t}{\sum_{t\in\tau(s)}^{}\rho_{t:T(t)-1}}

вт(s)\tau(s): представляет набор моментов, когда все состояния посещаются впервые в эпизоде.

T(t)T(t): от времени t доT(t)T(t)с возвращением

{Gt}tет(s)\{G_t\}_{t\in\tau(s)}: возврат, принадлежащий состоянию s

{ρt:T1}tет(s)\{\rho_{t:T-1}\}_{t\in\tau(s)}: представляет соответствующую частоту дискретизации важности

2.3.2.2 Инкрементальное усреднение

В дополнение к прямому способу вычисления среднего значения мы также можем вычислять среднее значение постепенно. Предположим, мы получаем серию возвратовG1,G2,Gt1G_1,G_2\cdots,G_t-1, Для несогласованных с политикой, поскольку мы используем выборку по важности, существует дополнительный весовой коэффициент, и вес каждого возврата устанавливается какWkW_k

Vn=k=1n1WkGkk=1n1WkV_n=\frac{\sum_{k=1}^{n-1}W_kG_k}{\sum_{k=1}^{n-1}W_k}

Так что есть

Vn+1=Vn+WnCn(GnVn)V_{n+1}=V_n+\frac{W_n}{C_n}(G_n-V_n)
Cn+1=Cn+Wn+1C_{n+1}=C_n+W_{n+1}

2.3.2.3 Алгоритм стратегии вне политики

Объединив предыдущую выборку по важности и пошаговое усреднение, мы можем получить алгоритм вне политики. Здесь наша поведенческая стратегия используетϵsoft\epsilon-soft​, целевая политика является жадным алгоритмом.

Неполитический первый доступ к потоку алгоритма управления MC:

инициализация: для всехsеS,aеA(s)s\in S,a\in A(s):

Q(s,a)еRQ(s,a)\in R(случайное значение)

C(s,a)0C(s,a)\leftarrow0

Продолжайте повторять (для каждого хода):

bb\leftarrowлюбое покрытиечисло Пи\piстратегия

​ Используйте стратегиюbbСоздать раунд:S0,A0,R1,S1,,ST1,AT1,RTS_0,A_0,R_1,S_1,\dots,S_{T-1},A_{T-1},R_T

G0G\leftarrow 0

W1W\leftarrow 1

Цикл для каждого шага раунда,t=T1,T2,,0t=T-1,T-2,\dots,0​,:

GγG+Rt+1G\leftarrow\gamma G+R_{t+1}

C(St,At)C(St,At)+WC(S_t,A_t)\leftarrow C(S_t,A_t)+W

Q(St,At)Q(St,At)+WC(St,At)[GQ(St,At)]Q(S_t,A_t)\leftarrow Q(S_t,A_t)+\frac{W}{C(S_t,A_t)}[G-Q(S_t,A_t)]

число Пи(St)argmaxQ(St,a)\pi(S_t)\leftarrow argmax Q(S_t,a)​​​

еслиAtчисло Пи(St)A_t\neq \pi(S_t)затем выйти из внутреннего цикла (перейти к следующему кругу)

WW1b(AtSt)W\leftarrow W\frac{1}{b(A_t|S_t)}

3. Примеры Блэкджек

3.1 Правила игры

Правила игры в блэкджек следующие: в игре участвуют игрок и дилер, и исходом каждого раунда может быть выигрыш игрока, выигрыш дилера или ничья. В начале раунда у игрока и дилера по две карты, и игрок может видеть две карты игрока и одну из карт дилера. Затем игрок может выбрать, хочет ли он больше карт. Если вы решите запросить больше карт (это называется «хит»), игрок может получить еще одну карту, и будет подсчитана сумма очков всех карт в руке игрока. Лицо A представляет 1 точку или 11 точек. Если сумма очков больше 21, говорят, что игрок проигрывает раунд, а выигрывает дилер; если сумма очков меньше 21, то игрок снова может решить, просить ли еще карты, пока не игрок больше не хочет больше карт. Если игрок не хочет больше карт, когда общее количество очков меньше или равно 21, то общее количество очков в руке игрока в этот момент является очком последнего игрока. Затем дилер открывает карту, которую он не открывал, и берет больше карт, если она меньше 17. Если общее количество очков дилера превышает 21 в процессе розыгрыша, дилер проигрывает раунд, а игрок выигрывает; если общее количество очков финального дилера меньше или равно 21, общее количество очков игрока и общее количество очков дилера сравниваются. Если сумма очков игрока больше суммы дилера, игрок выигрывает; если сумма очков игрока и дилера одинакова, это ничья; если сумма очков игрока меньше суммы дилера, выигрывает дилер.

3.2 Реализация кода

Здесь я использую неполитическую стратегию, На самом деле, для метода Монте-Карло наиболее важным является решение оценки стратегии и управления стратегией. Ниже я приведу экспериментальный код:

def obs2state(obs):
    # 将观测信息转换为状态信息
    return (obs[0], obs[1], int(obs[2]))
#策略评估
def evaluate(env, target_policy, behavior_policy, episode_num=500000):
    #初始化
    q = np.zeros_like(target_policy)#q(s,a)
    c = np.zeros_like(target_policy)#前 n 个回报下每个状态的累积权值
    for _ in range(episode_num):
        state_actions = []#状态动作键值对
        observation = env.reset()#获取观测值
        #使用行为策略生成一个回合
        while True:
            state = obs2state(observation)
            action = np.random.choice(env. action_space.n, p=behavior_policy[state])
            state_actions.append((state, action))
            obs, reward, done, _ = env.step(action)
            if done:
                break
        g = 0  # 回报
        rho = 1.  # 重要性采样比率
        for state, action in reversed(state_actions):
            g = gamma*g+reward #G←γG+Rt+1
            c[state][action] += rho #C(St,At)←C(St,At)+W
            q[state][action] += (rho / c[state][action]*(g - q[state][action]))#Q(St,At)←Q(St,At)+W/C(St,At)[G−Q(St,At)]
            rho *= (target_policy[state][action]/ behavior_policy[state][action])
            #W←W*π(At|St)/b(At|St)
            if rho == 0:
                break
    return q

#策略控制
def off_policy(env,target_policy,behavior_policy,espisode_num=500):
    q=np.zeros_like(target_policy)
    c=np.zeros_like(target_policy)
    for i in range(espisode_num):
        state_action=[]
        obs=env.reset()
        while True:
            state = obs2state(obs)
            action = np.random.choice(env.action_space.n,p=behavior_policy[state])
            state_action.append((state,action))
            observation, reward, done, _ = env.step(action)
            if done:
                break
            #完成了一个episode
        g=0 # 回报
        rho=1#重要性采样比率
        for state,action in reversed(state_action):
            g = gamma*g+reward #G←γG+Rt+1
            c[state][action]+=rho#C(St,At)←C(St,At)+W
            q[state][action]+=(rho / c[state][action]*(g - q[state][action]))#Q(St,At)←Q(St,At)+W/C(St,At)[G−Q(St,At)]
            #策略提升 π(St)←argmaxaQ(St,a)
            a =q[state].argmax()
            target_policy[state]=0
            target_policy[state][a]=1
            if a!=action:
                break
        rho /= behavior_policy[state][action]
    return target_policy,q

3.3 Экспериментальные результаты

Рисунок 2. Эпизод

Один из эпизодов показан на рисунке.В начале игрок получил карту [1,4], дилер показал 5, и стратегия решила попросить карту (действие 1). , карта игрока [1,4,9], а награда 0, стратегия продолжает решать запросить карту В итоге наблюдение за следующим раундом показывает, что сумма карт игрока равна 23 очков, что превышает 21 очко, поэтому игра заканчивается, вознаграждение равно -1, и побеждает дилер.

График оптимальной стратегии выглядит следующим образом:

Рисунок 3. График оптимальной стратегии

с тузом: используется туз, т. е. a равно 1. без туза: туз не используется, т. е. a равно 11. Видно, что на графике оптимальной стратегии без туза: в большинстве случаев предпочитают не повышать , с тузом: в Когда общее количество игроков меньше 18, велика вероятность того, что они продолжат добавлять карты.

4 Резюме

(a) Метод Монте-Карло — это метод обучения для оценки функции ценности и поиска оптимальной политики. В отличие от DP, нам не нужно полное знание окружающей среды. Методы Монте-Карло требуют только последовательности эмпирических выборок состояний, действий и вознаграждений за фактические или смоделированные взаимодействия с окружающей средой.

(b) Методы Монте-Карло выбирают и усредняют вознаграждения для каждой пары состояние-действие.

(c) Оценка политики оценивает функцию ценности действий государства через среднюю доходность. Повышение политики использует жадную политикучисло Пи(s)=argmaxq(s,a)\pi(s)=argmax q(s,a)

(d) основанные на политике и вне политики: методы, основанные на политике, пытаются оценить и усилить ту же политику, которую мы используем для принятия решений, в то время как внеполитические методы оценивают и усиливают политику, которая отличается от политики, используемой для получения данных. .

5 ссылок

[1]Reinforcement Learning

Обратите внимание на общедоступную учетную запись WeChat [Potential Technology], чтобы узнать актуальную информацию.

Уокер ИИ (Chengdu Potential Artificial Intelligence Technology Co., Ltd., xingzhe.ai)Стремление использовать искусственный интеллект и технологии машинного обучения для повышения производительности индустрии игр и развлечений и продолжать улучшать пользовательский опыт в отрасли. У нас есть команда по безопасности контента, команда игровых ботов, команда платформы данных, умная музыкальная команда и команда автоматического тестирования. > >Если у вас есть сильное любопытство к миру, вы не боитесь сложных проблем; вы можете мириться со всеми видами неопределенности в процессе исследования и настойчивы; вы можете находить новаторские способы решения проблем, и в то же время время иметь все детали Подотчетность для обеспечения эффективной реализации решений. Тогда, пожалуйста, отправьте нам свое резюме, соответствующие достижения в работе и позиции, которые вас интересуют. Мы приглашаем людей, которые принимают вызовы и мыслят новаторски, присоединиться к нашей команде. пожалуйста, свяжитесь с:hr@xingzhe.ai

Если у вас есть какие-либо потребности, связанные с безопасностью контента, игровыми ботами, платформами данных, умной музыкой и автоматическим тестированием, мы также будем рады вам помочь. Вы можете связаться:contact@xingzhe.ai