当前位置: 首页 > 知识库问答 >
问题:

使用不可重复的动作进行强化学习

蒋畅
2023-03-14

我对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]

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

共有1个答案

公孙志
2023-03-14

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

 类似资料:
  • 我想知道是否有任何关于新动作的RL问题的研究,例如,想象一个视频游戏,随着游戏的进行,代理学习更多的技能/策略,因此有更多的可用动作可供选择,因此动作集随着时间的推移而扩展。一个相关的问题 强化学习中的状态依赖动作集 但这个问题也没有足够的答案。谢谢!

  • 主要内容 课程列表 基础知识 专项课程学习 参考书籍 论文专区 课程列表 课程 机构 参考书 Notes等其他资料 MDP和RL介绍8 9 10 11 Berkeley 暂无 链接 MDP简介 暂无 Shaping and policy search in Reinforcement learning 链接 强化学习 UCL An Introduction to Reinforcement Lea

  • 强化学习(Reinforcement Learning)的输入数据作为对模型的反馈,强调如何基于环境而行动,以取得最大化的预期利益。与监督式学习之间的区别在于,它并不需要出现正确的输入/输出对,也不需要精确校正次优化的行为。强化学习更加专注于在线规划,需要在探索(在未知的领域)和遵从(现有知识)之间找到平衡。 Deep Q Learning.

  • 我正在写学士论文。 我的主题是强化学习。设置: Unity3D (C#) 自己的神经网络框架 通过测试来训练正弦函数,确认网络工作正常。它可以近似。好有些价值观达不到他们的期望值,但这已经足够好了。当用单个值训练它时,它总是收敛的。 这是我的问题: 我试着教我的网络一个简单游戏的Q值函数,接球:在这个游戏中,它只需要接住一个从随机位置和随机角度落下的球。1如果接住-1如果失败 我的网络模型有 1

  • 探索和利用。马尔科夫决策过程。Q 学习,策略学习和深度强化学习。 我刚刚吃了一些巧克力来完成最后这部分。 在监督学习中,训练数据带有来自神一般的“监督者”的答案。如果生活可以这样,该多好! 在强化学习(RL)中,没有这种答案,但是你的强化学习智能体仍然可以决定如何执行它的任务。在缺少现有训练数据的情况下,智能体从经验中学习。在它尝试任务的时候,它通过尝试和错误收集训练样本(这个动作非常好,或者非常

  • 我已经阅读了一些关于如何模拟或模拟HttpClient的文档,但是我不能成功地为我的单元测试复制。到目前为止,我还不能接口HttpClient,所以我选择注入HttpMessageHandler,其想法是设置它,以便返回对客户机的任何调用的响应。