{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Kernel Design\n", "\n", "It's easy to make new kernels in GPflow. To demonstrate, we'll have a look at the Brownian motion kernel, whose function is \n", "$$\n", "k(x, x') = \\sigma^2 \\text{min}(x, x')\n", "$$\n", "where $\\sigma^2$ is a variance parameter. " ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import gpflow\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "plt.style.use('ggplot')\n", "import tensorflow as tf\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To make this new kernel class, we inherit form the base class `gpflow.kernels.Kernel` and implement the three functions below. Note that depending on the kernel to be implemented other classes can be more adequate. For example, it is preferable to inherit from the base class `gpflow.kernels.Stationary` if the kernel to be implemented is stationnary.\n", "\n", "#### `__init__`\n", "The constructor takes no argument in this simple case (though it could, if that was convenient). It *must* call the constructor of the super class with appropriate arguments. In this case, the input_dim is always 1 (Brownian motion is only defined in 1D) and we'll assume the active_dims are [0], for simplicity.\n", "\n", "We've added a parameter to the kernel using the Param class. Using this class lets the parameter be used in computing the kernel function, and it will automatically be recognised for optimization (or MCMC). Here, the variance parameter is initialized at 1, and constrained to be positive. \n", "\n", "#### `K`\n", "This is where you implement the kernel function itself. This takes two arguments, X and X2. By convention, we make the second argument optional (defaults to None). \n", "\n", "Inside K, all the computation must be done with tensorflow -- here we've used `tf.minimum`. When GPflow executes the `K` function, X and X2 will be tensorflow tensors, and the `params_as_tensors` decorator turns the parameters such as self.variance into tensorflow tensors as well.\n", "\n", "#### `Kdiag`\n", "This convenience function allows GPflow to save memory at predict time. It's simply the diagonal of the `K` function, in the case where X2 is None. It must return a 1D vector, so we use tensorflow's reshape command.\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
classpriortransformtrainableshapefixed_shapevalue
Brownian/varianceParameterNone+veTrue()True1.0
\n", "
" ], "text/plain": [ "<__main__.Brownian at 0x7f775cbaefd0>" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "class Brownian(gpflow.kernels.Kernel):\n", " def __init__(self):\n", " super().__init__(input_dim=1, active_dims=[0])\n", " self.variance = gpflow.Param(1.0, transform=gpflow.transforms.positive)\n", "\n", " @gpflow.params_as_tensors\n", " def K(self, X, X2=None):\n", " if X2 is None:\n", " X2 = X\n", " return self.variance * tf.minimum(X, tf.transpose(X2)) # this returns a 2D tensor\n", "\n", " @gpflow.params_as_tensors\n", " def Kdiag(self, X):\n", " return self.variance * tf.reshape(X, (-1,)) # this returns a 1D tensor\n", " \n", "k_brownian = Brownian()\n", "k_brownian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the code above, one can see that the decorator `gpflow.params_as_tensors` is used on top of the definitions of `K` and `Kdiag`. Variables such as `self.variance` are of type *gpflow.Parameter*, which means they can't directly be multiplied or sumed with *tf.Tensors*, or used as inputs of tensorflow functions. The `gpflow.params_as_tensors` decorator ensures that inside the function, this GPflow parametres are exposed as regular tensorflow variables. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plotkernelsample(k, ax, xmin=0, xmax=3):\n", " xx = np.linspace(xmin, xmax, 300)[:,None]\n", " K = k.compute_K_symm(xx)\n", " ax.plot(xx, np.random.multivariate_normal(np.zeros(300), K, 5).T)\n", " ax.set_title('Samples ' + k.__class__.__name__)\n", "\n", "def plotkernelfunction(k, ax, xmin=0, xmax=3, other=0):\n", " xx = np.linspace(xmin, xmax, 100)[:,None]\n", " ax.plot(xx, k.compute_K(xx, np.zeros((1,1)) + other))\n", " ax.set_title(k.__class__.__name__ + ' k(x, %f)'%other)\n", "\n", "f, axes = plt.subplots(1, 2, figsize=(12, 4), sharex=True)\n", "plotkernelfunction(k_brownian, axes[0], other=2.)\n", "plotkernelsample(k_brownian, axes[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using the kernel in a model\n", "\n", "Because we've inherited from the `Kernel` base class, this new kernel has all the properties needed to be used in GPflow. It also has some convenience features such as\n", "\n", "`k.compute_K(X, X2)`\n", "\n", "which allow the user to compute the kernel matrix using (and returning) numpy arrays. \n", "\n", "To show that this kernel works, let's use it inside GP regression. We'll see that Brownian motion has quite interesting properties. To add a little flexibility, we'll add a Constant kernel to our Brownian kernel, and the GPR class will handle the noise. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:gpflow.logdensities:Shape of x must be 2D at computation.\n", "WARNING:gpflow.logdensities:Shape of mu may be unknown or not 2D.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 5.294434\n", " Number of iterations: 26\n", " Number of functions evaluations: 29\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "INFO:tensorflow:Optimization terminated with:\n", " Message: b'CONVERGENCE: REL_REDUCTION_OF_F_<=_FACTR*EPSMCH'\n", " Objective function value: 5.294434\n", " Number of iterations: 26\n", " Number of functions evaluations: 29\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "np.random.seed(42)\n", "X = np.random.rand(5, 1)\n", "Y = np.sin(X*6) + np.random.randn(*X.shape)*0.001\n", "\n", "k1 = Brownian()\n", "k2 = gpflow.kernels.Constant(1)\n", "k = k1 + k2\n", "\n", "m = gpflow.models.GPR(X, Y, kern=k)\n", "opt = gpflow.train.ScipyOptimizer()\n", "opt.minimize(m)\n", "\n", "xx = np.linspace(0, 1.1, 100).reshape(100, 1)\n", "mean, var = m.predict_y(xx)\n", "plt.plot(X, Y, 'kx', mew=2)\n", "line, = plt.plot(xx, mean, lw=2)\n", "_ = plt.fill_between(xx[:,0], mean[:,0] - 2*np.sqrt(var[:,0]), mean[:,0] + 2*np.sqrt(var[:,0]),\n", " color=line.get_color(), alpha=0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## See also\n", "\n", "For more details on how to manipulate existing kernels (or the one you just created!), we refer to the [Manipulating kernels](../advanced/kernels.ipynb) notebook. " ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }