神经网络与强化学习

一、DQN的神经网络是怎样一种结构?有几层?什么作用?如何实现数据的记忆?如何做一些改进

(一)问题描述:

qu1. 问题复杂度提高导致无法使用Q表记录全部状态:

       1. 对状态的维度进行压缩,解决方案之一Value Function Approximation(值函数近似),Q\left ( s,a\right )\approx f\left ( s,a\right )

       用w来表示函数f的参数,则有Q\left ( s,a\right )\approx f\left ( s,a,w\right )

       2. 高维s和低维a的函数输入问题,低维a无需进行降维,一个解决方法是只把s作为输入,Q\left ( s,a\right )\approx f\left ( s,w\right ),

       但是输出关于a的Q向量。\left [ Q\left ( s,a_{1} \right ),Q\left ( s,a_{2} \right ),...,Q\left ( s,a_{n} \right ) \right ]

       ex1. 学习Atari游戏需要输入数据图像,210*160像素,每个像素有256种选择,输出四个方向动作。

qu2. 神经网络导致的不收敛问题:

       复杂问题—— 深度结构——非线性函数逼近器(神经网络)表示Q函数——学习不稳定甚至发散。

       一个解释:比如图像的过拟合问题,用正则项来解决。

(二)方法:

1、神经网络计算q值。

      输入state和action,神经网络分析,输出q value。或者输入state,输出q value。

      DQN为例,输入经过处理的4个连续84*84图像,经过两个卷积层,两个全连接层,输出Q向量。网络的结构针对问题调整设置。

                              

                                                                                Deep Q Network (2013 NIPS)

      1、获取有标签的样本。

      神经网络的训练是一个对损失函数loss function的最优化问题,即标签和网络输出的偏差。

      如何设置标签?如何获取带标签的样本?把目标Q值作为标签,让Q值趋近于目标Q值。

      即Q网络训练的损失函数:

                                                

      确定了损失函数,即确定了获取样本点的方式。

      2、Deep Q Network 训练

                      

      通过反向传播使用梯度下降的方法来更新神经网络的参数。

      尾巴:要搞明白网络结构中forward pass,还有每一层网络的作用、如何改进。需要去学习神经网络篇。但其实学会了       也不一定能推进多少进度,这里标记为尾巴。

2、experience replay,建立记忆库。

Why:建立记忆库,随机抽取样本学习,打乱数据相关性,避免受样本分布的影响,使学习更有效率,帮助DQN收敛。

How:反复试验,存储数据。记忆库建好后,每次采用随机样本,进行梯度下降。

Function in coding:RL.store_transition 存储记忆函数,存储现在的observation,行为,奖励,下一步的observation。

     先运行两百步建立记忆库,之后每五步学习(更新策略)一次。

     通过Q-Learning获取无限量的训练样本,然后对神经网络进行训练。

 3、separate target Q-network 目标Q值定期更新而不是每步更新,从而减少相关性。

       为了实现用TensorFlow来实现DQN,比较推荐的方式是搭建两个神经网络,target_net用于预测q_target,他不会及时更新参数。eval_net用于预测q_eval ,这个神经网络拥有最新的神经网络参数。 不过这两个神经网络结构是完全一样的,只是里面的参数不一样。

How:建立两个结构相同但参数不同的神经网络,预测目标Q值(Q现实)的神经网络是很久以前的参数,预估计Q值的神经网络具备最新参数。

尾巴:相关性怎样定义,相关性为什么会造成不收敛、不稳定?

尾巴:其他的方法用来训练稳定的神经网络

参考链接:https://zhuanlan.zhihu.com/p/21421729?refer=intelligentunit DQN从入门到放弃5 深度解读DQN算法

参考链接:https://morvanzhou.github.io/tutorials/machine-learning/reinforcement-learning/4-3-DQN3/ 莫烦Python

(三)神经网络的构建

参考链接: https://www.jianshu.com/p/41659ce20f15 揭秘深度强化学习神经网络(DQN)

(四)程序

 参考传送门:https://blog.csdn.net/WASEFADG/article/details/81043075 gym学习及二次开发

按照机器学习中的监督学习,标签应该是固定不变的,这样可以更好的收敛。

参考传送门:深度强化学习入门——DQN以flappy bird为例

 

 

发布了31 篇原创文章 · 获赞 2 · 访问量 697

猜你喜欢

转载自blog.csdn.net/qq446293528/article/details/103557011