是的,可以将动作用作 DQN 中神经网络的输入。对于表示为 one-hot 编码特征的离散动作,差异很小:
如果所有动作都在输出中,则您的神经网络函数为f(s):S→R|A|=[q^(s,a1),q^(s,a2),q^(s,a3)...],并且您将输出向量中的最大值作为贪心动作。
如果动作作为输入参数提供,您的神经网络函数是f(s,a):S×A→R=q^(s,a), 并找到您构造的最大值并在所有可能的值上运行一个小批量a对于给定的状态。
另请参阅此问题的答案:为什么 Deep Q Network 会输出多个 Q 值?
在您的情况下,您希望利用类似的值a因为您希望它可以很好地与近似值配合使用。正如您正确建议的那样,这仅适用于使用动作作为输入的第二种方法。因此,使用归一化为适合输入到神经网络的范围的转向角作为输入。每次你需要找到maxaQ(s,a)对于 Q-learning 算法,您必须构建一个小批量的当前状态,并将每个离散转向角与您想在 DQN 中视为动作的每个离散转向角连接起来,并向前运行当前(或目标)神经网络。
如果您想更进一步并使用连续动作空间,您将需要更改您正在使用的强化学习方法。各种策略梯度和 actor-critic 方法,例如 REINFORCE、A3C、DDPG 等,可以应对连续动作,因为它们不需要找到maxaQ(s,a),这对于非常大的动作空间变得不切实际。