RL-赵-(八)-Value-Based04:Deep Q-learning【两网络:固定T,更新M,定期将M的参数赋给T】【经验池】【目标:最优化网络参数->使得通过网络计算出的q是最优的】Deep Q-learning算法又被称为deep Q-network (DQN):最早的一个和最成功的一个将深度神经网络算法引入到强化学习中;神经网络的角色从本质上来说就是一个非线性函数approximator;与下面的算法不同,是由于训练一个网络的方式;这个算法是最早的也是最成功的一个把深度神经网络引入到强化学习的一个算法。当然它不是最早的一个,因为在它之前已经有人把神经网络引入到强化学习当中,但是并不是那么成功。Deep Q-learning取得成功主要是在应用和方法这两个点上:在应用上它取得了非常好的效果,就是在一系列的游戏的控制上已经达到了人类控制的水平;然后在方法上它也使用了一些关键的技术,那这些技术在后边很多方法当中也被广泛地使用;在我们介绍Deep Q-learning之前我想先澄清一个问题,什么问题呢?有的同学可能会说刚才我们不是已经介绍了Q-learning with function approximation吗? 那我为什么不能直接用Q-learning with function approximation这个算法呢?为什么还需要再去介绍一个Deep Q-learning呢?就是因为如下图的神经网络,参数是www,输入是sss和aaa,,然后输出是q^\hat{q}q^。其实我们用这个式子也是可以的这时候我需要对神经网络这个“值函数”进行非常底层的运算,我要计算出来它的梯度然后我要去直接赋值,然后对它的参数进行更新迭代。但是现在神经网络的工具包已经非常的成熟了,对我们很多人而言它就是一个黑盒,把数据给送进去它能够选择非常合适的参数和非常底层的算法去做很好的训练。所以从这个角度来说,我们不再会用这种这么底层的方法来人工计算迭代,而是会用我们接下来所介绍的Deep Q-learning的方法。我要训练神经网络我就需要一个,loss function或者我们叫objective function。一、Deep Q-learning损失函数Deep Q-learning旨在最小化目标函数/损失函数:J(w)=E[(R+γmaxa∈A(S′)q^(S′,a,w)−q^(S,A,w))2]\begin{aligned} J(w)=\mathbb{E}\left[\left(R+\gamma\max_{a\in\mathcal{A}(S')}\hat{q}(S',a,w)-\hat{q}(S,A,w)\right)^2\right] \end{aligned}J(w)=E[(R+γa∈A(S′)maxq^(S′,a,w)−q^(S,A,w))2]其中(S,A,R,S′)(S,A,R,S^{\prime})(S,A,R,S′)是随机变量。Deep Q-learning的损失函数实际上就是:Bellman optimality error,因为:q(s,a)=E[Rt+1+γmaxa∈A(St+1)q(St+1,a)∣St=s,At=a],∀s,aq(s,a)=\mathbb{E}\left[\left.R_{t+1}+\gamma\max_{a\in\mathcal{A}(S_{t+1})}q(S_{t+1},a)\right|S_t=s,A_t=a\right],\quad\forall s,aq(s,a)=E
阅读完成 · 觉得有帮助?