{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Probability Theory Review" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Preliminaries\n", "\n", "- Goal \n", " - Review of probability theory as a theory for rational/logical reasoning with uncertainties (i.e., a Bayesian interpretation)\n", "- Materials \n", " - Mandatory\n", " - These lecture notes\n", " - [Ariel Caticha - 2012 - Entropic Inference and the Foundations of Physics](https://github.com/bertdv/BMLIP/blob/master/lessons/notebooks/files/Caticha-2012-Entropic-Inference-and-the-Foundations-of-Physics.pdf), pp.7-26 (sections 2.1 through 2.5), on deriving probability theory. You may skip section 2.3.4: Cox's proof (pp.15-18). \n", " - The assignment is only meant to appreciate how this line of \"axiomatic derivation\" of the rules of PT goes. I will not ask questions about any details of the derivations at the exam. \n", " \n", " - Optional\n", " - the pre-recorded video guide and live class of 2020\n", " - [Ariel Caticha - 2012 - Entropic Inference and the Foundations of Physics](https://github.com/bertdv/BMLIP/blob/master/lessons/notebooks/files/Caticha-2012-Entropic-Inference-and-the-Foundations-of-Physics.pdf), pp.7-56 (ch.2: probability)\n", " - Great introduction to probability theory, in particular w.r.t. its correct interpretation as a state-of-knowledge.\n", " - Absolutely worth your time to read the whole chapter!\n", " - [Edwin Jaynes - 2003 - Probability Theory -- The Logic of Science](https://archive.org/details/ProbabilityTheoryTheLogicOfScience). \n", " - Brilliant book on Bayesian view on probability theory. Just for fun, scan the annotated bibliography and references.\n", " - Bishop pp. 12-24" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example Problem: Disease Diagnosis\n", "\n", "- **Problem**: Given a disease with prevalence of 1% and a test procedure with sensitivity ('true positive' rate) of 95% and specificity ('true negative' rate) of 85% , what is the chance that somebody who tests positive actually has the disease?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Solution**: Use probabilistic inference, to be discussed in this lecture. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Design of Probability Theory\n", "\n", "- Define an **event** (or \"proposition\") $A$ as a statement, whose truth can be contemplated by a person, e.g., \n", "\n", "$$𝐴= \\texttt{'there is life on Mars'}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If we assume the fact $$I = \\texttt{'All known life forms require water'}$$ and a new piece of information $$x = \\texttt{'There is water on Mars'}$$ becomes available, how _should_ our degree of belief in event $A$ be affected (if we were rational)? " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- [Richard T. Cox, 1946](https://aapt.scitation.org/doi/10.1119/1.1990764) developed a **calculus for rational reasoning** about how to represent and update the degree of _beliefs_ about the truth value of events when faced with new information. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In developing this calculus, only some very agreeable assumptions were made, e.g.,\n", " - (Transitivity). If the belief in $A$ is greater than the belief in $B$, and the belief in $B$ is greater than the belief in $C$, then the belief in $A$ must be greater than the belief in $C$.\n", " - (Consistency). If the belief in an event can be inferred in two different ways, then the two ways must agree on the resulting belief." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- This effort resulted in confirming that the [sum and product rules of Probability Theory](#PT-calculus) are the **only** proper rational way to process belief intensities. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ Probability theory (PT) provides _the_ **theory of optimal processing of incomplete information** (see [Cox theorem](https://en.wikipedia.org/wiki/Cox%27s_theorem), and [Caticha](https://github.com/bertdv/BMLIP/blob/master/lessons/notebooks/files/Caticha-2012-Entropic-Inference-and-the-Foundations-of-Physics.pdf), pp.7-24), and as such provides the (only) proper quantitative framework for drawing conclusions from a finite (read: incomplete) data set." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Why Probability Theory for Machine Learning?\n", "\n", "- Machine learning concerns drawing conclusions about model parameter settings from (a finite set of) data and therefore PT provides the _optimal calculus for machine learning_. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In general, nearly all interesting questions in machine learning can be stated in the following form (a conditional probability):\n", "\n", "$$p(\\texttt{whatever-we-want-to-know}\\, | \\,\\texttt{whatever-we-do-know})$$\n", "\n", "where $p(a|b)$ means the probability that $a$ is true, given that $b$ is true." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Examples\n", " - Predictions\n", " $$p(\\,\\texttt{future-observations}\\,|\\,\\texttt{past-observations}\\,)$$\n", " - Classify a received data point $x$ \n", " $$p(\\,x\\texttt{-belongs-to-class-}k \\,|\\,x\\,)$$\n", " - Update a model based on a new observation\n", " $$p(\\,\\texttt{model-parameters} \\,|\\,\\texttt{new-observation},\\,\\texttt{past-observations}\\,)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Frequentist vs. Bayesian Interpretation of Probabilities\n", "\n", "- The interpretation of a probability as a **degree-of-belief** about the truth value of an event is also called the **Bayesian** interpretation. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In the **Bayesian** interpretation, the probability is associated with a **state-of-knowledge** (usually held by a person). \n", " - For instance, in a coin tossing experiment, $p(\\texttt{tail}) = 0.4$ should be interpreted as the belief that there is a 40% chance that $\\texttt{tail}$ comes up if the coin were tossed.\n", " - Under the Bayesian interpretation, PT calculus (sum and product rules) **extends boolean logic to rational reasoning with uncertainty**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- The Bayesian interpretation contrasts with the **frequentist** interpretation of a probability as the relative frequency that an event would occur under repeated execution of an experiment.\n", "\n", " - For instance, if the experiment is tossing a coin, then $p(\\texttt{tail}) = 0.4$ means that in the limit of a large number of coin tosses, 40% of outcomes turn up as $\\texttt{tail}$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The Bayesian viewpoint is more generally applicable than the frequentist viewpoint, e.g., it is hard to apply the frequentist viewpoint to events like '$\\texttt{it will rain tomorrow}$'. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The Bayesian viewpoint is clearly favored in the machine learning community. (In this class, we also strongly favor the Bayesian interpretation). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Probability Theory Notation\n", "\n", "##### events\n", "- Define an **event** $A$ as a statement, whose truth can be contemplated by a person, e.g.,\n", "\n", "$$A = \\text{'it will rain tomorrow'}$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We write the denial of $A$, i.e. the event **not**-A, as $\\bar{A}$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Given two events $A$ and $B$, we write the **conjunction** \"$A \\wedge B$\" as \"$A,B$\" or \"$AB$\". The conjunction $AB$ is true only if both $A$ and $B$ are true. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We will write the **disjunction** \"$A \\lor B$\" as \"$A + B$\", which is true if either $A$ or $B$ is true or both $A$ and $B$ are true. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that, if $X$ is a variable, then an assignment $X=x$ (with $x$ a value, e.g., $X=5$) can be interpreted as an event. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "##### probabilities\n", "\n", "- For any event $A$, with background knowledge $I$, the **conditional probability of $A$ given $I$**, is written as \n", "$$p(A|I)\\,.$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- All probabilities are in principle conditional probabilities of the type $p(A|I)$, since there is always some background knowledge. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "##### Unfortunately, PT notation is usually rather sloppy :(\n", "\n", "- We often write $p(A)$ rather than $p(A|I)$ if the background knowledge $I$ is assumed to be obviously present. E.g., $p(A)$ rather than $p(\\,A\\,|\\,\\text{the-sun-comes-up-tomorrow}\\,)$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- (In the context of random variable assignments) we often write $p(x)$ rather than $p(X=x)$, assuming that the reader understands the context. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In an apparent effort to further abuse notational conventions, $p(X)$ denotes the full distribution over random variable $X$, i.e., the distribution for all assignments for $X$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If $X$ is a *discretely* valued variable, then $p(X=x)$ is a probability *mass* function (PMF) with $0\\le p(X=x)\\le 1$ and normalization $\\sum_x p(x) =1$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If $X$ is *continuously* valued, then $p(X=x)$ is a probability *density* function (PDF) with $p(X=x)\\ge 0$ and normalization $\\int_x p(x)\\mathrm{d}x=1$. \n", " - Note that if $X$ is continuously valued, then the value of the PDF $p(x)$ is not necessarily $\\le 1$. E.g., a uniform distribution on the continuous domain $[0,.5]$ has value $p(x) = 2$.\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Often, we do not bother to specify if $p(x)$ refers to a continuous or discrete variable. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Probability Theory Calculus\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Let $p(A|I)$ indicate the belief in event $A$, given that $I$ is true. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The following product and sum rules are also known as the **axioms of probability theory**, but as discussed above, under some mild assumptions, they can be derived as the unique rules for *rational reasoning under uncertainty* ([Cox theorem, 1946](https://en.wikipedia.org/wiki/Cox%27s_theorem), and [Caticha, 2012](https://github.com/bertdv/BMLIP/blob/master/lessons/notebooks/files/Caticha-2012-Entropic-Inference-and-the-Foundations-of-Physics.pdf), pp.7-26)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Sum rule**. The disjunction for two events $A$ and $B$ given background $I$ is given by\n", "$$ \\boxed{p(A+B|I) = p(A|I) + p(B|I) - p(A,B|I)}$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Product rule**. The conjuction of two events $A$ and $B$ with given background $I$ is given by \n", "$$ \\boxed{p(A,B|I) = p(A|B,I)\\,p(B|I)}$$\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **All legitimate probabilistic relations can be derived from the sum and product rules!**" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Independent and Mutually Exclusive Events\n", "\n", "- Two events $A$ and $B$ are said to be **independent** if the probability of one is not altered by information about the truth of the other, i.e., $p(A|B) = p(A)$\n", " - $\\Rightarrow$ If $A$ and $B$ are independent, given $I$, then the product rule simplifies to $$p(A,B|I) = p(A|I) p(B|I)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Two events $A_1$ and $A_2$ are said to be **mutually exclusive** if they cannot be true simultanously, i.e., if $p(A_1,A_2)=0$.\n", " - $\\Rightarrow$ For mutually exclusive events, the sum rule simplifies to\n", " $$p(A_1+A_2) = p(A_1) + p(A_2)$$\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- A set of events $A_1, A_2, \\ldots, A_N$ is said to be **collectively exhaustive** if one of the statements is necessarily true, i.e., $A_1+A_2+\\cdots +A_N=\\mathrm{TRUE}$, or equivalently \n", "$$p(A_1+A_2+\\cdots +A_N)=1$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that, if $A_1, A_2, \\ldots, A_n$ are both **mutually exclusive** and **collectively exhausitive** (MECE) events, then\n", " $$\\sum_{n=1}^N p(A_n) = p(A_1 + \\ldots + A_N) = 1$$\n", " - More generally, if $\\{A_n\\}$ are MECE events, then $\\sum_{n=1}^N p(A_n,B) = p(B)$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Sum Rule and Marginalization\n", "\n", "- We mentioned that every inference problem in PT can be evaluated through the sum and product rules. Next, we present two useful corollaries: (1) _Marginalization_ and (2) _Bayes rule_ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If $X \\in \\mathcal{X}$ and $Y \\in \\mathcal{Y}$ are random variables over finite domains, than it follows from the above considerations about MECE events that \n", "$$\n", "\\sum_{Y\\in \\mathcal{Y}} p(X,Y) = p(X) \\,.\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Summing $Y$ out of a joint distribution $p(X,Y)$ is called **marginalization** and the result $p(X)$ is sometimes referred to as the **marginal probability**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that this is just a **generalized sum rule**. In fact, Bishop (p.14) (and some other authors as well) calls this the sum rule.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Of course, in the continuous domain, the (generalized) sum rule becomes\n", "$$p(X)=\\int p(X,Y) \\,\\mathrm{d}Y$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Product Rule and Bayes Rule\n", "\n", "- Consider two variables $D$ and $\\theta$; it follows from symmetry arguments that \n", "$$p(D,\\theta)=p(D|\\theta)p(\\theta)=p(\\theta|D)p(D)$$ \n", "and hence that\n", "$$ p(\\theta|D) = \\frac{p(D|\\theta) }{p(D)}p(\\theta)\\,.$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- This formula is called **Bayes rule** (or Bayes theorem). While Bayes rule is always true, a particularly useful application occurs when $D$ refers to an observed data set and $\\theta$ is set of model parameters. In that case,\n", "\n", " - the **prior** probability $p(\\theta)$ represents our **state-of-knowledge** about proper values for $\\theta$, before seeing the data $D$.\n", " - the **posterior** probability $p(\\theta|D)$ represents our state-of-knowledge about $\\theta$ after we have seen the data." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$\\Rightarrow$ Bayes rule tells us how to update our knowledge about model parameters when facing new data. Hence, \n", "\n", "
\n", "
\n", "Bayes rule is the fundamental rule for learning from data!\n", "
\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Bayes Rule Nomenclature\n", "- Some nomenclature associated with Bayes rule:\n", "$$\n", "\\underbrace{p(\\theta | D)}_{\\text{posterior}} = \\frac{\\overbrace{p(D|\\theta)}^{\\text{likelihood}} \\times \\overbrace{p(\\theta)}^{\\text{prior}}}{\\underbrace{p(D)}_{\\text{evidence}}}\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that the evidence (a.k.a. _marginal likelihood_ ) can be computed from the numerator through marginalization since\n", "$$ p(D) = \\int p(D,\\theta) \\,\\mathrm{d}\\theta = \\int p(D|\\theta)\\,p(\\theta) \\,\\mathrm{d}\\theta$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "- Hence, having access to likelihood and prior is in principle sufficient to compute both the evidence and the posterior. To emphasize that point, Bayes rule is sometimes written as a transformation:\n", "\n", "$$ \\underbrace{\\underbrace{p(\\theta|D)}_{\\text{posterior}}\\cdot \\underbrace{p(D)}_{\\text{evidence}}}_{\\text{this is what we want to compute}} = \\underbrace{\\underbrace{p(D|\\theta)}_{\\text{likelihood}}\\cdot \\underbrace{p(\\theta)}_{\\text{prior}}}_{\\text{this is available}}$$ \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- For a given data set $D$, the posterior probabilities of the parameters scale relatively against each other as\n", "\n", "$$\n", "p(\\theta|D) \\propto p(D|\\theta) p(\\theta)\n", "$$\n", "\n", "- $\\Rightarrow$ All that we can learn from the observed data is contained in the likelihood function $p(D|\\theta)$. This is called the **likelihood principle**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Likelihood Function vs the Sampling Distribution\n", "\n", "- Consider a distribution $p(D|\\theta)$, where $D$ relates to variables that are observed (i.e., a \"data set\") and $\\theta$ are model parameters." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In general, $p(D|\\theta)$ is just a function of the two variables $D$ and $\\theta$. We distinguish two interpretations of this function, depending on which variable is observed (or given by other means). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The **sampling distribution** (a.k.a. the **data-generating** distribution) $$p(D|\\theta=\\theta_0)$$ (which is a function of $D$ only) describes a probability distribution for data $D$, assuming that it is generated by the given model with parameters fixed at $\\theta = \\theta_0$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In a machine learning context, often the data is observed, and $\\theta$ is the free variable. In that case, for given observations $D=D_0$, the **likelihood function** (which is a function only of the model parameters $\\theta$) is defined as $$\\mathrm{L}(\\theta) \\triangleq p(D=D_0|\\theta)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Note that $\\mathrm{L}(\\theta)$ is not a probability distribution for $\\theta$ since in general $\\sum_\\theta \\mathrm{L}(\\theta) \\neq 1$." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Code Example: Sampling Distribution and Likelihood Function for the Coin Toss\n", "\n", "Consider the following simple model for the outcome (head or tail) $y \\in \\{0,1\\}$ of a biased coin toss with parameter $\\theta \\in [0,1]$:\n", "\n", "$$\\begin{align*}\n", "p(y|\\theta) &\\triangleq \\theta^y (1-\\theta)^{1-y}\\\\\n", "\\end{align*}$$\n", "\n", "We can plot both the sampling distribution $p(y|\\theta=0.8)$ and the likelihood function $L(\\theta) = p(y=0|\\theta)$." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "using Pkg; Pkg.activate(\"probprog/workspace\");Pkg.instantiate();\n", "IJulia.clear_output();" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using PyPlot\n", "#using Plots\n", "p(y,θ) = θ.^y .* (1 .- θ).^(1 .- y)\n", "f = figure()\n", "\n", "θ = 0.5 # Set parameter\n", "# Plot the sampling distribution\n", "subplot(221); stem([0,1], p([0,1],θ)); \n", "title(\"Sampling distribution\");\n", "xlim([-0.5,1.5]); ylim([0,1]); xlabel(\"y\"); ylabel(\"p(y|θ=$(θ))\");\n", "\n", "subplot(222);\n", "_θ = 0:0.01:1\n", "y = 1.0 # Plot p(y=1 | θ)\n", "plot(_θ,p(y,_θ))\n", "title(\"Likelihood function\"); \n", "xlabel(\"θ\"); \n", "ylabel(\"L(θ) = p(y=$y)|θ)\");" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "The (discrete) sampling distribution is a valid probability distribution. \n", "However, the likelihood function $L(\\theta)$ clearly isn't, since $\\int_0^1 L(\\theta) \\mathrm{d}\\theta \\neq 1$. \n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Probabilistic Inference\n", "\n", "- **Probabilistic inference** refers to computing\n", "$$\n", "p(\\,\\text{whatever-we-want-to-know}\\, | \\,\\text{whatever-we-already-know}\\,)\n", "$$\n", " - For example: \n", " $$\\begin{align*}\n", " p(\\,\\text{Mr.S.-killed-Mrs.S.} \\;&|\\; \\text{he-has-her-blood-on-his-shirt}\\,) \\\\\n", " p(\\,\\text{transmitted-codeword} \\;&|\\;\\text{received-codeword}\\,) \n", " \\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- This can be accomplished by repeated application of sum and product rules." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In particular, consider a joint distribution $p(X,Y,Z)$. Assume we are interested in $p(X|Z)$:\n", "$$\\begin{align*}\n", "p(X|Z) \\stackrel{p}{=} \\frac{p(X,Z)}{p(Z)} \\stackrel{s}{=} \\frac{\\sum_Y p(X,Y,Z)}{\\sum_{X,Y} p(X,Y,Z)} \\,,\n", "\\end{align*}$$\n", "where the 's' and 'p' above the equality sign indicate whether the sum or product rule was used. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In the rest of this course, we'll encounter many long probabilistic derivations. For each manipulation, you should be able to associate an 's' (for sum rule), a 'p' (for product or Bayes rule) or an 'm' (for a simplifying model assumption) above any equality sign." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Working out the example problem: Disease Diagnosis\n", "\n", "- **Problem**: Given a disease $D$ with prevalence of $1\\%$ and a test procedure $T$ with sensitivity ('true positive' rate) of $95\\%$ and specificity ('true negative' rate) of $85\\%$, what is the chance that somebody who tests positive actually has the disease?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Solution**: The given data are $p(D=1)=0.01$, $p(T=1|D=1)=0.95$ and $p(T=0|D=0)=0.85$. Then according to Bayes rule,\n", "\n", "$$\\begin{align*}\n", "p( D=1 &| T=1) \\\\\n", "&\\stackrel{p}{=} \\frac{p(T=1|D=1)p(D=1)}{p(T=1)} \\\\\n", "&\\stackrel{s}{=} \\frac{p(T=1|D=1)p(D=1)}{p(T=1|D=1)p(D=1)+p(T=1|D=0)p(D=0)} \\\\\n", "&= \\frac{0.95\\times0.01}{0.95\\times0.01 + 0.15\\times0.99} = 0.0601\n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Inference Exercise: Bag Counter\n", "\n", "- **Problem**: A bag contains one ball, known to be either white or black. A white ball is put in, the bag is shaken,\n", " and a ball is drawn out, which proves to be white. What is now the\n", " chance of drawing a white ball?\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Solution**: Again, use Bayes and marginalization to arrive at $p(\\text{white}|\\text{data})=2/3$, see the [Exercises](https://nbviewer.org/github/bertdv/BMLIP/blob/master/lessons/exercises/Exercises-Probability-Theory-Review.ipynb) notebook.\n", "\n", "- $\\Rightarrow$ Note that probabilities describe **a person's state of knowledge** rather than a 'property of nature'." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Inference Exercise: Causality?\n", "\n", "- **Problem**: A dark bag contains five red balls and seven green ones. (a) What is the probability of drawing a red ball on the first draw? Balls are not returned to the bag after each draw. (b) If you know that on the second draw the ball was a green one, what is now the probability of drawing a red ball on the first draw?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Solution**: (a) $5/12$. (b) $5/11$, see the [Exercises](https://nbviewer.org/github/bertdv/BMLIP/blob/master/lessons/exercises/Exercises-Probability-Theory-Review.ipynb) notebook.\n", "\n", "- $\\Rightarrow$ Again, we conclude that conditional probabilities reflect **implications for a state of knowledge** rather than temporal causality." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Moments of the PDF\n", "\n", "- Consider a distribution $p(x)$. The **expected value** or **mean** is defined as \n", "$$\\mu_x = \\mathbb{E}[x] \\triangleq \\int x \\,p(x) \\,\\mathrm{d}{x}$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The **variance** of $x$ is defined as \n", "$$\\Sigma_x \\triangleq \\mathbb{E} \\left[(x-\\mu_x)(x-\\mu_x)^T \\right]$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The **covariance** matrix between _vectors_ $x$ and $y$ is defined as\n", "$$\\begin{align*}\n", " \\Sigma_{xy} &\\triangleq \\mathbb{E}\\left[ (x-\\mu_x) (y-\\mu_y)^T \\right]\\\\\n", " &= \\mathbb{E}\\left[ (x-\\mu_x) (y^T-\\mu_y^T) \\right]\\\\\n", " &= \\mathbb{E}[x y^T] - \\mu_x \\mu_y^T\n", "\\end{align*}$$\n", " - Clearly, if $x$ and $y$ are independent, then $\\Sigma_{xy} = 0$, since $\\mathbb{E}[x y^T] = \\mathbb{E}[x] \\mathbb{E}[y^T] = \\mu_x \\mu_y^T$.\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "### Linear Transformations \n", "\n", "- Consider an arbitrary distribution $p(X)$ with mean $\\mu_x$ and variance $\\Sigma_x$ and the linear transformation $$Z = A X + b \\,.$$ \n", "\n", "- No matter the specification of $p(X)$, we can derive that (see [Exercises](https://nbviewer.org/github/bertdv/BMLIP/blob/master/lessons/exercises/Exercises-Probability-Theory-Review.ipynb) notebook)\n", "$$\\begin{align}\n", "\\mu_z &= A\\mu_x + b \\tag{SRG-3a}\\\\\n", "\\Sigma_z &= A\\,\\Sigma_x\\,A^T \\tag{SRG-3b}\n", "\\end{align}$$\n", " - (The tag (SRG-3a) refers to the corresponding eqn number in Sam Roweis [Gaussian identities](https://github.com/bertdv/BMLIP/blob/master/lessons/notebooks/files/Roweis-1999-gaussian-identities.pdf) notes.)\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### PDF for the Sum of Two Variables\n", "\n", "\n", "- Given eqs SRG-3a and SRG-3b (previous cell), you should now be able to derive the following: for any distribution of variable $X$ and $Y$ and sum $Z = X+Y$ (proof by [Exercise](https://nbviewer.org/github/bertdv/BMLIP/blob/master/lessons/exercises/Exercises-Probability-Theory-Review.ipynb))\n", "\n", "$$\\begin{align*}\n", " \\mu_z &= \\mu_x + \\mu_y \\\\\n", " \\Sigma_z &= \\Sigma_x + \\Sigma_y + 2\\Sigma_{xy} \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Clearly, it follows that if $X$ and $Y$ are **independent**, then\n", "\n", "$$\\Sigma_z = \\Sigma_x + \\Sigma_y $$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- More generally, given two **independent** variables\n", "$X$ and $Y$, with PDF's $p_x(x)$ and $p_y(y)$. The PDF $p_z(z)$for $Z=X+Y$ is given by the **convolution**\n", "\n", "$$\n", "p_z (z) = \\int_{ - \\infty }^\\infty {p_x (x)p_y (z - x)\\,\\mathrm{d}{x}}\n", "$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Proof**: Let $p_z(z)$ be the probability that $Z$ has value $z$. This occurs if $X$ has some value $x$ and at the same time $Y=z-x$, with joint probability $p_x(x)p_y(z-x)$. Since $x$ can be any value, we sum over all possible values for $x$ to get\n", "$\n", "p_z (z) = \\int_{ - \\infty }^\\infty {p_x (x)p_y (z - x)\\,\\mathrm{d}{x}}\n", "$ \n", " \n", " - Note that $p_z(z) \\neq p_x(x) + p_y(y)\\,$ !!\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- [https://en.wikipedia.org/wiki/List_of_convolutions_of_probability_distributions](https://en.wikipedia.org/wiki/List_of_convolutions_of_probability_distributions) shows how these convolutions work out for a few common probability distributions. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- In linear stochastic systems theory, the Fourier Transform of a PDF (i.e., the characteristic function) plays an important computational role. Why?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Code Example: Sum of Two Gaussian Distributed Variables\n", "\n", "- Consider the PDF of the sum of two independent Gaussian distributed $X$ and $Y$:\n", "\n", "$$\\begin{align*}\n", "p_X(x) &= \\mathcal{N}(\\,x\\,|\\,\\mu_X,\\sigma_X^2\\,) \\\\ \n", "p_Y(y) &= \\mathcal{N}(\\,y\\,|\\,\\mu_Y,\\sigma_Y^2\\,) \n", "\\end{align*}$$\n", "\n", "- Let $Z = X + Y$. Performing the convolution (nice exercise) yields a Gaussian PDF for $Z$: \n", "\n", "$$\n", "p_Z(z) = \\mathcal{N}(\\,z\\,|\\,\\mu_X+\\mu_Y,\\sigma_X^2+\\sigma_Y^2\\,).\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "┌ Info: Precompiling Distributions [31c24e10-a181-5473-b8eb-7969acd0382f]\n", "└ @ Base loading.jl:1423\n" ] }, { "data": { "image/png": "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", "text/plain": [ "Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "using PyPlot, Distributions\n", "μx = 2.\n", "σx = 1.\n", "μy = 2.\n", "σy = 0.5\n", "μz = μx+μy; σz = sqrt(σx^2 + σy^2)\n", "x = Normal(μx, σx)\n", "y = Normal(μy, σy)\n", "z = Normal(μz, σz)\n", "range_min = minimum([μx-2*σx, μy-2*σy, μz-2*σz])\n", "range_max = maximum([μx+2*σx, μy+2*σy, μz+2*σz])\n", "range_grid = range(range_min, stop=range_max, length=100)\n", "plot(range_grid, pdf.(x,range_grid), \"k-\")\n", "plot(range_grid, pdf.(y,range_grid), \"b-\")\n", "plot(range_grid, pdf.(z,range_grid), \"r-\")\n", "legend([L\"p_X\", L\"p_Y\", L\"p_Z\"])\n", "grid()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### PDF for the Product of Two Variables\n", "\n", "- For two continuous random **independent** variables\n", "$X$ and $Y$, with PDF's $p_x(x)$ and $p_y(y)$, the PDF of \n", "$Z = X Y $ is given by \n", "$$\n", "p_z(z) = \\int_{-\\infty}^{\\infty} p_x(x) \\,p_y(z/x)\\, \\frac{1}{|x|}\\,\\mathrm{d}x\n", "$$\n", "\n", "- For proof, see [https://en.wikipedia.org/wiki/Product_distribution](https://en.wikipedia.org/wiki/Product_distribution)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Generally, this integral does not lead to an analytical expression for $p_z(z)$. For example, [**the product of two independent variables that are both normally (Gaussian) distributed does not lead to a normal distribution**](https://nbviewer.jupyter.org/github/bertdv/BMLIP/blob/master/lessons/notebooks/The-Gaussian-Distribution.ipynb#product-of-gaussians).\n", " - Exception: the distribution of the product of two variables that both have [log-normal distributions](https://en.wikipedia.org/wiki/Log-normal_distribution) is again a lognormal distribution.\n", " - (If $X$ has a normal distribution, then $Y=\\exp(X)$ has a log-normal distribution.)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Variable Transformations\n", "\n", "- Suppose $x$ is a **discrete** random variable with probability **mass** function $P_x(x)$, and $y = h(x)$ is a one-to-one function with $x = g(y) = h^{-1}(y)$. Then\n", "\n", "$$\n", "P_y(y) = P_x(g(y))\\,.\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- **Proof**: $P_y(\\hat{y}) = P(y=\\hat{y}) = P(h(x)=\\hat{y}) = P(x=g(\\hat{y})) = P_x(g(\\hat{y})). \\,\\square$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- If $x$ is defined on a **continuous** domain, and $p_x(x)$ is a probability **density** function, then probability mass is represented by the area under a (density) curve. Let $a=g(c)$ and $b=g(d)$. Then\n", "$$\\begin{align*}\n", "P(a ≤ x ≤ b) &= \\int_a^b p_x(x)\\mathrm{d}x \\\\\n", " &= \\int_{g(c)}^{g(d)} p_x(x)\\mathrm{d}x \\\\\n", " &= \\int_c^d p_x(g(y))\\mathrm{d}g(y) \\\\\n", " &= \\int_c^d \\underbrace{p_x(g(y)) g^\\prime(y)}_{p_y(y)}\\mathrm{d}y \\\\ \n", " &= P(c ≤ y ≤ d)\n", "\\end{align*}$$\n", "\n", "- Equating the two probability masses leads to identificaiton of the relation \n", "$$p_y(y) = p_x(g(y)) g^\\prime(y)\\,,$$ \n", "which is also known as the [Change-of-Variable theorem](https://en.wikipedia.org/wiki/Probability_density_function#Function_of_random_variables_and_change_of_variables_in_the_probability_density_function). \n", "\n", "- If the tranformation $y = h(x)$ is not invertible, then $x=g(y)$ does not exist. In that case, you can still work out the transformation by equating equivalent probability masses in the two domains. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Transformation of a Gaussian Variable\n", "\n", "- Let $p_x(x) = \\mathcal{N}(x|\\mu,\\sigma^2)$ and $y = \\frac{x-\\mu}{\\sigma}$. \n", "\n", "- **Problem**: What is $p_y(y)$? \n", "\n", "- **Solution**: Note that $h(x)$ is invertible with $x = g(y) = \\sigma y + \\mu$. The change-of-variable formula leads to\n", "$$\\begin{align*}\n", "p_y(y) &= p_x(g(y)) \\cdot g^\\prime(y) \\\\\n", " &= p_x(\\sigma y + \\mu) \\cdot \\sigma \\\\\n", " &= \\frac{1}{\\sigma\\sqrt(2 \\pi)} \\exp\\left( - \\frac{(\\sigma y + \\mu - \\mu)^2}{2\\sigma^2}\\right) \\cdot \\sigma \\\\\n", " &= \\frac{1}{\\sqrt(2 \\pi)} \\exp\\left( - \\frac{y^2 }{2}\\right)\\\\\n", " &= \\mathcal{N}(y|0,1) \n", "\\end{align*}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Summary\n", "\n", "- Probabilities should be interpretated as degrees of belief, i.e., a state-of-knowledge, rather than a property of nature." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We can do everything with only the **sum rule** and the **product rule**. In practice, **Bayes rule** and **marginalization** are often very useful for inference, i.e., for computing\n", "\n", "$$p(\\,\\text{what-we-want-to-know}\\,|\\,\\text{what-we-already-know}\\,)\\,.$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Bayes rule $$ p(\\theta|D) = \\frac{p(D|\\theta)p(\\theta)} {p(D)} $$ is the fundamental rule for learning from data!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- For a variable $X$ with distribution $p(X)$ with mean $\\mu_x$ and variance $\\Sigma_x$, the mean and variance of the **Linear Transformation** $Z = AX +b$ is given by \n", "$$\\begin{align}\n", "\\mu_z &= A\\mu_x + b \\tag{SRG-3a}\\\\\n", "\\Sigma_z &= A\\,\\Sigma_x\\,A^T \\tag{SRG-3b}\n", "\\end{align}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- That's really about all you need to know about probability theory, but you need to _really_ know it, so do the [Exercises](https://nbviewer.org/github/bertdv/BMLIP/blob/master/lessons/exercises/Exercises-Probability-Theory-Review.ipynb)." ] }, { "cell_type": "code", "execution_count": 8, "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\", read(f,String))\n", "end" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "anaconda-cloud": {}, "celltoolbar": "Slideshow", "kernelspec": { "display_name": "Julia 1.7.2", "language": "julia", "name": "julia-1.7" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.7.2" }, "widgets": { "state": { "0c9c7079-a918-4ed4-ad45-8de3d7874019": { "views": [ { "cell_index": 12 } ] }, "261fa34c-df0a-4604-a2ff-35a9cb4d9fb2": { "views": [ { "cell_index": 20 } ] }, "42bb27af-6a2c-4a24-bcd3-1d8b8aec035c": { "views": [ { "cell_index": 20 } ] }, "50e83b63-be9e-4e83-987a-8b3ee9bbabd6": { "views": [ { "cell_index": 20 } ] }, "8053293d-ebc1-46b4-ac1c-afeb3a53d190": { "views": [ { "cell_index": 20 } ] }, "f496660b-92e4-41a4-a67b-b3ca19795f03": { "views": [ { "cell_index": 12 } ] } }, "version": "1.2.0" } }, "nbformat": 4, "nbformat_minor": 4 }