作者 | 小猴锅 编辑 | 奇予纪
出品 | 磐创AI团队出品
【磐创AI导读】:本篇文章是深度强化学习专栏的第三篇,讲了第四节无模型的强化学习方法,希望对大家有所帮助。查看上篇关于本专栏的介绍:深度强化学习(DRL)专栏开篇。想要获取更多的机器学习、深度学习资源,欢迎大家点击上方蓝字关注我们的公众号:磐创AI。
目录:
1. 引言
2. 强化学习基础知识
3. 有模型的强化学习方法
4. 无模型的强化学习方法
5. 实战强化学习算法
6. 深度强化学习算法
7. 专栏小结
传统的强化学习算法适用于动作空间和状态空间都较小的情况,然而实际的任务中往往都是有着很大的动作空间和状态空间,对于这种情况,传统的强化学习算法难以处理。而深度学习算法擅于处理高维的数据,两者结合之后的深度强化学习算法在很多任务中取得了非常不错的效果。本章我们主要介绍几个较为典型的深度强化学习算法。
DQN算法是在Q-Learning算法的基础上演变而来的,DQN算法有多个改进版本,最早的版本是由Mnih等人于2013年提出(https://arxiv.org/abs/1312.5602v1),算法如图6-18所示。在值函数近似中我们介绍过,可以利用函数去逼近Q值表(或V值表),DQN算法使用神经网络来逼近Q值函数。另外,训练神经网络的数据要求是满足独立同分布的,而我们在参数没有收敛的情况下,在不同时刻获取的样本不满足这一关系,因此会导致网络的训练不稳定,为了解决这一问题,DQN算法中还引入了“经验回放”机制。
1.初始化大小为N的经验池D
2.用随机的权重初始化Q函数
3.for episode in range(EPISODES):
1).初始化状态s
2).for t in range(T):
a.使用ε-greedy方式选择动作(以ε的概率随机选择动作,以的1-ε概率根据当前策略选择动作
b.执行动作,得到下一状态,以及奖励值
c.将五元组()存入经验池D(用来标记是否是终止状态,如果经验池已满,则移除最早添加的五元组,添加新的五元组)
d.如果经验池D中的样本数达到了设定的batch_size大小m:
a).从经验池中随机采样m个样本(),其中,计算目标值:
b).使用均方误差损失函数来更新网络参数θ.
end for
end for
图6-1 DQN算法
在图6-1所示的DQN算法中,我们在计算目标值
时用的Q值网络和我们要学习的(即用来产生五元组的那个网络)是同一个,即我们是在用我们希望学习的模型来生成类标,这样不利于模型的收敛。因此,Mnih等人于2015年又提出了DQN的一种改进算法(https://www.nature.com/articles/nature14236),算法如图6-2所示。改进后的算法中,将计算目标值
时用的Q网络和我们要学习的网络
分成了两个网络。Q网络用来产生五元组,而网络
用来计算目标值
。这里网络
的参数
不会迭代更新,因此需要每隔一定时间将Q网络的参数θ复制过来(Q网络和
网络需要使用相同的网络结构)。改进后的DQN算法,除了增加了
网络之外,其余部分与改进前的DQN网络一致。
1.初始化大小为N的经验池D
2.用随机的权重初始化Q函数
3.for episode in range(EPISODES):
1).初始化状态s
2).for t in range(T):
a.使用ε-greedy方式选择动作(以ε的概率随机选择动作,以1-ε的概率根据当前策略选择动作
b.执行动作,得到下一状态,以及奖励值
c.将五元组()存入经验池D(用来标记是否是终止状态,如果经验池已满,则移除最早添加的五元组,添加新的五元组)
d.如果经验池D中的样本数达到了设定的batch_size大小m:
a).从经验池中随机采样m个样本(),其中,计算目标值:
b).使用均方误差损失函数来更新网络参数θ
f.间隔一定时间后:
end for
end for
图6-2 DQN一种改进算法
DDPG算法结合了Actor Critic算法和DQN算法。Actor和Critic分别使用一个神经网络,参照DQN算法为每个网络再设置一个目标网络,训练过程同样借鉴了DQN的经验池。DDPG算法与DQN在目标网络的更新上有所不同,DQN算法中是每隔一段时间就将Q值网络直接赋给目标网络
,而在DDPG算法中目标网络的参数是缓慢的在更新,以便提高网络的稳定性:
上式中,
是策略网络对应的目标网络的参数,
是Q值网络对应的目标网络的参数。
1. 使用随机参数和初始化critic网络和actor网络
2.初始化目标网络的参数:
3.初始化大小为N的经验池D
4.for episode in range(EPISODES):
1).初始化一个随机过程作为对环境的探索(也可以使用ε-greedy方式)
2)初始化第一个状态
3).for t in range(T):
a.根据当前的策略以及选择动作:
b.执行动作,得到下一状态,以及奖励值
c.将五元组()存入经验池D(用来标记是否是终止状态,如果经验池已满,则移除最早添加的五元组,添加新的五元组)
d.如果经验池D中的样本数达到了设定的batch_size大小m:
a).从经验池中随机采样m个样本(),其中,计算目标值:
b).使用均方误差损失函数来更新critic网络的参数θ
c).使用梯度上升来更新actor网络的参数ø:
f.更新目标网络的参数:
end for
end for
图6-3 DDPG算法