优化具有长情节的深度 Q 网络

Posted

技术标签:

【中文标题】优化具有长情节的深度 Q 网络【英文标题】:Optimize deep Q network with long episode 【发布时间】:2019-10-05 03:18:15 【问题描述】:

我正在研究一个我们旨在通过深度 Q 学习解决的问题。然而,问题在于每集的训练时间太长,大约 83 小时。我们设想在 100 集中解决问题。

所以我们正在逐步学习一个矩阵(100 * 10),并且在每一集内,我们需要对某些操作进行 100*10 次迭代。基本上,我们从 1000 个候选者的池中选择一个候选者,将该候选者放入矩阵中,并通过将整个矩阵作为输入来计算奖励函数:

主要障碍是每一步的奖励函数计算成本很高,大约需要 2 分钟,而且每次我们更新矩阵中的一个条目。

从长远来看,矩阵中的所有元素都相互依赖,所以如果我理解正确的话,整个过程似乎不适合某些“分布式”系统。

谁能解释一下我们如何看待这里的潜在优化机会?喜欢一些额外的工程工作吗?任何建议和 cmets 将不胜感激。谢谢。

========================更新一些定义==================

0。初始阶段:

一个 100 * 10 的矩阵,每个元素都为空

1.行动空间:

每一步我都会从包含 1000 个元素的候选池中选择一个元素。然后将元素一一插入到矩阵中。

2。环境:

每一步我都会有一个更新的矩阵来学习。

一个oracle函数F返回一个5000~30000的数值范围,越高越好(F的一次计算大约需要120秒)。

这个函数F以矩阵为输入,进行了非常昂贵的计算,它返回一个量化的值来表示到目前为止合成矩阵的质量。

这个函数本质上是用来衡量系统的一些性能的,所以计算每一步的奖励值确实需要一段时间。

3。剧集:

说“我们设想在 100 集内解决它”,这只是一个经验估计。但至少不应该少于100集。

4.约束

理想情况下,就像我提到的,“矩阵中的所有元素在长期内相互依赖”,这就是为什么奖励函数 F 通过将整个矩阵作为输入而不是最新选择的元素。

确实,通过在矩阵中添加越来越多的元素,奖励可能会增加,也可能会减少。

5.目标

合成的矩阵应该让oracle函数F返回大于25000的值。每当达到这个目标,我就会终止学习步骤。

【问题讨论】:

到目前为止,我仍然无法收到任何 cmets 或响应。是因为问题本身不清楚? 我不知道如何解决您的问题。但也许你可以澄清一些概念。我不清楚你一般的 RL 设置是什么,我的意思是,什么是环境、你的状态空间、你的动作空间、代理目标等。你说你正在学习一个 100*10 的矩阵,但是什么是该矩阵的含义?与 RL 问题有什么关系?我想一些额外的上下文对于从其他用户那里获得帮助可能非常有用。 另一方面,我很好奇你为什么希望在 100 集中解决问题。你有遇到过类似的问题吗?您是否使用深度 RL 解决了同一问题的更简单版本? @PabloEM 谢谢,让我相应地更新帖子。 @PabloEM 会在我澄清上下文后 ping 你。 【参考方案1】:

老实说,如果不了解奖励函数中的哪些计算或您做出了哪些我们可以提供帮助的编程设计决策等细节,就没有有效的方法来了解如何优化这个系统。

您可能是对的,剧集不适合分布式计算,这意味着我们无法并行化,因为它们依赖于之前的搜索步骤。但是,可能会在奖励函数评估中投入更多的计算能力,从而减少运行所需的总时间。

我鼓励您分享有关该问题的更多详细信息,例如通过分析代码以查看哪个组件占用的时间最多,通过共享代码摘录,或者随着从事科学工作的标准越来越高,共享可重现的代码基地。

【讨论】:

感谢您的回答。我已经用更多信息更新了问题。基本上,“奖励功能”是通过测量某些系统性能来执行的,因此每一步计算一个奖励值确实需要一段时间。' 我们在过去一周尝试优化该部分,将每次计算从 5 分钟更改为 2 分钟...但正如您所见,这仍然需要一段时间...【参考方案2】:

不是您问题的解决方案,只是一些可能相关的一般想法:

在“现实世界”问题中应用强化学习的最大障碍之一是获得可接受的结果所需的大量数据/经验。例如,OpenAI in Dota 2 游戏每天收集相当于 900 年的经验。在original Deep Q-network paper中,为了达到接近普通人的性能,需要数亿的游戏帧数,具体取决于具体的游戏。在other benchmarks 中,输入不是原始像素,例如 MuJoCo,情况也好不到哪里去。因此,如果您没有可以廉价生成样本(状态、动作、下一个状态、奖励)的模拟器,那么强化学习可能不是一个好的选择。另一方面,如果你有一个真实模型,也许其他方法可以轻松胜过强化学习,例如蒙特卡洛树搜索(例如,Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning 或Simple random search provides a competitive approach to reinforcement learning)。所有这些想法都在this great blog post 中讨论。 前一点特别适用于深度强化学习。使用具有数百万个参数的深度神经网络来逼近价值函数或策略这一事实通常意味着您需要大量数据或经验。

关于您的具体问题:

在 cmets 中,我就您的问题的具体特征提出了一些问题。我试图弄清楚你是否真的需要 RL 来解决问题,因为它不是最容易应用的技术。另一方面,如果你真的需要强化学习,不清楚是应该使用深度神经网络作为逼近器还是可以使用浅层模型(例如随机树)。然而,这些问题和其他潜在的优化需要更多的领域知识。在这里,您似乎无法分享问题的领域,这可能是由于多种原因,我完全理解。 您已根据使用较小版本的 20*10 矩阵的一些经验研究估计了解决问题所需的剧集数。请注意:由于curse of the dimensionality,当状态空间维数增加时,问题的复杂性(或所需的经验)可能会呈指数级增长,尽管您的情况可能并非如此。

也就是说,我期待看到一个真正能帮助您解决问题的答案。

【讨论】:

我将发布相同的观点,即问题的复杂性如何以指数方式增长可以解释 OPs 问题。

以上是关于优化具有长情节的深度 Q 网络的主要内容,如果未能解决你的问题,请参考以下文章

使用Numpy进行深度学习中5大反向传播优化算法的性能比较

Lion : 超越 AdamW 的优化算法

Keras深度学习实战——神经网络性能优化技术详解

移动网络优化实践

深度学习的困境

深度学习之二:神经网络的实践与优化