问题标签 [dqn]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
reinforcement-learning - rllib DQN 实施中的 Atari 分数与奖励
我正在尝试使用 RLLib 复制 Breakout 的 DQN 分数。在 500 万步之后,平均奖励为 2.0,而使用 DQN 的 Breakout 已知得分为 100+。我想知道这是否是因为奖励削减,因此实际奖励与 Atari 的分数不对应。在 OpenAI 基线中,实际得分放在info['r']
奖励值中,实际上是裁剪值。RLLib 的情况是否相同?有没有办法在训练时查看实际的平均分数?
artificial-intelligence - 奖励结构的制定
我是强化学习和尝试训练 RL 代理的新手。
我对奖励公式有疑问,从给定状态来看,如果代理采取了好的行动,我会给予积极的奖励,如果行动不好,我会给予消极的奖励。因此,如果我在代理采取好的行动时给予非常高的正奖励,例如正值是负奖励的 100 倍,它会在训练期间帮助代理吗?
直觉上我觉得这会有助于智能体的训练,但是这种倾斜的奖励结构会有什么弊端吗?
python - 带有自定义环境的 TensorFlow 2.0 DQN 代理问题
所以我一直在关注 DQN 代理示例/教程,并像在示例中一样进行设置,唯一的区别是我构建了自己的自定义 python 环境,然后将其包装在 TensorFlow 中。然而,无论我如何塑造我的观察和行动规范,每当我对其进行观察并要求采取行动时,我似乎都无法让它发挥作用。这是我得到的错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: In[0] 不是矩阵。相反,它具有形状 [10] [Op:MatMul]
这是我设置代理的方式:
以下是我设置环境的方式:
这是我的输入/观察结果:
tf.Tensor([ 0. 0. 0. 0. 0. 0. 0. 0. -1. -1. -1. -1. 0. 0. 0. -1.], shape=(16,) , dtype=float32)
我尝试过尝试我的 Q_Net 的形状和深度,在我看来,错误中的 [10] 与我的 q 网络的形状有关。将其层参数设置为 (4,) 会产生以下错误:
tensorflow.python.framework.errors_impl.InvalidArgumentError: In[0] 不是矩阵。相反,它具有形状 [4] [Op:MatMul]
reinforcement-learning - 为什么 Deep Q 网络算法只执行一个梯度下降步骤?
为什么 dqn 算法只执行一个梯度下降步骤,即只训练一个 epoch?它不会从更多的时期中受益吗,它的准确性不会随着更多的时期而提高吗?
arrays - 神经网络输出形状不匹配
所以我正在构建我自己的第一个简单的 DQN 神经网络。但我真的在为我的网络的输出形状苦苦挣扎。
我有一个具有 139 个特征的输入,使其 input_shape=(None,139) 和批量大小为 64。最后一层有 4 个输出,因为我的环境有 4 个可能的操作(0、1、2、3)。
但我得到这个错误:
ValueError:检查目标时出错:预期dense_4的形状为(None,1)但得到的数组形状为(1、4)
这让我发疯。我做错了什么?
型号总结:
使用下面的代码发布更新。-带有模型、火车等的DQN类。
-
reinforcement-learning - DOUBLE DQN 没有任何意义
为什么要使用 2 个网络,每集训练一次,每N集更新目标网络,什么时候我们可以使用 1 个网络,每N集训练一次!从字面上看没有区别!
deep-learning - 为什么用非线性函数逼近器随机化强化学习模型的样本会减少方差?
我已经阅读了 DQN 论文。
在阅读 DQN 论文时,我发现随机选择和学习样本使用非线性函数逼近器减少了 RL 中的分歧。
如果是这样,为什么当输入数据强相关时,使用非线性函数逼近器的 RL 学习会发散?
reinforcement-learning - 在 Tensorflow JS Snake-DQN 示例中,为什么正在更新的优化器似乎根本没有链接到在线网络,如建议的那样?
我考虑将这个问题放在项目的实际 GitHub 存储库中,但这可能是一个愚蠢的问题。这是回购:https ://github.com/tensorflow/tfjs-examples/tree/master/snake-dqn
如果您查看以下文件和行,您会发现正在更新的优化器似乎没有任何指向在线模型的链接;
首先,在线模型未使用 dqn.js 文件第 33-60 行中的任何优化器进行编译:https ://github.com/tensorflow/tfjs-examples/blob/master/snake-dqn/dqn.js#L60
然后在以下文件中初始化优化器,没有指向模型的链接;
文件 agent.js 第 60 行:https ://github.com/tensorflow/tfjs-examples/blob/master/snake-dqn/agent.js#L60
文件 train.js 第 84 行:https ://github.com/tensorflow/tfjs-examples/blob/master/snake-dqn/train.js#L84
文件 agent.js 第 157 行中使用的优化器:https ://github.com/tensorflow/tfjs-examples/blob/908ee32750ba750a14d15caeb53115e2d3dda2b3/snake-dqn/agent.js#L157
我没有看到其他参考资料,那么它实际上如何按照建议更新和训练在线网络?
顺便说一句,这实际上不是双 dqn 吗?
machine-learning - 为什么 PyTorch DQN 教程中的 CNN 卷积输出大小使用“kernel_size -1”计算?
根据我的理解,一维的 CNN 输出大小是
output_size = (input_size - kernel_size + 2*padding)//stride + 1
请参阅PyTorch DQN 教程。在本教程中,它使用 0 填充,这很好。但是,它计算输出大小如下:
这是上面的错误还是我错过了什么?