专栏首页智能算法深度学习算法(第36期)----强化学习之时间差分学习与近似Q学习

深度学习算法(第36期)----强化学习之时间差分学习与近似Q学习

上期我们一起学习了强化学习中的马尔科夫决策过程的相关知识, 深度学习算法(第35期)----强化学习之马尔科夫决策过程 今天我们学习强化学习中的时间差分学习与Q学习的相关知识。

时间差分学习

具有离散动作的强化学习问题通常可以被建模为马尔可夫决策过程,但是智能体最初不知道转移概率是什么,并且它不知道奖励会是什么。它必须经历每一个状态和每一次转变并且至少知道一次奖励,并且如果要对转移概率进行合理的估计,就必须经历多次。

时间差分学习(TD 学习)算法与数值迭代算法非常类似,但考虑到智能体仅具有 MDP 的部分知识。一般来说,我们假设智能体最初只知道可能的状态和动作,没有更多了。智能体使用探索策略,例如,纯粹的随机策略来探索 MDP,并且随着它的发展,时间差分学习算法基于实际观察到的转换和奖励来更新状态值的估计,如下:

其中 α是学习率(比如:0.01)。 TD 学习与随机梯度下降有许多相似之处,特别是它一次处理一个样本的行为。就像 SGD 一样,只有当你逐渐降低学习率时,它才能真正收敛(否则它将在极值点震荡)。

对于每个状态S,该算法只跟踪智能体离开该状态时立即获得的平均奖励,加上它稍后得到的奖励(假设它的行为最佳)的期望。

类似地,此时的Q 学习算法是 Q 值迭代算法的改编版本,适应于转移概率和回报在初始未知的情况如下:

对于每一个状态动作对(s,a),该算法跟踪智能体在以离开状态S到动作a时获得的即时奖励平均值r,加上它稍后得到奖励的期望。由于目标策略将最优地运行,所以我们取 Q 值的最大值作为下一个状态的估计值。

以下是如何实现 Q 学习:

import numpy.random as rnd
learning_rate0 = 0.05
learning_rate_decay = 0.1
n_iterations = 20000
s = 0 # 在状态 0开始
Q = np.full((3, 3), -np.inf)  # -inf 对应着不可能的动作
for state, actions in enumerate(possible_actions):
    Q[state, actions] = 0.0  # 对于所有可能的动作初始化为 0.0
for iteration in range(n_iterations):
    a = rnd.choice(possible_actions[s])  # 随机选择动作
    sp = rnd.choice(range(3), p=T[s, a]) # 使用 T[s, a] 挑选下一状态
    reward = R[s, a, sp]
    learning_rate = learning_rate0 / (1 + iteration * learning_rate_decay)
    Q[s, a] = learning_rate * Q[s, a] + (1 - learning_rate) * (reward + discount_rate * np.max(Q[sp]))
    s = sp # 移动至下一状态

给定足够的迭代,该算法将收敛到最优 Q 值。这被称为离线策略算法,因为正在训练的策略不是正在执行的策略。令人惊讶的是,该算法能够通过观察智能体的随机行为进行学习(好比是醉酒的猴子教你怎么打高尔夫球一样)最佳策略。我们能做得更好吗?

探索策略

当然,只有在探索策略充分探索 MDP 的情况下,Q 学习才能起作用。尽管一个纯粹的随机策略能够保证最终多次访问每一个状态和每个转换,但这却需要很长的时间去完成。因此,一个更好的选择是使用 ε 贪婪策略:在每个步骤中,它以概率ε随机地或以概率为1-ε贪婪地选择具有最高 Q 值的动作。ε 贪婪策略的优点(与完全随机策略相比)是,它将花费越来越多的时间来探索环境中有趣的部分,因为 Q 值估计越来越好,同时仍花费一些时间访问 MDP 的未知区域。以ε为很高的值(例如,1)开始,然后逐渐减小它(例如,下降到 0.05)是很常见的。

相比于依赖于探索的机会,另一种方法是鼓励探索策略来尝试它以前没有尝试过的行动。这可以作为附加于 Q 值估计的奖励,如下:

其中:

  • N计算了在状态s时选择动作a的次数
  • f是一个探索函数,例如f(q,n)=q+K/(1+n),其中K是一个超参数,它衡量智能体被吸引到未知状态的程度。

近似 Q 学习

Q 学习的主要问题是,它不能很好地扩展到具有许多状态和动作的大型(甚至中等)的 MDP。比如试着用 Q 学习来训练一个智能体去玩 Ms. Pac-Man。Ms. Pac-Man 可以吃超过 250 粒小球,每一粒都可以存在或不存在(即已经吃过)。因此,可能状态的数目大于 2 的 250 次幂,约等于 10 的 75 次幂(并且这是考虑颗粒的可能状态)。这比在可观测的宇宙中的原子要多得多,所以你绝对无法追踪每一个 Q 值的估计值。

解决方案是找到一个函数,使用可管理数量的参数来近似 Q 值。这被称为近似 Q 学习。多年来,人们都是手工在状态中提取并线性组合特征(例如,最近的小鬼的距离,它们的方向等)来估计 Q 值,但是 DeepMind 表明使用深度神经网络可以工作得更好,特别是对于复杂的问题。它不需要任何特征工程。用于估计 Q 值的 DNN 被称为深度 Q 网络(DQN),并且使用近似 Q 学习的 DQN 被称为深度 Q 学习。

好了,至此我们大致了解了时间差分学习和近似Q学习的一些知识,下期我们将使用深度 Q 学习来训练一个智能体去玩 Ms. Pac-Man,就像 DeepMind 在 2013年所做的那样。代码可以很容易地调整,调整后学习去玩大多数 Atari 游戏的效果都相当好。在大多数动作游戏中,它可以达到超人的技能,但它在长时运行的游戏中却不太好。


智能算法,与您携手,沉淀自己,引领AI!

本文分享自微信公众号 - 智能算法(AI_Algorithm),作者:左右Shawn

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 25个机器学习面试题,你都会吗?

    许多数据科学家主要是从一个数据从业者的角度来研究机器学习(ML)。因此,关于机器学习,我们应该尽可能多地把注意力放在新的程序包、框架、技术等方面,而不是关于核心...

    智能算法
  • SVM的R语言实战

    在R中,可以使用e1071软件包所提供的各种函数来完成基于支持向量机的数据分析与挖掘任务。请在使用相关函数之前,安装并正确引用e1071包。该包中最重要的一个函...

    智能算法
  • 机器人算法专题介绍

    算法 算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规...

    智能算法
  • 独家社招信息-微博Feed流推荐算法工程师

    3. 熟悉特征工程,召回算法,推荐算法,CTR预估模型(LR,FM,GBDT,Wide&deep等)

    石晓文
  • 1.0初识机器学习

    玩蛇的胖纸
  • 强烈推荐 | 算法/深度学习/NLP面试笔记

    春招的气息已然来了,不知道小伙伴们准备的咋样了。今日在github上发现了个巨棒的总结笔记,总结了笔者的2018 2019 校招 春招 秋招 算法 机器学习 深...

    zenRRan
  • [深度概念]·深度学习术语表(一)

    对于刚开始学习深度学习的新人来说,深度学习术语掌握起来会非常困难。这篇深度学习词汇表包含了一些深度学习的常用术语,以帮助读者深入了解特定主题。

    小宋是呢
  • 机器人也会造假、有偏见?原因在这

    镁客网
  • 深度学习词汇表(一)

    对于刚开始学习深度学习的新人来说,深度学习术语掌握起来会非常困难。这篇深度学习词汇表包含了一些深度学习的常用术语,以帮助读者深入了解特定主题。

    AiTechYun
  • 警惕!机器学习入门阶段易犯的5个错误

    怎样进入机器学习领域没有定式。我们的学习方式都有些许不同,学习的目标也因人而异。 但一个共同的目标就是要能尽快上手。如果这也是你的目标,那么这篇文章为你列举了程...

    CDA数据分析师

扫码关注云+社区

领取腾讯云代金券