学习RL(四)
Learning就是通过迭代的方法找到更接近真实值的手段。
蒙特卡洛方法
当研究的问题动态模型未知的时候,怎么做策略估计?怎么做策略的改进?
在实际应用中,经常遇到模型未知的情况,无法像上一章节讲的,通过Bellman
公式计算状态价值是根据模型(状态传递概率
思路就是既然MDP利用环境状态传递概率(State Transition Probability)
来加权计算期望,在不知道这个概率的情况下,能否利用多次采集某状态出现的时候,环境给出的奖励Reward来平均计算,作为状态价值。
解法就是通过实验,多次执行episode
,在每次的循环中,记录特定状态出现的次数以及循环结束之后所获得的奖励,最后依据大数定律,对积累起来的奖励求平均值,就当作该状态的价值。如果我们事先知道所有的可能状态(在该特定的policy下面,应该可以确定出来),那么就维护一个数组,存储每一种状态的上面的信息,最后所有状态的价值都计算出来就意味着策略评估完成了。
但是问题来了:如果一个episode持续很长时间,或者就无法结束,那么,蒙特卡洛方法这种依赖episode结束才可以获得状态价值的方法就无法应用,需要找到替代的方法来近似。
TD-learning就解决了这个问题。基于TD-Learning就衍生出一系列的方法解决这类问题。
MC Policy Evaluation and Control
- 需要循环多次
episode
, 每次episode
开始之后,第一次每一次遇到感兴趣的,记录 ,并且把Return加进来: - 完成当前的
episode
后,计算->类似于累加Reward的过程 - 然后遍历
,更新策略:
书中提到的Monte Carlo ES
,是指每一个episode
起始的状态选择是随机的,不能固定,避免有些状态永远无法被访问到。下图是书中的算法流程。
这部分也叫做MC Policy Improvement。
从给定的
参看4.6 广义策略迭代(Generalized Policy Iteration)
On-Policy and Off-Policy
TD Learning
MC方法需要走完一个完整episode才可以计算
Sarsa - State Action Reward State Action
Sarsa是on-policy TD
control。 很自然地,通过上面的TD
Learning,一边学习
重点看
Q-Learning - off-policy TD control
Q-Learning是一种off-policy的学习方法,是因为:在每次迭代的过程中,它只是学习到Optimal
Policy,但是并没有在学习过程中,根据更新了的Policy去沿用新的策略采取行动。
[Question::每次迭代之后,难道
Expected Sarsa
行动价值的更新算法如下:
Expected
Sarsa在更新的时候,考虑了所有的action,而不是单个的action的行动价值。
缺点是需要计算期望,在性能方面差。
Consider the learning algorithm that is just like Q-learning except that instead of the maximum over next state–action pairs it uses the expected value, taking into account how likely each action is under the current policy. Given the next state
, this algorithm moves deterministically in the same direction as Sarsa moves in expectation, and accordingly it is called Expected Sarsa.
Deep Q-Network
在实际应用中,遇到的问题经常是:
解决的思路是: 1. 利用生物体的回忆过往experience
replay,将数据的前后关联打散,并且在输入到学习网络之前,对数据进行平滑处理。
2. 对都会计算一个下面的损失函数会发生变化,通过stochastic
gradient decsent方法,可以找到
- 下面的算法中,
就是target action-value function,它的大小由 和 决定。 的更新方向是 - 经过
次迭代,更新 ## 参考 David Silver's video Lil'Log Sutton's Book