{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Importance sampling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Recap\n", "\n", "We have some target function (the likelihood times the prior) in some parameter space, and we want to integrate it. The target function may be in a odd shape, such as a banana.\n", "\n", "![banana](img/banana.png)\n", "\n", "As a toy example, we choose the following likelihood (taken from [here](https://en.wikipedia.org/wiki/Rosenbrock_function)):\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def loglikelihood(*parameters):\n", " a = np.asarray(parameters)[:-1] * 10\n", " b = np.asarray(parameters)[1:] * 10\n", " return -2 * (100 * (b - a**2)**2 + (1 - a)**2).sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we assume our prior is uniform in the domain -1/2 to +1/2 in each parameter.\n", "\n", "We use two parameters at the moment. You can try going to higher dimensions later.\n", "\n", "The function is used like this:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "-200.0\n", "-1802.0\n" ] } ], "source": [ "print(loglikelihood(0.1, 0.2))\n", "mypoint = [0.2, 0.1]\n", "print(loglikelihood(*mypoint))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "lo = -0.5\n", "hi = 0.5\n", "dim = 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lets plot this function in 2d:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "a = np.linspace(lo, hi, 400)\n", "b = np.linspace(lo, hi, 400)\n", "\n", "# TODO by you! (meshgrid and plt.imshow can be helpful)\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importance sampling motivation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead of a uniform spaced deterministic grid, lets now use uniformly distributed *random* points:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Ndraw = 4000\n", "\n", "proposed_samples = np.random.uniform(lo, hi, size=(Ndraw, dim))\n", "\n", "plt.scatter(proposed_samples[:,0], proposed_samples[:,1]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we evaluate the likelihood at each point:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "proposed_samples_loglike = [loglikelihood(*sample) for sample in proposed_samples]" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(proposed_samples[:,0], proposed_samples[:,1], c=np.exp(proposed_samples_loglike), cmap='Reds');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Monte Carlo integration tells us that\n", "\n", "$Z=\\int d\\theta f(\\theta) \\approx \\frac{1}{N} \\sum_{i=1}^N f(\\theta_i) $\n", "\n", "The agreement is exact when $N\\rightarrow \\infty$." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0015598944013746816" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights = np.exp(proposed_samples_loglike)\n", "\n", "Z = weights.mean()\n", "\n", "Z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Effective number of samples" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since most samples have zero weight, they do not contribute effectively to the integral.\n", "\n", "We can compute the effective number of samples [can be defined as](https://arxiv.org/pdf/0907.1254.pdf):\n", "\n", "$ESS = \\frac{N}{1 + C^2}$\n", "with $C^2=\\frac{1}{N}\\sum_i\\left(N \\times \\frac{w_i}{\\sum_i w_i} - 1\\right)^2$\n", "\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Effective number of samples: 13'" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def effective_sample_size(weights):\n", " return int(len(weights) / (1 + (weights / weights.mean() - 1)**2).mean() )\n", "\n", "'Effective number of samples: %d' % effective_sample_size(weights)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 1 (20 points)\n", "\n", "1a) Measure the variance in the integral estimate by running the method a few times.\n", "\n", "1b) Vary the number of samples drawn. Plot variance vs number of samples.\n", "\n", "1c) For a integral estimate based on a single sample, the variance expected is the true (unknown) function variance. For $N_{draw}$ points, it should decline linearly: $Var(f)$ $Var(Z)=Var(f) / N_{draw}$. How does the variance behave empirically with $N_{draw}$?\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Importance Sampling" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "* Most of the points had zero likelihood.\n", "\n", "* To better use the evaluations, perhaps we can choose spacing that is biased to the likelihood peak?\n", "\n", "To illustrate, instead of the flat proposal (top), maybe we could change the method to sample more points where the likelihood is high (bottom)?\n", "\n", "![importance sampling](img/Importance-Sampling.png)\n", "\n", "Lets try a narrow Gaussian centered at (0.1, 0.1):" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ctr = 0.1 + np.zeros(dim)\n", "std = 0.1 + np.zeros(dim)\n", "\n", "biased_proposed_samples = np.random.normal(ctr, std, size=(Ndraw, dim))\n", "biased_proposed_samples_loglike = [loglikelihood(*sample) for sample in biased_proposed_samples]\n", "\n", "plt.scatter(biased_proposed_samples[:,0], biased_proposed_samples[:,1], c=np.exp(biased_proposed_samples_loglike), cmap='Reds');\n", "plt.xlim(lo, hi)\n", "plt.ylim(lo, hi);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like we are getting many more \"hits\" on high probability regions now.\n", "\n", "But our proposal is biased. The bias is the probability density of our proposal function:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import scipy.stats\n", "\n", "random_variable = scipy.stats.norm(ctr, std)\n", "importance = [np.product(random_variable.pdf(biased_proposed_sample)) for biased_proposed_sample in biased_proposed_samples]\n", "\n", "plt.scatter(biased_proposed_samples[:,0], biased_proposed_samples[:,1], c=importance, cmap='Blues');\n", "plt.xlim(lo, hi)\n", "plt.ylim(lo, hi);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Importance weighting is adjusting the weights in our sum from\n", "\n", "$Z\\approx \\frac{1}{N} \\sum_{i=1}^N f(\\theta_i) $\n", "\n", "to\n", "\n", "$Z\\approx \\frac{1}{N} \\sum_{i=1}^N f(\\theta_i)/I(\\theta_i) $\n", "\n", "In words, we down-weight samples where the proposal had high probability." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0018726226854311238" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weights = np.exp(biased_proposed_samples_loglike) / importance\n", "\n", "Z = weights.mean()\n", "\n", "Z" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Effective sample size" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "85" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "effective_sample_size(weights)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Posterior probability distributions" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for i in range(dim):\n", " plt.figure()\n", " plt.xlabel(\"Parameter %d\" % (i+1))\n", " plt.ylabel(\"Number of samples\")\n", " plt.hist(biased_proposed_samples[:,i], weights=weights, bins=40, histtype='step')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Unweighted posterior samples" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [], "source": [ "# pick as many as there are effective samples\n", "N_chosen = effective_sample_size(weights)\n", "# pick them proportional to their weight\n", "indices_chosen = np.random.choice(len(weights), p=weights / weights.sum(), size=N_chosen)\n", "unweighted_posterior_samples = biased_proposed_samples[indices_chosen,:]" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(unweighted_posterior_samples[:,0], unweighted_posterior_samples[:,1]);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Questions:\n", "\n", "(5 points for contibuting something to the discussion)\n", "\n", "* What would be the ideal proposal?\n", "\n", "* If the proposal matched the target probability density, all sum terms would be a constant. What is that constant?\n", "\n", "* We can already evaluate the target function, why can we not use it as a proposal?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Quality of importance sampling\n", "\n", "The variance of the Monte Carlo estimator of $Z$ is driven by the variance in the sum terms. Here for importance sampling:\n", "\n", "$Var(Z)=Var(f / W) / N_{draw}$\n", "\n", "The variance is smallest when $W \\propto f$. \n", "\n", "We can quantify this by the variance in the sampled points:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Standard deviation on Z for Uniform sampling: 0.02718'" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'Standard deviation on Z for Uniform sampling: %.5f' % np.std(np.exp(proposed_samples_loglike))" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Standard deviation on Z for Importance sampling: 0.01270'" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "'Standard deviation on Z for Importance sampling: %.5f' % np.std(np.exp(biased_proposed_samples_loglike) / importance)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Questions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Which method is better?\n", "\n", "* Is the variance part of the effective size samples formula?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 2 (5 points)\n", "\n", "Find a 90% credible region from the importance sampling results. \n", "\n", "Hint: use the weighted posterior samples, respecting the weighting, or the resampled posterior points.\n", "\n", "## Exercise 3 (10 points)\n", "\n", "Repeat exercise 1 with importance sampling.\n", "\n", "## Homework Exercise 1 (60 points)\n", "\n", "Optimize the Gaussian proposal.\n", "\n", "## Homework Exercise 2 (120 points)\n", "\n", "Vary the dimensionality of the problem. How does the variance scale with dimension?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Further reading\n", "\n", "Keywords:\n", "\n", "* *Gaussian mixture models*: Useful for approximating complex target distributions\n", "* *Variational Bayes*: A procedure for optimizing proposals\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Ticket to leave\n", "\n", "Fill out the [form below](https://indico.ph.tum.de/event/6875/surveys/7) and then you can leave the class. (+5 points)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%%html\n", "\n", "" ] } ], "metadata": { "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.8.10" } }, "nbformat": 4, "nbformat_minor": 4 }