气温,一份从代码动身的强化学习Q-Learning入门教程,请笑纳!,民生

本文由机器之心编译(ID:almosthuman2014)


强化学习(RL)


强化学习是机器学习的一个重要范畴,其间智能体经过对状况的感知、对举动的挑选以及承受奖赏和环境相连接。在每一步,智能体都要调查状况、挑选并履行一个举动,这会改动它的状况并发作一个奖赏。


马尔科夫决议计划进程(MDP)


咱们即将处理「forest fire」的马尔科夫决议计划问题,这个在 python 的 MDP 工具箱(http://pymdptoolbox.readthedocs.io/en/latest/api/example.html)中是能够看到的。


森林由两种举动来办理:「等候」和「采伐」。咱们每年做出一个举动,首要方针是为野生动物保护一片陈旧的森林,非必须方针是砍木挣钱。每年都会以 p 的概率发作森林火灾(森林正常生长的概率便是 1-p)。



咱们将马尔科夫决议计划进程记为 (S, A,mu5362 P, R, ),其间:


  • S 是有限状况空间:依照树龄分为三类:0—20 年,21—40 年,大于 40 年

  • A 是有限举动空间:「等候」和「采伐」

  • P 和 R 是转化矩阵和奖赏矩阵,它们的闭合方法简略表达出来

  • 是表明长时刻奖赏和短期奖赏之间的差异的扣头因子

  • 战略是在给定的当时状况下动作的平稳散布(马尔可夫性)


方针便是找到在不了解任何马尔科夫动态特性的状况下来寻觅马尔科夫决议计划进程的最优战略*。需求留意的是,假如咱们具有这种常识,像最有价值迭代这种算法就能够找到最优战略。


def optimal_value_iteration(mdp, V0, num_iterations, epsilon=0.0001):
   V = np.zeros((num_iterations+1, mdp.S))
   V[0][:] = np.ones(mdp.S)*V0
   X = np.zeros((num_iterations+1, mdp.A, mdp.S))
   star = np.zeros((num_iterations+1,mdp.S))
   for k in ra老湿影nge(num_iterations):
       for s in range(mdp.S):
           for a in range(mdp.A):
               X[k+1][a][s] = mdp.R[a][s] + mdp.discount*np.sum(mdp.P[a][s].dot(V[k]机车界妖精女王))
           star[k+1][s] = (np.argmax(X[k+簿本五颜六色1,:,s]))
           V[k+1][s] = np.max(X[k+1,:,s])

       if (np.max(V[k+1]-V[k])-np.min寒窑赋原文及翻译(V[k+1]-V[k])) < epsilon:
           V[k+1:] = V[k+1]
           气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生star[k+1:] = star[k+1]
           X[k+1:] = X[k+1]
           break
       else: pass

   return star, V, X


    


这儿的最优战略是适当契合直觉的,便是比及森林到达最老的树龄再采伐,由于咱们把树龄最老的时分的采伐奖赏设置成了其生长进程中的 5 倍(r1=10,r2=50)。


Q-LEARNING


Q-Learning 中战略()的质量函数,它将任何一个状况动作组合(s,a)和在调查状况 s 下经过挑选举动 a 而得到的希望堆集扣头未来奖赏映射在一起。


Q-Leraning 被称为「没有模型」,这意味着它不会测验为马尔科夫决议计划进程的动态特性建模,它直接估量每个状况下每个动作的 Q 值。然后能够经过挑选每个状况具有最高 Q 值的动作来良木一夕制作战略。


假如智能体能够以无限多的次数拜访状况—举动对,那么 Q-Learning 将会收敛到最优的 Q 函数 [1]。


相同,咱们也不会深化评论 Q-Learning 的细节。假如你对它不太熟悉,这儿有 Siraj Raval 的解说视频。




下面我气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生们将展现 Q-Learning 的 Python 完成。请留意,这儿所拥的学习率(alpha)遵从 [3] 的成果,运用 w=0.8 的多项式。


这儿用到的探究战略(-greedy)在后面会有细节介绍。


def q_learning(mdp, num_episodes, T_max, epsilon=0.01):
   Q = np.zeros((mdp.S, mdp.A))
   episode_rewards = np.zeros(num_episodes)
   policy = np.ones(mdp.S)
   V = np.zeros((num_episodes, mdp.S))
   N = np.zeros((mdp.S, mdp.A))
   for i_episode in range(张文友num_episodes):
       # epsilon greedy exploration
       greedy_probs = epsilon_greedy_exploration(Q, epsilon, mdp.A)
  &nbs张思旋p;    state = np.random.choice(np.arange(mdp.S))
       for t in range(气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生T_max):
           # epsilon greedy exploration
           action_probs = greedy_probs(state)
           action = np.random.choice(np.arange(len(action_probs)), p=action_probs)
           next_state, reward = playtransition(mdp, state, action)
           episode_rewards[i_episode] += reward
           N[state, action] += 1
           alpha = 1/(t+1)**阮忠元与黄家驹对对比0.8
           best_next_action = np.argmax(Q[next_state])    
           td_target = reward + mdp.di凌小松scount * Q[next_state][best_next_action]
           td_delta = td_target - Q[state][action]
           Q[state][action] += alpha * td_delta
           state = next_state
       V[i_episode,:] = Q.max(axis=1)
       policy = Q.argmax(axis=1)

   return V, policy, episode_rewards, N


     


Exploration/Exploitation 权衡


接连学习算法会涉及到一个根本的挑选舔奶揉胸gif动态图:


  • Exploitation: 在现在现已给定的信息下做出最佳挑选

  • Exploration: 经过做出其他挑选搜集更多的信息


成功的平衡 exploration 和 exploitation 对智能体的学习功能有着重要的影响。太多的 exploration 会阻挠智能体最大化短期奖赏,由于所毒贩陶静选的 exploration 举动或许导致来自环境的不良奖赏。另一方面,在不完全的常识中 exploiting 会阻挠智能体最大化长时刻奖赏,由于所选的 exploiting 举动或许一向不是最优的。


-greedy exploration 战略


这是一个很朴素的 exploration 战略:在每一步都以概率 挑选随机的动作。


这也许是最常用的、也是最简略的 exploration 战略。在许多完成中,都被设置为随时刻衰减,可是在一些比如徐才厚老婆中,也被设置为定值。


def epsilon_greedy_exploration(Q, epsilon, num_actions):
   def policy_ex气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生p(state):
       probs = np.ones(num_actions, dtype=float) * epsilon / num_actions
       best_action = np.argm气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生ax(Q[state])
       probs[best_action] += (1.0 - epsilon)
       return probs
   return policy_exp


「达观面临不确定性」的 exploration 战略


这个概念初次在随机多臂赌博机(SMAB)环境中被初次提出,这是一个陈旧的决议计划进程,为了最大化机器给出的希望扣头奖赏,赌徒在每一步都要决议摇摆哪一个机器。


赌徒面临着一个 exploration/exploitation 权衡,运用具有最高均匀奖赏的机器或许探究其他体现并不是很好的机器以鵷鶵得到更高的奖赏。


SMAB 和 Q-Learning 中的 exploration 问题很类似。


  • Exploitation: 在给定的状况下挑选具有最高 Q 值的动作

  • Exploration: 探究更多的动作(挑选没有被满足得拜访或许从未被拜访的动作)



「面临不确定性的达观」(OFU)状况:不管什么时分,咱们都对老虎机的输出成果是不确定的,所以咱们估量环境是最好的,然后挑选最好的老虎机。


OFU 背面的直觉是:


  • 假如咱们处于最好的境况:OFU 会挑选最佳的老虎机(没有惋惜)

  • 假如我么不在最好摩登情书在线阅览全文的境况中:不确定性会削减(最佳)


最著名的 OFU床第 算法之一是 UCB(置信区上界)[2]。咱们依照下面的办法将它用在 Q-learning 中。


界说:


  • Q(s, a): 状况 s 下选用动作 a 的 Q 值

  • N(t, s, a):在时刻 t,动作 a 在状况 s 被挑选的次数


智能体的方针是:Argmax {Q(s, a)/ a ∈ A}。代表在状况 s 下挑选具有最大 Q 值的动作。可是时刻 t 的实践 Q(s, a) 是不知道的。


咱们有:Q(s,a) = <Q(t, s, a)> + (Q(s,a) − <Q(t, s, a)>),<Q(t, s, a)>是时刻 t 估量的 Q 值。(Q(s,a) − <Q(t, s, a)>) 对应的是差错项,咱们能够构成鸿沟并运用 OFU。


Hoeffding 不等式是约束这个差错的一种方法,咱们能够证明:

最优战略能够被写成:


Argmax {Q+(t, s, a)/ a ∈ A}

其间 ≥ 0 调理 exploration。当=0 的时分,该战略只是运用曩昔的估量(遵从 leader 战略)。


这个规模是该范畴最常用的。还有许多其他改善这个规模的作业(UCB-V、UCB、KL-UCB、Bayes-UCB、BESA 等)。


这儿是咱们对经典 UCB exploration 战略的完成,以及它在 Q-Learning 中运用的成果。


def UCB_exploration(Q, num_actions, beta=1):
   def UCB_exp(state, N, t):
       probs = np.zeros(num_actions, dtype=float)
       Q_ = Q[state,:]/max(Q[state,:]) + np.sqrt(beta*np.log(t+1)/(2*N[state]))
&nb气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生sp;      best_act老陈敬说ion = Q_.argmax()
       probs[best_action] = 1
       return probs
   史国良害了毕福剑;return UCB_exp



UCB exploration 好像能廖祥政够快速地到达很高的奖赏,但是练习进程仍是遭到前期 exploration 的搅扰,关于更杂乱的马尔科夫决议计划进程而言,这是有优势的,由于智能体能够免于非最优的处理方案。


咱们来愈加细心地比较这两种战略。



引荐阅览

尖端AI【数据】资源送给你!

程序员给银行植入病毒,盗取 718 万,被判 10 年半!

45张让你又笑又哭的趣图,有没有戳气温,一份从代码启航的强化学习Q-Learning入门教程,请笑纳!,民生中你?

有了GAN,能够自在的对人脸相片进行涂鸦修改啦!

一张大标准美女图,居然推进了图片算法的前进。。。

喜爱就点击“在看”吧!
点击展开全文

上一篇:

下一篇:

相关推荐