tensorflow - 在强化学习中限制神经网络输出的最佳方法

标签 tensorflow machine-learning artificial-intelligence pytorch reinforcement-learning

我正在训练一个神经网络(前馈、Tanh 隐藏层),该网络接收状态作为输入并给出 Action 作为输出。我正在遵循策略梯度强化学习的 REINFORCE 算法。

但是,我需要限制我的控制操作(假设从 0 到 5)。目前我这样做的方法是使用 sigmoid 输出函数并将输出乘以 5。虽然我的算法具有中等性能,但我发现使用这种“边界方案”作为输出存在以下缺点:

我知道对于回归(因此我猜对于强化学习)线性输出是最好的,尽管 sigmoid 有线性部分,但我担心网络无法正确捕获这种线性输出行为,或者它捕获了它太慢了(因为它的最佳性能是分类,因此使输出极化)。

我想知道还有什么其他选择,也许还有一些关于这个问题的启发。

最佳答案

您是否考虑过使用nn.ReLU6() ?这是整流线性单元的有界版本,其输出定义为

out = min( max(x, 0), 6)

关于tensorflow - 在强化学习中限制神经网络输出的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693567/

相关文章:

lisp - 编写人工智能的基础知识?

algorithm - 开发西洋跳棋(跳棋)引擎,如何开始?

python - 优化器返回 None

python - 在 tensorflow 中,一个时期的训练数据大小重要吗?

python - 不能使用 TensorFlow 变量两次

opencv - 人脸特征点标注工具

matlab - 即使初始权重全为零,Matlab 中的神经网络工具箱每次都会得到不同的结果

Python 切片表示法

artificial-intelligence - 击败极小极大对手

tensorflow - 如何在 Tensorflow 检测模型上使用 Lucid Interpretability 工具?