我正在训练一个神经网络(前馈、Tanh 隐藏层),该网络接收状态作为输入并给出 Action 作为输出。我正在遵循策略梯度强化学习的 REINFORCE 算法。
但是,我需要限制我的控制操作(假设从 0 到 5)。目前我这样做的方法是使用 sigmoid 输出函数并将输出乘以 5。虽然我的算法具有中等性能,但我发现使用这种“边界方案”作为输出存在以下缺点:
我知道对于回归(因此我猜对于强化学习)线性输出是最好的,尽管 sigmoid 有线性部分,但我担心网络无法正确捕获这种线性输出行为,或者它捕获了它太慢了(因为它的最佳性能是分类,因此使输出极化)。
我想知道还有什么其他选择,也许还有一些关于这个问题的启发。
最佳答案
您是否考虑过使用nn.ReLU6()
?这是整流线性单元的有界版本,其输出定义为
out = min( max(x, 0), 6)
关于tensorflow - 在强化学习中限制神经网络输出的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693567/