强化学习-无模型控制(上)
2016-06-05 20:00
330 查看
之前的一章了解到了如何在无模型的环境下进行各个状态转移概率以及价值函数的估计。但是仍留有一个疑问,在有模型为前提的动态规划算法中,各个状态的转移概率已知,从而可以通过尝试策略组合找出最优策略。但是实际上我们的蒙特卡洛方法和时间差分方法都只估计除了转移概率和价值函数,并没有对于策略的优化及其方法做出更多的考虑。这也就是我们需要深入讨论的问题——如何优化既有的控制策略。
粗略来说,基于无模型控制的控制策略一般分为在线控制还有离线控制两种,其分别代表在学习的过程中就进行策略优化,抑或是充分学习了各个结点的转移概率之后再进行策略优化。
我们先来看这样一个问题:
假设这样一个场景,在状态s时,有两个动作A,B可以选择,以下是我们得到的一些经验,A−0代表执行A并获得收益0。
A-0
B-1
A-0
B-2
B-1
A-7
A-8
A-6
如果我们只知道前四项经验,我们可能会理所当然的认为选择A动作没有收益,从而偏向于在每一次状态s的时候都选择B动作,但是,这种判断并不一定是正确的。
然而,在实际的控制过程中,由于经验的数目是有限的,我们很难保证我们获得的经验数据就能够全面说明事物之间状态转换的规律了。所以,有一个思想是:我们不能完全信任我们得到的样本,在进行决策判断的时候,偶尔还是要做一个”错误”的决策,来尝试得到新的样本,这就好像是从学校到家每次都是走的同一条路,你已经习惯了走这条路并且“认为”这条路是离你家最近的,但是偶尔某一天你心血来抽从另一条小路回家,发现这条路竟然更近!我们的决策里面,正是要模拟这一过程,以探索得到最佳的答案。
其算法核心思想如下:
π(a|s)={ε/m+1−εifa∗=argmaxa∈AQ(s,a)ε/motherwise
此时,程序将以1−ε的概率选择当前经验收益最高的动作,以ε的概率随机在所有备选动作之中进行选择。
之后,如果新的策略收益更高,就接受新的策略,并作为当前最高期望来比较。
我们知道,在一般的时间差分算法中,状态的更新是这样的:
V(st)←V(st)+γ(Rt+1+αV(st+1)−V(st))
而在TD(λ)中,状态更新就变成了:
V(st)←V(st)+wt+nγ(Rt+n+αV(st+n)−V(st))
其中wt+n表示世代权值,世代距离更新时态越远权值越低。
粗略来说,基于无模型控制的控制策略一般分为在线控制还有离线控制两种,其分别代表在学习的过程中就进行策略优化,抑或是充分学习了各个结点的转移概率之后再进行策略优化。
1.策略优化
在增强学习的控制体系里面,最基本的原理就是获得不同状态-动作对的价值函数,并在新的状态到来之时选择价值函数最高的那个状态-动作对加以执行。这样,控制问题实际上就拆解为了两个子问题:1.如何选取价值最高的状态-动作对。2.如何得到状态-动作对的价值。1.1.决策问题
我们先来讨论如何选取价值最高的状态–动作对问题,读者可能会疑问:直接选取数值最高的不就好了?但是实际上并不是这样的,偶尔我们还是需要机器做出一些“错误”的决定的。我们先来看这样一个问题:
假设这样一个场景,在状态s时,有两个动作A,B可以选择,以下是我们得到的一些经验,A−0代表执行A并获得收益0。
A-0
B-1
A-0
B-2
B-1
A-7
A-8
A-6
如果我们只知道前四项经验,我们可能会理所当然的认为选择A动作没有收益,从而偏向于在每一次状态s的时候都选择B动作,但是,这种判断并不一定是正确的。
然而,在实际的控制过程中,由于经验的数目是有限的,我们很难保证我们获得的经验数据就能够全面说明事物之间状态转换的规律了。所以,有一个思想是:我们不能完全信任我们得到的样本,在进行决策判断的时候,偶尔还是要做一个”错误”的决策,来尝试得到新的样本,这就好像是从学校到家每次都是走的同一条路,你已经习惯了走这条路并且“认为”这条路是离你家最近的,但是偶尔某一天你心血来抽从另一条小路回家,发现这条路竟然更近!我们的决策里面,正是要模拟这一过程,以探索得到最佳的答案。
1.1.1.ε-贪婪探索
为了寻求哪一个策略是最优控制策略,我们总是想给自己的探索留一些余地,正如之前的例子,如果根据经验,擅自把策略选择动作A的概率变为了0,那可能最终得到的就不是一个最优策略了。所以为了预防这种情况的发生,我们总是想留一个余量,好让程序有可能选择到经验上的次优解上,这个余量就是ε−贪婪中的ε系数。其算法核心思想如下:
π(a|s)={ε/m+1−εifa∗=argmaxa∈AQ(s,a)ε/motherwise
此时,程序将以1−ε的概率选择当前经验收益最高的动作,以ε的概率随机在所有备选动作之中进行选择。
之后,如果新的策略收益更高,就接受新的策略,并作为当前最高期望来比较。
1.2.价值函数的更新
价值函数的更新基本思想还是之前的文章所提到的蒙特卡洛学习以及时间差分学习的思想。在这里我想要补充一点的是前文所提到的时间差分学习只假设了一阶马尔科夫情况。即当前时态的价值只和上个时态相关。但是实际中,某个状态的影响可能会影响好几个世代,这和简单的一阶马尔科夫是相悖的。但是这个问题不难解决,只要我们把马尔科夫链加长就好了,这就是TD(λ)算法,这个λ就是我们假定的马尔科夫链长度。我们知道,在一般的时间差分算法中,状态的更新是这样的:
V(st)←V(st)+γ(Rt+1+αV(st+1)−V(st))
而在TD(λ)中,状态更新就变成了:
V(st)←V(st)+wt+nγ(Rt+n+αV(st+n)−V(st))
其中wt+n表示世代权值,世代距离更新时态越远权值越低。
相关文章推荐
- 【转载】近似动态规划与强化学习入门步骤
- 强化学习基本方法(一)
- 强化学习基本方法(二)
- 为什么说强化学习是一种人工智能的通用框架?
- Q-Learning算法学习
- Monto Carlo估计动作价值(action values)
- 强化学习基础总结(三)
- 强化学习入门学习记录
- [强化学习]区分Model-free和Model-based方法
- 解决使用OpenAI gym进行调试时抛出异常的问题
- 深度强化学习——DQN
- 强化学习基础学习系列之model-free/planning/model-base/dyna方法总结
- 强化学习基础学习系列之求解MDP问题的policy-base方法
- 强化学习基础学习系列之求解MDP问题的value-base方法
- 强化学习基础学习系列之MDP
- 强化学习基础学习系列之强化学习简介
- 阿尔法狗的秘密:人工智能中的强化学习
- TensorFlow实现估值网络(Q-learning)代码遇到的问题
- 增强学习(一)-基本概念的理解
- reinforcement learing for visual object detection - 阅读笔记