{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Multitask QEP Regression\n", "\n", "## Introduction\n", "\n", "Multitask regression, introduced in [this paper](https://papers.nips.cc/paper/3189-multi-task-gaussian-process-prediction.pdf) learns similarities in the outputs simultaneously. It's useful when you are performing regression on multiple functions that share the same inputs, especially if they have similarities (such as being sinusodial). \n", "\n", "Given inputs $x$ and $x'$, and tasks $i$ and $j$, the covariance between two datapoints and two tasks is given by\n", "\n", "$$ k([x, i], [x', j]) = k_\\text{inputs}(x, x') * k_\\text{tasks}(i, j)\n", "$$\n", "\n", "where $k_\\text{inputs}$ is a standard kernel (e.g. RBF) that operates on the inputs.\n", "$k_\\text{task}$ is a lookup table containing inter-task covariance." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import math\n", "import torch\n", "import qpytorch\n", "from matplotlib import pyplot as plt\n", "\n", "%matplotlib inline\n", "%load_ext autoreload\n", "%autoreload 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Set up training data\n", "\n", "In the next cell, we set up the training data for this example. We'll be using 100 regularly spaced points on [0,1] which we evaluate the function on and add Gaussian noise to get the training labels.\n", "\n", "We'll have two functions - a sine function (y1) and a cosine function (y2).\n", "\n", "For MTQEPs, our `train_targets` will actually have two dimensions: with the second dimension corresponding to the different tasks." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "train_x = torch.linspace(0, 1, 100)\n", "\n", "train_y = torch.stack([\n", " torch.sin(train_x * (2 * math.pi)) + torch.randn(train_x.size()) * 0.2,\n", " torch.cos(train_x * (2 * math.pi)) + torch.randn(train_x.size()) * 0.2,\n", "], -1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Define a multitask model\n", "\n", "The model should be somewhat similar to the `ExactQEP` model in the [simple regression example](../01_Exact_QEPs/Simple_QEP_Regression.ipynb).\n", "The differences:\n", "\n", "1. We're going to wrap ConstantMean with a `MultitaskMean`. This makes sure we have a mean function for each task.\n", "2. Rather than just using a RBFKernel, we're using that in conjunction with a `MultitaskKernel`. This gives us the covariance function described in the introduction.\n", "3. We're using a `MultitaskMultivariateNormal` and `MultitaskGaussianLikelihood`. This allows us to deal with the predictions/outputs in a nice way. For example, when we call MultitaskMultivariateNormal.mean, we get a `n x num_tasks` matrix back.\n", "\n", "You may also notice that we don't use a ScaleKernel, since the MultitaskKernel will do some scaling for us. (This way we're not overparameterizing the kernel.)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "POWER = 1.0\n", "class MultitaskQEPModel(qpytorch.models.ExactQEP):\n", " def __init__(self, train_x, train_y, likelihood):\n", " super(MultitaskQEPModel, self).__init__(train_x, train_y, likelihood)\n", " self.power = torch.tensor(POWER)\n", " self.mean_module = qpytorch.means.MultitaskMean(\n", " qpytorch.means.ConstantMean(), num_tasks=2\n", " )\n", " self.covar_module = qpytorch.kernels.MultitaskKernel(\n", " qpytorch.kernels.RBFKernel(), num_tasks=2, rank=1\n", " )\n", "\n", " def forward(self, x):\n", " mean_x = self.mean_module(x)\n", " covar_x = self.covar_module(x)\n", " return qpytorch.distributions.MultitaskMultivariateQExponential(mean_x, covar_x, power=self.power)\n", "\n", " \n", "likelihood = qpytorch.likelihoods.MultitaskQExponentialLikelihood(num_tasks=2, power=torch.tensor(POWER))\n", "model = MultitaskQEPModel(train_x, train_y, likelihood)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Train the model hyperparameters" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Iter 1/60 - Loss: 2.035\n", "Iter 2/60 - Loss: 1.984\n", "Iter 3/60 - Loss: 1.932\n", "Iter 4/60 - Loss: 1.877\n", "Iter 5/60 - Loss: 1.820\n", "Iter 6/60 - Loss: 1.760\n", "Iter 7/60 - Loss: 1.699\n", "Iter 8/60 - Loss: 1.639\n", "Iter 9/60 - Loss: 1.584\n", "Iter 10/60 - Loss: 1.538\n", "Iter 11/60 - Loss: 1.502\n", "Iter 12/60 - Loss: 1.474\n", "Iter 13/60 - Loss: 1.450\n", "Iter 14/60 - Loss: 1.429\n", "Iter 15/60 - Loss: 1.409\n", "Iter 16/60 - Loss: 1.390\n", "Iter 17/60 - Loss: 1.372\n", "Iter 18/60 - Loss: 1.354\n", "Iter 19/60 - Loss: 1.336\n", "Iter 20/60 - Loss: 1.318\n", "Iter 21/60 - Loss: 1.300\n", "Iter 22/60 - Loss: 1.281\n", "Iter 23/60 - Loss: 1.262\n", "Iter 24/60 - Loss: 1.242\n", "Iter 25/60 - Loss: 1.222\n", "Iter 26/60 - Loss: 1.202\n", "Iter 27/60 - Loss: 1.181\n", "Iter 28/60 - Loss: 1.159\n", "Iter 29/60 - Loss: 1.138\n", "Iter 30/60 - Loss: 1.116\n", "Iter 31/60 - Loss: 1.093\n", "Iter 32/60 - Loss: 1.070\n", "Iter 33/60 - Loss: 1.047\n", "Iter 34/60 - Loss: 1.024\n", "Iter 35/60 - Loss: 1.000\n", "Iter 36/60 - Loss: 0.977\n", "Iter 37/60 - Loss: 0.953\n", "Iter 38/60 - Loss: 0.930\n", "Iter 39/60 - Loss: 0.906\n", "Iter 40/60 - Loss: 0.883\n", "Iter 41/60 - Loss: 0.859\n", "Iter 42/60 - Loss: 0.836\n", "Iter 43/60 - Loss: 0.813\n", "Iter 44/60 - Loss: 0.790\n", "Iter 45/60 - Loss: 0.768\n", "Iter 46/60 - Loss: 0.745\n", "Iter 47/60 - Loss: 0.723\n", "Iter 48/60 - Loss: 0.702\n", "Iter 49/60 - Loss: 0.681\n", "Iter 50/60 - Loss: 0.660\n", "Iter 51/60 - Loss: 0.639\n", "Iter 52/60 - Loss: 0.619\n", "Iter 53/60 - Loss: 0.600\n", "Iter 54/60 - Loss: 0.580\n", "Iter 55/60 - Loss: 0.561\n", "Iter 56/60 - Loss: 0.542\n", "Iter 57/60 - Loss: 0.523\n", "Iter 58/60 - Loss: 0.504\n", "Iter 59/60 - Loss: 0.486\n", "Iter 60/60 - Loss: 0.467\n" ] } ], "source": [ "# this is for running the notebook in our testing framework\n", "import os\n", "smoke_test = ('CI' in os.environ)\n", "training_iterations = 2 if smoke_test else 60\n", "\n", "\n", "# Find optimal model hyperparameters\n", "model.train()\n", "likelihood.train()\n", "\n", "# Use the adam optimizer\n", "optimizer = torch.optim.Adam(model.parameters(), lr=0.1) # Includes GaussianLikelihood parameters\n", "\n", "# \"Loss\" for QEPs - the marginal log likelihood\n", "mll = qpytorch.mlls.ExactMarginalLogLikelihood(likelihood, model)\n", "\n", "for i in range(training_iterations):\n", " optimizer.zero_grad()\n", " output = model(train_x)\n", " loss = -mll(output, train_y)\n", " loss.backward()\n", " print('Iter %d/%d - Loss: %.3f' % (i + 1, training_iterations, loss.item()))\n", " optimizer.step()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Make predictions with the model" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Set into eval mode\n", "model.eval()\n", "likelihood.eval()\n", "\n", "# Initialize plots\n", "f, (y1_ax, y2_ax) = plt.subplots(1, 2, figsize=(8, 3))\n", "\n", "# Make predictions\n", "with torch.no_grad(), qpytorch.settings.fast_pred_var():\n", " test_x = torch.linspace(0, 1, 51)\n", " predictions = likelihood(model(test_x))\n", " mean = predictions.mean\n", " lower, upper = predictions.confidence_region(rescale=True)\n", " \n", "# This contains predictions for both tasks, flattened out\n", "# The first half of the predictions is for the first task\n", "# The second half is for the second task\n", "\n", "# Plot training data as black stars\n", "y1_ax.plot(train_x.detach().numpy(), train_y[:, 0].detach().numpy(), 'k*')\n", "# Predictive mean as blue line\n", "y1_ax.plot(test_x.numpy(), mean[:, 0].numpy(), 'b')\n", "# Shade in confidence \n", "y1_ax.fill_between(test_x.numpy(), lower[:, 0].numpy(), upper[:, 0].numpy(), alpha=0.5)\n", "y1_ax.set_ylim([-3, 3])\n", "y1_ax.legend(['Observed Data', 'Mean', 'Confidence'])\n", "y1_ax.set_title('Observed Values (Likelihood)')\n", "\n", "# Plot training data as black stars\n", "y2_ax.plot(train_x.detach().numpy(), train_y[:, 1].detach().numpy(), 'k*')\n", "# Predictive mean as blue line\n", "y2_ax.plot(test_x.numpy(), mean[:, 1].numpy(), 'b')\n", "# Shade in confidence \n", "y2_ax.fill_between(test_x.numpy(), lower[:, 1].numpy(), upper[:, 1].numpy(), alpha=0.5)\n", "y2_ax.set_ylim([-3, 3])\n", "y2_ax.legend(['Observed Data', 'Mean', 'Confidence'])\n", "y2_ax.set_title('Observed Values (Likelihood)')\n", "\n", "None" ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.18" } }, "nbformat": 4, "nbformat_minor": 4 }