{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Working with Gaussians\n", "=======" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Preliminaries\n", "\n", "- Goal \n", " - Review of processing of Gaussian distributions in linear systems\n", "- Materials \n", " - Mandatory\n", " - These lecture notes\n", " - Optional\n", " - Bishop pp. 85-93 \n", " - [MacKay - 2006 - The Humble Gaussian Distribution](./files/Mackay-2006-The-humble-Gaussian-distribution.pdf) (highly recommended!)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Sums and Transformations of Gaussian Variables\n", "\n", "- The Gaussian distribution\n", "$$\n", "\\mathcal{N}(x|\\mu,\\Sigma) = |2 \\pi \\Sigma |^{-\\frac{1}{2}} \\,\\mathrm{exp}\\left\\{-\\frac{1}{2}(x-\\mu)^T \\Sigma^{-1} (x-\\mu) \\right\\}\n", "$$\n", "for variable $x$ is completely specified by its mean $\\mu$ and variance $\\Sigma$. \n", " - $\\Lambda = \\Sigma^{-1}$ is called the **precision matrix**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- A **linear transformation** $z=Ax+b$ of a Gaussian variable $\\mathcal{N}(x|\\mu,\\Sigma)$ is Gaussian distributed as\n", "\n", "$$\n", "p(z) = \\mathcal{N} \\left(z \\,|\\, A\\mu+b, A\\Sigma A^T \\right) \\tag{SRG-4a}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The **sum of two independent Gaussian variables** is also Gaussian distributed. Specifically, if $x \\sim \\mathcal{N} \\left(x|\\mu_x, \\Sigma_x \\right)$ and $y \\sim \\mathcal{N} \\left(y|\\mu_y, \\Sigma_y \\right)$, then the PDF for $z=x+y$ is given by\n", "$$\\begin{align}\n", "p(z) &= \\mathcal{N}(x\\,|\\,\\mu_x,\\Sigma_x) \\ast \\mathcal{N}(y\\,|\\,\\mu_y,\\Sigma_y) \\notag\\\\\n", " &= \\mathcal{N} \\left(z\\,|\\,\\mu_x+\\mu_y, \\Sigma_x +\\Sigma_y \\right) \\tag{SRG-8}\n", "\\end{align}$$\n", " - [Exercise]: Show that Eq.SRG-8 is really a special case of Eq.SRG-4a. \n", " - The sum of two Gaussian _distributions_ is NOT a Gaussian distribution. Why not?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Gaussian Signals in a Linear System\n", "\n", "\n", "\n", "- [Q.]: Given independent variables\n", "$x \\sim \\mathcal{N}(\\mu_x,\\sigma_y)$ and $y \\sim \\mathcal{N}(\\mu_y,\\sigma_y)$, what is the PDF for $z = A\\cdot(x -y) + b$ ?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- [A.]: $z$ is also Gaussian with \n", "$$\n", "p_z(z) = \\mathcal{N}(z|A(\\mu_x-\\mu_y)+b, \\, A(\\sigma_x \\mathbf{+} \\sigma_y)A^T)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Think about the role of the Gaussian distribution for stochastic linear systems in relation to what sinusoidals mean for deterministic linear system analysis." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Bayesian Estimation of a Constant\n", "\n", "\n", "- [Question] Estimate a constant $\\theta$ from one 'noisy' measurement $x$ about that constant. Assume the following model specification (the tilde $\\sim$ means: 'is distributed as'):\n", " \n", "$$\\begin{align*}\n", "x &= \\theta + \\epsilon \\\\\n", "\\theta &\\sim \\mathcal{N}(\\mu_\\theta,\\sigma_\\theta^2) \\\\\n", "\\epsilon &\\sim \\mathcal{N}(0,\\sigma^2_{\\epsilon})\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "[Answer]\n", "\n", "- **1. Model specification**\n", "Note that you can rewrite these specifications in probabilistic notation as follows:\n", "$$\\begin{align}\n", " p(x|\\theta) &=\\mathcal{N}(x|\\theta,\\sigma^2_{\\epsilon}) \\tag{likelihood}\\\\\n", " p(\\theta) &=\\mathcal{N}(\\theta|\\mu_\\theta,\\sigma_\\theta^2) \\tag{prior}\n", "\\end{align}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **2. Inference** for the posterior PDF $p(\\theta|x)$\n", "$$\\begin{align*}\n", "p(\\theta|x) &= \\frac{p(x|\\theta)p(\\theta)}{p(x)} = \\frac{p(x|\\theta)p(\\theta)} { \\int p(x|\\theta)p(\\theta) \\, \\mathrm{d}\\theta } \\notag \\\\\n", " &= \\frac{1}{C} \\,\\mathcal{N}(x|\\theta,\\sigma^2_{\\epsilon})\\, \\mathcal{N}(\\theta|\\mu_\\theta,\\sigma_\\theta^2) \\notag \\\\\n", " &= \\frac{1}{C_1} \\mathrm{exp} \\left\\{ -\\frac{(x-\\theta)^2}{2\\sigma^2_{\\epsilon}} - \\frac{(\\theta-\\mu_\\theta)^2}{2\\sigma_\\theta^2} \\right\\} \\notag \\\\\n", " &= \\frac{1}{C_1} \\mathrm{exp} \\left\\{ \\theta^2\\left( -\\frac{1}{2\\sigma^2_{\\epsilon}} - \\frac{1}{2\\sigma_\\theta^2} \\right) + \\theta \\left( \\frac{x}{\\sigma^2_{\\epsilon}} + \\frac{\\mu_\\theta}{\\sigma_\\theta^2} \\right) + C_2 \\right\\} \\notag \\\\\n", " &= \\frac{1}{C_1} \\mathrm{exp} \\left\\{ -\\frac{\\sigma_\\theta^2 + \\sigma^2_{\\epsilon}}{2\\sigma_\\theta^2 \\sigma^2_{\\epsilon}} \\left( \\theta - \\frac{x\\sigma_\\theta^2 + \\mu_s\\sigma^2_{\\epsilon}}{\\sigma_\\theta^2 + \\sigma^2_{\\epsilon}} \\right)^2 + C_3 \\right\\}\n", "\\end{align*}$$\n", "which we recognize as a Gaussian distribution." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " - This computational 'trick' for multiplying two Gaussians is called **completing the square**. The procedure makes use of the equality $$ax^2+bx+c_1 = a\\left(x+\\frac{b}{2a}\\right)^2+c_2$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "- Hence, it follows that the posterior for $\\theta$ is\n", "\n", "$$\\begin{equation*}\n", " p(\\theta|x) = \\mathcal{N} (\\theta |\\, \\mu_{\\theta|x}, \\sigma_{\\theta|x}^2)\n", "\\end{equation*}$$\n", "\n", "where\n", "\n", "$$\\begin{align*}\n", " \\frac{1}{\\sigma_{\\theta|x}^2} &= \\frac{\\sigma^2_{\\epsilon} + \\sigma_\\theta^2}{\\sigma^2_{\\epsilon}\\sigma_\\theta^2} = \\frac{1}{\\sigma_\\theta^2} + \\frac{1}{\\sigma^2_{\\epsilon}}\\\\\n", " \\mu_{\\theta|x} &= \\sigma_{\\theta|x}^2 \\, \\left( \\frac{1}{\\sigma^2_{\\epsilon}}x + \\frac{1}{\\sigma_\\theta^2} \\mu_\\theta \\right) \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- So, multiplication of two Gaussian distributions yields another (unnormalized) Gaussian with\n", " - posterior precision equals **sum of prior precsions**\n", " - posterior precision-weighted mean equals **sum of prior precision-weighted means**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### CODE EXAMPLE\n", "\n", "Let's plot the exact product of two Gaussian PDFs as well as the normalized product according to the above derivation." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using PyPlot, Distributions\n", "d1 = Normal(0, 1) # μ=0, σ^2=1\n", "d2 = Normal(3, 2) # μ=3, σ^2=4\n", "\n", "# Calculate the parameters of the product d1*d2\n", "s2_prod = (d1.σ^-2 + d2.σ^-2)^-1\n", "m_prod = s2_prod * ((d1.σ^-2)*d1.μ + (d2.σ^-2)*d2.μ)\n", "d_prod = Normal(m_prod, sqrt(s2_prod)) # Note that we neglect the normalization constant.\n", "\n", "# Plot stuff\n", "x = linspace(-4, 8, 100)\n", "plot(x, pdf.(d1,x), \"k\")\n", "plot(x, pdf.(d2,x), \"b\")\n", "plot(x, pdf.(d1,x) .* pdf.(d2,x), \"r-\") # Plot the exact product\n", "plot(x, pdf.(d_prod,x), \"r:\") # Plot the normalized Gaussian product\n", "legend([L\"\\mathcal{N}(0,1)\", \n", " L\"\\mathcal{N}(3,4)\", \n", " L\"\\mathcal{N}(0,1) \\mathcal{N}(3,4)\", \n", " L\"Z^{-1} \\mathcal{N}(0,1) \\mathcal{N}(3,4)\"]);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The solid and dotted red curves are identical up to a scaling factor $Z$.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Multivariate Gaussian Multiplication\n", "\n", "- In general, the multiplication of two multi-variate Gaussians yields an (unnormalized) Gaussian, see [SRG-6]:\n", "$$\\begin{equation*}\n", "\\mathcal{N}(x|\\mu_a,\\Sigma_a) \\cdot \\mathcal{N}(x|\\mu_b,\\Sigma_b) = \\alpha \\cdot \\mathcal{N}(x|\\mu_c,\\Sigma_c)\n", "\\end{equation*}$$\n", "where\n", "$$\\begin{align*}\n", "\\Sigma_c^{-1} &= \\Sigma_a^{-1} + \\Sigma_b^{-1} \\\\\n", "\\Sigma_c^{-1} \\mu_c &= \\Sigma_a^{-1}\\mu_a + \\Sigma_b^{-1}\\mu_b\n", "\\end{align*}$$\n", "and normalization constant $\\alpha = \\mathcal{N}(\\mu_a|\\, \\mu_b, \\Sigma_a + \\Sigma_b)$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If we define the **precision** as $\\Lambda \\equiv \\Sigma^{-1}$, then we see that **precisions add** and **precision-weighted means add** too." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- As we just saw, great application to Bayesian inference!\n", "\n", "$$\\begin{equation*}\n", "\\underbrace{\\text{Gaussian}}_{\\text{posterior}}\n", " \\propto \\underbrace{\\text{Gaussian}}_{\\text{likelihood}} \\times \\underbrace{\\text{Gaussian}}_{\\text{prior}}\n", "\\end{equation*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Conditioning and Marginalization of a Gaussian\n", "\n", "- Let $z = \\begin{bmatrix} x \\\\ y \\end{bmatrix}$ be jointly normal distributed as\n", "\n", "$$\\begin{align*}\n", "p(z) &= \\mathcal{N}(z | \\mu, \\Sigma) \n", " =\\mathcal{N} \\left( \\begin{bmatrix} x \\\\ y \\end{bmatrix} \\left| \\begin{bmatrix} \\mu_x \\\\ \\mu_y \\end{bmatrix}, \n", " \\begin{bmatrix} \\Sigma_x & \\Sigma_{xy} \\\\ \\Sigma_{yx} & \\Sigma_y \\end{bmatrix} \\right. \\right)\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Since covariance matrices are by definition symmetric, it follows that $\\Sigma_x$ and $\\Sigma_y$ are symmetric and $\\Sigma_{xy} = \\Sigma_{yx}^T$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Let's factorize $p(x,y)$ into $p(y|x)\\, p(x)$ through conditioning and marginalization (proof in Bishop pp.87-89)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " - **Conditioning**\n", "\n", "$$\\begin{align*}\n", "p(y|x) &= p(x,y)/p(x) \\\\\n", " &= \\mathcal{N}\\left(y|\\mu_y + \\Sigma_{yx}\\Sigma_x^{-1}(x-\\mu_x),\\, \\Sigma_y - \\Sigma_{yx}\\Sigma_x^{-1}\\Sigma_{xy} \\right)\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " - **Marginalization**\n", "\n", "$$\n", "p(x) = \\int p(x,y)\\,\\mathrm{d}y = \\mathcal{N}\\left( x|\\mu_x, \\Sigma_x \\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Useful for applications to Bayesian inference in jointly Gaussian systems." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### CODE EXAMPLE\n", "\n", "Interactive plot of the joint, marginal, and conditional distributions." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "text/html": [ "
\n", " \n", " \n", "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "a041d489-3422-4c22-9c1a-817def242f13", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(1: \"input\" = 0.5 Any , \"x\", 0.5, \"0.5\", 26, Interact.OptionDict(DataStructures.OrderedDict{Any,Any}(\"-2.0\"=>-2.0,\"-1.9\"=>-1.9,\"-1.8\"=>-1.8,\"-1.7\"=>-1.7,\"-1.6\"=>-1.6,\"-1.5\"=>-1.5,\"-1.4\"=>-1.4,\"-1.3\"=>-1.3,\"-1.2\"=>-1.2,\"-1.1\"=>-1.1…), Dict{Any,Any}(Pair{Any,Any}(1.2, \"1.2\"),Pair{Any,Any}(2.0, \"2.0\"),Pair{Any,Any}(1.5, \"1.5\"),Pair{Any,Any}(-1.3, \"-1.3\"),Pair{Any,Any}(1.4, \"1.4\"),Pair{Any,Any}(0.2, \"0.2\"),Pair{Any,Any}(-0.5, \"-0.5\"),Pair{Any,Any}(-0.8, \"-0.8\"),Pair{Any,Any}(-0.9, \"-0.9\"),Pair{Any,Any}(0.3, \"0.3\")…)), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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tBSjRo2q9vyujcmTJ0MURXz44YeYN28etm/fjqFDh6KwsNA35osvvoAkSbjmmmt8fYIg4IMPPkBUVBTuvPNO33fS1KlTcezYMXz00Ud+q0OtWrVC165dI/+7ghEEY+yFF15gANj06dP9+pctW8YAsKVLlzLGGOvWrRu78cYba9zHypUrGQA2b9489vzzzzNRFNm6desueuwjR44wURTZm2++6esrLy9niYmJ7L777qs2/plnnmGiKLKSkpJATpEgwpIlS5YwAGzHjh1s/fr1DADbt28fY4yxK664gk2cOJExxliPHj3YtddeW+t+vF4vU1WVzZo1iyUmJjJd133vZWRkMEmS2IEDB/zmfPnllwwAW7BggV//7NmzGQD2wgsvVJPz2LFjvr5rr72WAWA//vij3/zu3buzG264oVZZNU1jqqqyyZMns379+vm9l5GRwe69995a5zLG2P/93/8xAOytt97y6//73/9+Ubl/+uknBoB9/vnnFzxGdHR0jXKY+7vnnntqfa+ma7R69Wq/sX/5y1+YKIrs+PHjjDHm++zXr1/vN+7YsWMMAFuyZImvb9q0aay2r/eq1++pp56q8TOaMmUKEwTBd0+Yx+nVqxfTNM03bvv27QwAW758eY3Hq3ruY8aM8evfvHkzA8BeeeUVX9/IkSNZ165da9zPDz/8wGRZZo8++ihbvHgxA8DefffdGseOGzeOpaSkXFCucIcscYQf48aN83t95513QpZlrF+/HgCQm5uL5OTkGufeeeedmDJlCp544gm88sorePrppzF8+PCLHrNDhw646aabMH/+fN8yz4cffoj8/PwafwkmJydD13Xk5eUFenoEEdZce+216NixIxYvXoy9e/dix44dtS6lAsB3332HYcOGIS4uDpIkQVEUPP/888jPz8eZM2f8xvbu3RudO3f26/v+++8B8P/typhLu3WhVatWuPLKK6sd6/jx4359H3/8MQYPHoyYmBjIsgxFUbBo0SL89ttvdT6Wifm8qvo8u/vuuy86t1OnTkhISMCTTz6Jf/3rX9i/f3/AxweA2267rc5jHQ4H/vSnP/n13X333dB1HRs3bqzX8evKd999h+7du1f7jCZOnAjGGL777ju//tGjR/utrPTu3RsAqn2etVH1Mxk0aBAyMjJ8nxlw4e+ZwYMH4+9//zvmzZuHKVOmYPz48Zg8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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "execution_count": 2, "metadata": { "comm_id": "3b5b8040-ca99-40b0-8230-43f370aadc6c", "reactive": true }, "output_type": "execute_result" } ], "source": [ "using Reactive, Interact, PyPlot, Distributions\n", "# z = [x; y]\n", "μ = [1.; 2.]\n", "Σ = [0.3 0.7;\n", " 0.7 2.0]\n", "joint = MvNormal(μ,Σ)\n", "marginal_x = Normal(μ[1], sqrt(Σ[1,1]))\n", "\n", "# Plot p(x,y)\n", "subplot(221)\n", "joint_pdf = Matrix(100,100)\n", "x_range = linspace(-2,5,100); y_range = linspace(-2,5,100)\n", "for i=1:length(x_range)\n", " for j=1:length(y_range)\n", " joint_pdf[i,j] = pdf(joint, [x_range[i];y_range[j]])\n", " end\n", "end\n", "\n", "imshow(joint_pdf', origin=\"lower\", extent=[x_range[1], x_range[end], y_range[1], y_range[end]])\n", "grid(); xlabel(\"x\"); ylabel(\"y\"); title(\"p(x,y)\"); tight_layout()\n", "\n", "# Plot p(x)\n", "subplot(222)\n", "plot(linspace(-2,5,100), pdf.(marginal_x, linspace(-2,5,100)))\n", "grid(); xlabel(\"x\"); ylabel(\"p(x)\"); title(\"Marginal distribution p(x)\"); tight_layout()\n", "\n", "f = figure()\n", "@manipulate for x=-2:0.1:3; withfig(f) do\n", " conditional_y_m = μ[2]+Σ[2,1]*inv(Σ[1,1])*(x-μ[1])\n", " conditional_y_s2 = Σ[2,2] - Σ[2,1]*inv(Σ[1,1])*Σ[1,2]\n", " conditional_y = Normal(conditional_y_m, sqrt.(conditional_y_s2))\n", "\n", " # Plot p(y|x)\n", " subplot(223)\n", " plot(linspace(-2,5,100), pdf.(conditional_y, linspace(-2,5,100)))\n", " grid(); xlabel(\"y\"); ylabel(\"p(y|x)\"); title(\"Conditional distribution p(y|x)\"); tight_layout()\n", " end\n", "end" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "As is clear from the plots, the conditional distribution is a renormalized slice from the joint distribution.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Conditioning of Gaussian\n", "\n", "- Consider (again) the system \n", "\n", "$$\\begin{align*}\n", "x &= \\theta + \\epsilon \\\\\n", "\\theta &\\sim \\mathcal{N}(\\theta|\\mu_\\theta,\\sigma_\\theta^2) \\\\\n", "\\epsilon &\\sim \\mathcal{N}(\\epsilon|0,\\sigma^2_{\\epsilon})\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- This system is equivalent to (derive this!)\n", "\n", "$$\n", "p(x,\\theta|\\,\\mu,\\sigma) = \\mathcal{N} \\left( \\begin{bmatrix} x\\\\ \n", " \\theta \\end{bmatrix} \n", " \\left| \\begin{bmatrix} \\mu_\\theta\\\\ \n", " \\mu_\\theta\\end{bmatrix}, \n", " \\begin{bmatrix} \\sigma_\\theta^2+\\sigma_{\\epsilon}^2 & \\sigma_\\theta^2\\\\ \n", " \\sigma_\\theta^2 &\\sigma_\\theta^2 \n", " \\end{bmatrix} \n", " \\right. \\right)\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Direct substitution of the rule for Gaussian conditioning leads to (derive this yourself!)\n", "$$\\begin{align*}\n", "p(\\theta|x) &= \\mathcal{N} \\left( \\theta\\,|\\,\\mu_{\\theta|x}, \\sigma_{\\theta|x}^2 \\right)\\,, \\quad\n", "\\text{with} \\\\\n", "K &= \\frac{\\sigma_\\theta^2}{\\sigma_\\theta^2+\\sigma_{\\epsilon}^2} \\qquad \\text{($K$ is called: Kalman gain)}\\\\\n", "\\mu_{\\theta|x} &= \\mu_\\theta + K \\cdot (x-\\mu_\\theta)\\\\\n", "\\sigma_{\\theta|x}^2 &= \\left( 1-K \\right) \\sigma_\\theta^2 \n", "\\end{align*}$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "$\\longrightarrow$ Moral: For jointly Gaussian systems, we can do inference simply in one step by using the formulas for conditioning and marginalization." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Application: Recursive Bayesian Estimation\n", "\n", "Now consider the signal $x_t=\\theta+\\epsilon_t$, where $D_t= \\left\\{x_1,\\ldots,x_t\\right\\}$ is observed _sequentially_ (over time).\n", "\n", "[Question]\n", "- Derive a recursive algorithm for $p(\\theta|D_t)$, i.e., an update rule for (posterior) $p(\\theta|D_t)$ based on (prior) $p(\\theta|D_{t-1})$ and (new observation) $x_t$.\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "[Answer] \n", "\n", "- Let's define the estimate after $t$ observations (i.e., our solution) as $p(\\theta|D_t) = \\mathcal{N}(\\theta\\,|\\,\\mu_t,\\sigma_t^2)$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Model specification**. We define the joint distribution for $\\theta$ and $x_t$, given background $D_{t-1}$, by\n", "$$\\begin{align*} p(x_t,\\theta \\,|\\, D_{t-1}) &= p(x_t|\\theta) \\, p(\\theta|D_{t-1}) \\\\\n", " &= \\underbrace{\\mathcal{N}(x_t\\,|\\, \\theta,\\sigma^2_{\\epsilon})}_{\\text{likelihood}} \\, \\underbrace{\\mathcal{N}(\\theta\\,|\\,\\mu_{t-1},\\sigma_{t-1}^2)}_{\\text{prior}}\n", "\\end{align*}$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ " \n", "- **Inference**. Use Bayes rule,\n", "$$\\begin{align*}\n", "p(\\theta|D_t) &\\propto p(x_t|\\theta) \\, p(\\theta|D_{t-1}) \\\\\n", " &= \\mathcal{N}(x_t|\\theta,\\sigma^2_{\\epsilon}) \\, \\mathcal{N}(\\theta\\,|\\,\\mu_{t-1},\\sigma_{t-1}^2) \\\\\n", " &= \\mathcal{N}(\\theta|x_t,\\sigma^2_{\\epsilon}) \\, \\mathcal{N}(\\theta\\,|\\,\\mu_{t-1},\\sigma_{t-1}^2) \\\\\n", " &= \\mathcal{N}(\\theta|\\mu_t,\\sigma_t^2)\n", "\\end{align*}$$\n", "with\n", "$$\\begin{align*}\n", "K_t &= \\frac{\\sigma_{t-1}^2}{\\sigma_{t-1}^2+\\sigma_{\\epsilon}^2} \\qquad \\text{(Kalman gain)}\\\\\n", "\\mu_t &= \\mu_{t-1} + K_t \\cdot (x_t-\\mu_{t-1})\\\\\n", "\\sigma_t^2 &= \\left( 1-K_t \\right) \\sigma_{t-1}^2 \n", "\\end{align*}$$\n", "(as before, we used the formulas for conditioning in a multivariate Gaussian system). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- This linear _sequential_ estimator of mean and variance in Gaussian observations is called a **Kalman Filter**.\n", "\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that the uncertainty about $\\theta$ decreases over time (since $0<(1-K_t)<1$). This makes sense: since we assume that the statistics of the system do not change (stationarity), each new sample provides new information. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Recursive Bayesian estimation is the basis for **adaptive signal processing** algorithms such as Least Mean Squares (LMS) and Recursive Least Squares (RLS). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### CODE EXAMPLE\n", "\n", "Let's implement the Kalman filter described above. We'll use it to recursively estimate the value of $\\theta$ based on noisy observations. Use the 'Step' button to see the recursive updates to the posterior $p(\\theta|D)$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using PyPlot, Reactive, Interact\n", "\n", "interactive_plot = false # Set to true to generate an interactive plot with 'step' button\n", "N = 50 # Number of observations\n", "θ = 2.0 # True value of the variable we want to estimate\n", "σ_ϵ2 = 0.25 # Observation noise variance\n", "x = sqrt(σ_ϵ2) * randn(N) + θ # Generate N noisy observations of θ\n", "\n", "f = figure()\n", "global t = 0\n", "global μ = fill!(Vector{Float64}(N), NaN) # Means of p(θ|D) over time\n", "global σ_μ2 = fill!(Vector{Float64}(N), NaN) # Variances of p(θ|D) over time\n", "\n", "function performKalmanStep()\n", " # Perform a Kalman filter step, update t, μ, σ_μ2\n", " global t += 1\n", " if t>1 # Use posterior from prev. step as prior\n", " K = σ_μ2[t-1] / (σ_ϵ2 + σ_μ2[t-1]) # Kalman gain\n", " μ[t] = μ[t-1] + K*(x[t] - μ[t-1]) # Update mean using (1)\n", " σ_μ2[t] = σ_μ2[t-1] * (1.0-K) # Update variance using (2)\n", " elseif t==1 # Use prior\n", " # Prior p(θ) = N(0,1000)\n", " K = 1000.0 / (σ_ϵ2 + 1000.0) # Kalman gain\n", " μ[t] = 0 + K*(x[t] - 0) # Update mean using (1)\n", " σ_μ2[t] = 1000 * (1.0-K) # Update variance using (2)\n", " end\n", "end\n", "\n", "function plotStatus()\n", " # Plot the 'true' value of θ, noisy observations x, and the recursively updated posterior p(θ|D)\n", " t = collect(1:N)\n", " plot(t, θ*ones(N), \"k--\")\n", " plot(t, x, \"rx\")\n", " plot(t, μ, \"b-\")\n", " fill_between(t, μ-sqrt.(σ_μ2), μ+sqrt.(σ_μ2), color=\"b\", alpha=0.3)\n", " legend([L\"\\theta\", L\"x[t]\", L\"\\mu[t]\"])\n", " xlim((1, N)); xlabel(L\"t\"); grid()\n", "end\n", "\n", "if interactive_plot\n", " @manipulate for \n", " perform_step = button(\"Step\");\n", " withfig(f) do\n", " if t<=N\n", " performKalmanStep()\n", " plotStatus()\n", " end\n", " end\n", " end \n", "else\n", " while t)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using PyPlot, Distributions, SpecialFunctions\n", "X = Normal(0,1)\n", "pdf_product_std_normals(z::Vector) = (besselk.(0, abs.(z))./π)\n", "range = collect(linspace(-4,4,100))\n", "plot(range, pdf.(X, range))\n", "plot(range, pdf_product_std_normals(range))\n", "legend([L\"p(X)=p(Y)=\\mathcal{N}(0,1)\", L\"p(Z)\"]);" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Review Gaussians\n", "\n", "The success of Gaussian distributions in probabilistic modeling is large due to the following properties:" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- A linear transformation of a Gaussian distributed variable is also Gaussian distributed" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The convolution of two Gaussian functions is another Gaussian function (use in sum of 2 variables)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The product of two Gaussian functions is another Gaussian function (use in Bayes rule). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Conditioning and marginalization of multivariate Gaussian distributions produce Gaussians again (use in working with observations and when doing Bayesian predictions)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The Gaussian PDF has higher entropy than any other with the same variance. (Not discussed in this course).\n", "\n", "- Any smooth function with single rounded maximum, if raised to higher and higher powers, goes into a Gaussian function. (Not discussed)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Some Useful Matrix Calculus\n", "\n", "Aside from working with Gaussians, it will be helpful for the next lessons to be familiar with some matrix calculus. We shortly recapitulate used formulas here. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We define the **gradient** of a scalar function $f(A)$ w.r.t. an $n \\times k$ matrix $A$ as\n", "$$\n", "\\nabla_A f \\triangleq\n", " \\begin{bmatrix}\n", "\\frac{\\partial{f}}{\\partial a_{11}} & \\frac{\\partial{f}}{\\partial a_{12}} & \\cdots & \\frac{\\partial{f}}{\\partial a_{1k}}\\\\\n", "\\frac{\\partial{f}}{\\partial a_{21}} & \\frac{\\partial{f}}{\\partial a_{22}} & \\cdots & \\frac{\\partial{f}}{\\partial a_{2k}}\\\\\n", "\\vdots & \\vdots & \\cdots & \\vdots\\\\\n", "\\frac{\\partial{f}}{\\partial a_{n1}} & \\frac{\\partial{f}}{\\partial a_{n2}} & \\cdots & \\frac{\\partial{f}}{\\partial a_{nk}}\n", " \\end{bmatrix}\n", "$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "- The following formulas are useful (see Bishop App.-C)\n", "$$\\begin{align*}\n", "|A^{-1}|&=|A|^{-1} \\tag{B-C.4} \\\\\n", "\\nabla_A \\log |A| &= (A^{T})^{-1} = (A^{-1})^T \\tag{B-C.28} \\\\\n", "\\mathrm{Tr}[ABC]&= \\mathrm{Tr}[CAB] = \\mathrm{Tr}[BCA] \\tag{B-C.9} \\\\\n", "\\nabla_A \\mathrm{Tr}[AB] &=\\nabla_A \\mathrm{Tr}[BA]= B^T \\tag{B-C.25} \\\\\n", "\\nabla_A \\mathrm{Tr}[ABA^T] &= A(B+B^T) \\tag{B-C.27}\\\\\n", " \\nabla_x x^TAx &= (A+A^T)x \\tag{from B-C.27}\\\\\n", "\\nabla_X a^TXb &= \\nabla_X \\mathrm{Tr}[ba^TX] = ab^T \\notag\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### What's Next?\n", "\n", "- We discussed how Bayesian probability theory provides an integrated framework for making predictions based on observed data." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The process involves model specification (your main task!), inference and actual model-based prediction." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The latter two tasks are only difficult because of computational issues." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Maximum likelihood was introduced as a computationally simpler approximation to the Bayesian approach." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In particular under some linear Gaussian assumptions, a few interesting models can be designed." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The rest of this course (part-1) concerns introduction to these Linear Gaussian models." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "---\n", "The slide below loads the style file" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "skip" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "open(\"../../styles/aipstyle.html\") do f\n", " display(\"text/html\", readstring(f))\n", "end" ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Julia 0.6.1", "language": "julia", "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6.1" }, "widgets": { "state": { "3e8b6f2f-6500-4ec7-963f-2db519e88817": { "views": [ { "cell_index": 11 } ] } }, "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 1 }