前面两篇文章介绍了如何使用近似函数,而不是“查表”的方法找到最优策略,但是遇到了一个问题,就是在使用非线性近似函数,比如神经网络的时候,大多数情况是不收敛的。这篇文章就是来解决这个问题的。这里用到的DQN(Deep Q-Learning)方法实际上在之前的文章中也已经介绍过了。
1. 批方法Batch Methods
前面提到的方法都是基于数据流的,也就是说每走一步,就更新一下参数然后就丢掉了这一步的数据了。Batch Methods 就跟监督学习中用到的一样,集中某一个时段的数据为一个批次集中训练。这一批次的数据集合我们叫一段经历(Experience)
同样的,假设存在一个V函数近似
经历D:<状态,价值>
其中1,2,3..T 是1到T这段时间的经历。
同样使用最小平方差(Least Squares)算法要求找到参数w,使得下式值最小:
这就相当于经历重现(记忆库)(Experience Replay),把一段时期内的经历重新过一遍,更新参数,与监督学习使用的方法一样这里通常使用随机梯度下降(Stochastic Gradient Descent)的方法:
重复下面两个步骤:
- 第一步: 从经历D中随机抽取一组数据
- 第二步:使用随机梯度下降的方法
最终收敛到了最小平方差
2. 批方法应用在DQN中
前面文章中提到了,Q-Learning,使用了两大法宝克服使用神经网路作为近似函数训练的不收敛问题:Experience Replay(经历重现)和Fixed-Q-Target(固定Q目标),具体过程可以阅读AI学习笔记——深度Q-Learning(Deep Q-Learing(DQN))
DQN的要点如下
依据Ɛ-greedy执行策略产生t时刻的行为;
将大量经历数据(例如百万级的)以 (st,at,rt+1,st+1)存储在内存里,作为D大块;
从D大块中随机抽取小块(例如64个样本数据)(s,a,r,s')数据
维护两个神经网络DQN1,DQN2,一个网络固定参数专门用来产生目标值,目标值相当于标签数据。另一个网络专门用来评估策略,更新参数。
优化关于Q网络和Q目标值之间的最小平方差:
随机从Experience Replay 中抽取数据进行学习打破了状态之间的联系,同时暂时固定一个神经网络的参数而不是从正在更新参数的网络中获取目标值,这样进一步增加了算法的稳定性。
3. 批方法直接计算线性近似函数
如果近似函数是线性的,最优参数w是可以直接计算出来的,因为实际上就是求最小平方差(Least Square)等于零的线性算式,具体过程如下:
对于MC,TD,和TD(λ) 都可以直接计算w,对应的方法即使LSMC,LSTD,和LSTD(λ)
最后总结一下LSMC 和LSTD的收敛性:
Congratulations @hongtao! You received a personal award!
Click here to view your Board of Honor
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit