炼数成金 门户 商业智能 自然语言处理 查看内容

HFL技术分享 #5 | 强化学习基础(下)

2019-5-31 15:19| 发布者: 炼数成金_小数| 查看: 16380| 评论: 0|原作者: Jeff|来自: 哈工大讯飞联合实验室

摘要: 我们知道,对于使用而言,我们需要将公式以及思路转换成计算机所能够处理的形式,比如迭代形式。在这里我们就需要借鉴贝尔曼方程的思想,对强化学习的相关公式进行推导,使得它可以变换为计算机可处理的迭代形式。我 ...

网络 算法 模型 神经网络 强化学习 函数

05 贝尔曼方程
我们知道,对于使用而言,我们需要将公式以及思路转换成计算机所能够处理的形式,比如迭代形式。在这里我们就需要借鉴贝尔曼方程的思想,对强化学习的相关公式进行推导,使得它可以变换为计算机可处理的迭代形式。
首先,值函数的定义形式如图12所示:                          

图 12:值函数定义形式图

我们首先使用动作值函数的思路进行逐级推导,如图13所示,其中Rt为t时刻的即时回报,Gt为t时刻的回报,包括即时回报和带有未来时刻折扣因子的回报,λ是折扣因子:

图 13:动作值函数推导图

最终经过推导,我们得出动作值函数Q的表示形式,如图14所示:

图 14:动作值函数推导图

类似地,我们暂且抛弃动作的概念,直接使用值函数进行推导,如图15所示:

图 15:值函数推导图

最终,我们比对图14与图15的结果,发现,动作值函数推导的结论与单纯使用值函数推导的结论完全一致,在一个状态下,随机挑选动作,到达下一个状态,所有可能的动作累加就与一个状态跳转下一个状态的值是相同的,如图16所示:

图 16:强化学习公式示例图

06 策略迭代与值迭代
我们在上篇已经说到了MDP可以表示成一个四元组,我们的最优策略求解就是围绕着这个四元组进行的,如果我们知道该四元组,就可称这样的模型为“模型已知”,对这种已知所有环境因素的学习称为“有模型学习”。那么,同理与之对应的就是“无模型学习”,因为环境因素我们是无从得知的,所以我们需要一种迭代方式,策略迭代与值迭代就是为了应对这种状况。
策略迭代过程如图17所示:                         

图 17:策略迭代过程示例图

值迭代过程与策略迭代过程流程类似,但有一处不同,如图18所示:

图 18:策略迭代过程示例图

两者有一定的区别与联系。策略迭代的第二步policy evaluation与值迭代的第二步finding optimal value function十分相似,除了后者用了max操作,前者没有max,因此后者可以得出optimal value function, 而前者不能。策略迭代的收敛速度更快一些,因为策略迭代只需按照当前既定策略求出相应值函数即可,而值迭代需要求出较大的值函数,所需求解过程更多,耗时更长。在状态空间较小时,较好选用策略迭代;当状态空间较大时,值迭代的计算量更小一些。

07 常见强化学习使用算法
蒙特卡洛
为什么要使用蒙特卡洛方法?
DP方法的不足在于:需要环境模型,即状态转移概率Psa,状态值函数的估计是自举的(bootstrapping),即当前状态值函数的更新依赖于已知的其他状态值函数。

蒙特卡洛方法特点?
可以从经验中学习不需要环境模型;状态值函数的估计是相互独立的;能用于episode tasks。

蒙特卡洛计算方法?
蒙特卡洛的经验其实就是训练样本。比如在初始状态s,遵循策略π,最终获得了总回报R,这就是一个样本。如果我们有许多这样的样本,就可以估计在状态s下,遵循策略π的期望回报,也就是状态值函数Vπ(s)了。蒙特卡洛方法就是依靠样本的平均回报来解决增强学习问题的。

TD-Learning的思想是什么?
TD-Learning就是时间差分学习。其中,Rt 是每个episode结束后获得的实际累积回报,α是学习率,这个式子的直观的理解就是用实际累积回报Rt 。Rt 作为状态值函数V(st) 的估计值。具体做法是对每个episode,考察实验中st的实际累积回报Rt 和当前估计V(st) 的偏差值,并用该偏差值乘以学习率来更新得到V(st) 的新估值。

Sarsa算法
与前面DP方法稍微有些区别的是,sarsa算法估计的是动作值函数(Q函数)而非状态值函数。也就是说,我们估计的是策略π下,任意状态s上所有可执行的动作a的动作值函数Qπ(s,a) ,Q函数同样可以利用TD Prediction算法估计。如下就是一个状态-动作对序列的片段及相应的回报值。如图19所示:

图 19:Sarsa算法图示

Q-learning算法
在sarsa算法中,选择动作时遵循的策略和更新动作值函数时遵循的策略是相同的,即ϵ−greedy的策略,而在接下来介绍的Q-learning中,动作值函数更新则不同于选取动作时遵循的策略,这种方式称为离策略(Off-Policy) 。Q-learning的动作值函数更新公式如下:

可以看到,Q-learning与sarsa算法较大的不同在于更新Q值的时候,直接使用了较大的Q(st+1,a) 值——相当于采用了 Q(st+1,a) 值较大的动作,并且与当前执行的策略,即选取动作at时采用的策略无关。
部分基于Q-learning学习小程序代码示例
图20为强化学习代码小程序示例:

图 20:强化学习代码小程序示例

具体参考算法流程如图21所示:

图 21:强化学习代码小程序流程图示例

08DQN简介
什么是DQN?
之前我们所谈论到的强化学习方法都是比较传统的方式,蒙特卡洛、TD-learning、sarsa算法、Q-learning等等。而如今, 随着机器学习在日常生活中的各种应用, 各种机器学习方法也在融汇,合并,升级。我们今天所要探讨的强化学习则是这么一种融合了神经网络和Q-learning的方法,名字叫做Deep Q Network(DQN)。 

这种新型结构是为什么被提出来呢?
原来,传统的表格形式的强化学习有这样一个瓶颈,那就是Q值表,按照传统方法,我们使用表格来存储每一个状态 state, 和在这个 state 每个行为 action 所拥有的 Q 值,如图22所示:

图 22:Q值表常见形式

这样做虽然简单直观,但状态有限且较少时实现简单,当问题实在太复杂时,状态可以比天上的星星还多(比如下围棋)。如果全用表格来存储它们,恐怕我们的计算机有再大的内存都不够,而且每次在这么大的表格中搜索对应的状态也是一件很耗时的事。
因此,我们与神经网络结合,我们可以将状态和动作当成神经网络的输入,然后经过神经网络分析后得到动作的 Q 值,这样我们就没必要在表格中记录 Q 值, 而是直接使用神经网络生成 Q 值;我们也能只输入状态值,输出所有的动作值,然后按照 Q learning 的原则,直接选择拥有较大值的动作当做下一步要做的动作。

DQN是如何计算的呢?
我们需要 a1, a2 正确的Q值,这个 Q 值我们就用之前在 Q learning 中的 Q 现实来代替。同样我们还需要一个 Q 估计来实现神经网络的更新。 所以神经网络的参数就是老的 NN 参数加学习率 alpha 乘以 Q 现实和 Q 估计的差距。我们整理一下,如图23所示:

图 23:DQN计算示例

DQN中网络更新方法如何?
我们通过 NN 预测出Q(s2, a1) 和 Q(s2,a2) 的值, 这就是 Q 估计。然后我们选取 Q 估计中较大值的动作来换取环境中的奖励 reward。而 Q 现实中也包含从神经网络分析出来的两个 Q 估计值,不过这个 Q 估计是针对于下一步在 s’的估计。最后再通过刚刚所说的算法更新神经网络中的参数。

图 24:DQN更新示例

09强化学习面对的问题与应用方向
强化学习面临一些什么问题?
强化学习目前面临一定的问题,强化学习需要大量的数据,与此同时,需要与那些能够获取模拟数据的领域(比如游戏和机器人)建立联系。
从论文中汲取养分并将它们应用于实际同样不易,即便是对于强化学习的研究者而言,要重复研究结果依然十分困难,更别说是一般的数据科学家了;而随着机器学习被部署到关键性的任务中,可重复性以及预估错误的能力就变得不可或缺。

因此,至少就现在而言,对于需要持续控制的关键任务应用而言,强化学习可能并不是理想选择。尽管如此,还是有不少有趣的应用和产品要依赖于强化学习。由强化学习帮忙实现的序列决策自动化能给包括个性化、明确界定任务自动化在内的许多设置带来益处。

强化学习应用方向如何?
在机器人和工业自动化中:能耗降低与工业自动化;数据科学和机器学习:搭建、调整神经网络架构的工具;教育和培训:全新培训系统,系统将能够根据学生需求来对指导和材料进行调整;文本、语音和对话系统:交互媒介;媒体和广告:跨渠道营销优化和在线广告展示的实时竞价系统;金融:摩根大通的一套用于交易执行的系统;依托于RL,这套系统被用于以可能的最快速度和较佳价格来执行交易等。

总结,本文尝试从基本概念出发,给大家讲解了强化学习的一般背景、具体的定义形式等,让大家对强化学习有一个初步的了解。随后,我们重点介绍马尔科夫相关知识,让大家体会强化学习的马尔科夫决策过程。我们由浅入深,深刻剖析强化学习的值函数与动作值函数的定义与形式,完成贝尔曼方程的详细推导过程,让大家对强化学习有一个比较深刻的体会。我们还介绍了目前常用的强化学习的算法以及与深度学习结合的DQN等。

本文在撰写过程中参考了强化学习的论文以及部分网络博客文献,如莫凡的强化学习讲解等,在此表示感谢!

参考文献
[1] Continuous Deep Q-Learning with Model-based Acceleration, Shixiang Gu et al., arXiv, 2016.
[2] Deep Exploration via Bootstrapped DQN, I. Osband et al., arXiv,2016. Value Iteration Networks, A. Tamar et al., arXiv,2016.
[3] Learning to Communicate to Solve Riddles with Deep Distributed Recurrent Q-Networks, J. N. Foerster et al., arXiv, 2016.
[4] Asynchronous Methods for Deep Reinforcement Learning, V. Mnih et al., arXiv, 2016.
[5] Mastering the game of Go with deep neural networks and tree search, D. Silver et al., Nature, 2016.
[6] Increasing the Action Gap: New Operators for Reinforcement Learning, M. G. Bellemare et al., AAAI, 2016.
[7] Memory-based control with recurrent neural networks, N. Heess et al., NIPS  Workshop, 2015.
[8] How to Discount Deep Reinforcement Learning: Towards New Dynamic Strategies, V. François-Lavet et al., NIPS Workshop, 2015.

声明:本文版权归原作者所有,文章收集于网络,为传播信息而发,如有侵权,请联系小编及时处理,谢谢!

欢迎加入本站公开兴趣群
商业智能与数据分析群
兴趣范围包括:各种让数据产生价值的办法,实际应用案例分享与讨论,分析工具,ETL工具,数据仓库,数据挖掘工具,报表系统等全方位知识
QQ群:81035754

鲜花

握手

雷人

路过

鸡蛋

相关阅读

最新评论

热门频道

  • 大数据
  • 商业智能
  • 量化投资
  • 科学探索
  • 创业

即将开课

 

GMT+8, 2019-6-27 04:25 , Processed in 0.153675 second(s), 25 queries .