赞
踩
一、DQN的神经网络是怎样一种结构?有几层?什么作用?如何实现数据的记忆?如何做一些改进
(一)问题描述:
qu1. 问题复杂度提高导致无法使用Q表记录全部状态:
1. 对状态的维度进行压缩,解决方案之一Value Function Approximation(值函数近似),
用w来表示函数f的参数,则有
2. 高维s和低维a的函数输入问题,低维a无需进行降维,一个解决方法是只把s作为输入,,
但是输出关于a的Q向量。
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为例
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。