首页 > 解决方案 > 具有向量输入和向量输出的 DQN 代理

问题描述

我是强化学习和深度学习的初学者,我想为 DQN 代理(在 Keras 中)构建一个神经网络,它接收一个长度等于 3 的向量作为输入,并输出另一个长度等于 10 的向量。

输入向量有一个元素等于 1,其他元素等于 0。它也可以全为零,但不能有多个值为 1 的元素。

例子:

[0, 1, 0]

或者:

[0, 0, 0]

输出必须是一个包含 10 个元素的向量,其中一个元素等于 1,所有其他元素的值都等于 0。就像输入向量一样,它也可以全为零,但不能超过一个值为 1 的元素。

例子:

[0, 0, 1, 0, 0, 0, 0, 0, 0, 0]

或者:

[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

如果输入向量中包含“1”,则输出向量必须最多有一列值为 1。

如果输入向量全为零,则输出向量必须将所有值设置为 0。

我试图创建一个卷积神经网络,但我遇到的示例将图像(因此是 2D 矩阵)视为输入,并将一个值作为输出而不是向量。

标签: tensorflowkerasvectordeep-learningdqn

解决方案


DQN 强烈基于马尔可夫决策过程,因此必须明确定义什么是状态、动作和奖励的概念。

对我来说,您的输入似乎是一种以单热编码编码的状态。要为此问题选择架构,您需要提供更多详细信息。例如,它可以是用于时间序列的 LSTM 层,也可以是简单的密集层。

DQN 中的输出始终是单一且连续的值,它表示在某种状态下的好坏程度并执行一个动作a,称为 Q 值。对我来说,你所说的输出,其实就是你的行动。

我强烈建议您按照这里的材料了解马尔可夫决策过程的每个组成部分,然后深入研究 DQN 方法。


推荐阅读