在连续空间中将神经网络与强化学习相结合

数据挖掘 神经网络 强化学习
2022-02-13 17:47:57

我正在尝试学习如何自己进行强化学习,但我不确定如何针对特定问题实施神经网络。

游戏进行了大约 100 万步。在每一步,我都有 36 个可用的连续特征(未知规则)和 4 个动作可供选择。之后环境会告诉我下一步的36个特征是什么,我的分数是多少。我一直在创建和查看数据,有时只能在很久以后才清楚一个动作是好还是坏(大约 10 个动作)。

所以涉及到两件事。

1)我必须“学习”,给定一个动作,世界将如何从 pre_state 变为 post_state,并且

2)我必须学习优化给定状态的奖励并从 4 个动作中进行选择。

所以我想只记录 state_before,state_after,很多随机动作的奖励。我也许可以只使用 36 * 10 的最后一步作为预测指标。但话又说回来,也许我应该只对州之间的差异感兴趣?

问题在于我看过马尔可夫决策过程,但它们假设一个离散的搜索空间(而这里它是连续的)。

任何帮助都有助于尝试了解应该涉及哪些层来解决这个问题,也许最合乎逻辑的方式是对数据进行采样

我真的希望人们能指出我正确的方向。我基本上愿意在 Python 中使用任何神经网络框架。

1个回答

我可能回答得有点晚了,但希望对你有所帮助!我假设你熟悉 RL,所以我会省略很多细节(如果你仍然有兴趣发表评论,我可以帮助你)。

神经网络和强化学习:你有两个选择。第一个是使用一个网络,你将把它作为输入你的特征向量(状态)和每个动作的输出概率。这称为策略网络,您可以找到一个非常详细的 Python 代码教程,以便A. Karpathy实现它。您的第二个选择是使用 Q-Network 方法。您的输入将再次相同,但输出将是您拥有的每个操作的 Q 函数的值(Q(ai))。您将使用 Q 学习方程Q(st,at)=Q(st,at)+α[rt+γmaxaQ(st+1,a)Q(st,at)]. 实现的细节可以在V. Mnih的论文中找到。也不要担心延迟奖励,因为折扣因子 $\gamma 将“帮助”您的代理受到未来奖励的影响。

为了计算您的状态,我建议您创建一个环境模拟和一个阶跃函数。你没有提到你正在处理什么样的游戏,但一般的想法是 step 函数将作为输入你的当前状态和当前动作并输出下一个状态和奖励(不要介意你的连续空间可以离散化的特征——你也可以使用卡尔曼滤波器或其他模型来获得更好的状态估计)。

我的建议是选择您的方法(Policy net 或 Q-net)并阅读博客或论文,为您的游戏创建环境模拟和步进函数。你可以找到大量 Deep Q-net 的实现,尽管我建议你从一个非常简单的网络开始,这样你就不会因为调整 Deep 网络而遇到麻烦。