Multi-Output Models¶
In regression, this is when we try to learn a function f or multiple functions to predict multiple output y .
Details
Concretly, we have a regression problem and we are trying to predict y\in \mathbb{R}^{N\times P} where N is the number of samples and P is the number of outputs. Now the question is, how do we model all of these outputs jointly?
There are some questions:
- Are there correlations between the outputs or independent?
- Is there missing data?
- Do we actually need to model all of them at the same time and/or jointly?
Terminology¶
Firstly, there is some confusion about the terminology. I've heard the following names:
Multi-Task
when we have different outputs. BUT possibly with different learning objectives and even different data types. e.g. one output is a regression task, one output is a classification problem, one output is a meta-learning task, etc. (a.k.a. the different tasks). The easiest parallel I can think of is self-driving cars. The objective is to drive, but you need to do many different tasks in order to reach the objective: drive without crashing.
Multi-Output
typically when we have one task but just more than one output. e.g. multiple outputs for regression or multiple outputs for classification. So a concrete example is if we are predicting temperature and windspeed from some inputs.
Multi-Fidelity
same as multi-output but catered more to situations where we know one of the outputs is of lower quality. e.g. a regression problem where one of the targets has less resolution or perhaps missing some data.
These definitions come from a discussion I had with the GPFlow Community. I have yet to see a paper that is consistent with how these are done. I have broken up each section based off of their name but as seen from the names, there is a lot of overlap.
🆕 New!¶
You'll find these below but I wanted to highlight them because they're pretty cool.
Scalable Exact Inference in Multi-Output Gaussian Processes - Bruinsma et al (2020)
They show a nice trick where you learn an invertible projection on your output space to reduce the crazy amount of outputs.
📜 Paper
A Framework for Interdomain and Multioutput Gaussian Processes - by Van der Wilk et al (2020)
A full framework in GPFlow where they implement a framework that allows maximum flexibility when working with multi-output GPs.
📜 Paper
📺 Lectures¶
📜 Literature¶
Multi-Task¶
Problems like these tend to be when we have a multi-output problem but we don't necessarily have all outputs. We also assume we have correlated dimensions. From (Bonilla & Williams, 2008), known as the intrinsic model of coregionalization (ICM), We have the form:
This is useful for problems with a small number of dimensions because it's quite an expensive method.
Multi-Output¶
Efficient multioutput Gaussian processes through variational inducing kernels - Alvarez et al. (2011)
-> paper
Remarks on multi-output Gaussian process regression - Liu et. al. (2018)
Heterogeneous Multi-output Gaussian Process Prediction - Moreno-Muñez et. al. (2018)
-> paper
-> code
A Framework for Interdomain and Multioutput Gaussian Processes - by Van der Wilk et al (2020)
-> Paper
Fast Approximate Multi-output Gaussian Processes - Joukov & Kulic (2020)
-> paper
Scalable Exact Inference in Multi-Output Gaussian Processes - Bruinsma et al (2020)
They show a nice trick where you learn an invertible projection on your output space to reduce the crazy amount of outputs.
📜 Paper
Multi-Fidelity¶
Deep Gaussian Processes for Multi-fidelity Modeling - Cutjar et. al. (2019)
-> paper
-> notebook
-> poster
-> Code
Software¶
I decided to include a special section about the software because there is no real go-to library for dealing with multioutput GPs as of now.
Exact GP¶
GPFlow
- Demo Notebook.
Use this if you have correlated outputs with a low number of dimensions and samples.
GPyTorch
-
Coregionalization (Correlated Outputs)
Use this if you have correlated outputs with a low number of dimensions and samples.
-
Batch Independent MultiOutput GP
Use this if you assume independent outputs and the number of inputs and each output have the same size.
-
ModelList (Multi-Output) GP Regression
Use if you have a different independent GP models with no correlation between inputs and outputs.
Sparse GP¶
GPyTorch
-
Coregionalization (Correlated Outputs)
Use this if you have correlated outputs with a low number of dimensions and samples. Uses the Linear Model of Coregionalization (LMC).
-
Batch Independent MultiOutput GP
Use this if you assume independent outputs and the number of inputs and each output have the same size.