`vw --audit` 如何在内部计算特征的权重?

How `vw --audit` internally computes the weights of the features?

在 vowpawabbit 中有一个选项 --audit 可以打印特征的权重。

如果我们有一个具有四臂的 vw 上下文强盗模型,这个特征权重是如何创建的?

据我了解,vowpawabbit 试图为每只手臂拟合一个线性模型。

因此,如果使用所有手臂的平均值计算权重,那么它们通常与获得奖励相关,而不是哪些特征使模型从另一个变体中选择一个变体。

我很想知道它们是如何计算的,以了解我如何解释获得的结果。我尝试搜索 its Github repository 但找不到任何有意义的内容。

I am interested know out how they are calculated to see how I can interpret the results obtained.

不幸的是,知道第一个并不会导致知道第二个。

你的问题与上下文强盗有关,但重要的是要注意解释模型参数是监督学习中也会出现的问题。机器学习最近(即我的一生)取得了进展,主要是通过关注预测的质量而不是模型参数的意义。在一篇blog post中,Phoebe Wong在娱乐的同时概述了这个问题。

归根结底,我们的模型不是因果关系,所以您根本无法下结论,因为 "the weight of feature X is for arm A is large means that if I were to intervene in the system and increase this feature value that I will get more reward for playing arm A"。

我们目前正在开发模型检查工具,利用 permutation importance 等技术帮助您回答 "if I were to stop using a particular feature how would the frequency of playing each arm change for the trained policy" 等问题。我们希望这是有用的信息。

说了这么多,让我试着回答你原来的问题......

In vowpawabbit there is an option --audit that prints the weights of the features.

If we have a vw contextual bandit model with four arms, how is this feature weight created?

格式已记录 here。假设您使用的是 --cb(而不是 --cb_adf),那么手臂的数量是固定的,因此 offset 字段将在手臂上递增。所以对于像

这样的例子
1:2:0.4 |foo bar

使用 --cb 4 您将获得 namespacefoofeaturebaroffset 的审计输出0、1、2 和 3。

解释使用 --cb_adf 时的输出是可能的,但很难简洁地解释。

From what I understand vowpawabbit tries to fit one linear model to each arm.

更简短的答案:对于--cb_type dm,大众基本上独立地尝试仅使用政策发挥作用的例子来预测每个手臂的平均奖励。因此,您在特定偏移量 N 处从审计中获得的权重类似于您从受过训练的监督学习模型中获得的权重,该模型被训练用于预测历史数据子集的奖励,该子集仅包含历史策略在手臂 N 上发挥的次数。与其他 --cb_type设置解释比较复杂。

更长的答案:"Linear model" 指的是正在使用的表示。大众可以将非线性纳入模型,但我们暂时忽略它。 "Fit" 是一些重要细节所在的地方。 VW 将 CB 问题的部分反馈信息(部分反馈 = "for this example you don't know the reward of the arms not pulled")简化为全反馈监督学习问题(全反馈 = "for this example you do the reward of all arms")。 --cb_type 参数选择缩减策略。有几篇关于该主题的论文,Dudik et. al. and then look for papers that cite this paper. In terms of code, ultimately things are grounded here 是一个不错的起点,但编写代码更多的是为了性能而不是可理解性。