【问题标题】:Reinforcement learning with non repeatable actions不可重复动作的强化学习
【发布时间】: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]

可以看出,我只是强制代理不要选择重复动作。但我并没有真正改变神经网络的输出。我想知道这样可以吗?或者未来还有改进的空间吗?

【问题讨论】:

  • 你似乎没有在这个问题中提出任何问题......

标签: reinforcement-learning


【解决方案1】:

您的行动和观察空间需要在整个训练过程中保持相同的大小。 解决您的问题的一种方法是使任何已经执行的操作不再对游戏或观察空间产生影响。已经执行的动作可以存储在一个一维数组中,单热编码,这也可以包含在您的观察空间中,这样您的代理将学会不选择它已经执行的动作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 2018-11-05
    • 2019-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2022-09-28
    相关资源
    最近更新 更多