【OpenAI Q* 超越人类的自主系统】DQN :Q-Learning + 深度神经网络
?
强化学习介绍
机器学习是把带标签的数据训练模型,使得预测值尽可能接近真实值。
强化学习是通过和环境交互,奖励来训练模型,使得最后获取的奖励最大期望值。
在强化学习中,机器基于环境做出行为,正确的行为能够获得奖励。以获得更多奖励为目标,实现机器与环境的最优互动。
如教狗子握手的时候,如果狗子正确握手,就能得到骨头奖励,不握手就没有。如果咬了主人一口,还会受到惩罚。
长此以往,狗子为了得到更多骨头,就能学会握手这个技能。
强化学习和机器学习最大不同在于,环境未知,因为环境未知,所以我们不能通过大量数据得到决策。
只能通过和环境的交互中,不断改进策略。
强化学习的发展历史:
- 动态规划:学过数据结构与算法的人,都了解,是传统算法策略中最难的,千变万化。
- 表格方法:时序差分、Q-Learning 、SARSA
- 函数逼近:线性函数逼近、多项式函数逼近、基函数逼近
- 深度强化学习:DQN、DDPG、AlphaStar、A2C、A3C、PPO
强化学习可分为离散、连续场景。
离散场景,使用行为价值方法
离散场景:机器行为的有限的,如动作类游戏。只有向上、向下、向左、向右这 4 个动作,移动也只能一格一格地走。
可以把每个状态下的所有行为列举出来,用评论家为每个行为打分,通过选择最高分的行为实现最优互动。
因为需要评估每个行为的价值,所以这种学习方法被称为基于行为价值的方法。
基于值的方法需要根据每个行为的价值进行打分,选出价值最高的行为。
由于要穷举出所有行为,因此它只适用于离散场景(动作类游戏),无法应对连续场景。
Q-Learning 和 DQN 算法,都属于基于值的强化学习方法。
优势在于,基于行为价值的方法能实时反馈。
可以根据每个行为的价值进行打分,这个分数就相当于每个行为的实时反馈。
连续场景,使用概率分布方法
连续场景:机器的行为是连贯的,如赛车的方向盘转动角度可以在一定区间内任意取值,角度之间可以无限分割。
还有基于行为概率的方法,无需根据每个行为的价值来打分,可以很好地胜任连续场景。
基于行为概率策略的方法并不需要考虑行为的价值,而是反应调整。
机器会在训练过程中随机抽取一些行为,与环境互动。如果行为获得了奖励,就会提高选择它的概率。以后遇到同样的状态时,有更高的概率再次做出这个行为。
相反,如果未获得奖励,或者受到了惩罚,就保持或者降低该行为的概率。
经过大量训练,最终会得出连续行为的概率分布。
基于这样的原理,一个行为能获得越多奖励,被选择的概率就越大,从而实现机器和环境的最优化互动。
PPO 就是能处理连续场景的算法。
优势在于,基于策略的方法能应用连续场景上。但不能实时反馈。
实时反馈连续场景:使用概率分布 + 行为价值方法
机器在与环境互动时,难以得到实时反馈,往往要在整个回合结束后才能获得奖励。
如赢一盘棋是正向奖励,输一盘棋是负面奖励,但棋局中某一颗棋子的价值很难即时评估。
想要提高学习效率,就必须想办法提供实时反馈。
有没有办法可以在应对连续场景上的优点,和离散场景在实时反馈上的优点结合呢?
比如演员-评论家算法。
这个算法分成两半,一半是演员,另一半是评论家。
-
演员:这一半基于概率分布,策略梯度算法。它有一个神经网络,可以根据行为的概率,选出行为。
-
评论家:这一半基于行为价值,DQN 算法。它有一个神经网络,可以根据行为的价值进行打分。
将概率分布和行为价值的方法相结合:
- 由基于概率分布的策略网络在连续场景中选出行为
- 由基于行为价值的价值网络给行为提供实时反馈
概率分布网络就像写作业的学生,行为价值网络就像批改作业的老师。
二者结合,反复地写作业、改作业,对比方法,找出最好的方法。
DQN(深度 Q 网络)= 深度神经网络 + Q-Learning
DQN 算法全称 深度Q网络,以 Q-Learning 算法为基础,融合了神经网络。
因为传统Q学习,不适合处理大规模数据(连续状态空间)的问题,就可用深度神经网络来近似Q函数。
Q-Learning
Q 值表示做出一个行为后能够获得的累计奖励,越大,越应该选择。
Q 值的组成是:当前状态s下,所有行为 a 的 Q 值。
那优化目标就是,每个状态(s)下都能做出 Q 值最大的行为(a),从而实现机器与环境的最优交互。
我们会使用表格用于存储和更新Q值,是因为这种方法提供了一种直观、清晰的方式来表示和跟踪每个状态和行为组合的预期回报。
当状态和行为的数量非常庞大时,用表格储存所有数据会占用非常多的资源。
一般就会想到状态压缩,只保存与决策相关的几个最优可能来源。
但是在强化学习中,每个状态-动作对的历史信息都可能对学习最优策略至关重要,所以不能用状态压缩。
问题就是,输入状态s、行为a,怎么计算出 Q 值?
使用神经网络可以直接学习状态、行为、Q值的关系,输入状态,就能得到每个行为的Q值。
神经网络在这的功能:从存储 3 个值的排列组合,到只存储状态。
模型结构
-
现在的状态(St):
- 想象你在一个房间里(这就是现在的状态St),你有几个门可以选择出去(这些门是你可以采取的动作A)。
-
Q网络:
- Q网络就像一个超级计算机,它能告诉你选择每扇门的好处是什么(这就是Q(St, A),每个动作的预期奖励)。
-
选择动作和获得奖励(R):
- 根据Q网络的建议,你选择了一扇门并通过它(这就是你的动作A),然后你可能会找到一些糖果(这是你的奖励R)。
-
下一个状态(St+1):
- 通过门之后,你来到了另一个房间(这就是下一个状态St+1)。
-
target Q网络:
- 这里有另一个类似的超级计算机,它叫做target Q网络。它会计算在新房间里,选择下一扇门的好处,帮助你决定下一次应该选择哪扇门。
-
更新Q网络(loss):
- 你告诉第一个超级计算机你找到的糖果和第二个超级计算机的建议。第一个超级计算机会用这些信息来更新自己,变得更聪明,以便下次能给出更好的建议。
在这个过程中,Q网络不断学习和更新,目的是帮助你在这个房间的世界里找到更多的糖果。
每次你选择了一个动作并看到结果,Q网络都会变得更好,帮助你做出更好的选择。
损失函数
损失函数采用时序差分来,比较两个连续时间步的 Q 值来计算误差,并将这个误差用于更新神经网络的权重。
- DQN的损失函数用来衡量我们的预测(比如猜测)和实际发生的事情之间的差距。
在DQN中,损失函数特别关注的是预测的奖励(我们认为采取某个动作能得到多少好处)和实际得到的奖励(实际采取动作后得到的好处)之间的差别。
损失函数更新规则:
经验回放
探索策略
目标网络
算法步骤
DQN 优化
双 DQN
Dueling DQN
噪声网络
优先级经验回放
OpenAI Q* :超越人类的自主系统
OpenAI在11月22号,给公司人员发了一封内部信,承认了 Q*,并将这个项目描述为 “超越人类的自主系统”。
Q* 是在搞 过程监督,通过奖励推理的每个正确步骤。
而不仅仅是结果监督,奖励正确的最终答案。
Q* 是 Q-learning 和 A* (可能)的组合,能大幅度提升推理能力,用于解决数学中高难度问题。
openai研究 Q-learning 的成果:https://noambrown.github.io。
Q-learning 需要大量的探索(左图二基本遍历完了),A* (左图三只遍历了一部分)。
Q* 结合了双方的优点(左图四):
- 更高效选择策略:高效地学习最优策略,并且可以用于部分可观察的环境
- 自我修剪:评估并去除其模型中不必要的部分,以提高效率和决策的过程,类似于一个人反思自己的思想和行为,实现自我提升。
- 迁移学习:使 Q-learning 模型在一个领域受过训练后能够将其知识应用于不同但相关的领域的技术,比如会开摩托,学习自行车就很容易
- 创造和不可知能力:在Q-learning框架中实现元学习可以使人工智能学会如何学习,这是一种自省创造性解决问题,提出以前没有考虑过的新颖的解决方案,如破解密码系统或发明新的数学方法。
最强的是不可知能力,成功破解了现代加密算法 AES,但是不可知。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!