为什么 Deep Q Network 会输出多个 Q 值?

人工智能 强化学习 q学习 dqn 深度学习 行动空间
2021-11-03 16:57:59

我正在按照本教程学习深度强化学习:https ://medium.freecodecamp.org/an-introduction-to-deep-q-learning-lets-play-doom-54d02d8017d8

除了一个细节,我什么都懂:

此图显示了经典 Q 学习表和 DNN 之间的区别。它指出 Q 表需要状态-动作对作为输入并输出相应的 Q 值,而 Deep Q 网络需要状态作为特征输入并输出可以在该状态下进行的每个动作的 Q 值。

但是状态和动作不应该一起成为网络的输入,而网络只输出一个 Q 值吗?

在此处输入图像描述

1个回答

我认为这只是一个“聪明”的设计选择。您实际上可以设计一个神经网络 (NN) 来表示您的 Q 函数,它接收状态和动作作为输入并输出相应的 Q 值。然而,要获得maxaQ(s,a)(这是Q 学习算法的更新规则的一个术语)对于来自s. 通过让神经网络输出给定的每个可能动作的 Q 值s,您只需要一次 NN 前向传递即可获得maxaQ(s,a),也就是说,您在 NN 的输出中选择最高的 Q 值。

在论文A Brief Survey of Deep Reinforcement Learning(由 Kai Arulkumaran、Marc Peter Deisenroth、Miles Brundage 和 Anil Anthony Bharath 撰写)第 7 页的“值函数”部分(以及“函数逼近和 DQN”小节),它是这样写的

它被设计成最终的全连接层输出Qπ(s,)对于一组离散动作中的所有动作值——在本例中,是操纵杆和开火按钮的各个方向。这不仅可以实现最佳行动,argmaxaQπ(s,a),在网络的单次前向传递之后被选择,但也允许网络更容易地在较低的卷积层中编码与动作无关的知识。