【发布时间】: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 你。
标签: machine-learning optimization deep-learning reinforcement-learning