{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/krasserm/bayesian-machine-learning/blob/dev/bayesian-optimization/bayesian_optimization.ipynb)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "try:\n", " # Check if notebook is running in Google Colab\n", " import google.colab\n", " # Get additional files from Github\n", " !wget https://raw.githubusercontent.com/krasserm/bayesian-machine-learning/dev/bayesian-optimization/bayesian_optimization_util.py\n", " # Install additional dependencies\n", " !pip install scikit-optimize==0.5.2\n", " !pip install GPy==1.9.8\n", " !pip install GPyOpt==1.2.1\n", " !pip install xgboost==0.90\n", "except:\n", " pass" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian optimization\n", "\n", "## Introduction \n", "\n", "Many optimization problems in machine learning are black box optimization problems where the objective function $f(\\mathbf{x})$ is a black box function[1][2]. We do not have an analytical expression for $f$ nor do we know its derivatives. Evaluation of the function is restricted to sampling at a point $\\mathbf{x}$ and getting a possibly noisy response. \n", "\n", "If $f$ is cheap to evaluate we could sample at many points e.g. via grid search, random search or numeric gradient estimation. However, if function evaluation is expensive e.g. tuning hyperparameters of a deep neural network, probe drilling for oil at given geographic coordinates or evaluating the effectiveness of a drug candidate taken from a chemical search space then it is important to minimize the number of samples drawn from the black box function $f$.\n", "\n", "This is the domain where Bayesian optimization techniques are most useful. They attempt to find the global optimimum in a minimum number of steps. Bayesian optimization incorporates prior belief about $f$ and updates the prior with samples drawn from $f$ to get a posterior that better approximates $f$. The model used for approximating the objective function is called *surrogate model*. Bayesian optimization also uses an *acquisition function* that directs sampling to areas where an improvement over the current best observation is likely.\n", "\n", "### Surrogate model\n", "\n", "A popular surrogate model for Bayesian optimization are [Gaussian processes](https://en.wikipedia.org/wiki/Gaussian_process) (GPs). I wrote about Gaussian processes in a [previous post](https://krasserm.github.io/2018/03/19/gaussian-processes/). If you are not familiar with GPs I recommend reading it first. GPs define a prior over functions and we can use them to incorporate prior beliefs about the objective function (smoothness, ...). The GP posterior is cheap to evaluate and is used to propose points in the search space where sampling is likely to yield an improvement. \n", "\n", "### Acquisition functions\n", "\n", "Proposing sampling points in the search space is done by acquisition functions. They trade off exploitation and exploration. Exploitation means sampling where the surrogate model predicts a high objective and exploration means sampling at locations where the prediction uncertainty is high. Both correspond to high acquisition function values and the goal is to maximize the acquisition function to determine the next sampling point. \n", "\n", "\n", "\n", "More formally, the objective function $f$ will be sampled at $\\mathbf{x}_t = \\mathrm{argmax}_{\\mathbf{x}} u(\\mathbf{x} \\lvert \\mathcal{D}_{1:t-1})$ where $u$ is the acquisition function and $\\mathcal{D}_{1:t-1} = \\{(\\mathbf{x}_1, y_1),...,(\\mathbf{x}_{t-1}, y_{t-1})\\}$ are the $t-1$ samples drawn from $f$ so far. Popular acquisition functions are *maximum probability of improvement* (MPI), *expected improvement* (EI) and *upper confidence bound* (UCB)[1]. In the following, we will use the expected improvement (EI) which is most widely used and described further below. \n", "\n", "### Optimization algorithm\n", "\n", "The Bayesian optimization procedure is as follows. For $t = 1,2,...$ repeat:\n", "\n", "- Find the next sampling point $\\mathbf{x}_{t}$ by optimizing the acquisition function over the GP: $\\mathbf{x}_t = \\mathrm{argmax}_{\\mathbf{x}} u(\\mathbf{x} \\lvert \\mathcal{D}_{1:t-1})$\n", "- Obtain a possibly noisy sample $y_t = f(\\mathbf{x}_t) + \\epsilon_t$ from the objective function $f$.\n", "- Add the sample to previous samples $\\mathcal{D}_{1:t} = \\{\\mathcal{D}_{1:t-1}, (\\mathbf{x}_t,y_t)\\}$ and update the GP.\n", "\n", "### Expected improvement\n", "\n", "Expected improvement is defined as\n", "\n", "$$\\mathrm{EI}(\\mathbf{x}) = \\mathbb{E}\\max(f(\\mathbf{x}) - f(\\mathbf{x}^+), 0)\\tag{1}$$\n", "\n", "where $f(\\mathbf{x}^+)$ is the value of the best sample so far and $\\mathbf{x}^+$ is the location of that sample i.e. $\\mathbf{x}^+ = \\mathrm{argmax}_{\\mathbf{x}_i \\in \\mathbf{x}_{1:t}} f(\\mathbf{x}_i)$. The expected improvement can be evaluated analytically under the GP model[3]:\n", "\n", "$$\n", "\\mathrm{EI}(\\mathbf{x}) =\n", "\\begin{cases}\n", "(\\mu(\\mathbf{x}) - f(\\mathbf{x}^+) - \\xi)\\Phi(Z) + \\sigma(\\mathbf{x})\\phi(Z) &\\text{if}\\ \\sigma(\\mathbf{x}) > 0 \\\\\n", "0 & \\text{if}\\ \\sigma(\\mathbf{x}) = 0\n", "\\end{cases}\\tag{2}\n", "$$\n", "\n", "where\n", "\n", "$$\n", "Z =\n", "\\begin{cases}\n", "\\frac{\\mu(\\mathbf{x}) - f(\\mathbf{x}^+) - \\xi}{\\sigma(\\mathbf{x})} &\\text{if}\\ \\sigma(\\mathbf{x}) > 0 \\\\\n", "0 & \\text{if}\\ \\sigma(\\mathbf{x}) = 0\n", "\\end{cases}\n", "$$\n", "\n", "where $\\mu(\\mathbf{x})$ and $\\sigma(\\mathbf{x})$ are the mean and the standard deviation of the GP posterior predictive at $\\mathbf{x}$, respectively. $\\Phi$ and $\\phi$ are the CDF and PDF of the standard normal distribution, respectively. The first summation term in Equation (2) is the exploitation term and second summation term is the exploration term.\n", "\n", "Parameter $\\xi$ in Equation (2) determines the amount of exploration during optimization and higher $\\xi$ values lead to more exploration. In other words, with increasing $\\xi$ values, the importance of improvements predicted by the GP posterior mean $\\mu(\\mathbf{x})$ decreases relative to the importance of potential improvements in regions of high prediction uncertainty, represented by large $\\sigma(\\mathbf{x})$ values. A recommended default value for $\\xi$ is $0.01$.\n", "\n", "With this minimum of theory we can start implementing Bayesian optimization. The next section shows a basic implementation with plain NumPy and SciPy, later sections demonstrate how to use existing libraries. Finally, Bayesian optimization is used to tune the hyperparameters of a tree-based regression model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Implementation with NumPy and SciPy\n", "\n", "In this section, we will implement the acquisition function and its optimization in plain NumPy and SciPy and use scikit-learn for the Gaussian process implementation. Although we have an analytical expression of the optimization objective f in the following example, we treat is as black box and iteratively approximate it with a Gaussian process during Bayesian optimization. Furthermore, samples drawn from the objective function are noisy and the noise level is given by the noise variable. Optimization is done within given bounds. We also assume that there exist two initial samples in X_init and Y_init." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "%matplotlib inline\n", "\n", "bounds = np.array([[-1.0, 2.0]])\n", "noise = 0.2\n", "\n", "def f(X, noise=noise):\n", " return -np.sin(3*X) - X**2 + 0.7*X + noise * np.random.randn(*X.shape)\n", "\n", "X_init = np.array([[-0.9], [1.1]])\n", "Y_init = f(X_init)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following plot shows the noise-free objective function, the amount of noise by plotting a large number of samples and the two initial samples." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "