深度Q学习算法:从基础到实践
1. 学习历史与基础回顾
在之前的实验中,学习历史的可视化结果显示,在大约30个回合后,智能体学会了一条通往目标状态的短路径。此后,回合的长度大致相同,仅因 𝜖 -贪心策略存在微小偏差。
之前我们实现了用于网格世界示例的Q学习算法。该示例具有大小为30的离散状态空间,使用Python字典存储Q值即可。然而,实际情况中状态数量可能非常大,甚至近乎无限,也可能是连续状态空间。而且,部分状态在训练中可能从未被访问,这对智能体处理未见过的状态造成了挑战。
为解决这些问题,我们采用函数近似方法,定义参数化函数 𝑣𝑊(𝑥𝑠) 来近似真实值函数,即 𝑣𝑊(𝑥𝑠) ≈ 𝑣𝜋(𝑠) ,其中 𝑥𝑠 是一组输入特征(或“特征化”状态)。当近似函数 𝑞𝑊(𝑥𝑠, 𝑎) 为深度神经网络(DNN)时,得到的模型称为深度Q网络(DQN)。训练DQN模型时,权重根据Q学习算法更新。
2. 深度Q学习算法训练DQN模型
使用深度Q学习算法训练DQN模型时,需要对之前的标准Q学习方法进行一些修改。
2.1 动作选择方法的修改
在之前的Q学习代码中,智能体的 choose_action() 方法只是简单地访问字典中存储的动作值。现在,该函数需要进行修改,通过神经网络模型的前向传播来计算动作值。
2.2 重放记忆(Replay Memory)
之前的表格Q学习方法可以独立更新特定状态 - 动作对的值。但使用神经网络近似 𝑞(𝑠, 𝑎) 时,更新一个状态 - 动作对的权重可能会影响其他状态的输出。而且,在Q学
超级会员免费看
订阅专栏 解锁全文

1756

被折叠的 条评论
为什么被折叠?



