如何在真实的在线模式中演示Vowpal Wabbit的上下文强盗?

mat*_*ter 8 vowpalwabbit

根据可用的文档和资源,如何完成一个简单的入门流程并不是很清楚,你可以将Vowpal Wabbit作为守护进程启动(甚至可能没有任何预先学习的模型)并让它在线学习和探索 - 我我正在寻找一个我在一个环境中提供食物的流程,获得推荐,并反馈成本/奖励.

因此,让我跳过对所尝试内容的技术描述,并简单地要求明确说明我认为在这方面必不可少的内容 -

  • 如何通过守护进程演示,学习正在进行,而不是在批处理数据的离线模式下,而是纯粹来自在线交互?有什么好建议吗?
  • 如何在守护程序模式下报告选定操作后的成本/奖励?每次行动一次?散装?无论哪种方式,怎么样?
  • 有点相关 - 你会推荐使用守护进程的实时系统,用于上下文强盗吗?或者更确切地说是一些语言API?
  • 您是否可以指出服务器代码位于巨大的代码库中的位置?它可以是一个开始系统探索的好地方.

我通常会获得一个分发(允许的操作数量的大小)作为每个发送的输入的回复.通常是相同的分布,无论我发送什么.也许它需要一个完整的学习时代与默认--cb_explore算法,我不知道,并不确定纪元持续时间可以从外部设置.

我知道,通过过去的交互和来自cbfied数据的学习,已经做了很多工作.但是我认为应该有一些可用的解释清除上面那些或多或少的实用主义要点.

非常感谢!

mat*_*ter 5

就是这样。此流程只需要 Vowpal Wabbit 输入格式的一个子集。安装成功后,首先启动 Vowpal Wabbit 守护进程:

vw --cb_explore 2 --daemon --port 26542 --save_resume
Run Code Online (Sandbox Code Playgroud)

在上面,我们告诉 VW 启动一个 Contextual Bandit 模型服务守护进程,而没有通过旧的策略数据提供任何前期培训。该模型将是 VW 的默认上下文老虎机模型,它将假设如上所述,只有两个动作可供选择。Vowpal 最初会随机分配建议的动作,并随着时间的推移接近最佳策略。

让我们检查守护进程是否已启动:pgrep 'vw.*'应该返回进程列表。

在以后的任何时候,如果我们想停止守护进程并重新启动它,我们只需pkill -9 -f 'vw.*--port 26542'.

现在让我们模拟为采取的行动获得的决策点和成本。在下文中,我使用终端方式向守护进程发送消息,但您可以使用 postman 之类的工具或您自己的代码来执行此操作:

echo " | a b " | netcat localhost 26542
Run Code Online (Sandbox Code Playgroud)

在这里,我们只是告诉 Vowpal 建议我们应该对包含特征集 ( a, b)的上下文采取什么行动。

Vowpal 简洁地回答不是选择一个动作,而是给出每个两个动作的预测成本分布,我们的模型被指示从以下选项中进行选择:

0.975000 0.025000
Run Code Online (Sandbox Code Playgroud)

这些当然只是一些随机初始化的结果,因为还没有看到任何成本!现在我们使用 Vowpal 的应用程序预计会根据这个分布随机均匀地选择?这部分不是由 Vowpal 实现的,而是留给应用程序代码。Contextual Bandits 模型依赖于我们从这个分布中采样来选择要针对环境进行的动作?如果我们不遵循这个期望?该算法可能无法完成其学习。

所以想象一下我们从这个分布中采样,得到 action 1,然后在现实世界的环境中执行那个 action (对于a b我们要求 Vowpal 推荐的相同上下文)。想象一下,这次我们收回了 0.7 的成本。我们必须将此成本作为反馈反馈给 Vowpal:

echo " 1:0.7:1 | a b " | netcat localhost 26542
Run Code Online (Sandbox Code Playgroud)

Vowpal 得到了我们的反馈,并为我们提供了对这种情况的更新预测:

0.975000 0.025000
Run Code Online (Sandbox Code Playgroud)

我们现在不关心它,除非我们希望再次获得完全相同上下文的推荐,但无论如何我们都会得到更新的推荐。

显然,这是与以前相同的建议,因为到目前为止我们的单一反馈不足以让模型学习任何东西。多次重复,对于不同的上下文特征,从 Vowpal 返回的预测将适应和变化。在许多不同的上下文中多次重复这个过程,模型将开始根据它所学到的东西改变它的预测。

注意我在这里提到了成本而不是奖励,因为与 Vowpal 中实现的算法的大部分文献不同,命令行版本至少将成本作为反馈,而不是奖励。