【发布时间】:2020-05-12 00:20:15
【问题描述】:
我对 RL 很陌生,我想知道 RL 的功能。在我的理解中,RL 是一种神经网络,它输入一个状态并输出每个动作的概率。训练过程是为了减轻预测值和真实奖励值之间的差异(这里可能是错误的)。
但是,我的问题非常棘手。一开始有一个动作空间[x1, x2, x3, x4,..,x5],每一步之后,动作都不能重复。换句话说,每次迭代后动作空间都在缩小。 “游戏”在动作空间为 0 时完成。此游戏的目标是获得最高的累积奖励。
我在网上做了一些搜索,但没有找到任何有用的信息。非常感谢!
添加: 对不起,不清楚的问题。对于经典的 RL,例如 CartPole 游戏。该动作是可重复的,因此代理正在学习每个状态下每个动作的奖励。目标是获得奖励“1”而不是“0”。但是对于我的问题,既然游戏无论如何都会完成(因为每次迭代的动作空间都在减少,并且当动作空间为空时游戏就完成了),我希望代理能够首先执行奖励最高的动作,然后是第二个-最高奖励.....
所以我相信这是某种优化问题。但是我不知道如何针对这个问题修改RL学习的经典架构?或者谁能帮我找到一些相关的资源或教程?
再次添加: 目前,我的解决方案是更改如何选择动作的部分。我提供了以前的操作列表。并避免这些动作再次被挑。例如,如果动作是由神经网络选择的,我将神经网络的输出设为
with torch.no_grade():
action_from_nn = nn(state)
action_from_nn[actions_already_taken] = 0
action = torch.max(action_from_nn,1)[1]
如果随机值小于epsilon,则动作只是随机选择的,它将是:
action = random.sample([i for i in action_space if i not in actions_already_taken], 1)[0]
可以看出,我只是强制代理不要选择重复动作。但我并没有真正改变神经网络的输出。我想知道这样可以吗?或者未来还有改进的空间吗?
【问题讨论】:
-
你似乎没有在这个问题中提出任何问题......