{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "# Probabilistic curve fitting, express\n", "# uncertainty over target t using a gaussian\n", "# (aka normal) distribution\n", "%pylab inline\n", "def gaussian(x, mu, sigma):\n", " # vectorised for multiple x, sigma\n", " # returning x varying in the 1st dimension (down), sigma in the 2nd (right)\n", " numerator = np.exp(-0.5 * array(mat(x - mu).T * mat(1./sigma))**2)\n", " return 1./(np.sqrt(2*np.pi)*sigma)*numerator\n", "\n", "def cond_pdf_t(t, x, w, sigma):\n", " \"\"\"Probability of t given x, y, sigma\"\"\"\n", " return gaussian(t, polyval(w,x), sigma)\n", "\n", "\n", "from IPython.display import display, Math, Latex" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'x')" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Do polynomial fitting like before, for now just\n", "# trusting the built-in polyfit\n", "# We sample from a sin curve with added gaussian noise\n", "# of std dev 0.3\n", "\n", "N = 15 # training points\n", "M = 4 # polynomial degree\n", "\n", "x = arange(0, 2*pi, (2*pi)/N)\n", "noise = 0.3 * randn(N)\n", "t = sin(x) + noise\n", "plot(x,t,'ro')\n", "\n", "w = polyfit(x, t, M)\n", "xs = arange(0,2*pi,.01)\n", "plot(xs, polyval(w, xs), 'g')\n", "ylabel(\"t\")\n", "xlabel(\"x\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, '$p(t|x,$w$,\\\\sigma)$')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Consider the probability distibution for\n", "# the predicted value of t at a certain x\n", "# position, eg one of our training points\n", "\n", "xvalue = x[5]\n", "\n", "# From above, we are assuming it is distributed\n", "# normally, with mean given as the value of our\n", "# polynomial, and for now lets pick 0.3 as a standard\n", "# deviation (cheating, because we know that is the \n", "# real value from the noise)\n", "\n", "tmean = polyval(w, xvalue)\n", "sigma = 0.3\n", "\n", "# We plot over the domain +-4 standard deviations,\n", "# using the conditional probability function defined earlier\n", "ts = arange(tmean-4*sigma, tmean+4*sigma, 0.01)\n", "pdf_t = cond_pdf_t(ts, xvalue, w, sigma)\n", "\n", "plot(ts, pdf_t)\n", "\n", "xlabel(\"t\")\n", "title(\"$p(t|x,$w$,\\sigma)$\", fontsize=20)\n", "\n", "# As expected, it is just a normal distribution" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text([3.4242027], 0.8019421131641933, ' $p(t|x,$w$,\\\\sigma)$')" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot(x,t,'ro')\n", "plot(xs, polyval(w, xs), 'g')\n", "\n", "# Now, to illustrate, we plot this gaussian sideways\n", "# over our graph, showing how its width (standard deviation)\n", "# expresses our uncertainty in the value of t\n", "\n", "def plot_sideways(x, y, zeropos, *args, **kwargs):\n", " # Plot sideways by switching x and y, adding zeropos\n", " # to our y to change the location\n", " plot(y + zeropos, x, *args, **kwargs)\n", " # Draw a vertical line for the axis\n", " vlines(zeropos, min(x), max(x), *args, **kwargs)\n", " \n", "plot_sideways(ts, pdf_t, xvalue, 'b')\n", "\n", "ylabel(\"t\")\n", "xlabel(\"x\")\n", "text(xvalue + max(pdf_t), polyval(w,xvalue), \" $p(t|x,$w$,\\sigma)$\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also plot probability as color in the 2d plane." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "X,Y = meshgrid(arange(0,7,0.1),arange(-1,2.1,0.1))\n", "Z = [cond_pdf_t(Yi,Xi,w,sigma) for Xi,Yi in zip(X,Y)]\n", "Z = array(Z).reshape(X.shape)\n", "jet()\n", "contourf(arange(0,7,0.1), arange(-1,2.1,0.1), Z, levels=40)\n", "colorbar()\n", "xlim([0,6.9])\n", "ylim([-1,2])\n", "scatter(x,t,c='w')" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1.32553585]\n", " [0.11718557]\n", " [1.22835099]\n", " [0.61759085]\n", " [0.53579397]\n", " [1.23106725]\n", " [0.9629209 ]\n", " [0.05338001]\n", " [1.08959831]\n", " [0.0064887 ]\n", " [1.32973981]\n", " [1.32810898]\n", " [0.79024069]\n", " [1.23107637]\n", " [1.31759643]]\n" ] } ], "source": [ "# So, now the question is how do we learn the weights w\n", "# and the standard deviation sigma from our training data\n", "\n", "# Well, we can see how probable each training point is given some\n", "# weights and standard deviation using our conditional probability\n", "# density function (now working on a vector of training data rather than a scalar)\n", "# (note these values are not probabilities, hence may be >1)\n", "\n", "print(cond_pdf_t(t, x, w=[0.01, -0.02, -0.5, 1.7, -0.4], sigma=0.3))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle p(\\mathbf{t}|\\mathbf{x},\\mathbf{w},\\sigma) = \\prod_{n=1}^{N} Norm(t_n|y(x_n,\\mathbf{w}),\\sigma) = 0.000064$" ], "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# But we want to know how probable all the data is -- for this\n", "# we use the product rule, assuming the data was drawn independently, \n", "# simply multiplying all the previous values\n", "\n", "p = product(cond_pdf_t(t, x, w=[0.01, -0.02, -0.5, 1.7, -0.4], sigma=0.3), 0)\n", "\n", "\n", "Math(\"$p(\\mathbf{t}|\\mathbf{x},\\mathbf{w},\\sigma) = \\prod_{n=1}^{N} Norm(t_n|y(x_n,\\mathbf{w}),\\sigma) = %f$\" % p)\n", "\n", "# This is the value we want to maximise - try tweaking the parameters\n", "# to get a high value, it probably isn't easy!" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Likelihood')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# When considered as a function of w and sigma, this is our\n", "# likelihood function, and is *not* a probability distribution\n", "# over these variables. Note that syntactically it is the same\n", "# expression as a conditional probability dist on t, it is just\n", "# a matter of which variables we \"fix\" and which we \"slide around\". \n", "\n", "def likelihood_w_sigma(w, sigma):\n", " return product(cond_pdf_t(t, x, w, sigma), 0)\n", "\n", "# We can plot likelihood against different standard deviation\n", "# to see where the maximum is - how does this compare to the sd\n", "# we actually set for the noise?\n", "\n", "sigs = arange(0.02,1,0.01)\n", "plot(sigs, likelihood_w_sigma(w, sigs))\n", "xlabel(\"$\\sigma$\", fontsize=22)\n", "ylabel(\"Likelihood\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'NLL')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# In practice we consider the log of the likelihood, which lets us\n", "# turn the product into a sum and avoids numerical underflow\n", "# from multiplying small values. We want to maximise the log likelihood,\n", "# or equivalently, minimise the negative log likelihood\n", "\n", "def nlog_likelihood_w_sigma(w, sigma):\n", " # log(product(cond_pdf_t(t, x, w, sigma),0))\n", " # = sum(log(cond_pdf_t(t, x, w, sigma)), 0)\n", " # using negative:\n", " return -sum(log(cond_pdf_t(t, x, w, sigma)), 0)\n", "\n", "plot(sigs, nlog_likelihood_w_sigma(w, sigs))\n", "xlabel('$\\sigma$')\n", "ylabel('NLL')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Maximum Likelihood Solution\n", "===========================\n", "\n", "The Maximum Likelihood solution can be found in closed form.\n", "\n", "First we can use the properties of the (natural) log to simplify the formula\n", "\n", "$\\log(p(\\mathbf{t}|\\mathbf{x}, \\mathbf{w},\\sigma)) = \\log(\\prod_{n=1}^{N} Norm(t_n|y(x_n,\\mathbf{w}),\\sigma))$\n", "\n", "$ = \\sum_{n=1}^{N} \\log[(2\\pi\\sigma^2)^{-1/2} \\exp(-\\frac{(t_n-y(x_n,\\mathbf{w}))^2}{2\\sigma^2})]$\n", " \n", "$ = N \\log((2\\pi\\sigma^2)^{-1/2}) -\\frac{1}{2\\sigma^2} \\sum_{n=1}^{N} (t_n-y(x_n,\\mathbf{w}))^2 $\n", " \n", "$ = -\\frac{1}{2\\sigma^2} \\sum_{n=1}^{N} (t_n-y(x_n,\\mathbf{w}))^2 - \\frac{N}{2}\\log(\\sigma^2) - \\frac{N}{2}\\log(2\\pi) $\n", "\n", "Now we can find the gradient wrt $\\mathbf{w}$ and $\\sigma^2$\n", "\n", "(TODO)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In polynomial regression, the hypothesis, $y$, is of the form:\n", "\n", "$y(x_n, \\mathbf{w}) = \\sum_{i=0}^{M} w_i x^{i}$, where $M-1$ is the degree of the polynomial (we started at 0).\n", "\n", "Using matrix notation, let $\\mathbf{w} = w_1 ... w_M$, a vector of weights. Also, let $\\mathbf{x_n} = x_n^{0}...x_n^{M}$, a vector of the first $M$ powers of $x_n$.\n", "\n", "Then, $y(x_n, \\mathbf{w}) = \\mathbf{w}^{T}\\mathbf{x_n}$\n", "\n", "The derivative of $y(x_n, \\mathbf{w})$ wrt $\\mathbf{w}$ will come in handy soon, and we can see that: $\\frac{d y}{d \\mathbf{w}} = \\mathbf{x_n}$ by the linearity of $\\mathbf{w}^{T}\\mathbf{x_n}$.\n", "\n", "Another point of notation, we'll introduce the design matrix, $X$, in which each training example is a row and each power of $x_n$ is a column.\n", "\n", "Taking the derivative of $-\\frac{1}{2\\sigma^2} \\sum_{n=1}^{N} (t_n-y(x_n,\\mathbf{w}))^2 - \\frac{N}{2}\\log(\\sigma^2) - \\frac{N}{2}\\log(2\\pi) $ with respect to $\\mathbf{w}$, we obtain:\n", "\n", "$ -\\sum_{n=1}^{N}(t_n - y(x_n, \\mathbf{w})) \\frac{d y}{d \\mathbf{w}}$, using the fact that constants are irrelevant in minimization and we don't care about scalar multiples of the gradient.\n", "\n", "Replacing $\\frac{d y}{d \\mathbf{w}}$ with what we computed earlier, \n", "\n", "$ = -\\sum_{n=1}^{N}(t_n - y(x_n, \\mathbf{w}))\\mathbf{x_n}$\n", "\n", "$ = -\\sum_{n=1}^{N}(t_n - \\mathbf{w}^{T}\\mathbf{x_n})\\mathbf{x_n}$\n", "\n", "Now using the design matrix to simplify things, and letting $\\mathbf{t} = t_1 ... t_N$, the vector of targets, we can compute the $M$ dimensional gradient of the weights with respect to the error:\n", "\n", "$ = -\\sum_{n=1}^{N}(t_n \\mathbf{x_n}) + \\sum_{n=1}^{N}(\\mathbf{w}^{T}\\mathbf{x_n})\\mathbf{x_n}$\n", "\n", "$ = -X^{T}\\mathbf{t} + X^{T}(X\\mathbf{w}) $\n", "\n", "And since we are at an optima when this gradient is zero,\n", "\n", "$ 0 = -X^{T}\\mathbf{t} + X^{T}(X\\mathbf{w}) $\n", "\n", "$ X^{T}\\mathbf{t} = (X^{T}X)\\mathbf{w} $\n", "\n", "Almost there! Using the fact that $X^{T}X$ has a pseudoinverse, \n", "\n", "$ \\mathbf{w} = (X^{T}X)^{-1}X^{T}\\mathbf{t} $\n", "\n", "And we have a closed form solution for the weights. This solution is refered to as the \"normal equation\". Note for big-data problems, the performance of this equation is pretty poor, and a much fa" ] } ], "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.7.2" } }, "nbformat": 4, "nbformat_minor": 1 }