{ "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 from a logical reasoning viewpoint (i.e., a Bayesian interpretation)\n", "- Materials \n", " - Mandatory\n", " - These lecture notes\n", " - Optional\n", " - Bishop pp. 12-20 \n", " - [Bruininkx - 2002 - Bayesian Probability](./files/Bruyninkx-2002-Bayesian-probability.pdf)\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example Problem: Disease Diagnosis\n", "\n", "- **[Question]** 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": [ "### Why Probability Theory?\n", "\n", "- Probability theory (PT) is the **theory of optimal processing of incomplete information** (see [Cox theorem](https://en.wikipedia.org/wiki/Cox%27s_theorem)), and as such provides a quantitative framework for drawing conclusions from a finite (read: incomplete) data set. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Machine learning concerns drawing conclusions from (a finite set of) data and therefore PT is 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", "$$p(\\text{whatever-we-want-to-know}\\, | \\,\\text{whatever-we-do-know})$$\n", " - For example:\n", " - Predictions\n", " $$p(\\,\\text{future-observations}\\,|\\,\\text{past-observations}\\,)$$\n", " - Classify a received data point \n", " $$p(\\,x\\text{-belongs-to-class-}k \\,|\\,x\\,)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "- **Information theory** (\"theory of log-probability\") provides a source coding view on machine learning that is consistent with probability theory (more in part-2). " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Probability Theory Notation\n", "\n", "- Define an **event** $A$ as a statement, whose truth is 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": [ "##### 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": { "collapsed": true, "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "- The value of a probability is limited to $0 \\le p(A|I) \\le 1$. " ] }, { "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": "fragment" } }, "source": [ " - Still, 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}\\,)$.\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "##### probabilities for random variable assignments\n", "\n", "- Note that, if $X$ is a random variable, then the assignment $X=x$ (with $x$ a value) can be interpreted as an event. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We often write $p(x)$ rather than $p(X=x)$ (hoping that the reader understands the context ;-) " ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "fragment" } }, "source": [ "- In an apparent effort to further abuse notational conventions, $p(X)$ often denotes the full distribution over random variable $X$, i.e., the distribution for all assignments for $X$. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "##### compound events\n", "\n", "- The **joint** probability that both $A$ and $B$ are true, given $I$ (a.k.a. **conjunction**) is written as\n", "$$p(A,B|I)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $A$ and $B$ are said to be **independent**, given $I$, if (and only if) $$p(A,B|I) = p(A|I)\\,p(B|I)$$ " ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "fragment" } }, "source": [ "- The probability that either $A$ or $B$, or both $A$ and $B$, are true, given $I$ (a.k.a. **disjunction**) is written as \n", "$$p(A+B|I)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Probability Theory Calculus\n", " \n", "- **Normalization**. If you know that event $A$ given $I$ is true, then $p(A|I)=1$." ] }, { "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", "$$ p(A,B|I) = p(A|B,I)\\,p(B|I) \\,.$$\n", " - If $A$ and $B$ are independent given $I$, then $p(A|B,I) = p(A|I)$. " ] }, { "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", "$$ p(A+B|I) = p(A|I) + p(B|I) - p(A,B|I)\\,.$$\n", " - As a special case, it follows from the sum rule that $ p(A|I) + p(\\bar{A}|I) = 1$\n", " - Note that the background information may not change, e.g., if $I^\\prime \\neq I$, then \n", "$$ p(A+B|I^\\prime) \\neq p(A|I) + p(B|I) - p(A,B|I)\\,.$$ " ] }, { "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": "fragment" } }, "source": [ "- The product and sum rules are also known as the **axioms of probability theory**, but in fact, under some mild conditions, they can be derived as the unique rules for rational reasoning under uncertainty ([Cox theorem, 1946](https://en.wikipedia.org/wiki/Cox%27s_theorem))." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Frequentist vs. Bayesian Interpretation of Probabilities\n", "\n", "- In the **frequentist** interpretation, $p(A)$ relates to the relative frequency that $A$ would occur under repeated execution of an experiment. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " - 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": [ "- In the **Bayesian** interpretation, $p(A)$ reflects the **degree of belief** that event $A$ is true. I.o.w., the probability is associated with a **state-of-knowledge** (usually held by a person). \n", " - For instance, for the 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": "fragment" } }, "source": [ "- The Bayesian viewpoint is more generally applicable than the frequentist viewpoint, e.g., it is hard to apply the frequentist viewpoint to the event '$\\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": [ "### The Sum Rule and Marginalization\n", "\n", "- We discussed 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$ and $Y$ are random variables over finite domains, than it follows from the sum rule that \n", "$$\n", "p(X) = \\sum_Y p(X,Y) = \\sum_Y p(X|Y) p(Y) \\,.\n", "$$" ] }, { "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", " - EXERCISE: Proof the generalized sum rule." ] }, { "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": "fragment" } }, "source": [ "- Integrating $Y$ out of a joint distribution is called **marginalization** and the result $p(X)$ is sometimes referred to as the **marginal probability**. " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### The Product Rule and Bayes Rule\n", "\n", "- Consider 2 variables $D$ and $\\theta$; it follows 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(\\theta)}{p(D)}\\,.$$ " ] }, { "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 that relates to the data. 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 machine learning!\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": "fragment" } }, "source": [ "- Hence, likelihood and prior is sufficient to compute both the evidence and the posterior. To emphasize that point, Bayes rule is sometimes written as \n", "$$ p(\\theta|D)\\,p(D) = p(D|\\theta)\\, p(\\theta)$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- For given $D$, the posterior probabilities of the parameters scale relatively against each other as\n", "$$\n", "p(\\theta|D) \\propto p(D|\\theta) p(\\theta)\n", "$$\n", "\n", "$\\Longrightarrow$ 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 model $p(D|\\theta)$, where $D$ relates to 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)$$ (a function of $D$ only) describes the 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. 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": "fragment" } }, "source": [ "- Technically, it is more correct to speak about the likelihood of a model (or model parameters) than about the likelihood of an observed data set. (Why?) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "#### CODE EXAMPLE\n", "\n", "Consider the following simple model for the outcome (head or tail) of a biased coin toss with parameter $\\theta \\in [0,1]$:\n", "\n", "$$\\begin{align*}\n", "y &\\in \\{0,1\\} \\\\\n", "p(y|\\theta) &\\triangleq \\theta^y (1-\\theta)^{1-y}\\\\\n", "\\end{align*}$$\n", "\n", "We can plot both the sampling distribution (i.e. $p(y|\\theta=0.8)$) and the likelihood function (i.e. $L(\\theta) = p(y=0|\\theta)$)." ] }, { "cell_type": "code", "execution_count": 1, "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": "16c792bb-cc0c-4a48-ba5f-50d9a314d827", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Checkbox(1: \"input\" = false Bool , \"y\", false)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "86b18663-fb28-4906-8c7f-051d8fa58c52", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(2: \"input-2\" = 0.5 Any , \"θ\", 0.5, \"0.5\", 6, Interact.OptionDict(DataStructures.OrderedDict{Any,Any}(\"0.0\"=>0.0,\"0.1\"=>0.1,\"0.2\"=>0.2,\"0.3\"=>0.3,\"0.4\"=>0.4,\"0.5\"=>0.5,\"0.6\"=>0.6,\"0.7\"=>0.7,\"0.8\"=>0.8,\"0.9\"=>0.9…), Dict{Any,Any}(Pair{Any,Any}(0.6, \"0.6\"),Pair{Any,Any}(0.3, \"0.3\"),Pair{Any,Any}(0.7, \"0.7\"),Pair{Any,Any}(0.0, \"0.0\"),Pair{Any,Any}(0.2, \"0.2\"),Pair{Any,Any}(0.9, \"0.9\"),Pair{Any,Any}(0.8, \"0.8\"),Pair{Any,Any}(0.5, \"0.5\"),Pair{Any,Any}(0.1, \"0.1\"),Pair{Any,Any}(0.4, \"0.4\")…)), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAD7CAYAAABufU6/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3XlYFdX/wPH3ZQcXFBREBURKxXAnFZRcUgyUUrNcUXMp94X8lmummZiW4YbmnuaCW1pJKeWGgbtoiFtu4EIqCCgq6/z+8OH+vALKfuHyeT3PffSee2bmM3fuHM6cM+eMSlEUBSGEEEIIHaan7QCEEEIIIYqaVHiEEEIIofOkwiOEEEIInScVHiGEEELoPKnwCCGEEELnSYVHCCGEEDpPKjxCCCGE0HlS4RFCCCGEzpMKjxBCCCF0nlR4itDRo0fp1q0bdnZ2GBsbY21tjaurK59++qm2Q3ulgQMHUqtWLY20WrVqMXDgQK3EkxOVSsWXX36pfr927VpUKhXXr1/P03pmz57Nzp0787RMdttq27Ytzs7OeVrPqwQFBWns4/NK4jERxSPz93fixIkc81y/fh2VSsXatWvVaV9++SUqlYr79+8XahzPnwfZlR8qlYpRo0YVyjYLw4EDB1CpVBw4cOCVeQMDA3njjTcwNTVFpVIRHh5e9AHmIDQ0lC+//JL4+Pgsn7Vt25a2bdsWf1ClhFR4isju3btxc3MjMTGRuXPnsnfvXhYsWECrVq0IDAzUdnj58vPPPzNt2jRth/FSnTt3JiwsDBsbmzwtl58KT363lVdBQUHMmDEj289KwzER2mNjY0NYWBidO3cu1u1OmzaNn3/+uVi3WVTu3buHj48Pjo6O/PHHH4SFhVGnTh2txRMaGsqMGTOyrfAEBAQQEBCghahKBwNtB6Cr5s6di4ODA3v27MHA4P+/5l69ejF37lwtRpZ/TZo00XYIr1S1alWqVq1apNt48uQJJiYmxbKtVykNx0Roj7GxMS1btiz27To6Ohb7NovKpUuXSE1NpV+/frRp00bb4bxU/fr1tR1CiSYtPEUkNjaWKlWqaFR2MunpaX7tgYGBeHh4YGNjg6mpKU5OTkycOJGkpCSNfAMHDqR8+fJcuHCBTp06Ua5cOWxsbJgzZw4AR44coXXr1pQrV446derw448/aiyf2fQcHBzMRx99hIWFBeXKlcPb25urV6++cp9e7D7JbBLetGkTU6ZMoXr16lSsWJEOHTpw8eJFjWUVRWH27NnY29tjYmKCi4sLwcHBuW6CTUxMZOjQoVhaWlK+fHneeecdLl26lCVfds3rp0+fpkuXLlhZWWFsbEz16tXp3LkzN2/eBJ41tSclJfHjjz+iUqlQqVTqmDLXt3fvXgYNGkTVqlUxMzMjOTn5pd1nISEhtGzZElNTU2rUqMG0adNIT0/P8t292Jz+YhfEwIEDWbJkiTrOzFfmNrPr0oqKiqJfv37q/XVycuK7774jIyMjy3a+/fZb5s+fj4ODA+XLl8fV1ZUjR4688niI0iG7Lq3sXLhwgdq1a9OiRQvu3r2rTv/zzz95++23qVixImZmZrRq1Yq//vrrldvNrksr0/r163FycsLMzIxGjRrx22+/Zclz+PBh3n77bSpUqICZmRlubm7s3r07S76IiAjee+89KleujImJCY0bN85S7mXu3zvvvIOZmRlVqlRh2LBhPHz4MFf70bp1awB69uypUTbkVHa9uO95PdeOHj2Kt7c3lpaWmJiY4OjoyLhx44Bn3ZH/+9//AHBwcFCXB5nlSHYxxcXFMWLECGrUqIGRkRG1a9dmypQpJCcna+TL7HLMzfEpraTCU0RcXV05evQoY8aM4ejRo6SmpuaY9/Lly3h5ebFq1Sr++OMPxo0bx5YtW/D29s6SNzU1le7du9O5c2d27dqFp6cnkyZNYvLkyQwYMIBBgwbx888/U7duXQYOHMjJkyezrGPw4MHo6emxceNG/P39OXbsGG3bts22iTQ3Jk+ezI0bN1i5ciXLly/n8uXLeHt7a/yBnzJlClOmTOGdd95h165dDBs2jCFDhmRbaXmRoih07dqV9evX8+mnn/Lzzz/TsmVLPD09X7lsUlISHTt25L///mPJkiUEBwfj7++PnZ2dusALCwvD1NQULy8vwsLCCAsLy9IsPGjQIAwNDVm/fj3btm3D0NAwx23GxMTQq1cv+vbty65du+jRowezZs1i7Nixr4z3RdOmTaNHjx7qODNfOXWj3bt3Dzc3N/bu3ctXX33FL7/8QocOHZgwYUK29088/51s2LCBpKQkvLy8SEhIyHOsonQ6ePAgbm5uNGzYkP3792NlZQXATz/9hIeHBxUrVuTHH39ky5YtWFhY0KlTp1xVerKze/duFi9ezMyZM9m+fTsWFhZ069ZN44Lr4MGDtG/fnoSEBFatWsWmTZuoUKEC3t7eGrcDXLx4ETc3N86dO8fChQvZsWMH9evXZ+DAgRqt6P/99x9t2rQhIiKCgIAA1q9fz6NHj3J1P9G0adPUFxyzZ8/OtmzIrdyca3v27MHd3Z2oqCjmz5/P77//ztSpU/nvv/8AGDJkCKNHjwZgx44d6vKgadOm2W7z6dOntGvXjnXr1uHr68vu3bvp168fc+fOpXv37lny5+b4lGqKKBL3799XWrdurQAKoBgaGipubm6Kn5+f8vDhwxyXy8jIUFJTU5WDBw8qgHLmzBn1ZwMGDFAAZfv27eq01NRUpWrVqgqgnDp1Sp0eGxur6OvrK76+vuq0NWvWKIDSrVs3jW3+/fffCqDMmjVLY1v29vYa+ezt7ZUBAwao3+/fv18BFC8vL418W7ZsUQAlLCxMURRFiYuLU4yNjZWePXtq5AsLC1MApU2bNjl+H4qiKL///rsCKAsWLNBI//rrrxVAmT59epZ9vHbtmqIoinLixAkFUHbu3PnSbZQrV05j315cX//+/XP8LHNbiqIobdq0UQBl165dGnmHDh2q6OnpKTdu3FAU5f+/u/3792vku3btmgIoa9asUaeNHDlSyelUffGYTJw4UQGUo0ePauQbPny4olKplIsXL2psp0GDBkpaWpo637FjxxRA2bRpU7bbEyVH5u/v+PHjOebJ7vc0ffp0BVDu3bunrF+/XjEyMlLGjBmjpKenq/MkJSUpFhYWire3t8b60tPTlUaNGinNmzfPEsfz50F25QegWFtbK4mJieq0mJgYRU9PT/Hz81OntWzZUrGystIoJ9PS0hRnZ2elZs2aSkZGhqIoitKrVy/F2NhYiYqK0tiOp6enYmZmpsTHxyuKoiiff/65olKplPDwcI18HTt2zPYcfFHmubp161aN9DZt2mRbdr2473k51xwdHRVHR0flyZMnOcYzb968LN93TjEtW7ZMAZQtW7Zo5Pvmm28UQNm7d686LbfHpzSTFp4iYmlpSUhICMePH2fOnDm89957XLp0iUmTJtGgQQONERJXr16lT58+VKtWDX19fQwNDdV9xefPn9dYr0qlwsvLS/3ewMCA1157DRsbG437OSwsLLCysuLGjRtZYuvbt6/Gezc3N+zt7dm/f3++9vXdd9/VeN+wYUMA9baPHDlCcnIyH374oUa+li1b5tjs/bzMuF6Mu0+fPq9c9rXXXqNy5cp8/vnnLFu2jMjIyFcuk533338/13krVKiQ5Tvp06cPGRkZHDp0KF/bz619+/ZRv359mjdvrpE+cOBAFEVh3759GumdO3dGX19f/f7FYyd019dff83AgQOZM2cOCxYs0OhqDw0NJS4ujgEDBpCWlqZ+ZWRk8M4773D8+PEsXe650a5dOypUqKB+b21trVFOJSUlcfToUXr06EH58uXV+fT19fHx8eHmzZvq7vJ9+/bx9ttvY2trq7GNgQMH8vjxY8LCwoBn5ccbb7xBo0aNNPLlpvwoTK861y5dusSVK1cYPHgwJiYmhbLNffv2Ua5cOXUrcabMbvAXW+pedXxKO7lpuYi5uLjg4uICPOuO+vzzz/n++++ZO3cuc+fO5dGjR7i7u2NiYsKsWbOoU6cOZmZmREdH0717d548eaKxPjMzsywng5GRERYWFlm2bWRkxNOnT7OkV6tWLdu02NjYfO2jpaWlxntjY2MAdeyZ67W2ts6ybHZpL4qNjcXAwCDLdrLbjxeZm5tz8OBBvv76ayZPnsyDBw+wsbFh6NChTJ069aVdU8/Ly0is7PYpM9b8fse5FRsbm20lsnr16tlu/1XHTuiun376iRo1atCrV68sn2V2obz4h/J5cXFxlCtXLk/bfPH3Bs9+c5m/twcPHqAoSrbn24u/4djY2Fznc3BwyJIvN+VHYXrVuXbv3j0AatasWWjbjI2NpVq1aqhUKo10KysrDAwMXlkeZMapK+WBVHiKkaGhIdOnT+f7778nIiICeFYDv337NgcOHNAYAZDf+2lyIyYmJtu01157rUi2l3kSZRaiL273Va08lpaWpKWlERsbq3FCZrcf2WnQoAGbN29GURTOnj3L2rVrmTlzJqampkycODFX63ixwHiZnPYT/v+7yKy0vnjjYEHnRrG0tOTOnTtZ0m/fvg1AlSpVCrR+oTv++OMPevbsibu7O3/99Rf29vbqzzJ/J4sWLcpxlFduLlbyqnLlyujp6eXqN5zb37qlpWWOZV5BmJiYZHuvW37P4cwRn5mDKQqDpaUlR48eRVEUjTLs7t27pKWllbnyQLq0ikh2JyL8fxdV5lVI5o8ws7af6Ycffiiy2DZs2KDxPjQ0lBs3bhTZhFUtWrTA2Ng4y/xDR44cyVVTabt27YCscW/cuDFPcahUKho1asT3339PpUqVOHXqlPqzwryKefjwIb/88kuWWPX09HjrrbcA1JW8s2fPauR7cbnM2CB3rS5vv/02kZGRGvsGsG7dOlQqlfq7FMLe3p6QkBCMjY1xd3fn8uXL6s9atWpFpUqViIyMVLdSv/gyMjIq9JjKlStHixYt2LFjh8bvPSMjg59++omaNWuq58B5++231ReMz1u3bh1mZmbqilq7du04d+4cZ86c0ciX1/LjRbVq1eLSpUsaFy2xsbGEhobma3116tTB0dGR1atXZ7kQel5ey4NHjx5lmWNs3bp16s/LEmnhKSKdOnWiZs2aeHt7U69ePTIyMggPD+e7776jfPny6hE7bm5uVK5cmWHDhjF9+nQMDQ3ZsGFDlpOzMJ04cYIhQ4bwwQcfEB0dzZQpU6hRowYjRowoku1ZWFjg6+uLn58flStXplu3bty8eZMZM2ZgY2OTZZj+izw8PHjrrbf47LPPSEpKwsXFhb///pv169e/ctu//fYbAQEBdO3aldq1a6MoCjt27CA+Pp6OHTuq8zVo0IADBw7w66+/YmNjQ4UKFahbt26+9tfS0pLhw4cTFRVFnTp1CAoKYsWKFQwfPhw7OzvgWXN6hw4d1N+Jvb09f/31Fzt27MiyvgYNGgDwzTff4Onpib6+Pg0bNsz2D8748eNZt24dnTt3ZubMmdjb27N7924CAgIYPny4VidME0Vj37592U6N8Py9fjmxsbHh4MGDdOrUibfeeovg4GCcnZ0pX748ixYtYsCAAcTFxdGjRw+srKy4d+8eZ86c4d69eyxdurQI9gb8/Pzo2LEj7dq1Y8KECRgZGREQEEBERASbNm1SXyROnz6d3377jXbt2vHFF19gYWHBhg0b2L17N3PnzsXc3ByAcePGsXr1ajp37sysWbOwtrZmw4YNXLhwoUBx+vj48MMPP9CvXz+GDh1KbGwsc+fOpWLFivle55IlS/D29qZly5aMHz8eOzs7oqKi2LNnj/qCL7M8WLBgAQMGDMDQ0JC6detq3HuTqX///ixZsoQBAwZw/fp1GjRowOHDh5k9ezZeXl506NAh37GWSlq9ZVqHBQYGKn369FFef/11pXz58oqhoaFiZ2en+Pj4KJGRkRp5Q0NDFVdXV8XMzEypWrWqMmTIEOXUqVNZRlcMGDBAKVeuXJZttWnTRnnjjTeypNvb2yudO3dWv88cTbF3717Fx8dHqVSpkmJqaqp4eXkply9f1lg2L6O0Xhy9kN3IkIyMDGXWrFlKzZo1FSMjI6Vhw4bKb7/9pjRq1CjLqLHsxMfHK4MGDVIqVaqkmJmZKR07dlQuXLjwylFaFy5cUHr37q04Ojoqpqamirm5udK8eXNl7dq1GusPDw9XWrVqpZiZmWmMHHvZSJicRmm98cYbyoEDBxQXFxfF2NhYsbGxUSZPnqykpqZqLH/nzh2lR48eioWFhWJubq7069dPPars+e8uOTlZGTJkiFK1alVFpVJpbPPFY6IoinLjxg2lT58+iqWlpWJoaKjUrVtXmTdvnsYonMxjNG/evCz79eJ3KkqmzN9fTq9r1669cpRWpvj4eKVVq1aKhYWFxm/94MGDSufOnRULCwvF0NBQqVGjhtK5c2eNcz4vo7RGjhyZZT+y+w2HhIQo7du3V8qVK6eYmpoqLVu2VH799dcsy/7zzz+Kt7e3Ym5urhgZGSmNGjXS2NdMkZGRSseOHRUTExPFwsJCGTx4sLJr164CjdJSFEX58ccfFScnJ8XExESpX7++EhgYmOMordyea2FhYYqnp6dibm6uGBsbK46Ojsr48eM18kyaNEmpXr26oqenp7EP2Y0ci42NVYYNG6bY2NgoBgYGir29vTJp0iTl6dOnWWLJ7fEprVSKoijFUbES2rd27Vo++ugjjh8/rr6RWpuuXbtGvXr1mD59OpMnT9Z2OEIIIXSYdGmJYnHmzBk2bdqEm5sbFStW5OLFi+rm38GDB2s7PCGEEDpOKjyiWJQrV44TJ06watUq4uPjMTc3p23btnz99ddFMtpDCCGEeJ50aQkhhBBC52l9WPqhQ4fw9vamevXqqFSqLMPnsnPw4EGaNWuGiYkJtWvXZtmyZcUQqRBCCCFKK61XeJKSkmjUqBGLFy/OVf5r167h5eWFu7s7p0+fZvLkyYwZM4bt27cXcaRCCCGEKK1KVJeWSqXi559/pmvXrjnm+fzzz/nll180njE1bNgwzpw5o352ihBCCCHE80rdTcthYWF4eHhopHXq1IlVq1aRmpqa7bORkpOTNWauzMjIIC4uDktLyzw9MkAIUTgUReHhw4dUr179lRNPlhQZGRncvn2bChUqSLkhhJYUpOwodRWemJiYLKN6rK2tSUtL4/79+9k+TM7Pz48ZM2YUV4hCiFyKjo4u1IclFqXbt29neTK3EEI78lN2lLoKD2R9kGNmr1xOV12TJk3C19dX/T4hIQE7Ozuio6MLNA24ECJ/EhMTsbW1zXY6/JIqM1YpN4TQnoKUHaWuwlOtWrUsT7m9e/cuBgYG2T7aHp49bO3Fh3MCVKxYUQouIbSoNHUNZcYq5YYQ2pefsqN0dJ4/x9XVleDgYI20vXv34uLiku39O0II3SPTWQgh8krrFZ5Hjx4RHh5OeHg48GzYeXh4OFFRUcCz7qj+/fur8w8bNowbN27g6+vL+fPnWb16NatWrWLChAlaiV8IUfxkOgshRF5pvUvrxIkTtGvXTv0+816bAQMGsHbtWu7cuaOu/AA4ODgQFBTE+PHjWbJkCdWrV2fhwoW8//77xR67EEI7PD098fT0zHX+ZcuWYWdnh7+/PwBOTk6cOHGCb7/9tkjKjvQMBX290tNdJ0RZoPUKT9u2bXnZVEBr167NktamTRtOnTpVhFEJIXRJYUxnkZiYmKttXbufxKC1x5nV1ZlWr1UpWOBCiEKj9S4tIYQoaq+aziI7fn5+mJubq1+5HZLu/+clrt1Pot+qo8zfe5H0jBIzt6sQZZpUeIQQZUJ+prNISEhQv6Kjo3O1nTndG9LrTVsUBRbu+5c+K47wX+LTggUvhCgwqfAIIXRefqezyByCnpeh6KZG+sx5vyELejWmnJE+R6/F4bUghIOX7hV4P4QQ+ScVHiGEztPGdBbvNa7Br6Nb42RTkdikFAasPsY3f1wgLT2jSLYnhHg5qfAIIUqd0jKdRe2q5fl5hBv9WtoBsPTAFXqvOMKdhCdFul0hRFZS4RFClDonTpygSZMmNGnSBHg2nUWTJk344osvAHKczuLAgQM0btyYr776qtimszAx1GdW1wYs7tOECsYGHL/+AK8FIey78F+Rb1sI8f9UysvGhOuoxMREzM3NSUhIkCnihdCC0ngOFkbMN2KTGLXxNP/cSgDg47dq879OdTHUl2tPIXKjIOehnGVCCFFM7C3LsW24KwPdagGw/NBVPlgWxs0Hj7UbmBBlgFR4hBCiGBkb6PPlu2/wg08zKpoYEB4dj9eCEPaci3n1wkKIfJMKjxBCaEGnN6qxe4w7jW0rkfg0jU/Wn2TGr+dISZNRXEIUBanwCCGElthamLHlE1eGujsAsObv6/RYFkpUrHRxCVHYpMIjhBBaZGSgx5TO9VnZ34VKZoacvZlA54UhBP1zR9uhCaFTpMIjhBAlQIf61gSNcaeZfWUeJqcxYsMppu2M4GlqurZDE0InSIVHCCFKiOqVTNn8cUuGtXEEYP2RG3QPCOXa/SQtRyZE6ScVHiGEKEEM9fWY6FmPtR+9iUU5IyLvJNJlYQi7wm9pOzQhSjWp8AghRAnUtq4VQWPcaeFgQVJKOmM3hzNpx1np4hIin6TCI4QQJVQ1cxM2DGnB6PavoVLBpmPRvLf4b/69+0jboQlR6kiFRwghSjADfT0+9ajL+kEtqFLemIv/PcR70WG2n7yp7dCEKFWkwiOEKDapqalER0dz+fJlbYdS6rR+vQpBY1vj5mjJk9R0Pt16hglbz/A4JU3boQlRKkiFRwhRpB49esQPP/xA27ZtMTc3p1atWjRv3hwAZ2dnhg4dyvHjx7UcZelgVcGE9YNbML5DHfRUsO3kTd5d/DcXYx5qOzQhSjyp8Aghisz3339PrVq1WLFiBe3bt2fHjh2Eh4dz4sQJAD7//HPS0tLo2LEj77zzjrT85IK+noqxHV5nw5CWWFUw5t+7j3hvyWECj0ehKIq2wxOixFIpZfAMKcjj5YUQuffBBx/wxRdf0KBBA430F8/B5ORkVq1ahZGREUOGDNFStC9XEsuN+4+SGR8YTsjl+wB0bVydWd0aUN7YQMuRCVE0CnIelogWnoCAABwcHDAxMaFZs2aEhIS8NL+/vz9169bF1NQUW1tbxo8fz9OnT4spWiFEbm3dujVLZSc7xsbGjBgxosRWdkqqKuWN+fGj5nz2Tl309VTsDL/Nu4sOE3k7UduhCVHiaL3CExgYyLhx45gyZQqnT5/G3d0dT09PoqKiss2/YcMGJk6cyPTp0zl//jyrVq0iMDCQSZMmFXPkQoi8SE9P5/r160RGRnLjxg1th6Mz9PRUjGj7Gps/bomNuQlX7yfRNeBvfjpyQ7q4hHiO1is88+fPZ/DgwQwZMgQnJyf8/f2xtbVl6dKl2eYPCwujVatW9OnTh1q1auHh4UHv3r3V9wQIIUqWgwcP0qlTJ8qVK4ejoyMNGjSgcePGAHTr1o1Dhw5pOULd8GYtC3aPcad9PStS0jKYujOCUZtO8/BpqrZDE6JE0GqFJyUlhZMnT+Lh4aGR7uHhQWhoaLbLtG7dmpMnT3Ls2DEArl69SlBQEJ07d85xO8nJySQmJmq8hBBFb8OGDbzzzjs4OjqyefNmzpw5g6mpKdu2bQPAxcWFrl27smnTJi1Hqhssyhmxsr8Lk73qYaCnYvfZO3RZdJiIWwnaDk0IrdPqnW33798nPT0da2trjXRra2tiYmKyXaZXr17cu3eP1q1boygKaWlpDB8+nIkTJ+a4HT8/P2bMmFGosQshXu3LL79k1apV9OnTR52mUqmoXbs2AFOmTMHNzY1PP/2U3r17aytMnaKnp+LjtxxxqWXB6I2nuRH7mO4BoUz2qscAt1qoVCpthyiEVmi9SwvIcgIqipLjSXngwAG+/vprAgICOHXqFDt27OC3337jq6++ynH9kyZNIiEhQf2Kjo4u1PiFENm7ffs2LVu2fGmeBg0acOfOnTyvWwY7vFxTu8oEjXHHo741KekZfPlrJMN+OknCY+niEmWTVis8VapUQV9fP0trzt27d7O0+mSaNm0aPj4+DBkyhAYNGtCtWzdmz56Nn58fGRkZ2S5jbGxMxYoVNV5CiKLXpk0bJk2axKNH2T/7SVEUvvnmG9q2bZun9cpgh9wxNzPkB59mTPeuj6G+ij3n/qPzohDCo+O1HZoQxU6rFR4jIyOaNWtGcHCwRnpwcDBubm7ZLvP48WP09DTD1tfXR1EUGZEgRAmzcuVK/v33X6ysrOjQoQPDhw8nJSWFuXPnAtCoUSNOnjzJihUr8rReGeyQeyqVio9aObBtmBu2FqbcfPCEHktDWRlyVcpMUaZovUvL19eXlStXsnr1as6fP8/48eOJiopi2LBhAPTv31/jKszb25ulS5eyefNmrl27RnBwMNOmTePdd99FX19fW7shhMhG9erVOXHiBFu2bMHZ2Zlbt27h7u7OgwcPAJg3bx7Hjx+nevXquV6nDHbIn0a2ldg9xh2vBtVIy1CYtfs8Q9edIP5xirZDE6JYaH06zp49exIbG8vMmTO5c+cOzs7OBAUFYW9vD0BUVJRGi87UqVNRqVRMnTqVW7duUbVqVby9vfn666+1tQtCiJdQqVR06dKFLl26qNMyZ0vt1KlTnm+ilcEO+VfRxJAlfZry09Eovvotkj/P38VrQQiL+jShmb2FtsMTokjJoyXkfh4hil1BzsHbt29To0YNQkNDcXV1Vad//fXXrF+/ngsXLmRZ5sCBA/Tq1YtZs2bRokUL/v33X8aOHcvQoUOZNm1atttJTk4mOTlZI2ZbW1udKTfO3U5g1MbTXLufhL6eiv91qsvH7rXR05NRXKLkKkjZofUWHiGE7mrXrl22LThpaWkAdOnSBQODrMXQwIED6d+/f7brLOhgB3g2MiwpKYmPP/6YKVOmZLkvEJ4NdjA2Nn75DpZib1Q359fRrZm84x9+OXObOb9fIOxKLPM/bIRled3db1F2SYVHCFFkBg4cmG36kydPCAkJoU+fPpiammb5vFGjRjmu8/nBDt26dVOnBwcH895772XlW7ARAAAgAElEQVS7jAx2yF55YwMW9GqMm6Ml0385x8FL9/BaGMLCXk1oUdtS2+EJUaikS0sHmqaFKG0Keg4GBgbi4+PDsmXLcHV1Zfny5axYsYJz585hb29P//79qVGjBn5+fsCzCRDnz5/P8uXL1V1aw4cPp1mzZgQGBhZLzCXdhZhERm44xZV7SeipYHyHOoxo9xr60sUlShDp0hJClCky2KHw1atWkV9GtWbargh2nLrFd8GXOHotju97NqZqBeniEqWftPDo4JWaECXN8ePH8ff3JzQ0lJiYGFQqFU+ePOGDDz7gs88+w8XFRdshvlJZKje2nojmi13neJKaTtUKxizo2Ri316poOywhCnQean0eHiGEbtu5cyetWrUiLi6OsWPHsnr1ahYtWgRAfHw8rVq1YteuXVqOUjzvAxdbfhnVijrW5bn3MJm+q44yP/gS6Rll7vpY6BBp4dHxKzUhtM3Z2Zl+/fppzHnz/Dm4dOlS1q1bx7lz57QY5auVxXLjSUo6X/5yjsATz54/2LK2BQt6NcG6oomWIxNllbTwCCFKrH///Zfu3bvn+HnXrl25cuVKMUYkcsvUSJ9vejTEv2djzIz0OXI1Dq8FIRy6dE/boQmRZ1LhEUIUKUdHR3bu3Jnj57t27aJ27drFGJHIq65NavDr6NY42VQkNimFAWuOMfePC6SlZ//AZiFKIhmlJYQoUjNnzqRXr14cPHgQDw8PrK2tefLkCQAffvgh+/btY/PmzVqOUryKY9Xy/DzCja9+i2TD0SgCDlzh+PU4FvZugo151rmUhChp5B6eMtIXL4Q2hYWFsWDBAsLCwtQzJKekpNC9e3cmTJig8YiIkkrKjf/329nbTNz+D4+S06hsZsj8DxvTrp6VtsMSZUBBzsN8VXgUReHgwYOEhIRw/fp1Hj9+TNWqVWnSpAkdOnTA1tY2r6ssVlJwCaFdpfEcLI0xF6Xr95MYtekUEbeePUX+k7dqM6FTXQz15U4JUXSK7ablJ0+eMHv2bGxtbfH09GT37t3Ex8ejr6/Pv//+y/Tp03FwcMDLy4sjR47kKRAhhBClR60q5dg+3I2BbrUA+OHQVT78IYybDx5rNzAhcpCnCk+dOnU4deoUy5YtIzExkSNHjrB9+3Z++ukngoKCiIqK4sqVK7i7u9OzZ09WrFhRVHELIXTE5MmTGTRokLbDEPlgbKDPl+++wbJ+TalgYsDpqHg6LzzM3nMxr15YiGKWpy6tiIgInJ2dc5U3JSWFGzdu8Prrr+c7uKIiTdNCaNfz5+Do0aOJjo5m37592g7rpaTceLnouMeM2nSaM9HxAAxq5cBEz3oYGUgXlyg8xX4PT2knBZcQ2lUaz8HSGHNxS0nLYN6eC6wIuQZAw5rmLO7dFDtLMy1HJnSF1icefPDgAcePH+fmzZuFsTohhBClkJGBHlM612fVABcqmRly9mYCnReF8Ps/d7QdmhB5r/BMnjyZx4+f3ZSWmprKxx9/TJUqVWjRogX29vZ0796dp0+fFnqgQojS6+bNm0yZMoV27drh5ORE8+bNgWdz9ERHR2s5OlHY3nayJmiMO83sK/PwaRrDN5zii10RPE1N13ZoogzLc4Xnm2++4dGjRwDMmzePnTt3snXrVm7evMmuXbs4duwY8+bNK/RAhRCl0+HDh3FycuLnn3+mUaNG9O/fnw8//BCA3bt388Ybb/D3339rOUpR2KpXMmXzxy0Z3tYRgHVhN3h/aSjX7ydpOTJRVuX5Hh49PT1iYmKwsrKiSZMmjB49WmOExZYtW/jyyy+JjIws9GALi/TFC1F83nzzTVq3bs3333+vTnv+HJw+fTqHDx/m+PHjWozy1aTcyL8DF+/iu+UMcUkplDc2YHb3BrzbqLq2wxKlULHfw6NSqQCIjo5WN01nat68OTdu3MjPaoUQOigiIoJhw4bl+Pknn3xCREREMUYkilvbulYEjXGnuYMFj5LTGLPpNJN2/CNdXKJY5avCs2LFChYuXIixsTEPHjzQ+CwhIQFjY+NCCU4IUfrZ2NgQGhqa4+dhYWHY2NgUY0RCG6qZm7BxSAtGt38NlQo2HYui65K/+ffuI22HJsqIPD881M7OTj2hoJGREadOncLd3V39+f79+6lbt27hRSiEKNUmTJjAsGHDOHnyJB07dsTa2lo98GHChAmsW7cOf39/LUcpioOBvh6fetSlhYMl4wLDuRDzEO9Fh5nV1Zn3m9XUdnhCx+W5hef69etcu3ZN/Ro7dqzG5y1btiQgICBP6wwICMDBwQETExOaNWtGSEjIS/PHx8czcuRIbGxsMDExwcnJiaCgoLzuihCiGIwYMYJ169Zx4sQJevTogZubGx06dADg9OnTrFu37qVdXkL3tH69CkFjW+PmaMmT1HQ+3XqGCVvP8DglTduhCR2m9YkHAwMD8fHxISAggFatWvHDDz+wcuVKIiMjsbOzy5I/JSWFVq1aYWVlxeTJk6lZsybR0dFUqFCBRo0a5WqbcvOhENqRmprK/fv3efjwIXXr1i1V56CUG4UvPUNh8b5/WfDXJTIUeN2qPEv6NqWOdQVthyZKKK1PPPi8O3fuEBUVlev88+fPZ/DgwQwZMgQnJyf8/f2xtbVl6dKl2eZfvXo1cXFx7Ny5k1atWmFvb0/r1q1zXdkRQmiPoaEhNjY2VKtWrcDrkpbh0k9fT8XYDq+zYUhLrCoYc/nuI95dfJgtx6Mpgw8BEEWs0Cs87du3x8HBIVd5U1JSOHnyJB4eHhrpHh4eOd7k+Msvv+Dq6srIkSOxtrbG2dmZ2bNnk56e893+ycnJJCYmaryEEMVvzpw5xMfHq98///+8CAwMZNy4cUyZMoXTp0/j7u6Op6dnjhdbKSkpdOzYkevXr7Nt2zYuXrzIihUrqFGjRr62LwqXq6MlQWPdcX+9Ck9TM/hs+1l8t5whKVm6uEThKfQKz7p163L9EMD79++Tnp6OtbW1Rrq1tTUxMdk/bffq1ats27aN9PR0goKCmDp1Kt999x1ff/11jtvx8/PD3Nxc/bK1tc39DgkhCs3s2bOJi4tTv39xlGduFUfLsFwoFa8q5Y358aPm/K9TXfT1VPx8+hbeiw4TeVu+d1E4Cr3C8+abb9KmTZs8LZM5r08mRVGypGXKyMjAysqK5cuX06xZM3r16sWUKVNyLOgAJk2aREJCgvolU9kLoR2F0U1RXC3DcqFU/PT0VIxs9xqbP25JtYomXL2fRNeAv9lw9IZ0cYkCy/Ow9EyPHj3i5MmTxMTEoFKpsLa2plmzZpQvXz7X66hSpQr6+vpZWnPu3r2bpdUnk42NDYaGhujr66vTnJyciImJISUlBSMjoyzLGBsby9xAQuiI/LYM79u3j759+xIUFMTly5cZOXIkaWlpfPHFF9kuM2nSJHx9fdXvExMTpdJTTN6sZUHQWHc+3RLO/ov3mPJzBGFXYvHr3oAKJobaDk+UUnlu4UlLS2Ps2LFYWVnRrl07BgwYgI+PD+3atcPKyopx48aRmpqaq3UZGRnRrFkzgoODNdKDg4Nxc3PLdplWrVrx77//kpGRoU67dOkSNjY22VZ2hBC6qahbho2NjalYsaLGSxQfi3JGrBrwJpO96mGgp+K3s3fwXnSYiFsJ2g5NlFJ5rvB8+umnbN++nTVr1hAXF8fTp09JTk4mLi6ONWvWsGPHDv73v//len2+vr6sXLmS1atXc/78ecaPH09UVJR6Xo7+/fszadIkdf7hw4cTGxvL2LFjuXTpErt372b27NmMHDkyr7sihCiF8tsyXKdOnRxbhkXJpKen4uO3HNkyzJUalUy5HvuY7gGh/Bh6Xbq4RJ7lucKzceNG1q1bR8+ePalUqZI6vVKlSvTs2ZM1a9awYcOGXK+vZ8+e+Pv7M3PmTBo3bsyhQ4cICgrC3t4egKioKO7cuaPOb2try969ezl+/DgNGzZkzJgxjB07lokTJ+Z1V4QQpZC0DJc9Te0qs3tMazrWtyYlPYPpv5xjxIZTJDzJXW+CEJCPe3iePHlClSpVcvzc0tKSJ0+e5GmdI0aMYMSIEdl+duDAgSxprq6uHDlyJE/bEELoDl9fX3x8fHBxccHV1ZXly5dnaRmuUaMGfn5+wLOW4UWLFjF27FhGjx7N5cuXmT17NmPGjNHmbog8qGRmxHKfZqz5+zp+v5/n94gYIm4nsLh3UxrZVnr1CkSZl+cWnnbt2uHr68t///2X5bP//vuPzz77jPbt2xdKcEIIkR1pGS6bVCoVg1o7sG2YG7YWpkTHPaHHslBWhlyVLi7xSnl+tER0dDReXl5cuHABZ2dnrK2tUalUxMTEEBERQf369dm9ezc1a5bcB8HJFPFCaMfhw4d58803SU5OxtzcnLt371K1alVth5UrUm6ULAlPUpm4/Sy/Rzy7l6uDkzXfftCQSmbSRanLCnIe5utZWhkZGezZs4cjR46obxysVq0arq6ueHh4oKdX6NP7FCopuITQrtJ4DpbGmHWdoij8dOQGX/12npT0DGpUMmVh7yY0s6+s7dBEESn2Ck9pJwWXEMVv4MCBDBo0iLfeeqtUnoOlMeayIuJWAqM2nuJ67GP09VR81qkuQ91ro6eX/TQFovQqUQ8PFUKI7Dx8+BAPDw9ef/11vv32W22HI3SIcw1zfh3dGu9G1UnPUPD7/QKDfzxOXJJMOSD+X4EqPBUrVuTq1atZ/i+0Jz1DIexKLLvCbxF2JZb0jDLXgFfq6eox3L59O7du3WLUqFHs3LkTgPfff59t27blerJSIXJSwcSQhb0a49e9AcYGeuy/eA+vBSEcuxb36oVFmZDvR0uA5nNxymDPWInzR8QdZvwayZ2Ep+o0G3MTpnvX5x1nGy1GJnJL14+hpaUlY8eO5aOPPsLc3JzatWvj4+ND+fLl6devHyNGjOD111/XdpiilFKpVPRubkcTu0qM3HCKK/eS6L3iCL4d6zC8jaN0cZVx0qWlI/6IuMPwn05p/KEEiEl4yvCfTvFHxJ0clhQlRVk6hpmDHfbt24e+vj5eXl6cO3eO+vXr8/3332s5OlHa1atWkV9GtaZ70xqkZyjM23ORAWuOcf9RsrZDE1okFR4dkJ6hMOPXSLJrY8tMm/FrpM50jeiisnAMU1NT2b59O126dMHZ2Rl4NunonTt3+PHHH9m7dy/r169n5syZWo5U6IJyxgbM/7Ax83o0xNRQn5DL9/FcEELolfvaDk1oiVR4dMCxa3FZWgWepwB3Ep5KX3YJVhaOoY2NDUOHDsXe3p59+/YBMHjwYCpUqKDO06lTJ41H1ghRUB+42PLLqFbUsS7PvYfJ9Ft5FP8/L5XqiweRP1Lh0QF3H+b8hzI/+UTxKwvH8Pvvv+f27dssWbKEhg0bZpuncuXKXLt2rZgjE7rudesK7BrZmp4utmQo4P/nZfqtPMrdxNJ7Pom8kwqPDrCqYFKo+UTxKwvH0MfHBxOT0hu/KN1MjfT5pkdD/Hs2xsxIn7CrsXgtDCHk8j1thyaKiVR4dEBzBwtszE3IafyBimcjfZo7WBRnWCIPdPUYDhs2jOjo6FzlDQwMZMOGDUUckSjrujapwa+jW1OvWgXuP0qh/+pjzNtzgbT0DG2HJopYgSo87u7umJqaZvm/KF76eiqme9fP9rPMP6DTveujL0MySyxdPYZVq1bF2dkZT09Pli5dyvHjx7l16xZxcc/uRQoKCuKzzz7Dzs4Of3//HLu6hChMjlXLs3NkK/q0sENRYMn+K/RZcZQ7CU+0HZooQvJoCR2aIv6PiDtM/+Uc/yX+/9BLXZrDpSzQxWN49+5dVq1axebNm4mIiFCnZ2RkYG5uTocOHfj444/x8PDQYpSvpqvlRln365nbTNrxD4+S06hsZsj8DxvTrp6VtsMSOZBnaeWRLhdcD5+m0uDLvQCsGfgmb9WpWupaBco6XT6G8fHx3Lhxg/v379OhQwfi4+MxNzfXdli5osvlRll3/X4SozadIuJWIgCfvFWbCZ3qYqgvd32UNMX6LK24uDj8/Pxo3749tWrVwsrKilq1atG+fXv8/PzUTdVCO57/w9iitoXO/KEsS3T5GFaqVIlGjRrx5ptvAs9mxhVC22pVKcf24W4McLUH4IdDV+n5Qxi34qWLS5fkqcJz+vRp6tWrx4YNG2jYsCETJkzg4cOHDB48mPbt2/PHH3/g5OREeHh4UcUrhCjFHjx4wLfffsvIkSMBWLhwoVwkiRLB2ECfGe85s7RvUyqYGHAqKh6vBSEER/6n7dBEIclThWf48OEMGDCAiIgI/P39GTVqFAYGBvTt25epU6dy8OBBxo0bxyeffFJU8QohSqmDBw/i4ODAwoULiY+PB2D58uU4ODhw8OBBLUcnxDOeDWzYPdqdRjXNSXiSytB1J5j5ayQpaTKKq7TLU4Xn7NmzjBo16qV5+vbtyz///FOgoIQQumfkyJF8+OGHXLt2TT38/MyZM/Tq1Uvd4iNESWBnacbWYW4Mbu0AwOq/r/HBslCi4x5rOTJREHmq8NStW5fNmze/NM/vv/9O3bp1CxSUEEL3XLlyhU8//RR9fX11mr6+Pr6+vly5ckWLkQmRlZGBHtO61GdFfxfMTQ05czMBr4Uh/P6P7jzEt6zJU4Vn4cKFzJ49Gzc3N2bNmkVgYCAZGRns3buXlStX0r9/fyZPnszixYuLKl4hRCnVtGlTzp8/nyX9/PnzNG7cOF/rDAgIwMHBARMTE5o1a0ZISEiultu8eTMqlYquXbvma7ui7OhY35qgse40tavEw6dpDN9wii92RfA0NV3boYk8MshLZnd3dyIiIliwYAHbtm3j6tWrJCcn89lnn1G7dm06duxIeHg4tra2RRWvEKKUGjNmDGPHjuXff/+lQYMGwLOLqFWrVjFnzhzOnj2rzpubCQgDAwMZN24cAQEBtGrVih9++AFPT08iIyOxs7PLcbkbN24wYcIE3N3dC75TokyoUcmUwE9c+XbvRX44eJV1YTc4eeMBS/o0pVaVctoOT+RSiZiHJyAggHnz5nHnzh3eeOMN/P39c1UYbd68md69e/Pee++xc+fOXG9Pl+fTeJySRv0v9gAQObMTZkZ5qtOKEkBXj6GenmaDsqIoGsPSVSqVOi09/dVXzy1atKBp06YsXbpUnebk5ETXrl3x8/PLdpn09HTatGnDRx99REhICPHx8bkuO3S53BC5t//CXXy3hPPgcSrljQ3w694A70bVtR1WmVGs8/AUtsyrtClTpnD69Gnc3d3x9PQkKirqpcvJVZoQpcu1a9fUr8zWnLNnz6rTrl69qv73VVJSUjh58mSW2Zk9PDwIDQ3NcbmZM2dStWpVBg8e/MptJCcnk5iYqPESol09K34f+xbNa1nwKDmN0ZtOM/nnf6SLqxTI06XjzJkz87WRtm3b8tZbb2X72fz58xk8eDBDhgwBwN/fnz179rB06dKXXqX17duXGTNmqK/ShBAlm729vfr/mZUHOzu7fLWW3L9/n/T0dKytrTXSra2tiYmJyXaZv//+m1WrVuV6njA/Pz9mzJiR59iE7qtmbsLGoS1Y8NdlFu//l41Hozh14wFL+jbFsWp5bYcncpCnCs+1a9fytZGcbkjMvEqbOHGiRnpertJyc5NicnIyycn//2wiuVITQje8OFPzi91kmR4+fEi/fv1YsWIFVapUydW6J02ahK+vr/p9YmKi3J8o1Az09fjUoy7NHSwYHxjOhZiHeC86zNfdnOnWpKa2wxPZyFOFZ82aNYW68eK4SgO5UhNC11SpUgV9ff0s5cTdu3ezlCfwbEj89evX8fb2VqdlZDybSM7AwICLFy/i6OiosYyxsTHGxsZFEL3QJe6vVyVojDtjN4cTdjWW8YFnCLsSy4x3nTE10n/1CkSxyfc9PElJSYUWRFFepcGzK7WEhAT1Kzo6usAxCyG0x8jIiGbNmhEcHKyRHhwcjJubW5b89erV459//iE8PFz9evfdd2nXrp2MLBUFZlXRhJ+GtGBch9dRqWDLiZu8u/gwl/97qO3QxHPyPfzD2tqaDz/8kEGDBtG6det8raM4rtJArtSE0EW+vr74+Pjg4uKCq6sry5cvJyoqimHDhgHQv39/atSogZ+fHyYmJjg7O2ssX6lSJYAs6ULkh76einEd6tDcwYKxm8O5fPcR3osPM/M9Zz50kQp1SZDvFp5NmzaRkJDA22+/TZ06dZgzZw63b9/O0zrkKk0IkV89e/bE39+fmTNn0rhxYw4dOkRQUJD65uioqCju3JFZcUXxcnOswu9j3XF/vQpPUzP4bNtZfLeEk5Scpu3QyrwCz8MTGxvLunXrWLt2LZGRkXTq1IlBgwbx7rvvYmDw6gakwMBAfHx8WLZsmfoqbcWKFZw7dw57e3uNq7TsDBw4ME9zaYBuz6ehq3O4lCW6fAw7d+7MypUrKVeuHObm5ly8eJE6depoO6xc0eVyQxS+jAyFpQev8N3ei2QoULtqOZb0aYqTjfx2CkKr8/BYWloyfvx4zpw5w/z58/nzzz/p0aMH1atX54svvuDx45c/bE2u0oQoOw4dOsSTJ0/U75//vxC6RE9Pxch2r7H5Y1eqVTTh6r0kui75m41HoygB8/2WSQW+dIyJiWHdunWsWbOGqKgoevToweDBg7l9+zZz5szhyJEj7N2796XrGDFiBCNGjMj2swMHDrx02bVr1+YzciGEEKJoNXewIGisO59uCWf/xXtM/vkfwq7GMrubMxVMDLUdXpmS7wrPjh07WLNmDXv27KF+/fqMHDmSfv36qW8EhGfz7zRp0qRQAhVCCCFKI4tyRqwa8CYrQq4yb89Ffj1zm39uxrO4T1Oca5hrO7wyI99dWh999BHVq1fn77//Jjw8nFGjRmlUdgBq167NlClTChykEEIIUZrp6an4pI0jgZ+4Ut3chOuxj+keEMq6sOvSxVVM8t3Cc+fOHczMzF6ax9TUlOnTp+d3E0IIIYROaWZfmaCx7kzYepY/z//HF7vOceRqLH7dG2JuKl1cRSlPLTzPTzb4qsrOi/mFEEIIAZXMjFjRvxnTutTHUF9F0D8xdFkUwploeS5kUcpThee1115j9uzZL51vR1EUgoOD8fT0ZOHChQUOUAihO7KbQV2IskilUjG4tQPbhrlRs7Ip0XFP6LEslFWHr0kXVxHJU5fWgQMHmDp1KjNmzKBx48a4uLhQvXp1TExMePDgAZGRkYSFhWFoaMikSZP4+OOPiypuIUQpJAW5EJoa2VZi9xh3Pt92lj/OxfDVb5GEXYnl2w8aUsnMSNvh6ZQ8VXjq1q3L1q1buXnzJlu3buXQoUOEhoby5MkTqlSpQpMmTVixYgVeXl7o6RV4ih8hhI55+PDZs4USExMBcHBw0GY4QpQI5qaGLO3XlPVHbjDrt/P8ef4/Oi88zMLeTWhmX1nb4emMfN20XLNmTcaPH8/48eOB/79qk+ZqIYQQIu9UKhX9XWvR1K4yIzee4kbsY3r+EMb/OtVlqHtt9PTk72tBFagZZtWqVTg7O2NiYqJ+ON/KlSsLKzYhhBCiTHGuYc5vo1vTpaENaRkKfr9fYPCPx4lLStF2aKVevis806ZNY+zYsXh7e7N161a2bt2Kt7c348ePZ+rUqYUZoxBCCFFmVDAxZFHvJszu1gBjAz32X7yH14IQjl2L03ZopVq+5+FZunQpK1asoHfv3uq0d999l4YNGzJ69GhmzZpVKAEKIYQQZY1KpaJPCzua2FVi5MZTXL2XRO8VR/DtWIfhbRyliysf8t3Ck56ejouLS5b0Zs2akZaWVqCghBBCCAFONhX5dVRrujWpQXqGwrw9Fxmw5hj3HyVrO7RSJ98Vnn79+rF06dIs6cuXL6dv374FCkoIIYQQz5QzNmD+h42Y+35DTAz1CLl8H88FIYReua/t0EqVAj0tfdWqVezdu5eWLVsCcOTIEaKjo+nfvz++vr7qfPPnzy9YlEKIUu3ixYts2rSJkJAQrl+/rp6FfdiwYXTp0oX3338fY2NjLUcpRMmlUqn48E1bGttVYuSGU1y++4h+K48y5u3XGd3+dfSli+uV8t3CExERQdOmTalatSpXrlzhypUrVK1alaZNmxIREcHp06c5ffo04eHhhRmvEKIUOX36NB07dqRRo0YcOnSIN998k3HjxqkfKqwoClOmTKF69ep88803JCdLM70QL1PHugK7RrXig2Y1yVDA/8/L+Kw6yt2HT7UdWomnUsrg1KeJiYmYm5uTkJBAxYoVtR1OoXqckkb9L/YAEDmzE2ZGBWrEE1qgS8fQ3t6e//3vf/Tp0wcLCwt1+ovnYFhYGN9//z2NGzdm8uTJWow4Z7pcbojSacepm0zdGcHjlHSqlDfCv2cTWr9eRdthFamCnIeltyQVQpR4ly9fxsjo1dPju7q64urqSkqKzDUiRG51b1qThjUrMWrjKS7EPMRn9VFGtn2NcR1ex0BfnnbwIvlGhBBFJjeVnYLkF6Kse82qPDtHtqJ3czsUBRbv/5c+K48SkyBdXC+SCo8QokjFxcXh5+dH+/btqVWrFlZWVjRo0ACA7777jri4/E+mFhAQgIODAyYmJjRr1oyQkJAc865YsQJ3d3cqV65M5cqV6dChA8eOHcv3toUoKUwM9fHr3oCFvZtQ3tiAY9fi8FxwiP0X7mo7tBJFKjxCiCJz+vRp6tWrx4YNG2jYsCETJkzg4cOH+Pj4APDXX3/h5OSUr8ENgYGB6hugT58+jbu7O56enkRFRWWb/8CBA/Tu3Zv9+/cTFhaGnZ0dHh4e3Lp1q0D7KERJ8W6j6vw6ujVvVK/Ig8epfLT2OH5B50lNz9B2aCWC3LSsYzcf6tINr2WVLh3Dli1b4u7uzrx589RpFSpU4PDhwzRu3JiEhASWLFnCzp07OXr0aJ7W3aJFC5o2baoxH5iTkxNdu3bFz8/vlcunp7U7wZoAABmjSURBVKdTuXJlFi9eTP/+/V+ZX5fLDaFbnqam4xd0nh/DbgDQ1K4Si/o0pUYlUy1HVnAFOQ+lhUcIUWTOnj3LqFGjXpqnb9++/PPPP3lab0pKCidPnsTDw0Mj3cPDg9DQ0Fyt4/Hjx6SmpmqMHntecnIyiYmJGi8hSgMTQ31mvOfM0r5NqWBiwKmoeLwWhBAc+Z+2Q9OqElHhkX54IXRT3bp12bx580vz/P7779StWzdP671//z7p6elYW1trpFtbWxMTE5OrdUycOJEaNWrQoUOHbD/38/PD3Nxc/bK1tc1TjEJom2cDG4LGuNOopjkJT1IZuu4EX/0WSUpa2ezi0nqFR/rhhdBdCxcuZPbs2bi5uTFr1iwCAwPJyMhg3759AHzyySdMnjyZxYsX52v9KpXm7LKKomRJy87cuXPZtGkTO3bswMTEJNs8kyZNIiEhQf2Kjo7OV4xCaJOthRlbh7kxqJUDAKsOX+ODH8KIjnus5ciKn9YrPPPnz2fw4MEMGTIEJycn/P39sbW1zfY5XQAbNmxgxIgRNG7cmHr16rFixQoyMjL466+/ijlyIcSruLu7ExERgZubG9u2bWPo0KEkJyczffp0AKpWrUp4eDitWrXK03qrVKmCvr5+ltacu3fvZmn1edG3337L7Nmz2bt3Lw0bNswxn7GxMRUrVtR4CVEaGRno8YV3fVb0d8Hc1JAz0fF4LQzhj4g72g6tWGm1wlMc/fAgffFCaJOtrS3ffvst4eHhJCYmkpaWxs2bNwGYNWtWvrqKjIyMaNasGcHBwRrpwcHBuLm55bjcvHnz+Oqrr/jjjz9wcXHJ83aFKM061rdm95jWNLGrxMOnaQz76RTTd0WQnJau7dCKhVYrPMXRDw/SFy9EaZGXQaO+vr6sXLmS1atXc/78ecaPH09UVBTDhg0DoH///kyaNEmdf+7cuUydOpXVq1dTq1YtYmJiiImJ4dGjR4W+H0KUVDUrm7HlE1c+aVMbgB/DbvD+0lCu30/ScmRFT+tdWlC0/fAgffFCaIuTkxMbN2585SMjLl++zPDhw/nmm29yve6ePXvi7+/PzJkzady4MYcOHSIoKAh7e3sAoqKiuHPn/5vsAwICSElJoUePHtjY2Khf3377bf52TohSylBfj0meTqwZ+CaVzQyJuJVIl0WH+e3sbW2HVqS0OsFHYfTD//nnny/th4dnffHGxsYFjlcIkTdLlizh888/Z+TIkXh4eODi4kL16tXJyHg2SmTy5MkcO3aMyMhIRo0axYgRI/K0/hEjRuS4zIEDBzTeX79+PT+7IITOalfPiqCx7ozZdJrj1x8wauNpwq7EMq1LfUwM9bUdXqHTaguP9MMLodvat2/P8ePH2b17N9WqVWPjxo2MGjWKoUOHAnDlyhX69+/PzZs3mTNnjtwYLEQxszE3ZdPQloxs54hKBRuORtF1yd9cuad7Xb1an8LV19cXHx8fXFxccHV1Zfny5Vn64f+vvXuPiqrc+wD+He6KMCGoXMTxkoJEGhcV8IIruZV65OhSTEIy9c11TkfUUy1cHlfoOS+Cecw0L0dTzDIvibfCOuAJFGPyFhaKmiUFlqSQXIzk+rx/eJy3kdsMzMxmtt/PWrOUZ56Z/fvxsB9+7D372R4eHpqVU1evXo3ly5fjgw8+0JyHB4AePXqgR48ekuVBRK0LCQnR+iPmwWqp+/btY5FDJDErSwu8GumNUQOcsXjfBVwprcbkDaeQ/McnEe3nIXV4BiP5Z3h4Hp7o0VZSUoIXX3xR6jCIHnnjhvTCJwljETzQGTV1jVi07wJeO/AVfquTx1VcvJeWzP66lNN9mB5Vj8IY/n4fLCoqgr+/Pxobu/akKud5g+j3GpsE1v/nGtZ/dg1CAEP69MDGWf4Y3MdB6tB4Ly0iIiIyDEsLBRaHD8HuuaPQy8EW3/x8F5PfPoX958z7CmcWPERERNRMyOMuOLZwLMY87oJ79U147cDXWLL/An6tbZA6tA5hwUNEREQt6uVgi3dfHIlXIobAQgEc/PJHTH77FK6Umt8dC+T34QAi6lKmTp3arK2+vh4AEBsbi19/lf8Kr0TmzNJCgZefHowR/Xti4d58XL/9K6a8/TmS/vAEZo7w1Gmh4K6AR3iIyKh+f1uX3z8ePKdSqTB79myJoySi9owa6IxjC8divFcv1DY0YenBAiTsvYC7ZnKKi0d4iMio0tLSmrVVVVVh9+7d2LRpE694IjIjzj1ssSN+BLbmXscb/76Ko1/9hK9vVODtWf7w9VBKHV6beISHiIiIdGZhocCC0EHY/1IQ3JV2+L68BlM35eE99fd63QDY1FjwEBERkd4CVD2RsXAswob2Rl1jE5YfuYQ/f/Alqu7VSx1ai1jwEBERUYc42dtg2+xA/G3iUFhbKnCsoBST1p/C1zcqpA6tGRY8RERE1GEKhQLzxg7EhwtC0NepG4p/qcG0zXnYcaqoS53iYsFDREREnfaU52PIWDgWUU+4or5RYOXHhfif986joqZO6tAAsOAhIiIiA1F2s8bm5/2x4g9PwMbSAlmFP2Pi+lM4/8MdqUNjwUNERESGo1AoEB/SHwf/FAKVc3f8WPEbYv6lxr9OfIemJulOcbHgISIiIoPz9VDi47+MwcRhbmhoElj1yRXMffcsfvlVmlNcLHiIiIjIKBzsrPH2c374R7QvbKwskH31Niauz8XZ738xeSwseIjIbG3atAkDBgyAnZ0dAgICkJub22b/9PR0+Pj4wNbWFj4+Pjh06JCJIiV6dCkUCjwfpMLhP43GQBd73Ky8h5lbv8DG7G9NeoqLBQ8RmaV9+/Zh0aJFWLZsGfLz8zF27Fg888wzKC4ubrG/Wq1GTEwM4uLi8NVXXyEuLg4zZszA6dOnTRw50aPJx90RH/1lDP7o54HGJoE3/n0V8WlnUHa31iTbZ8FDRGZp7dq1mDt3LubNm4ehQ4di3bp18PT0xObNm1vsv27dOoSHh2Pp0qXw9vbG0qVLMWHCBKxbt87EkRM9uuxtrbB2xnCsnjYMdtYWyL1WhmffyoX6u3Kjb5sFDxGZnbq6Opw/fx4RERFa7REREcjLy2vxNWq1uln/yMjIVvvX1taiqqpK60FEnadQKDBjhCeO/HkMHu/dA7eqaxH7zhdY/59rRt0uCx4iMjtlZWVobGxEnz59tNr79OmD0tLSFl9TWlqqV/9Vq1ZBqVRqHp6enoYJnogAAF6uDjj68mhMD+iLJgHUNjQadXsseIjIbCkUCq2vhRDN2jraf+nSpaisrNQ8SkpKOh8wEWnpbmOFN6YPx/b4QCwOG2LUbVkZ9d2JiIzAxcUFlpaWzY7O3Lp1q9lRnAdcXV316m9rawtbW1vDBExEbZowtOX90JB4hIeIzI6NjQ0CAgKQlZWl1Z6VlYWQkJAWXxMcHNysf2ZmZqv9iUheukTBw7U0iEhfS5YswTvvvIMdO3bg8uXLWLx4MYqLi7FgwQIAwOzZs7F06VJN/4SEBGRmZiI1NRVXrlxBamoqjh8/jkWLFkmVAhGZkOQFD9fSIKKOiImJwbp167By5Uo89dRTOHnyJI4dOwaVSgUAKC4uxs2bNzX9Q0JCsHfvXqSlpWHYsGHYuXMn9u3bh1GjRkmVAhGZkEIIId2dvACMGjUK/v7+WmtnDB06FNHR0Vi1alWz/jExMaiqqsInn3yiaYuKioKTkxP27Nmj0zarqqqgVCpRWVkJR0fHzifRhfxaWw//ZR8BAM7/LQzdbfgxLXNTU9eAgH8cBwB8+b+TYW9rLXFEhmeO+6A5xkwkN53ZDyX9bfhgLY3ExESt9vbW0li8eLFWW2RkZJuLh9XW1qK29v9XcqysrAQAWa6rcbeiCu8fuf/9vHxE4mCow97/77+VC0ei8TH5/XJ9sO9J/PeWXh7EKsd5g8hcdGbukLTgMcVaGsD99TRWrFjRrJ3ralCXp5L3z2h5eTmUSqXUYeikuroaAOcNoq6gurpa77mjS5zvMOZaGsD99TSWLFmi+bqiogIqlQrFxcVmM9nqo6qqCp6enigpKZHtoXe55yj3/CorK9GvXz/07NlT6lB05u7ujpKSEjg4OLQ53wDyGj/m0jXJKRdA93yEEKiuroa7u7ve25C04DHFWhpA6+tpKJVKWfygtMbR0VHW+QHyz1Hu+VlYSH7dhM4sLCzQt29fvV4jp/FjLl2TnHIBdMunowcqJJ1tuJYGERERmYLkp7SWLFmCuLg4BAYGIjg4GFu3bm22loaHh4fmiq2EhASMGzcOqampmDJlCo4cOYLjx4/j1KlTUqZBREREXZhlUlJSkpQB+Pr6wtnZGcnJyVizZg1+++03vPfeexg+fDgA4K233oKVlRWio6MB3P/AoI+PD9auXYvk5GQUFxdj8+bNCA8P12u7lpaWGD9+PKysJK/5jELu+QHyz5H5mTc55cdcuiY55QIYPx/J1+EhIiIiMjbz+cQgERERUQex4CEiIiLZY8FDREREsseCh4iIiGTvkSh47ty5g7i4OCiVSiiVSsTFxaGioqLN14wfPx4KhULrMXPmTBNF3L5NmzZhwIABsLOzQ0BAAHJzc9vsn56eDh8fH9ja2sLHxweHDh0yUaQdo09+O3fubDZWCoUC9+7dM2HEujt58iQmT54Md3d3KBQKHD58uN3XnDhxAgEBAbCzs8PAgQOxZcsWE0TacfrmmJOT0+IYXrlyxUQRt83Q+5sQAklJSXB3d0e3bt0wfvx4XLp0yZgpaOiTy7Zt2zB27Fg4OTnByckJYWFhOHPmjFafF154odm4BQUFGTsNDWPMFfqOt6Hos92WfkcpFApMnDhR00eqsTHWHNfpcRGPgKioKOHr6yvy8vJEXl6e8PX1FZMmTWrzNaGhoWL+/Pni5s2bmkdFRYWJIm7b3r17hbW1tdi2bZsoLCwUCQkJwt7eXvzwww8t9s/LyxOWlpYiOTlZXL58WSQnJwsrKyvxxRdfmDhy3eibX1pamnB0dNQaq5s3b5o4at0dO3ZMLFu2TKSnpwsA4tChQ232v379uujevbtISEgQhYWFYtu2bcLa2locOHDARBHrT98cs7OzBQBx9epVrTFsaGgwUcStM8b+lpKSIhwcHER6erooKCgQMTExws3NTVRVVXWpXGbNmiU2btwo8vPzxeXLl8WcOXOEUqkUN27c0PSJj48XUVFRWuNWXl5u1Dw6mo8uc4W+7ylVLuXl5Vo5XLx4UVhaWoq0tDRNH6nGxhhznCHGRfYFT2FhoQCgNdmo1WoBQFy5cqXV14WGhoqEhARThKi3kSNHigULFmi1eXt7i8TExBb7z5gxQ0RFRWm1RUZGipkzZxotxs7QN7+0tDShVCpNEZrB6TIZvPbaa8Lb21ur7aWXXhJBQUHGDM1g9Cl47ty5Y6KodGfo/a2pqUm4urqKlJQUzfP37t0TSqVSbNmyxcDRa9M3l4c1NDQIBwcH8e6772ra4uPjxZQpUwwap66MMVd09nvUUZ3d7ptvvikcHBzE3bt3NW1Sjs0DhprjDDEusj+lpVaroVQqMWrUKE1bUFAQlEol8vLy2nzt7t274eLigieeeAKvvPKK5m7JUqqrq8P58+cRERGh1R4REdFqPmq1uln/yMjIdvOXQkfyA4C7d+9CpVKhb9++mDRpEvLz840dqsm0Nn7nzp1DfX29RFEZh5+fH9zc3DBhwgRkZ2dLHY5R9reioiKUlpZq9bG1tUVoaKhR98mO7lu/V1NTg/r6+mY3fc3JyUHv3r0xZMgQzJ8/H7du3TJY3K0xxlxhiO9RRxhiu9u3b8fMmTNhb2+v1S7F2OirvTnOUOMi+4KntLQUvXv3btbeu3fvZjch/b3Y2Fjs2bMHOTk5WL58OdLT0zF16lRjhqqTsrIyNDY2NrtZap8+fVrNp7S0VK/+UupIft7e3ti5cyeOHj2KPXv2wM7ODqNHj8a1a9dMEbLRtTZ+DQ0NKCsrkygqw3Jzc8PWrVuRnp6OgwcPwsvLCxMmTMDJkycljcsY+9uDf029T3Ykl4clJibCw8MDYWFhmrZnnnkGu3fvxmeffYZ//vOfOHv2LJ5++mnU1tYaNP6HGWOuMMT3qCM6u90zZ87g4sWLmDdvnla7VGOjr/bmOEONi9muR52UlIQVK1a02efs2bMAAIVC0ew5IUSL7Q/Mnz9f839fX18MHjwYgYGB+PLLL+Hv79/BqA3n4djby0ff/lLTJ96goCCtD+KNHj0a/v7+2LBhA9avX2/UOE2lpe9HS+3mysvLC15eXpqvg4ODUVJSgjVr1mDcuHESRnafMfY3qfbJjm539erVmj8C7ezsNO0xMTGa//v6+iIwMBAqlQoZGRkm+SPRGHOFuY3N9u3b4evri5EjR2q1Sz02+mhrjmttvtN3XMy24Hn55ZfbvWqqf//++Prrr/Hzzz83e+727dvNqsW2+Pv7w9raGteuXZO04HFxcYGlpWWzqvbWrVut5uPq6qpXfyl1JL+HWVhYYMSIEbI5wtPa+FlZWcHZ2VmiqIwvKCgI77//vqQxGGN/c3V1BXD/r1o3Nzed3tMQOrNvrVmzBsnJyTh+/DiGDRvWZl83NzeoVCqj73/GmCsM8Z4d0Znt1tTUYO/evVi5cmW72zHV2OirvTlOCGGQcTHbU1ouLi7w9vZu82FnZ4fg4GBUVlZqXUp5+vRpVFZWIiQkROftXbp0CfX19VoTlBRsbGwQEBCArKwsrfasrKxW8wkODm7WPzMzU6/8TaUj+T1MCIELFy5IPlaG0tr4BQYGwtraWqKojC8/P1/yMTTG/jZgwAC4urpq9amrq8OJEyeMuk92dN9644038Pe//x2ffvopAgMD291OeXk5SkpKjD52xpgrDPGeHdGZ7e7fvx+1tbV4/vnn292OqcZGX+3NcQYbF50/3mzGoqKixLBhw4RarRZqtVo8+eSTWpel37hxQ3h5eYnTp08LIYT49ttvxYoVK8TZs2dFUVGRyMjIEN7e3sLPz69LXSa7fft2UVhYKBYtWiTs7e3F999/L4QQIi4uTuuT659//rmwtLQUKSkp4vLlyyIlJcUsLkvXNb+kpCTx6aefiu+++07k5+eLOXPmCCsrK814djXV1dUiPz9f5OfnCwBi7dq1Ij8/X3N5ZWJiooiLi9P0f3DJ5uLFi0VhYaHYvn17l78sXd8c33zzTXHo0CHxzTffiIsXL4rExEQBQKSnp0uVgoYx9reUlBShVCrFwYMHRUFBgXjuuedMelm6rrmkpqYKGxsbceDAAa1Lm6urq4UQ98f5r3/9q8jLyxNFRUUiOztbBAcHCw8PD6Pn0pF8dJkr2nvPrpLLA2PGjBExMTHN2qUcG2PMcYYYl0ei4CkvLxexsbHCwcFBODg4iNjYWK3LX4uKigQAkZ2dLYQQori4WIwbN0707NlT2NjYiEGDBomFCxeabG0JXWzcuFGoVCphY2Mj/P39xYkTJzTPhYaGivj4eK3+H374ofDy8hLW1tbC29u7S/wiaYs++S1atEj069dP2NjYiF69eomIiAiRl5cnQdS6eXAJ9sOPBznFx8eL0NBQrdfk5OQIPz8/YWNjI/r37y82b95s+sD1oG+OqampYtCgQcLOzk44OTmJMWPGiIyMDGmCb4Gh97empibx+uuvC1dXV2FrayvGjRsnCgoKTJGKXrmoVKoWx/H1118XQghRU1MjIiIiRK9evYS1tbXo16+fiI+PF8XFxSbJRd98dJ0r2npPY9L35+zq1asCgMjMzGz2XlKOjbHmuM6Oi0KI/34aiIiIiEimzPYzPERERES6YsFDREREsseCh4iIiGSPBQ8RERHJHgseIiIikj0WPERERCR7LHiIiIhI9ljwEBERkeyx4CEiokfCli1b0K9fP9jb22PatGkoKyuTOiQyIRY8REQke4cPH8arr76KDRs24Ny5c6iqqsL06dOlDotMiLeWICIi2QsMDERYWBhSUlIAAD/99BM8PT1x8uRJjB49WuLoyBR4hIfMxq5du+Ds7Iza2lqt9mnTpmH27NkSRUVEXd2dO3dw/vx5PPvss5o2d3d3+Pr6IisrS8LIyJRY8JDZmD59OhobG3H06FFNW1lZGT7++GPMmTNHwsiIqCu7fv06AGDw4MFa7YMHD9Y8R/LHgofMRrdu3TBr1iykpaVp2nbv3o2+ffti/Pjx0gVGRF1aTU0NgPsFTo8ePTSPI0eOaJ4j+bOSOgAifcyfPx8jRozAjz/+CA8PD6SlpeGFF16AQqGQOjQi6qK6d+8OAMjJycFjjz2maU9ISNA8R/LHgofMip+fH4YPH45du3YhMjISBQUF+Oijj6QOi4i6sIEDBwIAHB0d8fjjj2va7927p3mO5I+ntMjszJs3D2lpadixYwfCwsLg6ekpdUhE1IU5OTkhICAAubm5mra7d+9CrVYjPDxcwsjIlHhZOpmdqqoquLm5oaGhAbt27UJMTIzUIRFRF3f48GEsWLAAu3btwoABA7Bs2TLcvn0b2dnZUodGJsJTWmR2HB0dMW3aNGRkZCA6OlrqcIjIDERHR6O0tBRz585FeXk5oqKisH//fqnDIhPiER4yS+Hh4Rg6dCjWr18vdShERGQGWPCQWfnll1+QmZmJ2NhYFBYWwsvLS+qQiIjIDPCUFpkVf39/3LlzB6mpqSx2iIhIZzzCQ0RERLLHy9KJiIhI9ljwEBERkeyx4CEiIiLZY8FDREREsseCh4iIiGSPBQ8RERHJHgseIiIikj0WPERERCR7/weDoE1w5ZmQHAAAAABJRU5ErkJggg==", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "execution_count": 1, "metadata": { "comm_id": "3836a893-9b1c-49cd-94ec-194dd6f080dc", "reactive": true }, "output_type": "execute_result" } ], "source": [ "using Reactive, Interact, PyPlot\n", "p(y,θ) = θ.^y .* (1-θ).^(1-y)\n", "f = figure()\n", "@manipulate for y=false, θ=0:0.1:1; withfig(f) do\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", " # Plot the likelihood function\n", " _θ = linspace(0.0, 1.0, 100)\n", " subplot(222); plot(_θ, p(convert(Float64,y), _θ)); \n", " title(\"Likelihood function\"); \n", " xlabel(\"θ\"); \n", " ylabel(\"L(θ) = p(y=$(convert(Float64,y))|θ)\");\n", " end\n", "end" ] }, { "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": [ "- For instance, 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 'a' (for a model assumption) above any equality sign. If you can't do that, file a github issue :) " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Working out the example problem: Disease Diagnosis\n", "\n", "- [Question] - 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": [ "- [Answer] - 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", "&= \\frac{p(T=1|D=1)p(D=1)}{p(T=1)} \\\\\n", "&= \\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", "- [Question] - 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": [ "- [Answer] - Again, use Bayes and marginalization to arrive at $p(\\text{white}|\\text{data})=2/3$, see homework exercise\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": "fragment" } }, "source": [ "- [Excercise] - Is a speech signal a 'probabilistic' (random) or a deterministic signal? " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Inference Exercise: Causality?\n", "\n", "- [Question] - 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": [ "- [Answer] - (a) $5/12$. (b) $5/11$, see homework.\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": [ "### PDF for the Sum of Two Variables\n", "\n", "- [Question] - Given two random **independent** variables\n", "$X$ and $Y$, with PDF's $p_x(x)$ and $p_y(y)$. What is the PDF of \n", "$$Z = X + Y\\;?$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- [Answer] - 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", " - Iow, $p_z(z)$ is the **convolution** of $p_x$ and $p_y$.\n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ " \n", "- Note that $p_z(z) \\neq p_x(x) + p_y(y)\\,$ !!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- $\\Rightarrow$ In linear stochastic systems theory, the Fourier Transform of a PDF (i.e., the characteristic function) plays an important computational role." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- [This list](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": "slide" } }, "source": [ "#### CODE EXAMPLE\n", "\n", "- Consider the PDF of the sum of two independent Gaussians $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", "Z &= X + Y\n", "\\end{align*}$$\n", "\n", "- 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": 2, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1636e752-f18e-4b39-abc2-0a997d2e5ee8", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(6: \"input-3\" = 0.0 Any , \"μx\", 0.0, \"0.0\", 21, 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.0, \"1.0\"),Pair{Any,Any}(0.3, \"0.3\"),Pair{Any,Any}(1.2, \"1.2\"),Pair{Any,Any}(2.0, \"2.0\"),Pair{Any,Any}(-0.2, \"-0.2\"),Pair{Any,Any}(-1.0, \"-1.0\"),Pair{Any,Any}(1.5, \"1.5\"),Pair{Any,Any}(-1.3, \"-1.3\"),Pair{Any,Any}(-0.3, \"-0.3\"),Pair{Any,Any}(-0.6, \"-0.6\")…)), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "f38962e6-7481-4be6-8f07-2614d8c3492e", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(8: \"input-4\" = 1.0 Any , \"σx\", 1.0, \"1.0\", 10, Interact.OptionDict(DataStructures.OrderedDict{Any,Any}(\"0.1\"=>0.1,\"0.2\"=>0.2,\"0.3\"=>0.3,\"0.4\"=>0.4,\"0.5\"=>0.5,\"0.6\"=>0.6,\"0.7\"=>0.7,\"0.8\"=>0.8,\"0.9\"=>0.9,\"1.0\"=>1.0…), Dict{Any,Any}(Pair{Any,Any}(0.6, \"0.6\"),Pair{Any,Any}(0.3, \"0.3\"),Pair{Any,Any}(1.2, \"1.2\"),Pair{Any,Any}(1.5, \"1.5\"),Pair{Any,Any}(0.7, \"0.7\"),Pair{Any,Any}(1.4, \"1.4\"),Pair{Any,Any}(0.2, \"0.2\"),Pair{Any,Any}(0.9, \"0.9\"),Pair{Any,Any}(0.8, \"0.8\"),Pair{Any,Any}(0.5, \"0.5\")…)), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "483b129d-a128-487e-847f-cc079a5bba93", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(10: \"input-5\" = 2.0 Any , \"μy\", 2.0, \"2.0\", 21, Interact.OptionDict(DataStructures.OrderedDict{Any,Any}(\"0.0\"=>0.0,\"0.1\"=>0.1,\"0.2\"=>0.2,\"0.3\"=>0.3,\"0.4\"=>0.4,\"0.5\"=>0.5,\"0.6\"=>0.6,\"0.7\"=>0.7,\"0.8\"=>0.8,\"0.9\"=>0.9…), Dict{Any,Any}(Pair{Any,Any}(0.6, \"0.6\"),Pair{Any,Any}(3.4, \"3.4\"),Pair{Any,Any}(0.3, \"0.3\"),Pair{Any,Any}(1.2, \"1.2\"),Pair{Any,Any}(2.8, \"2.8\"),Pair{Any,Any}(2.0, \"2.0\"),Pair{Any,Any}(3.6, \"3.6\"),Pair{Any,Any}(3.8, \"3.8\"),Pair{Any,Any}(1.5, \"1.5\"),Pair{Any,Any}(2.2, \"2.2\")…)), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7aa08174-ef79-4275-b4d3-d3ddbad48bc3", "version_major": 2, "version_minor": 0 } }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "Interact.Options{:SelectionSlider,Any}(12: \"input-6\" = 0.5 Any , \"σy\", 0.5, \"0.5\", 5, Interact.OptionDict(DataStructures.OrderedDict{Any,Any}(\"0.1\"=>0.1,\"0.2\"=>0.2,\"0.3\"=>0.3,\"0.4\"=>0.4,\"0.5\"=>0.5,\"0.6\"=>0.6,\"0.7\"=>0.7,\"0.8\"=>0.8,\"0.9\"=>0.9), Dict{Any,Any}(Pair{Any,Any}(0.4, \"0.4\"),Pair{Any,Any}(0.7, \"0.7\"),Pair{Any,Any}(0.3, \"0.3\"),Pair{Any,Any}(0.5, \"0.5\"),Pair{Any,Any}(0.2, \"0.2\"),Pair{Any,Any}(0.9, \"0.9\"),Pair{Any,Any}(0.1, \"0.1\"),Pair{Any,Any}(0.8, \"0.8\"),Pair{Any,Any}(0.6, \"0.6\"))), Any[], Any[], true, \"horizontal\")" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject )" ] }, "execution_count": 2, "metadata": { "comm_id": "427e0563-3c96-45d8-b99a-88b455332f39", "reactive": true }, "output_type": "execute_result" } ], "source": [ "using Reactive, Interact, PyPlot, Distributions\n", "f = figure()\n", "@manipulate for μx=-2:0.1:2, σx=0.1:0.1:1.9,μy=0:0.1:4, σy=0.1:0.1:0.9; withfig(f) do\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 = linspace(range_min, range_max, 100)\n", " plot(range, pdf.(x,range), \"k-\")\n", " plot(range, pdf.(y,range), \"b-\")\n", " plot(range, pdf.(z,range), \"r-\")\n", " legend([L\"p_X\", L\"p_Y\", L\"p_Z\"])\n", " grid()\n", " end\n", "end" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Expectation and Variance\n", "\n", "- The **expected value** or **mean** is defined as \n", "$$\\mathrm{E}[f] \\triangleq \\int f(x) \\,p(x) \\,\\mathrm{d}{x}$$ " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- The **variance** is defined as \n", "$$\\mathrm{var}[f] \\triangleq \\mathrm{E} \\left[(f(x)-\\mathrm{E}[f(x)])^2 \\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", " \\mathrm{cov}[x,y] &\\triangleq \\mathrm{E}\\left[ (x-\\mathrm{E}[x]) (y^T-\\mathrm{E}[y^T]) \\right]\\\\\n", " &= \\mathrm{E}[x y^T] - \\mathrm{E}[x]\\mathrm{E}[y^T]\n", "\\end{align*}$$\n", " - Also useful as: $\\mathrm{E}[xy^T] = \\mathrm{cov}[x,y] + \\mathrm{E}[x]\\mathrm{E}[y^T]$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Mean and Variance for the Sum of Two Variables\n", "\n", "- For any distribution of $x$ and $y$ and $z=x+y$,\n", "\n", "\\begin{align*}\n", " \\mathrm{E}[z] &= \\int_z z \\left[\\int_x p_x(x)p_y(z-x) \\,\\mathrm{d}{x} \\right] \\,\\mathrm{d}{z} \\\\\n", "&= \\int_x p_x(x) \\left[ \\int_z z p_y(z-x)\\,\\mathrm{d}{z} \\right] \\,\\mathrm{d}{x} \\\\\n", " &= \\int_x p_x(x) \\left[ \\int_{y^\\prime} (y^\\prime +x)p_y(y^\\prime)\\,\\mathrm{d}{y^\\prime} \\right] \\,\\mathrm{d}{x} \\notag\\\\\n", "&= \\int_x p_x(x) \\left( \\mathrm{E}[y]+x \\right) \\,\\mathrm{d}{x} \\notag\\\\\n", " &= \\mathrm{E}[x] + \\mathrm{E}[y] \\qquad \\text{(always; follows from SRG-3a)}\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- Derive as an exercise that\n", "\n", "\\begin{align*}\n", "\\mathrm{var}[z] &= \\mathrm{var}[x] + \\mathrm{var}[y] + 2\\mathrm{cov}[x,y] \\qquad \\text{(always, see SRG-3b)} \\notag\\\\\n", " &= \\mathrm{var}[x] + \\mathrm{var}[y] \\qquad \\text{(if X and Y are independent)}\n", "\\end{align*}" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "### Linear Transformations\n", "\n", "No matter how $x$ is distributed, we can easily derive that **(do as exercise)**\n", "\n", "$$\\begin{align}\n", "\\mathrm{E}[Ax +b] &= A\\mathrm{E}[x] + b \\tag{SRG-3a}\\\\\n", "\\mathrm{cov}[Ax +b] &= A\\,\\mathrm{cov}[x]\\,A^T \\tag{SRG-3b}\n", "\\end{align}$$\n", "\n", "- (The tag (SRG-3a) refers to the corresponding eqn number in Sam Roweis' Gaussian Identities notes.)\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Review Probability Theory\n", "\n", "- Interpretation as a degree of belief, i.e. a state-of-knowledge, not as 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 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!" ] }, { "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." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "-----\n", "_The cell below loads the style file_" ] }, { "cell_type": "code", "execution_count": 3, "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": { "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": 1 }