通过长剧集优化深度Q网络

时间:2019-05-17 19:18:56

标签: machine-learning optimization deep-learning reinforcement-learning

我正在研究一个旨在通过深度Q学习解决的问题。但是,问题在于,每个情节的培训时间都太长,大约需要83个小时。我们正在设想在100集之内解决问题。

因此,我们逐渐学习矩阵(100 * 10),并且在每个情节中,我们需要执行某些操作的100 * 10迭代。基本上,我们从1000个候选人中选择一个候选人,将该候选人放入矩阵中,然后通过将整个矩阵作为输入来计算奖励函数:

enter image description here

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

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

有人可以阐明我们如何看待这里的潜在优化机会吗?喜欢一些额外的工程工作吗?任何建议和评论将不胜感激。谢谢。

========================更新了一些定义================= p >

0。初始阶段:

  • 100 * 10矩阵,每个元素为空

1。动作空间:

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

2。环境:

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

  • Oracle函数 F 返回的定量值范围为5000〜30000,数值越高越好( F 的一次计算大约需要120秒)。

    此函数 F 将矩阵作为输入并执行非常昂贵的计算,并返回一个定量值以指示到目前为止合成矩阵的质量。

    此功能本质上用于衡量系统的某些性能,因此确实需要一些时间来计算每个步骤的奖励值。

3。剧集:

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

4。约束

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

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

5。目标

合成矩阵应让oracle函数 F 返回大于25000的值。只要达到此目标,我都会终止学习步骤。

2 个答案:

答案 0 :(得分:2)

老实说,没有知道诸如奖励函数中的哪些计算或您可以做出的编程设计决策之类的细节,就没有有效的方法来知道如何优化该系统。

您可能是正确的,这些情节不适合进行分布式计算,这意味着我们无法并行化这些情节,因为它们取决于先前的搜索步骤。但是,有可能在奖励函数评估中投入更多的计算能力,从而减少运行所需的总时间。

我鼓励您分享有关该问题的更多详细信息,例如,通过分析代码以查看哪个组件花费最多的时间,共享代码摘录,或者随着科学水平的提高,共享可复制的代码基地。

答案 1 :(得分:1)

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

关于您的特定问题:

  • 在评论中,我问了一些有关您问题的特定功能的问题。我试图确定您是否真的需要RL来解决问题,因为这不是最容易应用的技术。另一方面,如果您确实需要RL,则不清楚是否应该使用深层神经网络作为近似器,也可以使用浅层模型(例如随机树)。但是,这些问题还有其他潜在的优化需要更多的领域知识。在这里,您似乎无法分享问题的范围,这可能是由于多种原因,我完全理解。
  • 您已基于一些经验研究,使用较小版本的20 * 10矩阵估算了解决问题所需的剧集数量。请注意:由于curse of the dimensionality,问题的复杂性(或所需的经验)可能会随着状态空间维数的增长而呈指数增长,尽管可能并非您如此。

也就是说,我很期待看到一个确实可以帮助您解决问题的答案。