DQN学习

一、Q-Learning

R是路径矩阵(奖励矩阵)。Q是另一个新矩阵(初始为0,每次迭代更新)

迭代多次后Q会趋于稳定,此时将Q归一化。得到最终的Q

将最终的Q设为奖励矩阵。获得最佳路径。

二、Q-Table(深度学习)与y=f(x)(机器学习)的区别

1.神经网络和 Q-Table都可以用来近似动作价值函数 但是它们的形式是不一样的,Q-Table是一个二维表格,而神经网络是一个实实在在的函数

2.因此,Q-Table的局限性会更大一些,它只能处理离散的状态和动作空间,而神经网络则可以处理连续的状态和动作空间,它的输入可以是连续的值,因此只需要把每个维度的坐标看作一个输入,就可以处理高维的状态空间了。换句话说,神经网络只用了两个维度的输入就表示了原来Q-Table中无穷多个状态,这正是神经网络的优势所在。

3.在Q-Table中我们描述状态空间的时候一般用的是状态个数,而在神经网络中我们用的是状态维度

4.,无论是 Q-Table还是 DQN 中的神经网络,它们输出的都是每个动作对应的 Q 值,即预测,而不是直接输出动作。要想输出动作,就需要额外做一些处理,例如结合贪心算法选择Q值最大对应的动作等,这就是我们一直强调的控制过程。

强化学习跟深度学习的训练方式其实是一样的,都是将样本喂入网络中,然后通过梯度下降的方式来更新网络参数,使得损失函数最小,即能够逼近真实的 Q 值。

而不同的地方在于,强化学习用于训练的样本(包括状态、动作和奖励等等)是与环境实时交互得到的,而深度学习则是事先准备好的。当然即便训练方式类似,这也并不代表强化学习和深度学习之间的区别就很小,本质上来讲强化学习深度学习所要解决的问题是完全不同的,前者用于解决序列决策问题,后者用于解决静态问题例如回归、分类、识别等等。

三、经验回放

强化学习是与环境实时交互得到样本然后进行训练的,这个样本一般包括当前的状态  、当前动作  、下一时刻的状态 、奖励以及终止状态的标志。在 Q-learning 算法中,每次交互得到一个样本之后,就立马拿去更新模型了。

 这样的方式用在神经网络中会有一些问题,1.每次用单个样本去迭代网络参数很容易导致训练的不稳定,从而影响模型的收敛。2.每次迭代的样本都是从环境中实时交互得到的,这样的样本是有关联的,而梯度下降法是基于一个假设的,即训练集中的样本是独立同分布的。

而在深度学习中:没有这样的问题的。因为训练集是事先准备好的,每次迭代的样本都是从训练集中随机抽取的,因此每次迭代的样本都是独立同分布的。

直接将 Q-learning 算法训练的方式来更新 DQN 的模型相当于是最原始的梯度下降方式,距离目前最成熟的小批量梯度下降方式还有一定的差距,因此我们需要进行一些处理来达到相同的效果,这就是经验回放的实现初衷。

 Q-learning 算法训练的方式就是把每次通过与环境交互一次的样本直接喂入网络中训练。而在 DQN 中,我们会把每次与环境交互得到的样本都存储在一个经验回放中,然后每次从经验池中随机抽取一批样本来训练网络。

 这样做的好处是,首先每次迭代的样本都是从经验池中随机抽取的,因此每次迭代的样本都是近似独立同分布的,这样就满足了梯度下降法的假设。其次,经验池中的样本是从环境中实时交互得到的,因此每次迭代的样本都是相互关联的,这样的方式相当于是把每次迭代的样本都进行了一个打乱的操作,这样也能够有效地避免训练的不稳定性。

总而言之,就把每一步的片段结果放到经验池中,让其变成独立同分布的训练集。

这个经验回放的容量也是有限的。

四、目标网络( 每隔若干步才更新的目标网络)

一句话:设置一个存档点  

目标网络和当前网络结构都是相同的,都用于近似 Q值,在实践中每隔若干步才把每步更新的当前网络参数复制给目标网络,这样做的好处是保证训练的稳定,避免 Q值的估计发散。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值