首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Softmax资源管理器(--cb_探索者_adf)在VowpalWabbit中的排名

使用Softmax资源管理器(--cb_探索者_adf)在VowpalWabbit中的排名
EN

Stack Overflow用户
提问于 2021-02-18 13:21:43
回答 1查看 353关注 0票数 4

我试图使用VW来使用上下文强盗框架来执行排名,特别是使用--cb_explore_adf --softmax --lambda X。选择softmax是因为,根据大众的文档:“这是一个不同的探索者,它不仅使用策略来预测一个动作,还可以预测一个评分,表明每个动作的质量。__”这个与质量相关的分数是我想用来进行排名的。

情况是这样的:我有一个A、B、C、D项的列表,我想按照一个最大限度地使用预先定义的度量(例如CTR)对其进行排序。正如我所看到的,其中一个问题是,我们不能单独评估项目,因为我们无法确定是哪个项目让用户单击或不单击。

为了测试一些方法,我创建了一个虚拟数据集。作为试图解决上述问题的一种方法,我使用整个有序列表来评估是否发生单击(例如,给定用户X的上下文,他将单击如果项目是C,A,B,D)。然后,我根据它们在列表中的位置分别奖励它们,即0reward = 1/P。这里,C,A,B,D的奖励分别是1,0.5和0.25,0.125。如果没有点击,则所有项目的奖励为零。这背后的理由是,更重要的项目将稳定在顶部,而不那么重要的底部。

另外,我发现的困难之一是为这种方法定义了一个抽样函数。通常,我们只对选择一个选项感兴趣,但在这里,我必须多次(在示例中是4次)。正因为如此,在取样项目时,我还不太清楚我应该如何结合探索。我有几个想法:

  • 复制概率质量函数并将其分配给copy_pmf。在0和max(copy_pmf)之间画一个随机数,对于copy_pmf中的每个概率值,增加sum_prob变量(非常类似于这里的教程:simulation.html)。当sum_prob > draw时,我们将当前项/prob添加到列表中。然后,我们从copy_pmf中删除这个概率,设置sum_prob = 0,并再次在0和max(copy_pmf)之间画一个新的数字(这可能会改变或不改变)。
  • 另一个选项是画一个随机数,如果最大概率,即max(pmf)大于这个数,我们就利用它。如果不是,我们对列表进行洗牌,并返回这个(探索)。这种方法需要调优lambda参数,它控制输出pmf (我已经看到了最大prob > 0.99的情况,这意味着大约有1%的机会进行探索。我也曾见过最大prob为0.5的例子,约为50%的勘探。

我想知道是否有任何关于这个问题的建议,特别是抽样和奖励功能。还有,如果有什么东西我可能会遗漏在这里。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2021-02-18 18:01:42

这听起来像是条件语境匪徒可以解决的问题

对于您提到的演示场景,每个示例应该有4个插槽。在这种情况下,您可以使用任何探索算法,并且它将在每个时隙独立执行。学习目标是所有时隙的平均损失,但决策是从第一个时隙到最后一个时隙顺序作出的,所以即使在这里获得二进制奖励,您也可以有效地学习排名。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66260831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档