行业新闻

【RL】DQN及其各种优化算法

博主的github链接,欢迎大家来访问~:https://github.com/Sh-Zh-7

强化学习经典算法实现地址:https://github.com/Sh-Zh-7/reinforce-learning-impl

上一篇博文的末尾,我们介绍了传统QLearning的劣势——那就是需要维护一个Q表,而对于很多状态,连续动作的情况,我们Q表的大小将会爆炸性地增长。我们微小的内存必然存不下这么大的Q表。所以我们要转换我们的思路。

其实,Q表在之前的QLearning中,只是扮演了一个函数的角色——这句话怎么理解?给定动作和状态,他会给你返回一个价值。

所以我们为什么不直接建立一个函数呢? 这样我们既可以完成Q表的任务,而且也不用爆内存。可选的函数有:线性函数,决策树,最近邻,傅里叶变换,神经网络等。神经网络作为一个universal approximator,自然成了我们的首选,使用神经网络作为函数的Qlearning,就叫Deep Q-Learning(DQN)。

 

既然我们要使用神经网络,那你总要指定输入和输出吧。这里我们的输入和输出总共有两种:

  1.  给定状态和动作,输出对应的Q值,这个其实挺少用的。优点就是对于连续的动作依然能够建模
  2.  还有一种是给定状态,输出所用动作的Q值。显然这种情况就不能对连续的动作建模了

知道输入输出以后我们还得知道我们的优化目标。其实我们的优化目标和我们的QLearning一样:

我们有:

平台注册入口