是否可以在缺少某些输入的情况下使用GPFlow进行多任务学习?具体来说,我正在尝试拟合来自多个相关个体的空间数据,但是数据并不是针对所有个体都位于相同的输入位置。我知道我应该在这里进行分层GP,但是它们的伸缩性往往不好。我希望可以代替使用多任务学习,尽管用例不能准确地映射到此方法的典型应用程序上。
答案 0 :(得分:1)
是否可以在缺少某些输入的情况下使用GPFlow进行多任务学习?
当然可以。
GPflow实现此目的的方法是将输出索引堆叠到输入上。例如,假设您在位置[0.1,0.2,0.3]和[0.3,0.4,0.5]处观察到两个输出(0,1),那么您将构造“输入矩阵”
[0.1 0]
[0.2 0]
[0.3 0]
[0.3 1]
[0.4 1]
[0.5 1]
然后,使用“ active_dims”指定内核如何在此矩阵上起作用。可以对此模型起作用的最简单的内核是:
k = gpflow.kernels.Matern32(1,active_dims = [0])* gpflow.kernels.Coregion(1,2,2,active_dims = [1])
这是内在的共区域化模型(请参见Alvarez等,[1])。您可以在GPflow文档here中找到更详细的演示。
请注意,您可能需要一个更强大的模型来进行固有的共区域化:共区域化的线性模型更强大,并且仍然易于实现。
答案 1 :(得分:0)
GPflow当前没有模型可以做到这一点。但是,GPflow确实提供了轻松实现此目的的工具。两个建议:
Kuf
,为其请求的输出与相应的输入一起传递。