优先体验重放 - 为什么要近似密度函数?

数据挖掘 强化学习 q学习
2021-09-16 17:02:48

我正在阅读有关Prioritized Experience Replay的内容,但无法理解以下内容:

在第 4 页,每个转换都可以从表格中以自己的概率选择。这是累积密度函数(如果我理解正确的话):

P(i)=pikpk

在哪里:

pi=1indexInTable

之后,论文说:

对于基于等级的变体,我们可以使用具有等概率 k 段的分段线性函数来近似累积密度函数。可以预先计算段边界(它们仅在 N 或 α 变化时变化)。在运行时,我们对一个段进行采样,然后在其中的转换中统一采样。

我的问题是,如果可以通过以下方式实现,为什么我们必须近似密度:

  1. 在 1 和 N 之间掷骰子(骰子掷出“1”而不是“2”等的可能性呈指数增长)
  2. 根据骰子从索引中选择一个项目。

在 c++ 中,我们有std::exponential_distribution [source],所以不需要近似任何东西。...如果我们保持我们的表按降序排序。

2个回答

对于基于等级的变体,我们可以使用具有等概率 k 段的分段线性函数来近似累积密度函数。可以预先计算段边界(它们仅在 N 或 α 变化时变化)。在运行时,我们对一个段进行采样,然后在其中的转换中统一采样。

形成我的观点,根据 pi=1rank(i)P(i)=pikpk,排名第一的经验将有最高的概率 P(i)进行采样以形成下一个小批量。更简单的方法是使用 轮盘赌选择

虽然上面的引用是同一件事,approximate the cumulative density function. 假设小批量大小为k,并且排序的经验应该被拆分为 k段。约束是P(i)因为每个部分的所有经验都应该是平等的。因此,由获得高排名(排名 1、2、3、...)的经验形成P(i),第一段可能只有很少的经验,如 2 或 3,但最后一段可能有 20、30 甚至更多的经验。

这与基于小批量的学习算法结合使用特别好:选择 k 成为小批量的大小,并从每个段中准确地采样一个过渡——这是一种分层抽样的形式,具有平衡小批量的额外优势。

PER 将从每个段中选择一个体验,第一个段的体验将很有可能像我们预期的那样命中。

虽然我认为它与 相同Roulette Wheel Selection,但在同一细分市场中的经验具有相同的概率被选中PER

这是因为概率密度函数可能不遵循指数曲线,特别是如果公式不是 p=1/rank而是与误差量成正比。这将是我们保持数组排序的副产品,因为我们想简化我们的生活。曲线可能如下所示:在此处输入图像描述

这里,曲线下面积为 1,但曲线不是指数的或线性的或线性水平的。

从 0.0 到 1.0 掷骰子,顺便说一下,掷 0.71 和 0.92 等的概率相同。从数组中选择一个元素(不必排序!),从左到右扫描数组。

考虑具有 4 个数字的数组:{5, 15, 25, 10}。每个代表总和的一部分:

|0.1|     0.3     |           0.5           |0.2|
you got to be pretty lucky to land on 0.1 (within first 10% segment)

选择一个元素的可能性取决于它的“曲线下的高度”。元素越高,我们的 0 对 1 计数器就越有可能落在它上面。

不能用我原来的问题中提到的“指数骰子方法”来表示这种“着陆概率机制”。

然而,通过“指数骰子”进行选择——尽管不精确可能仍然有效。唯一需要注意的是阵列必须保持有序,这在后方是一个痛苦。所以好处并不真正存在,只需保持数组未排序并在所有操作上使用“分段树”又名“和树”方法 O(logn) 成本。这将允许您避免从左到右扫描数组,帮助您获得从 O(N) 到 O(logn) 的采样性能

现在请帮我 解决这个问题:)