Closed. This question needs to be more focused。它当前不接受答案。
想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
3年前关闭。
Improve this question
根据可用的文档和资源,还不清楚如何完成一个简单的入门流程,在该流程中,您将Vowpal Wabbit作为守护程序启动(可能甚至没有任何预学习模型)并使其在线学习和探索―我我正在寻找可以在上下文中进行反馈,获得建议并反馈成本/报酬的流程。
因此,让我跳过对尝试过的技术的描述,仅要求就我认为在这一方面必不可少的内容进行清晰的演示-
如何通过守护程序演示正在进行的学习,而不是从批处理数据以脱机模式,而是纯粹从在线交互中进行学习?有什么好的建议吗? 如何在守护程序模式下报告选定操作后的成本/报酬?每个 Action 一次?散装?无论哪种方式,如何? 有点相关―您会为现场匪徒推荐一个使用守护程序的实时系统吗?还是一些语言API? 您能否替代地指出服务器代码在巨大代码库中的位置?它可能是一个系统地进行探索的好地方。
我通常会得到一个分布(允许的 Action 数量的大小)作为对每个发送的输入的答复。不管我发送什么,通常都是相同的分布。也许我不知道,使用默认的
我了解,已经做出了很大的努力来使人们能够从过去的交互以及经过验证的数据中学习。但是,我认为也应该有一些可用的解释来清除上面的那些或多或少的实用要素。
非常感谢!
在上面,我们告诉大众在没有通过旧策略数据提供任何前期培训的情况下启动上下文强盗模型服务守护程序。该模型将是VW的默认上下文强盗模型,并且将假定如上指定,只有两个操作可供选择。 Vowpal最初将随机分配建议的操作,并将随着时间的流逝而接近最佳策略。
让我们检查一下守护进程是否已启动:
在以后的任何时候,如果我们想停止守护程序并重新启动它,我们只需
现在让我们模拟决策点和所采取行动的成本。在下面的文章中,我将使用终端方式将消息发送到守护程序,但是您可以使用 postman 之类的工具或您自己的代码来执行此操作:
在这里,我们只是告诉Vowpal建议对包含功能集(
Vowpal简洁地回答不是选择一个 Action ,而是用两个 Action 中每个 Action 的预测成本分布来指导我们的模型从以下选项中进行选择:
这些当然只是一些随机初始化的结果,因为尚未看到任何成本!现在,我们期望使用Vowpal的应用程序根据此分布随机选择统一-这部分不是由Vowpal实现的,而是留给应用程序代码。上下文强盗模型依赖于我们从此分布中采样来选择要针对环境播放的 Action -如果我们不遵循此期望,则该算法可能无法完成其学习。
因此,假设我们从此分发中进行了采样,并获得了 Action
Vowpal得到了我们的反馈,并为我们提供了针对此情况的最新预测:
除非我们希望再次针对完全相同的上下文提供建议,否则我们现在不在乎它,但是无论如何我们都会得到其更新的建议。
显然,这是与以前相同的建议,因为到目前为止,我们的单个反馈还不足以让该模型学习任何东西。重复多次,对于不同的上下文功能,从Vowpal返回的预测将适应和更改。对许多不同的上下文重复此过程很多次,该模型将根据所学知识开始改变其预测。
请注意,我在这里提到的是成本而不是报酬,因为与Vowpal中实现的算法的许多文献不同,至少命令行版本将成本作为反馈,而不是报酬。
想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
3年前关闭。
Improve this question
根据可用的文档和资源,还不清楚如何完成一个简单的入门流程,在该流程中,您将Vowpal Wabbit作为守护程序启动(可能甚至没有任何预学习模型)并使其在线学习和探索―我我正在寻找可以在上下文中进行反馈,获得建议并反馈成本/报酬的流程。
因此,让我跳过对尝试过的技术的描述,仅要求就我认为在这一方面必不可少的内容进行清晰的演示-
我通常会得到一个分布(允许的 Action 数量的大小)作为对每个发送的输入的答复。不管我发送什么,通常都是相同的分布。也许我不知道,使用默认的
--cb_explore
算法需要一个完整的学习时期,并且不确定该时期的持续时间是否可以从外部设置。我了解,已经做出了很大的努力来使人们能够从过去的交互以及经过验证的数据中学习。但是,我认为也应该有一些可用的解释来清除上面的那些或多或少的实用要素。
非常感谢!
最佳答案
到了。此流程仅需要Vowpal Wabbit输入格式的子集。成功安装后,首先要启动Vowpal Wabbit守护程序:
vw --cb_explore 2 --daemon --port 26542 --save_resume
在上面,我们告诉大众在没有通过旧策略数据提供任何前期培训的情况下启动上下文强盗模型服务守护程序。该模型将是VW的默认上下文强盗模型,并且将假定如上指定,只有两个操作可供选择。 Vowpal最初将随机分配建议的操作,并将随着时间的流逝而接近最佳策略。
让我们检查一下守护进程是否已启动:
pgrep 'vw.*'
应该返回进程列表。在以后的任何时候,如果我们想停止守护程序并重新启动它,我们只需
pkill -9 -f 'vw.*--port 26542'
即可。现在让我们模拟决策点和所采取行动的成本。在下面的文章中,我将使用终端方式将消息发送到守护程序,但是您可以使用 postman 之类的工具或您自己的代码来执行此操作:
echo " | a b " | netcat localhost 26542
在这里,我们只是告诉Vowpal建议对包含功能集(
a
,b
)的上下文应采取的操作。Vowpal简洁地回答不是选择一个 Action ,而是用两个 Action 中每个 Action 的预测成本分布来指导我们的模型从以下选项中进行选择:
0.975000 0.025000
这些当然只是一些随机初始化的结果,因为尚未看到任何成本!现在,我们期望使用Vowpal的应用程序根据此分布随机选择统一-这部分不是由Vowpal实现的,而是留给应用程序代码。上下文强盗模型依赖于我们从此分布中采样来选择要针对环境播放的 Action -如果我们不遵循此期望,则该算法可能无法完成其学习。
因此,假设我们从此分发中进行了采样,并获得了 Action
1
,然后在现实环境中执行了该 Action (对于我们要求Vowpal推荐的相同上下文a b
)。想象一下,这次我们收回了0.7的费用。我们必须将此成本作为反馈反馈给Vowpal:echo " 1:0.7:1 | a b " | netcat localhost 26542
Vowpal得到了我们的反馈,并为我们提供了针对此情况的最新预测:
0.975000 0.025000
除非我们希望再次针对完全相同的上下文提供建议,否则我们现在不在乎它,但是无论如何我们都会得到其更新的建议。
显然,这是与以前相同的建议,因为到目前为止,我们的单个反馈还不足以让该模型学习任何东西。重复多次,对于不同的上下文功能,从Vowpal返回的预测将适应和更改。对许多不同的上下文重复此过程很多次,该模型将根据所学知识开始改变其预测。
请注意,我在这里提到的是成本而不是报酬,因为与Vowpal中实现的算法的许多文献不同,至少命令行版本将成本作为反馈,而不是报酬。
10-06 02:11