【问题标题】:Time efficient way to implement Multi-Armed-Bandits?实施多武装强盗的省时方法?
【发布时间】:2023-03-11 05:39:01
【问题描述】:

我正在研究多臂强盗 (MAB) 问题,大约有100万只武器。相比之下,迭代次数当然要大得多,大约 10-20 百万。

大多数 MAB 算法需要一个 argmax 运算符(动作空间的 argmax),必须在每次迭代中执行该运算符才能选择当前臂(它最大化给定的选择标准)。无论选择哪种编程语言来实现,这个过程/这个 argmax 运算符在整个动作空间(100 万臂)上都是非常耗时的。

有人对如何以高效的方式实现 MAB 算法有一些想法吗?

【问题讨论】:

  • 您正在尝试哪种算法? (UCB1?EXP3?)当你尝试一个手臂时返回什么值? (整数,实数)关于未采样臂的值,您是否可以利用任何属性? (例如,如果它们保持有序,则对它们进行排序,然后您只需要评估第一个。)也就是说,有很多可能性,但需要更多信息来提供帮助。
  • 主要是关于UCB1。返回值是实数。在前 100 万次运行中,每个臂必须至少选择一次,然后再选择任何臂两次。因此,在前 1 m 的运行中不需要 argmax 运算符。根据它们的值对臂进行排序是一种想法,但是在选择臂并更新其值之后,必须将该臂放回排序臂列表的正确顺序/正确位置。这可能需要更少的时间,但问题仍然存在:是否有更好/其他的想法?或者有没有关于如何实现这个想法的建议?优先队列?

标签: performance artificial-intelligence reinforcement-learning


【解决方案1】:

在 UCB1 中,有两个项可确定接下来选择哪个臂 - 平均奖励和置信界限。

average + sqrt(2 ln N / n_i)

撇开迄今为止的平均奖励不谈,第二项取决于样本总数 (N),这对于所有手臂都是相同的,以及给定手臂的总样本 (n_i)。因此,对于所有采样次数相同的臂,第二项将是相同的。

一种简单的方法是根据执行的样本数对武器进行分组。然后,在每个桶中,您可以按奖励(从高到低)排序。当您想决定下一个采样哪个臂时,您只需检查每个桶中具有最高收益的臂,然后选择具有最高值的桶(来自 UCB 方程)进行下一个采样。您只需测试每个存储桶中的第一个条目即可。

在此基础上还可以进行进一步的改进,但这比在每个时间步迭代所有臂要好得多。

【讨论】:

    猜你喜欢
    • 2021-07-16
    • 2011-10-25
    • 1970-01-01
    • 2018-09-12
    • 2017-01-25
    • 1970-01-01
    • 2022-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多