算法的核心是数学和数据结构,手动模拟一遍算法,弄懂算法的内在含义,就能从里向外给关于此算法的内容加上“华丽的言词”。
开始正文了
接触DQN后,我的想法就是Q表格更新出大量样本,紧接着使用样本训练神经网络,待其收敛后,使用神经网络替代Q。
由于这种方式很好理解,一时间,它在我脑里根深蒂固,但我发现我和刘建平刘老师的算法步骤根本对不上,我反复阅读博客,读原paper,终究不得其解,急得我满头大汗,我甚至怀疑我自己了。
下午吃完饭前,在刘老师的博客评论里找到了我的救药,原来是我没弄懂DRL的真正含义!!
老师您好!
1.目前看到DQN,这样理解对不对,拿冰球世界(PuckWorld)的例子来说,对于每一个冰球,球员到冰球用两个方向施力到达冰球
那么,DQN实际就是可以理解为神经网络,输入为球的位置,运动员位置(位置理解为状态、动作)输出为二者距离,然后反向传播减少距离这个误差
而这里的强化学习Q-Learning只是作为动态输入数据时候的一个神经网络训练方法(因为球和运动员的行为每次在变化)
2.这样是不是只要有无穷多次试验得到数据(球位置,运动员状态,运动员采取动作)然后直接使用神经网络训练,也能达到一样效果你好,理解的没问题。
关于第二点,只要有无穷多次试验得到数据(球位置,运动员状态,运动员采取动作)然后直接使用神经网络训练,肯定也是可以的,这样你就纯粹使用深度学习的思路来做了,抛弃深度强化学习使用经验回放以及边和环境交互边进行迭代的做法。
原来最开始我理解的是深度学习思想,而DRL则是,使用经验回放以及边和环境交互边进行迭代。这里的误解,是我搞不懂DQN的真正原因。
其实DQN的实现是建立在Q-Learning的Q表格收敛性、强鲁棒性以及神经网络的强拟合性基础之上的:
神经网络的强拟合性:随着训练次数的增加,神经网络会逼近特定的函数。
Q-learning的表格收敛性:我经过数学推导,当alpha factor置为1时,Q表格会随着交互次数的增加收敛为一张稳定值的表。
Q-learning的强鲁棒性:
1、当步骤选择-贪婪算法计算偏差,则视为random的一次交互,并不影响Q表格的收敛值。
2、当max_a_(s_, a_)计算偏差,则仅影响s状态之前的Q值。当神经网络再次训练时,拟合度提高,max_a_(s_, a_)被修正,则s状态之前的Q值也将重新修正,最后Q仍收敛于Q表格。
正是有了这些特性,DQN才可以一边和环境交互,一边迭代训练,而经验重放池的使用,更大大提高了数据的利用率。
这个明白之后,Nature DQN中使用两个神经网络就容易理解了。
DQN中,训练开始时,神经网络拟合偏差大,会导致Qmax计算偏差,由于Qmax和Q关联性太强,导致Q也计算偏差,紧接着Q又让Qmax也偏差...如此循环下去,收敛Q的训练次数将是巨大的。
在Nature DQN中,使用两个神经网络分别代表Q和Qmax,参数虽间隔一定的训练次数,但是保持同步更新,Qmax使用旧参数,Q使用新参数。
虽然旧参数Qmax计算偏差,但是可以保证新参数Q计算成功,这样收敛速度就提高了50%!!
DDQN的收敛优化原理也有异曲同工。
DDQN将natureDQN中Qmax最大值行动选择和最大值计算解耦,使得原本Qmax最大值选择偏差进行修正,仅留下Qmax最大值计算偏差,这样收敛速度就又提高了50%!!