如果没有特征与手臂相关联,cb_adf 算法如何知道数据中有可用的新动作?

How does cb_adf algorithm know a new action is available in the data if no feature is associated with arms?

从我看过的文档来看,cb_adf format multiline data 适用于动作数量随时间变化的场景。我的问题是,算法如何知道新操作是否可用?格式化记录的强盗数据之类的代码是否正确?

two_actions = """
shared | a:0.5 b:1 c:2
0:-0.1:0.75 |
|
"""

three_actions_now = """
shared | a:0.5 b:1 c:2
|
0:-0.3:0.55 |
|
"""

如果某项操作不再可用怎么办?

在这种情况下,你应该为没有其他特征的手臂使用一些身份特征,这是因为对于 cb_adf 来说,动作本身基本上被定义为它们的特征集。

shared | a:0.5 b:1 c:2
| action_1
0:-0.3:0.55 | action_2
| action_3

如果该操作不再可用,您将省略与该功能对应的行。因此,如果我们希望从要从中选择的操作池中删除 action_2,它可能看起来像。

shared | a:0.5 b:1 c:2
| action_1
| action_3

cb_adf 在每个操作不止一个特征时效果最佳。例如,在动作之间共享特征允许学习者从对其他动作的奖励中学习其他特征的价值。