我正在研究一个旨在通过深度Q学习解决的问题。但是,问题在于,每个情节的培训时间都太长,大约需要83个小时。我们正在设想在100集之内解决问题。
因此,我们逐渐学习矩阵(100 * 10),并且在每个情节中,我们需要执行某些操作的100 * 10迭代。基本上,我们从1000个候选人中选择一个候选人,将该候选人放入矩阵中,然后通过将整个矩阵作为输入来计算奖励函数:
主要障碍是,每一步的奖励函数计算成本很高,大约2分钟,而且每次我们更新矩阵中的一个条目时。
矩阵中的所有元素长期相互依赖,因此,如果我理解正确的话,整个过程似乎不适合某些“分布式”系统。
有人可以阐明我们如何看待这里的潜在优化机会吗?喜欢一些额外的工程工作吗?任何建议和评论将不胜感激。谢谢。
========================更新了一些定义================= p >
0。初始阶段:
1。动作空间:
2。环境:
每个步骤我都会有一个更新的矩阵要学习。
Oracle函数 F 返回的定量值范围为5000〜30000,数值越高越好( F 的一次计算大约需要120秒)。
此函数 F 将矩阵作为输入并执行非常昂贵的计算,并返回一个定量值以指示到目前为止合成矩阵的质量。
此功能本质上用于衡量系统的某些性能,因此确实需要一些时间来计算每个步骤的奖励值。
3。剧集:
说“我们打算在100集内解决它”,这只是一个经验估计。但至少不应少于100集。
4。约束
理想地,就像我提到的那样,“矩阵中的所有元素长期相互依赖”,这就是为什么奖励函数 F 通过将整个矩阵作为输入而不是最新选择的元素。
实际上,通过在矩阵中添加越来越多的元素,奖励可能增加,也可能减少。
5。目标
合成矩阵应让oracle函数 F 返回大于25000的值。只要达到此目标,我都会终止学习步骤。
答案 0 :(得分:2)
老实说,没有知道诸如奖励函数中的哪些计算或您可以做出的编程设计决策之类的细节,就没有有效的方法来知道如何优化该系统。
您可能是正确的,这些情节不适合进行分布式计算,这意味着我们无法并行化这些情节,因为它们取决于先前的搜索步骤。但是,有可能在奖励函数评估中投入更多的计算能力,从而减少运行所需的总时间。
我鼓励您分享有关该问题的更多详细信息,例如,通过分析代码以查看哪个组件花费最多的时间,共享代码摘录,或者随着科学水平的提高,共享可复制的代码基地。
答案 1 :(得分:1)
不是您问题的解决方案,只是一些可能相关的一般想法:
关于您的特定问题:
也就是说,我很期待看到一个确实可以帮助您解决问题的答案。