gpt4 book ai didi

vowpalwabbit - 使用 Softmax Explorer (--cb_explore_adf) 在 VowpalWabbit 中进行排名

转载 作者:行者123 更新时间:2023-12-03 18:54:17 31 4
gpt4 key购买 nike

我正在尝试使用 VW 使用上下文强盗框架执行排名,特别是使用 --cb_explore_adf --softmax --lambda X .选择 softmax 是因为,根据 VW 的文档:“这是一个不同的资源管理器,它不仅使用策略来预测 Action ,而且还预测了 分数,表明每个 Action 的质量。”这种质量-相关分数是我想用于排名的分数。
场景是这样的:我有一个项目列表 [A、B、C、D],我想按照最大化预定义指标(例如,点击率)的顺序对其进行排序。正如我所看到的,问题之一是我们无法单独评估项目,因为我们无法确定其中 item 使用户点击与否。
为了测试一些方法,我创建了一个虚拟数据集。作为尝试解决上述问题的一种方法,我使用整个有序列表作为评估是否发生点击的一种方式(例如,给定用户 X 的上下文,如果项目是 [C, A , B, D])。然后,我根据它们在列表中的位置分别奖励这些项目,即 reward = 1/P对于 0 < P < len(list)。这里,C、A、B、D 的奖励分别为 1、0.5 和 0.25、0.125。如果没有点击,则所有项目的奖励为零。这背后的原因是,更重要的项目将稳定在顶部,而不太重要的项目将稳定在底部。
此外,我发现的困难之一是为这种方法定义采样函数。通常,我们只对选择一个选项感兴趣,但在这里我必须采样多次(示例中为 4)。因此,在对项目进行采样时我应该如何结合探索并不是很清楚。我有几个想法:

  • 复制概率质量函数并将其分配给 copy_pmf .绘制一个介于 0 和 max(copy_pmf) 之间的随机数并且对于 copy_pmf 中的每个概率值, 增加 sum_prob变量(与此处的教程非常相似: https://vowpalwabbit.org/tutorials/cb_simulation.html )。当sum_prob > draw ,我们将当前项目/概率添加到列表中。然后,我们从 copy_pmf 中删除这个概率, 设置 sum_prob = 0 ,并在 0 和 max(copy_pmf) 之间再次绘制一个新数字(这可能会改变或不改变)。
  • 另一种选择是绘制一个随机数,如果概率最大,即 max(pmf)大于这个数字,我们就利用。如果不是,我们打乱列表并返回它(探索)。这种方法需要调整 lambda参数,控制输出 pmf (我见过最大概率 > 0.99 的情况,这意味着大约有 1% 的探索机会。我还看到最大概率为 ~0.5 的情况,即大约 50% 的探索。

  • 我想知道是否有关于这个问题的任何建议,特别是采样和奖励函数。另外,如果有任何我可能在这里遗漏的东西。
    谢谢!

    最佳答案

    这听起来像是可以通过 conditional contextual bandits 解决的问题
    对于您提到的演示场景,每个示例都应该有 4 个插槽。
    在这种情况下,您可以使用任何探索算法,并且每个插槽都将独立完成。学习目标是所有槽的平均损失,但决策是从第一个槽到最后一个按顺序做出的,因此即使在这里二元奖励的情况下,您也可以有效地学习排名。

    关于vowpalwabbit - 使用 Softmax Explorer (--cb_explore_adf) 在 VowpalWabbit 中进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66260831/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com