机器学习(二十七)——Q-learning, 动态规划

http://antkillerfarm.github.io/

Q-learning

Q-learning是强化学习中很重要的算法,也是最早被引入DL领域的强化学习算法,对它的研究催生了Deep Q-learning Networks。

下面用一个例子来讲述Q-learning算法。

这里写图片描述

上图中有5个房间,编号为0~4,将户外定义为编号5,房间之间通过门相连,则房间的联通关系可抽象为下图:

这里写图片描述

这里我们将每个房间称为一个state,将agent从一个房间到另一个房间称为一个action

开始时,我们将agent放置在任意房间中,并设定目标——走到户外(即房间5),则上图可变为:

这里写图片描述

这里的每条边上的数值就是reward值。Q-Learning的目标就是达到reward值最大的state。因此当agent到达户外之后,它就停留在那里了,这样的目标被称作吸收目标

如果以state为行,action为列,则上图又可转化为如下的reward矩阵:

这里写图片描述

其中,-1表示两个state之间没有action。

类似的,我们可以构建一个和R同阶的矩阵Q,来表示Q-Learning算法学到的知识。

开始时,agent对外界一无所知,所以Q可以初始化为零矩阵。

Q-Learning算法的transition rule为:

Q(s,a)=R(s,a)+γmax(Q(s̃ ,ã ))(1) (1) Q ( s , a ) = R ( s , a ) + γ max ( Q ( s ~ , a ~ ) )

其中,(s,a)表示当前的state和action,

(s̃ ,ã ) ( s ~ , a ~ )
表示下一个state和action,
0γ<1 0 ≤ γ < 1
为学习参数。这个公式也被称作 Bellman equation

Richard Ernest Bellman,1920~1984,美国应用数学家、控制论学家、数理生物学家。布鲁克林学院本科+威斯康星大学麦迪逊分校硕士+普林斯顿博士。二战期间曾在Los Alamos研究理论物理,后任职于美国智库RAND Corporation,南加州大学教授。美国艺术科学院院士,美国科学院院士。
Bellman–Ford算法的发明人之一。以他命名的奖项有Richard E. Bellman Control Heritage Award和Bellman Prize in Mathematical Biosciences。

在无监督的情况下,agent不断从一个状态转至另一状态进行探索,直到到达目标。我们将agent的每一次探索(从任意初始状态开始,经历若干action,直到到达目标状态的过程)称为一个episode

Q-Learning算法的计算步骤如下:

Step 1:给定参数 γ γ 和reward矩阵R。
Step 2:初始化Q=0。
Step 3:For each episode:

3.1 随机选择一个初始状态s。
3.2 若未达到目标状态,则:

(1)在当前s的所有action中,随机选择一个行为a。
(2)利用a,得到下一个状态 s̃  s ~
(3)利用公式1,计算 Q(s,a) Q ( s , a )
(4)令 s=s̃  s = s ~

由马尔可夫过程的性质(参见《机器学习(十六、二十)》)可知,Q矩阵最终会趋于一个极限,如下所示:

这里写图片描述

上面的矩阵可用下图表示:

这里写图片描述

显然,沿着Q值最大的边走,就是这个探索问题的最佳答案。(如上图红线所示)即:

π(s)=argmaxa(Q(s,a)) π ( s ) = arg ⁡ max a ( Q ( s , a ) )

参考:

http://blog.csdn.net/itplus/article/details/9361915

一个Q-learning算法的简明教程

http://blog.csdn.net/young_gy/article/details/73485518

强化学习之Q-learning简介

Markov Decision Process

上边Q-Learning的例子中,由于action能够唯一确定状态的变换,因此又被称为Markov Reward Process

<,,,γ> < S , P , R , γ >
<script type="math/tex; mode=display" id="MathJax-Element-128"><\mathcal{S},\mathcal{P},\mathcal{R},\gamma></script>

这个四元组依次代表:states、state transition probability matrix、reward function、discount factor。

实际中,执行特定的动作并不一定能得到特定的状态。

这里写图片描述

比如上图中,在状态 S0 S 0 ,执行 a0 a 0 ,只有0.5的机会,会到达 S2 S 2 。这也就是之前提到过的MDP。

标准MDP中的Bellman equation可改为如下形式:

v=+γv v = R + γ P v

其中, , P , R 均为已知。

这里的Bellman equation是线性方程,它的直接解法如下:

(Iγ)v= ( I − γ P ) v = R

v=(Iγ)1 v = ( I − γ P ) − 1 R

然而这个方法的复杂度是 O(n3) O ( n 3 ) (n是状态的个数),这对于大的MDP来说,并不好用。这种情况下,常用的解法有:Dynamic programming(动态规划)、Monte-Carlo evaluation和Temporal-Difference learning。

由于MDP对于RL任务进行了Markov假设,这属于一种建模行为,因此它也被归为一种model-based learning的算法。

MDP的扩展主要包括:

a) Observation部分可见的情况下,agent state environment state,这时一般叫做partially observable Markov decision process(POMDP)。

b) Infinite and continuous MDP

c) Undiscounted, average reward MDP

扩展MDP的Bellman equation都不是线性方程,没有解析解,只有迭代解。相关解法主要使用了概念图模型,这里不再详述。

动态规划

Dynamic programming(DP)用于解决那些可分解为重复子问题(overlapping subproblems)并具有最优子结构(optimal substructure)的问题。这里的programming和编程并无任何关系。

上世纪40年代,Richard Bellman最早使用动态规划这一概念表述通过遍历寻找最优决策解问题的求解过程。1953年,Richard Bellman将动态规划赋予现代意义,该领域被IEEE纳入系统分析和工程中。

除了Bellman之外,苏联的Lev Pontryagin也做出了很大的贡献,他和Bellman被并称为Optimal control之父。

Lev Semyonovich Pontryagin,1908~1988,苏联数学家。主要研究代数拓扑和微分拓扑。他14岁时,因为煤气爆炸事故成为盲人。苏联科学院院士,国际数学家联盟副主席。

最优子结构

最优子结构即可用来寻找整个问题最优解的子问题的最优解。举例来说,寻找图上某顶点到终点的最短路径,可先计算该顶点所有相邻顶点至终点的最短路径,然后以此来选择最佳整体路径,如下图所示:

这里写图片描述

一般而言,最优子结构通过如下三个步骤解决问题:

a) 将问题分解成较小的子问题;

b) 通过递归使用这三个步骤求出子问题的最优解;

c) 使用这些最优解构造初始问题的最优解。

子问题的求解是通过不断划分为更小的子问题实现的,直至我们可以在常数时间内求解。

重复子问题

这里写图片描述

重复子问题是指通过相同的子问题可以解决不同的较大问题。例如,在Fibonacci序列中,F3 = F1 + F2和F4 = F2 + F3都包含计算F2。由于计算F5需要计算F3和F4,一个比较笨的计算F5的方法可能会重复计算F2两次甚至两次以上。

为避免重复计算,可将已经得到的子问题的解保存起来,当我们要解决相同的子问题时,重用即可。该方法即所谓的缓存(memoization)

动态规划通常采用以下两种方式中的一种:

自顶向下:将问题划分为若干子问题,求解这些子问题并保存结果以免重复计算。该方法将递归和缓存结合在一起。

自下而上:先行求解所有可能用到的子问题,然后用其构造更大问题的解。该方法在节省堆栈空间和减少函数调用数量上略有优势,但有时想找出给定问题的所有子问题并不那么直观。

需要注意的是:动态规划更多的看作是一种解决问题的方法论,而非具体的数值算法,因此,很多不同领域的算法都可看做是动态规划算法的实例。参考文献中,就列出了不少这样的算法。显然,动态规划是一种迭代(Iteration)算法

由前文的描述可知,MDP正好具备overlapping subproblems和optimal substructure的特性,因此也可以通过DP求解。

在继续下文之前,推荐一波资源:

David Poole,加拿大不列颠哥伦比亚大学教授。加拿大AI协会终身成就奖(2013年)。
个人主页:
http://www.cs.ubc.ca/~poole/index.html

David Poole的主页上有很多好东西:

http://www.cs.ubc.ca/~poole/demos/

该网页上有一些RL方面的用java applet做的可视化demo。由于年代比较久远,这些demo无法在目前的浏览器上运行。所以,我对其做了一些改造,使之能够使用。相关代码参见:

https://github.com/antkillerfarm/antkillerfarm_crazy/tree/master/RL

David Poole还写了一本书《Artificial Intelligence: foundations of computational agents》,目前已经是第2版了。

其中的代码资源参见:

http://artint.info/AIPython/

从该书所用编程语言的变迁,亦可感受到Poole教授不断学习的脚步。要知道Poole教授刚进入学术界的时代(1985年前后),就连Java也还没被发明出来呢。

http://uhaweb.hartford.edu/compsci/ccli/samplep.htm

Hartford大学的这个网站也有些不错的资料,偏重RL、机器人、ML for Game等领域。

RL与DP

在继续讲述之前,我们首先来明确几个概念:

这里写图片描述

vπ v π qπ q π 的定义参见《机器学习(二十五)》。

v(s)=maxπvπ(s) v ∗ ( s ) = max π v π ( s )

q(s,a)=maxπqπ(s,a) q ∗ ( s , a ) = max π q π ( s , a )

RL领域的DP算法的主要思想是:利用value function构建搜索Good Policy的方法。这里用 v(s) v ∗ ( s ) q(s,a) q ∗ ( s , a ) 表示最优的value function。

RL DP主要包括以下算法:(为了抓住问题的本质,这里仅列出各算法最关键的Bellman equation,至于流程参照Q-learning算法即可。)

Policy Iteration

Policy Iteration包含如下两步:

Policy Evaluation:

vk+1(s)=aπ(as)(as+γsassvk(s)) v k + 1 ( s ) = ∑ a ∈ A π ( a ∣ s ) ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) )

Policy Improvement:

πk+1(s)=argmaxa(as+γsassvk(s)) π k + 1 ( s ) = arg ⁡ max a ∈ A ( R s a + γ ∑ s ′ ∈ S P s s ′ a v k ( s ′ ) )

由于 q(s,a) q ∗ ( s , a ) 对应的 v(s) v ( s ) 必是 v(s) v ∗ ( s ) ,反之亦然,因此Policy Iteration的过程通常如下所示:

这里写图片描述

这里写图片描述

如果只需要Prediction,不需要Control的话,也可以只进行Policy Evaluation,这时也被称为Iterative Policy Evaluation。

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Q-learning是一种机器学习算法,通过试错来学习最佳动作和策略。在路径规划中,Q-learning可以用来寻找最优路径。Q-learning有许多改进的方法,其中一些将在下面讨论。 首先,深度Q网络(DQN)可以用来改进Q-learning。DQN通过使用深度神经网络来学习Q值函数,使得它可以适应更复杂的动态场景和非线性问题。这种算法在许多实际的应用中都表现出了很好的效果。 其次,改进Q-learning的策略可以在路径规划中提高效率。ε-greedy策略是改进Q-learning的一种常见方式。该策略允许系统犯一些错误来探索更多的策略,同时也可以最大化总体回报。当然,策略的选择也要考虑到具体的场景,可能需要根据经验或领域知识进行调整。 此外,我们还可以使用异步Q-learning算法(AQL)来改进Q-learning。 AQL允许多个代理在同时学习相同的Q表,然后他们可以通过彼此学习的知识相互影响。这可以大大加速学习过程,特别是在动态场景中。 Q-learning可以被认为是一个独立的学习算法,它只依赖于当前状态和动作得到的奖励来训练模型。而状态价值迭代则依赖于整个状态-动作-状态转移矩阵。在路径规划中使用时,这两种算法的选择应该根据具体任务的复杂度来决定。 在实际应用中,Q-learning的优化和改进是不限于上述几种方法的,具体的实现方法可能还要结合实际情况进行调整。但是必须承认的是,Q-learning算法在路径规划中会有很好的应用前景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值