Skip to content

Instantly share code, notes, and snippets.

@taku-y
Last active August 8, 2021 06:16
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save taku-y/43550e688f4020ac7da15a181d262f2f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"toc": "true"
},
"source": [
"# Table of Contents\n",
" <p><div class=\"lev1 toc-item\"><a href=\"#Normalizing-flow-in-PyMC3\" data-toc-modified-id=\"Normalizing-flow-in-PyMC3-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Normalizing flow in PyMC3</a></div><div class=\"lev2 toc-item\"><a href=\"#Variational-Bayesian-inference\" data-toc-modified-id=\"Variational-Bayesian-inference-1.1\"><span class=\"toc-item-num\">1.1&nbsp;&nbsp;</span>Variational Bayesian inference</a></div><div class=\"lev2 toc-item\"><a href=\"#Autoencoding-variational-Bayes\" data-toc-modified-id=\"Autoencoding-variational-Bayes-1.2\"><span class=\"toc-item-num\">1.2&nbsp;&nbsp;</span>Autoencoding variational Bayes</a></div><div class=\"lev2 toc-item\"><a href=\"#Mean-field-approximation-and-reparametrization\" data-toc-modified-id=\"Mean-field-approximation-and-reparametrization-1.3\"><span class=\"toc-item-num\">1.3&nbsp;&nbsp;</span>Mean-field approximation and reparametrization</a></div><div class=\"lev2 toc-item\"><a href=\"#Uses\" data-toc-modified-id=\"Uses-1.4\"><span class=\"toc-item-num\">1.4&nbsp;&nbsp;</span>Uses</a></div><div class=\"lev2 toc-item\"><a href=\"#Normalizing-flows\" data-toc-modified-id=\"Normalizing-flows-1.5\"><span class=\"toc-item-num\">1.5&nbsp;&nbsp;</span>Normalizing flows</a></div><div class=\"lev2 toc-item\"><a href=\"#Inverse-autoregressive-flow\" data-toc-modified-id=\"Inverse-autoregressive-flow-1.6\"><span class=\"toc-item-num\">1.6&nbsp;&nbsp;</span>Inverse autoregressive flow</a></div><div class=\"lev2 toc-item\"><a href=\"#Masked-autoencoder\" data-toc-modified-id=\"Masked-autoencoder-1.7\"><span class=\"toc-item-num\">1.7&nbsp;&nbsp;</span>Masked autoencoder</a></div><div class=\"lev2 toc-item\"><a href=\"#Limitation-of-meanfield-ADVI\" data-toc-modified-id=\"Limitation-of-meanfield-ADVI-1.8\"><span class=\"toc-item-num\">1.8&nbsp;&nbsp;</span>Limitation of meanfield ADVI</a></div><div class=\"lev2 toc-item\"><a href=\"#A-beta-binomial-model-for-overdispersion\" data-toc-modified-id=\"A-beta-binomial-model-for-overdispersion-1.9\"><span class=\"toc-item-num\">1.9&nbsp;&nbsp;</span>A beta-binomial model for overdispersion</a></div><div class=\"lev3 toc-item\"><a href=\"#MCMC\" data-toc-modified-id=\"MCMC-1.9.1\"><span class=\"toc-item-num\">1.9.1&nbsp;&nbsp;</span>MCMC</a></div><div class=\"lev3 toc-item\"><a href=\"#Gaussian-meanfield-ADVI\" data-toc-modified-id=\"Gaussian-meanfield-ADVI-1.9.2\"><span class=\"toc-item-num\">1.9.2&nbsp;&nbsp;</span>Gaussian meanfield ADVI</a></div><div class=\"lev2 toc-item\"><a href=\"#Normalizing-flow\" data-toc-modified-id=\"Normalizing-flow-1.10\"><span class=\"toc-item-num\">1.10&nbsp;&nbsp;</span>Normalizing flow</a></div><div class=\"lev3 toc-item\"><a href=\"#Interface\" data-toc-modified-id=\"Interface-1.10.1\"><span class=\"toc-item-num\">1.10.1&nbsp;&nbsp;</span>Interface</a></div><div class=\"lev3 toc-item\"><a href=\"#Inverse-autoregressive-flow\" data-toc-modified-id=\"Inverse-autoregressive-flow-1.10.2\"><span class=\"toc-item-num\">1.10.2&nbsp;&nbsp;</span>Inverse autoregressive flow</a></div><div class=\"lev3 toc-item\"><a href=\"#Masked-autoencoder-(MADE)\" data-toc-modified-id=\"Masked-autoencoder-(MADE)-1.10.3\"><span class=\"toc-item-num\">1.10.3&nbsp;&nbsp;</span>Masked autoencoder (MADE)</a></div><div class=\"lev3 toc-item\"><a href=\"#Test-logdet-of-the-Jacobian-of-IAF\" data-toc-modified-id=\"Test-logdet-of-the-Jacobian-of-IAF-1.10.4\"><span class=\"toc-item-num\">1.10.4&nbsp;&nbsp;</span>Test logdet of the Jacobian of IAF</a></div><div class=\"lev3 toc-item\"><a href=\"#ADVI-with-IAF\" data-toc-modified-id=\"ADVI-with-IAF-1.10.5\"><span class=\"toc-item-num\">1.10.5&nbsp;&nbsp;</span>ADVI with IAF</a></div><div class=\"lev2 toc-item\"><a href=\"#References\" data-toc-modified-id=\"References-1.11\"><span class=\"toc-item-num\">1.11&nbsp;&nbsp;</span>References</a></div>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Normalizing flow in PyMC3\n",
"\n",
"- (Original code by Taku Yoshioka and notes by Peadar Coyle)\n",
"Firstly it is worth commenting on the motivations for variational inference.\n",
"* One of the major justifications for Variational Inference is the possibility of scaling probabilisitic modelling\n",
"to increasingly complex problems on increasingly large data sets. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Variational Bayesian inference\n",
"Let us consider a general probabilistic model $p(\\mathbf{x},\\mathbf{z})$, where $\\mathbf{x}$ is the observation data and $\\mathbf{z}$ is unknown random variables such as parameters of the probabilistic model. The primary goal of Bayesian inference is to infer the posterior distribution $p(\\mathbf{z}|\\mathbf{x})$. In general, however, this is analytically intractable. In order to overcome this problem, variational Bayesian inference introduces a distribution $q_{\\phi}(\\mathbf{z})$ parametrized with $\\phi$. $q_{\\phi}(\\mathbf{z})$ is referred to as variational posterior with variational parameters $\\phi$. \n",
"\n",
"Variational Bayesian inference optimizes $\\phi$ to minimize the Kullback-Leibler (KL) divergence\n",
"\n",
"$$\n",
"KL[q_{\\phi}(\\mathbf{z})||p(\\mathbf{z}|\\mathbf{x})] \\equiv \\int q_{\\phi}(\\mathbf{z})\\log\\frac{q_{\\phi}(\\mathbf{z})}{p(\\mathbf{z}|\\mathbf{x})}d\\mathbf{z}, \n",
"$$\n",
"\n",
"which is a distance between $q_{\\phi}(\\mathbf{z})$ and $p(\\mathbf{z}|\\mathbf{x})$. However, since we do not know the true posterior, the KL-divergence cannot be calculated. Instead, we rely on the following equation:\n",
"\n",
"\\begin{eqnarray}\n",
"\\log p(\\mathbf{x}) & = & \\int q_{\\phi}(\\mathbf{z})\\log p(\\mathbf{x}) d\\mathbf{z} \\nonumber\\\\\n",
"& = & \\int q_{\\phi}(\\mathbf{z}) \\log\\dfrac{p(\\mathbf{x},\\mathbf{z})}{p(\\mathbf{z}|\\mathbf{x})} d\\mathbf{z}\\nonumber\\\\\n",
"& = & \\int q_{\\phi}(\\mathbf{z}) \\log\\dfrac{p(\\mathbf{x},\\mathbf{z})}{p(\\mathbf{z}|\\mathbf{x})} \\frac{q_{\\phi}(\\mathbf{z})}{q_{\\phi}(\\mathbf{z})}d\\mathbf{z} \\nonumber\\\\\n",
"& = & KL[q_{\\phi}(\\mathbf{z})||p(\\mathbf{z}|\\mathbf{x})] + \\mathcal{L}(\\phi), \\nonumber\n",
"\\end{eqnarray}\n",
"\n",
"where\n",
"\n",
"\\begin{eqnarray}\n",
"\\mathcal{L}(\\phi) & \\equiv & \\mathbb{E}_{q}\\left[\\log p(\\mathbf{x},\\mathbf{z})-\\log q_{\\phi}(\\mathbf{z})\\right] \\nonumber\\\\\n",
"& = & \\mathbb{H}[q_{\\phi}(\\mathbf{z})] + \\mathbb{E}_{q}[\\log p(\\mathbf{x},\\mathbf{z})] \n",
"\\end{eqnarray}\n",
"\n",
"is the evidence lower bound (ELBO). Since $KL[q_{\\phi}(\\mathbf{z})||p(\\mathbf{z}|\\mathbf{x})]\\geq 0$ and $\\log p(\\mathbf{x})$ is a constant w.r.t. $\\phi$, maximizing ELBO w.r.t. $\\phi$ implies minimizing the KL-divergence. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Autoencoding variational Bayes\n",
"The autoencoding variational Bayes (AEVB) was proposed in (Kingma and Welling, 2013). \n",
"\n",
"Let us consider a class of probabilistic models with i.i.d. observations \n",
"\n",
"$$\n",
"p(\\mathbf{X},\\mathbf{Z}) = \\prod_{t=1}^{T}p(\\mathbf{x}_{t},\\mathbf{z}_{t},\\theta), \n",
"$$\n",
"\n",
"where $\\mathbf{X}\\equiv\\{\\mathbf{x}_{t}\\}_{t=1}^{T}$ is the observation data and $\\mathbf{Z}\\equiv(\\theta, \\{\\mathbf{z}_{t}\\}_{t=1}^{T})$ is the set of unknown random variables in the model. $\\theta$ is a set of model parameters and $\\mathbf{z}_{t}$ is latent variables relevant to $\\mathbf{x}_{t}$. Example: mixture models, LDA, ... In PyMC3, $\\theta$ and $\\mathbf{z}_{t}$ are referred to as global latent variables and local latent variables, respectively. \n",
"\n",
"To approximate the true posterior $p(\\mathbf{Z}|\\mathbf{X})$, we introduce parametrized distributions $q_{\\phi_{\\theta}}(\\theta)$ and $q_{\\phi_{z}(\\mathbf{x}_{t}; \\lambda)}(\\mathbf{z}_{t})$. $\\phi_{\\theta}$ is the parameters of $q_{\\phi_{\\theta}}(\\theta)$, while $\\phi_{z}(\\mathbf{x}_{t}; \\lambda)$ is a deterministic mapping, parametrized with $\\lambda$, from $\\mathbf{x}_{t}$ to the parameters of $q_{\\phi_{z}(\\mathbf{x}_{t}; \\lambda)}(\\mathbf{z}_{t})$. Multilayer perceptrons and convolutional neural networks are examples of $\\phi_{z}(\\mathbf{x}_{t}; \\lambda)$. With these parametrized distributions, the true posterior is approximated as\n",
"\n",
"$$\n",
"p(\\mathbf{Z}|\\mathbf{X})\\sim q_{\\phi_{\\theta}}(\\theta)\\prod_{t=1}^{T}q_{\\phi_{z}(\\mathbf{x}_{t}; \\lambda)}(\\mathbf{z}_{t}). \n",
"$$\n",
"\n",
"In AEVB, $\\phi_{\\theta}$ and $\\lambda$ are simultaneously optimized to maximize ELBO. \n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Mean-field approximation and reparametrization\n",
"\n",
"$$\n",
"q_{\\phi}(\\mathbf{z}) = \\prod_{d=1}^{D}N(z_{d};\\mu_{d},\\sigma_{d}^{2}), \\phi=\\left\\{\\mu_{d}, \\sigma_{d}\\right\\}_{d=1}^{D}\n",
"$$\n",
"\n",
"\\begin{eqnarray}\n",
"\\mathbb{E}_{q}\\left[\\log p(\\mathbf{x},\\mathbf{z})\\right] = \\int p(\\mathbf{\\epsilon})\\log p(\\mathbf{x},\\mathbf{\\sigma}\\odot\\mathbf{\\epsilon}+\\mathbf{\\mu}) d\\mathbf{z}, \\nonumber\\\\\n",
"\\end{eqnarray}\n",
"\n",
"where $\\odot$ is element-wise multiplication.\n",
"\n",
"* Stochastic gradient of ELBO by Monte Carlo sampling"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Uses\n",
"* Large scale topic models (for example LDA and Hierarchical Dirichlet Processes)\n",
"* Semi-supervised classification\n",
"* Generative models of images"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normalizing flows\n",
"One of the major limitations of Variational Bayes or Variational Inference (VI) is that they require intractable\n",
"posterior distributions to be approximationed by a class of known probabilistic distributions. \n",
"Unlike Markov-Chain-Monte-Carlo (MCMC), even in the asymptotic regime we are unable to recover the true posterior distribution. \n",
"\n",
"One solution is the specification of approximate posterior distributions using normalizing flows (Rezende and Mohamed, 2015), a tool for constructing complex distributions by transforming a distribution through a series of invertible mappings. Inference with normalizing flows provides a tighter, modified variational lower bound with additional terms that only add terms with linear time complexity. \n",
"\n",
"We consider an invertible mapping $\\mathbf{z}_{1}=f_{1}(\\mathbf{z}_{0})$, where $\\mathbf{z}_{0}$ is drawn from the standard normal distribution denoted by $q_{0}(\\mathbf{z})$. \n",
"\n",
"The probability density function of the transformed variable $q_{1}(\\mathbf{z}_{1})$ is obtained as\n",
"\n",
"$$\n",
"q_{1}(\\mathbf{z}_{1}) = q_{0}(\\mathbf{z})\\left|\\frac{\\partial f^{-1}_{1}}{\\partial\\mathbf{z}_{1}}\\right| = q_{0}(\\mathbf{z}_{0})\\left|\\frac{\\partial f_{1}}{\\partial\\mathbf{z}_{0}}\\right|^{-1}. \n",
"$$\n",
"\n",
"It should be noted that if $f_{1}$ is an affine transformation $\\mathbf{z}_{1}=\\mathbf{\\sigma}\\odot\\mathbf{z}_{0} + \\mathbf{\\mu}$, $q_{1}(\\mathbf{z}_{1})$ is the same with the mean-field variational posterior. \n",
"\n",
"Invertible transformations can be successively applied. The log of the probability density function after $K$ transformations is\n",
"\n",
"$$\n",
"\\log q_{K}(\\mathbf{z}_{K}) = \\log q_{0}(\\mathbf{z}_{0}) - \\sum_{k=1}^{K}\\log\\left|\\frac{\\partial f_{k}}{\\partial\\mathbf{z}_{k-1}}\\right|.\n",
"$$\n",
"\n",
"Now we can use $q_{K}(\\mathbf{z}_{K})$ as the variational posterior. With the transformed unknown random variable $\\mathbf{z}_{K}$, ELBO becomes\n",
"\n",
"\\begin{eqnarray}\n",
"\\mathbb{E}_{q_{K}}\\left[\\log p(\\mathbf{x},\\mathbf{z}_{K}) - \\log q_{K}(\\mathbf{z}_{K})\\right]\n",
"& = & \\mathbb{E}_{q_{0}}\\left[\\log p(\\mathbf{x},\\mathbf{z}_{K})\\right] - \\mathbb{E}_{q_{0}}\\left[\\log q_{0}(\\mathbf{z}_{0})\\right] + \n",
"\\mathbb{E}_{q_{0}}\\left[\\sum_{k=1}^{K}\\log\\left|\\frac{\\partial f_{k}}{\\partial\\mathbf{z}_{k-1}}\\right| \\right]. \\nonumber\\\\\n",
"\\end{eqnarray}\n",
"\n",
"This equation can be computed with the Monte Carlo approximation as for the mean-field variational posterior. \n",
"\n",
"The last term of the above equation involves the Jacobian determinants of the transformation. The time complexity for computation of the last term is ${\\cal O}(KD^{3})$, because it involves the Jacobian determinants of the $K$ transformations. For scaling the algorithm to a large number of latent variables, we need a specific form of invertible transformations whose computational cost is low. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Inverse autoregressive flow\n",
"In (Kingma et al., 2016), the authors proposed inverse autoregressive flows (IAFs), which has the form\n",
"\n",
"$$\n",
"z^{d_{i}}_{k} = \\frac{z^{d_{i}}_{k-1} - \\mu^{d_{i}}(\\mathbf{z}^{d_{1:i-1}}_{k-1})}{\\sigma^{d_{i}}(\\mathbf{z}^{d_{1:i-1}}_{k-1})}, \n",
"$$\n",
"\n",
"where $d_{1},\\cdots,d_{D}$ is a permutation of $D$ features, $z^{d_{i}}$ is the $d_{i}$-th component of $\\mathbf{z}$ and $\\mathbf{z}^{d_{1:i-1}}$ is the set of $d_{1},\\cdots,d_{i-1}$ components of $\\mathbf{z}$. $\\mu^{d_{i}}(\\cdot)$ and $\\sigma^{d_{i}}(\\cdot)$ are parametrized mappings. The log of the Jacobian determinant of this transformation is\n",
"\n",
"$$\n",
"\\log\\left|\\frac{\\partial f_{k}}{\\partial\\mathbf{z}_{k-1}}\\right| = -\\sum_{d=1}^{D}\\log\\sigma^{d_{i}}(\\mathbf{z}^{d_{1:i-1}}_{k-1}). \n",
"$$\n",
"\n",
"The time complexity of this computation is linear w.r.t. $D$. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Masked autoencoder"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* MADE can be used as a transformation for IAFs. "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"application/javascript": [
"IPython.notebook.set_autosave_interval(0)"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Autosave disabled\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"ERROR (theano.sandbox.cuda): nvcc compiler not found on $PATH. Check your nvcc installation and try again.\n"
]
}
],
"source": [
"%autosave 0\n",
"%matplotlib inline\n",
"import sys, os\n",
"sys.path.insert(0, os.path.expanduser('~/work/git/github/taku-y/pymc3'))\n",
"\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"import pymc3 as pm\n",
"from pymc3.distributions.discrete import BetaBinomial\n",
"import seaborn as sns\n",
"from theano import config, shared, function\n",
"from theano.gradient import jacobian\n",
"import theano.tensor as tt\n",
"\n",
"config.floatX = 'float32'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Limitation of meanfield ADVI"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## A beta-binomial model for overdispersion"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def get_model():\n",
" # Data and model adapted from Albert (2009)\n",
" data = np.array(\n",
" [(0, 1083), (0, 855), (2, 3461), (0, 657), (1, 1208), \n",
" (1, 1025), (0, 527), (2, 1668), (1, 583), (3, 582), \n",
" (0, 917), (1, 857), (1, 680), (1, 917), (54, 53637),\n",
" (0, 874), (0, 395), (1, 581), (3, 588), (0, 383)]\n",
" )\n",
" xs, ns = data[:, 0], data[:, 1]\n",
"\n",
" with pm.Model() as model:\n",
" def logp(mk):\n",
" m = tt.nnet.sigmoid(mk[0])\n",
" k = tt.exp(mk[1])\n",
" return -1 * (tt.log(m) + tt.log(1 - m) + 2 * tt.log(1 + k))\n",
"\n",
" # Prior\n",
" mk = pm.DensityDist('mk', logp, shape=(2,), testval=np.array([0.1, 0.1]).astype('float32'))\n",
"\n",
" # Reparametrization for beta-binomial distribution\n",
" m = tt.nnet.sigmoid(mk[0])\n",
" k = tt.exp(mk[1])\n",
" alpha = k * m\n",
" beta = k * (1 - m)\n",
" \n",
" # Likelihood\n",
" BetaBinomial('x', alpha=alpha, beta=beta, n=ns, observed=xs)\n",
" \n",
" return model"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def plot_samples(trace):\n",
" m = trace['mk'][1000:, 0]\n",
" k = trace['mk'][1000:, 1]\n",
" df = pd.DataFrame({'logit m': m, 'log k': k})\n",
" sns.jointplot(x=\"logit m\", y=\"log k\", data=df, xlim=[-7.7, -5.5], ylim=[4, 11])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### MCMC"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"WARNING (theano.tensor.blas): We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library.\n",
"WARNING (theano.tensor.blas): We did not found a dynamic library into the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library.\n",
"100%|██████████| 11000/11000 [00:14<00:00, 784.20it/s]\n"
]
},
{
"data": {
"image/png": "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\ngJaWFrS3t+PMmTP4xje+gZ07d+L48eO49tprcccddxTxG1MoUx/qGVHKjsceewy33HILWltbsXnz\nZjzwwAMAgKeeegrXXHMNfvazn2H16tU4ffq09BmGYfA3f/M3WLx4MR544AGFIZKzbds2XHvttXji\niSfw/e9/H88//zy2bdtWkO9FoZQz1BhRyo4PPvgAV1xxBQCgqakJkUgEgUAAR48exaWXXgogE5pz\nuVw57XflypUAgPr6eixduhQsy6KhoQHhcDi/X4BCmYZQY0QpO8i1I0EQYLFYkE6nYbFYdLfLBsuy\nmv+mUCgThxojStmxfPlyvPPOOwCAjz76CD6fDzNmzMAFF1yAAwcOAADeffddRKNR1WctFgtSqVRO\nx6NawxTKxKHGiFJ2PPTQQ3j11Vdx66234lvf+ha2bt0KALjrrrvw05/+FJ///Oexb98+1NfXqzyc\n1atXY/Pmzfjv//5vxetGXtR4s/goFMoYtIUEZdpw6NAhcByHlStXYmBgANdccw3ee+89GnKjUEoA\nmtpNmTa4XC5861vfApDpqrllyxZqiCiUEoF6RhQKhUIpOnTNiEKhUChFhxojCoVCoRQdaowoFAqF\nUnSoMaJQKBRK0aHGiEKhUChFhxojCoVCoRSd/w84Fe4RQjy7FgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f8165c2dfd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"with get_model() as model:\n",
" step = pm.NUTS()\n",
" trace = pm.sample(11000, step=step)\n",
" \n",
"plot_samples(trace)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Gaussian meanfield ADVI"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.5/site-packages/theano/tensor/signal/downsample.py:6: UserWarning: downsample module has been moved to the theano.tensor.signal.pool module.\n",
" \"downsample module has been moved to the theano.tensor.signal.pool module.\")\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 [0%]: ELBO = -126.66\n",
"Iteration 1000 [10%]: Average ELBO = -56.42\n",
"Iteration 2000 [20%]: Average ELBO = -48.03\n",
"Iteration 3000 [30%]: Average ELBO = -45.58\n",
"Iteration 4000 [40%]: Average ELBO = -42.77\n",
"Iteration 5000 [50%]: Average ELBO = -37.81\n",
"Iteration 6000 [60%]: Average ELBO = -36.51\n",
"Iteration 7000 [70%]: Average ELBO = -36.57\n",
"Iteration 8000 [80%]: Average ELBO = -36.48\n",
"Iteration 9000 [90%]: Average ELBO = -36.54\n",
"Finished [100%]: ELBO = -36.13\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaMAAAGkCAYAAACckEpMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXmcFPWd//+qPqevmW7mAnXAARxQUDAGDVEx7v6UqLsJ\nRGP2a4JRYrJBN8YjHomJBNYjCWq8IsaHouuoGxNZSB7ZGMjGLG5MoqMCwoRhHJyRYWDu7pm+z/r9\n0VM1VZ+q6mOm73k//9Hprq76VFFVr8/nfXI8z/MgCIIgiCKiK/YACIIgCILEiCAIgig6JEYEQRBE\n0SExIgiCIIoOiRFBEARRdEiMCIIgiKJjKPYA0jE05C3o8VwuK9zuQEGPWS7QtVGHros6dF3Uqa93\nFHsIJQmtjBgMBn2xh1Cy0LVRh66LOnRdiGwgMSIIgiCKDokRQRAEUXRIjAiCIIiiU/IBDERlwvM8\nvN5xxecORzU4jpvytgRBlCckRkTeURMTr3ccf2sfhMVmEz8L+H1YuaQRDkd12m2DAT8uOW8hqqtr\n8jt4giAKAokRkXe83nH84e0uWKyTYjI6PACrrRpW22SYa8Dvw573j8I5q1b2e7VtCYKoLEiMiIJg\nsdoUwqNGlcWqEB21bcl0RxCVBYkRkVO0THLIcdesYMCPPe+PylZRZLojiPKFxIjIKSlNcvbcmtnU\nVlEstIIiiPKAxIiYElovea93HBZLZia5QoyJgh8IojwgMSKmhNoKCMjfKigT1Ex3FPxAEOUBiRGR\nFmHFYTIlMD6eLFyrtgICCrcK0oI13RV7PARBZAaJEZEWYRVUXz8LPn8YQHFXQARBVB4kRkRGWKw2\n2OzVSCAEgFYcBEHkFqpNRxAEQRQdWhkRMw6tSECAQr4JoliQGBEzDrWoO+FzCvkmiOJAYkTMSDJJ\nmCUIonCQz4ggCIIoOrQyImQUqrYcQRCEFBIjQkaq2nKVDtWxI4jiQWJEKMi03UOlQZXACaJ4kBjN\nYMgkp4QCGwiiOJAYzWAK2e6BIAgiFSRGM5yZapIjCKK0oNBugiAIoujQymiGQP6hqUERdgRRGEiM\nZgjkH5oaFGFHEIWBxGgGQf6hqUERdgSRf0iMKgwtsxKZ5HIHe42FDrhkuiOIqUNiVGGomeMAMsnl\nEtZ0Z7eNYmholEx3BDENSIwqENYcB5BJLtdITXc2exW8vhAFOhDENCAxIogcQIEOBDE9SIwIIkdQ\noANBTB0SozKGcodKG2pvThCZQ2JUxlDuUGlD7c0JInNIjMocyh0qbch0RxCZQWJUJpBJjiCISobE\nqEwgk1zlQPXuCEIJiVEZQSa5yoDCwAlCCYkRQRQB8iURhBwSoyKjZrLh+aQjSGqyIf9QZUOmO2Km\nQ2JUIFIVMP1b+yAsNrkvSKczyMw45B+qbNRMdwG/DyuXNMLhqJZtSwJFVCIkRgUibQFTxhek0+nJ\nPzTDYE13Ab8Pe94/Sr4lYkZAYlRAqIApkS3kWyJmCiRGBFFGkG+JqFRIjPIAJagS+SIb3xJAIkWU\nDyRG00RLeNSCEigAgcgFmfiWhM8pAIIoF0iMNMgm5FpTeCgAgSgQar4lNZFSEyi1+xog0SIKS8WK\nUaa2dXY7kymB8XFv9iHXJDxECZLJKkrtvs5GtAASLmL6lJ0YHf7wIwwMj8g+s5jNWLRwnuwzr3cc\nf3qvG1VVFvGzUCiIi89plj1g7HY2qxn+QBju0WHYbNUyMdIiFAwg4PdK/vZDpzOk/SybbafzWa72\n6feNI+APF/R8yuEa6RApu/NJRyjox+/fOoQap0v8zD06DJ1OL/sMUH+ugMmJXb6hMPfKgOOF6Q5B\nEARBFAldsQdAEARBECRGBEEQRNEhMSIIgiCKDokRQRAEUXRIjAiCIIiik3cx6uzsxCWXXIKXX35Z\n/OzFF1/E0qVLEQwG8314giAIogzIqxgFg0Hcd999WLlypfjZzp07MTIygoaGhnwemiAIgigj8ipG\nZrMZzz77rEx4Lr30Utx66635PCxBEARRZuRVjHQ6HUwmk+wzq9Waz0MSBEEQZQgFMBAEQRBFp2hi\nlGlRxVgsnueREARBlB4z7d1XtEKpmZbEc7sDeR6JnPp6B4aG8l/csRyha6MOXRd16LqoU1+fWU+z\nQr/7CkGqc8+rGLW3t+NHP/oRjh8/DoPBgF27duH888/Hn//8Z4yMjODrX/86li9fju985zv5HAZB\nEARR4pR81e5Cz6xoNqcNXRt16LqoQ9dFnUxXRpV47VKdOwUwEARBEEWHxIggCIIoOiRGBEEQRNEh\nMSIIgiCKDokRQRAEUXSKlmdEEER50dX1IR5++EFwnA4LFpyG22+/S/Z9LBbDAw9sQn//Cej1ejz0\n0E9gNteA53k8/fST+O///g1++9s/AAASiQS2bHkAvb1HEYvFsHbtVVi9+vK8jv+VV17En/70R+h0\nOlx33Q1YufL8tOenNU6/34f77tsIrzcZ8Xbnnd/D3Lmn5nX8lQ6tjAiCyIjHH38Yt9xyJ5566ln4\nfF68/fZfZd//4Q+/h8PhwFNPPYtrr70eDz/8MADgpZdewJw5c2Tb/u1vf0EoFMKTTz6Dxx7biq1b\nn8jr2E+cOI433vgfPP30Nvz4xz/Fk0/+VJF4Lz0/v9+Ht9/+q+Y4f/GLl3Hmmcvx5JPP4MtfvhbP\nPvvzvI5/JkArI4LII6+//lv87W9/QSDgx9DQEK6++v/h8sv/Gfv378UzzzwFg8GIxsZG3HnnPeA4\nDvff/0MMDQ0iFApi/fpvYOXKC/Ctb/0r5s9fAI7jcMUVn8PDD/8YJpMJRqMJmzc/AAC4//5N8Pm8\niMfjuOWW7+C00xbhX/5lLS688DM4cGA/HA4Htmx5DNu2PYPjx/vQ338CTzzxc7Es14svbkNb29vg\nOA48z4PjONx++92YN+9UAMlVz4kTJ7Bo0WIAwPnnX4h3330H55032R7mvffacNll/wQA+OQnz8OP\nf3wfAOCqq/4FFotF9sKuqXHC5/OC53kEAgHYbDYAwNtv/xUnThzHmjVXitv295/AD35wF5qa5qG3\n92MsXrxEtipLJBL49rc3iGMHgNmz5+Cee34obvP+++/iU5/6NPR6PZxOJ2bPPgnd3R9h/vwFquf3\n6U9fgHfffQcXX/yPquO89tr14rVzOl0YHx+b8j1CJCExIog809PTjRdeeAXj42O4/vov47LL/gmP\nPfYQHnvs6YmVxOP405/+B5/85Hk499xP4bOfvQLHj/fhBz+4GytXXgAAmD9/IT7/+S/g0Ucfwhe+\n8EVceulleP/9dzEyMow33vgfLF16Jq655lp0dBzCY489jCefTIrOZZf9E2666dv45jfXo6vrQwDJ\nF++TTz4jG+O1167Htdeu1zwHj8cDh2MyYdHlmoWRkWHZNqOjI3A6XQCStSd1Oh1isRgsFotif0uW\nLEVDQyO++MXPIRAI4Lvf/QEAyMRNypEjXXjwwYdRV1ePr3/9Whw50oUFCxYCSHYHeOKJ1CuT5Nic\n4t9OpxMjI8OiGGmd3xlnqI/TaDSK2/7qV7/AJZd8NuXxifSQGBFEnjn77E+A4zjU1DjhcDjg8bjR\n29uLe+65AzzPIxQKwel0weFw4NChdvz61/8FnU6H8fFxcR9nnLEEAHDhhRfhoYceRG/vUVx88f+H\nuXNPRUfH3/HVr34NALB48ek4frwPAGC12sSXbV1dPfx+n2xf0yGTwi2JRELzu/3792FoaBC/+tVv\nMDIyjJtv/iZWrrwABoP6K6mpaS7q6uoBAGecsRRHj/aIYjQ1Uo9fOL9049y69QmYTCZcccXnpjEW\nAiAxIoi8I30pJ01gOtTX1+Pxx5+Wbff667+F1+vF1q3PYWzMgxtu+Kr4ncGQnImfc84KPPdcK/78\n5//DAw9swo033gyO08nEIR6PT/xGL9u/sI2wLynpzHROpxNjYx5x+6GhQdTV1cn2UVdXj9HRYSxY\nsBCxWGziWOqvmIMH9+Occ1aA4zjU1dWjuroGQ0ODmDPnJNXt43H2Gk5W/Zea6YTvWTNdXV09jh79\nWDL+IVHcUp1fqnE+99zP4fG48d3v3qs6ZiI7SIwIIs8cPHgAPM9jbGwMgUAATqcTHMehp6cbp57a\njO3bX8Xy5edgbMwjvoz/93/fQCwWVexr+/Zf4tOfvgCXXvpZADy6ujpx+uln4L333sUZZyzFwYMH\nxNVQNqQz0xkMBsyb14wDB/bjzDOX4c03/4SrrvoX2TYrVpyHN974I1as+BTeeutNnHfeecxeJgXz\nlFOa8MYb/wMA8Pt9GB4eQm1tHbQ4frxPNAP+/e/t+MIXrha/y8RM94lPfBKvvvoKvva1f4XH48bw\n8BCam+enPT+fz4s33viDYpz79+/D3//ejocffjzlcYnMITEiiDwzZ84cfP/7d6Kvrw/f+MZNAIC7\n7vo+HnhgE0wmE2pr6/D5z18Jm82Gu+66De3tB3DFFZ9DfX0DXnjhWdkq4JRTmvCDH9wNm80Os9mE\n7353I8xmMx54YBO+/e0N4Hket99+98TWk78T9pFpHzE1br75NmzZ8gB4nscZZyzFOeesAAB897vf\nwYMPPoR//MdL0db2Nm688QaYTCY88shDAIBHH92CI0e64Pf7cfPN38QFF6zC1Vdfg3fe+RtuvPEG\n8HwCN974bZhMpokAhj6sWXOV7NhNTXPx85//DN3dH+Gss5bh1FObsxp7Y+Ns/PM/r8FNN30dOh2H\n73znuwDkARNq58fzvOo4d+58DYOD/bj55m+C53nU1NTgvvt+MuVrS1DVbgVUaVgbujbqpLour7/+\nW3R3H8GNN367wKMqPlO5X4LBIH75y1dEHxiQjKb7/vfvwrPPvpjrIRYFqtqtDuUZEQRRMoyMDOMf\n/uESxefTWNARZQKtjBho9q8NXRt16LqoQ9dFHVoZqUMrI4IgCKLokBgRBEEQRYfEiCAIgig6JEYE\nQRBE0SExIgiCIIoOiRFBEARRdEiMCIIgiKJDYkQQBEEUHRIjgiAIouiQGBEEQRBFh8SIIAiCKDok\nRgRBEETRITEiCIIgig6JEUEQBFF0SIwIgiCIokNiRBAEQRQdEiOCIAii6JAYEQRBEEWHxIggCIIo\nOiRGBEEQRNHJuxh1dnbikksuwcsvvwwA6O/vx7p16/CVr3wFt956K6LRaL6HQBAEQZQ4eRWjYDCI\n++67DytXrhQ/e+yxx7Bu3Tq89NJLmDt3LrZv357PIRAEQRBlQF7FyGw249lnn0VDQ4P42TvvvIOL\nL74YAHDxxRfjL3/5Sz6HQBAEQZQBeRUjnU4Hk8kk+ywYDMJoNAIAamtrMTQ0lM8hEARBEGWAoZgH\n53k+7TYulxUGg74Ao5mkvt5R0OOVE3Rt1KHrog5dl6lTjHdfMSm4GNlsNkQiEZhMJgwMDMhMeGq4\n3YECjSxJfb0DQ0Pegh6zXKBrow5dF3XouqiTqUAX+t1XCFKde8FDu1euXIldu3YBAHbt2oULL7yw\n0EMgCIIgSoy8roza29vxox/9CMePH4fBYMCuXbvw0EMP4e6778arr76Kk046CWvXrs3nEAiCIIgy\ngOMzcdwUkUIv88m0oA1dG3XouqhD10WdTM10lXjtSspMRxAEQRAsJEYEQRBE0SExIgiCIIoOiRFB\nEARRdEiMCIIgiKJDYkQQBEEUHRIjgiAIouiQGBEEQRBFh8SIIAiCKDokRgRBEETRITEiCIIgig6J\nEUEQBFF0SIwIgiCIokNiRBAEQRQdEiOCIAii6JAYEQRBEEWHxIggCIIoOiRGBEEQRNEhMSIIgiCK\njqHYAyCIfOMLRNC6uxNDniDqnRasW90Cu8VU7GERBCGBxIioeFp3d6KtYxAA0NPvBQBsWLO0mEMi\niLSMj4/B4agGx3HFHkpBIDMdUfEMeYIp/yaIUuQ3/7sfXu94sYdRMGhlRJQU+TCp1Tst4opI+Jsg\nSp2qqpl1n5IYESVFPkxq61a3AIBM4AiCKC1IjIiSIh8mNbvFRD4igihxyGdElBSsCY1MasRMJRSa\nWb5NWhkRJQWZ1AgiycXnNMPhqC72MAoGiRFRUpBJjSCSzKSwboDMdARBEEQJQGJEEARRgni94+B5\nvtjDKBhkpiMywheIYNuLbTg24KWSOgRRAP70Xjc+56hGdXVNsYdSEEiMiIygkjrTg+rjEdlCSa8E\noQKb79M/4sfWnQfp5ZohJOYEkRoSIyIj2JI6vlBM9nKNxuIwGvQkThpQfTyCSA2JEZER61a3wGw2\niD6jAbcfbm9Y/L6z14NAOA6AZv5qUH08IlvGPG4KYMgnPM9j48aN6OzshMlkwqZNm9Dc3FzoYRBZ\nYreYcNe1KzA0lHyhbt15EEcH/JIt5PkQ7d2j2PxCm2KVVM6+k+mMnZJ5iWxJJOLFHkJBKbgY/fGP\nf4TP58MvfvEL9Pb24v7778fTTz9d6GEQU0R4IQ+4/XDZzbBbDJhda0MslsDermFxu0A4hp5+r2KV\nVEq+k2zFZTpjp2ReIltcs+pmVNJrwcWop6cHZ511FgCgqakJfX194Hl+Rl30ckb6QgaAhafUYMOa\npfAFIzDsSr7YB90B0WQHyP0jpeQ7yVZcSmnsBFFpFDzptaWlBf/3f/+HRCKBjz76CMeOHYPb7S70\nMIgs8AUi2LrzIG57dA/au0dl3wkvZGHmf+91K7CkuVa2jdQ/UkqFULMVl1IaO0FUGgVfGa1atQp7\n9+7FV77yFSxatAgLFixI6aRzuawwGPQFHCFQX+8o6PFKnW0vtslWQ1JOaXQortct15yDrdv3Y2A0\ngMZZVmy4chmqbaa03xWaUxodsqACtXORkmrsdM+oQ9dl6kRCPtTW2uF0zoxryPFFDte45JJL8Ic/\n/EHze8FhXijq6x0FP2aps/mFNtlL22rWo8FlzcjPUsoBC75gBK27OjEw6oc3GIO9Kun/yvacbrnm\nHIQDYc3tZyr0LKmTqUA/8MQvcfVlK1FT48zziApHqnMvuJmuo6MD3/ve9wAAb775JpYsWVLoIRBZ\nwpqjljTX4t7rVmDDmqVphUXwy/T0e9HWMYjWXZ2y7wUT4OYX2rB150H4gpGcj18LwbTYOMsGtzeM\n3iG/6hhZ2HPaun1/gUZMzCQogCHPLFq0CDzP44tf/CKqqqrw0EMPFXoIJUcprx6AybBkjz8Cp82U\nVVhyOr9MKUTXZes7Yr8fGA3kfEwEMdMouBhxHIcHH3yw0IctaXL5Qs6HsAkriEzNLtIxjPnkK50x\nf0SWf6QmBIUW52wTUtntG2dZ8zY2YuYy5nHD6x2fMX2NqAJDCZDLkOFshU148feP+OELxWA16xAI\nJ+CwGtDoSu8/STcGAHA5zKixmTDmj8DtDcPtDYtjUxOCqYgzex7ZjD/bhFR2+w1XLpP5jEp9pZst\nlXY+5YLZbMZf2wdw6Qyp3E1iVALkslRMtsLGCofbK/w3LFZYyHaVxh4zHIkBNhPCkbhiu9u+tEz8\n/3qnBWtXNeO+/3g3q3NQP4/Mx59tQiq7fbXNhCGJGJWC6TGXVNr5lAuz6hqLPYSCQmJUAuSyVEy2\nwpbuRT8wOlmd+5RGBy4/rwk73uxWzJJTmeYC4bhsTNKxsS/2rTsPyhJmMzmHVOch/Zyd4a9d1ax6\nLtOl0pJjK+18iNKExKjI5NoEko2w+QIRjPlTR695gzEclcyK2z8aEQukSmfJWqa5QXcQgXBM/JwN\nC2dhX3RWswFrVzWnbFfhC0QUAiggFTJ2ht/VN6Z6LtOl0oqiVtr5EKUJiVGRycYEkolwZWNyat3d\nKau8bdRzaHBVyXxG/SPy6tz+YFS2j/1dw9i68yAG3H7Z5zU2E+69bgW27jwoE6klzbUpx8e++JY0\nz8Iv3+jCvq4RAMlrdODIMM5cUCeef+vuTrh98vOYU2dFo8smE7JBtzzqjT2XXM34K60oaqWdT7ng\nGU3e816vbUYEMZAYFQGpqAy6MzeB5Np2zx6L4zicVOeQidzWnQfROzQpNLYqIyKSF38klkBbxyBc\ndrNsX2O+CHzBiPjiEgILBtx+PPHaB+DBw+OLKERV7cV399N/le07FE0es6tvTFx9STm53o57r1sh\njl+regSb751uxp/pKrbSiqJW2vmUC4lEDFUW24wJYiAxKgKsSUtKqhdirm337CpEEBZgUuSk4nBK\nowOXf6oJO/Z0Y3/XMCKxhPhbu8UAcBBXUW5fGK27OrFhzVJsWLNUFAVpYAGgFFXpi88XSFZICEbU\nS+kLkXlq5yWgZvZrcFnEyD4Bl8Ocdsaf6WRgOpF9BCEwq64RVpsDAf/MqGJBYlQElC/IpB/F5TAj\nGour9gECMrfdZzqDF16+rLBIxycVByHPSCouArU1VRge88j2/17nIL750P/CVmWEtUr7VmvvHklW\nXuAhG3c0FhfNc+mQ+qKkpjnWl7SkeRY2rFmKH257WyZGDqshrVBkOhmYTmQfQcxUSIwKjFrQgOBH\nkb7g1WbemdruFY76Y2PY9LUVmv4lVli0RG7MHxFf8k67CWefVge3N4x6pwWxeEKxgkkkgEgigYgv\nnLLMTyAcF0vwSMdtNWdeILelySm2Pd/yyj6ZD0kIppBeM28gJvs9+7camU4GMonsIwhCDolRgWGD\nBqTmoXQz70xt9wOj8mACqclMjUxF7unt+2WitWJxg+ib2fxCW8oxReM8zj6tDoePemTRdQJDniAS\niYTsM7aEr8tulokMAJgMOixbWIdYPKFp+hSCKaTYLQbZvuwpVm4CmV4nVrQEBD8ameqITPCMjiAU\nDCIUDIDnZxd7OHmHxKjAsAJTYzOJL6dchdCqzfJTzcrVRE7N1MfWYOsf8Wuaw9Qw6HVocKm/qOud\nFnQdG5N9ZjbpsXR+7WRe0EXN2PKyfNWzbGEdNqxZmlIM1a7j7FqbLDBjdq0t7fhTTQak18tlN2P5\nwlqMjIXQPxpANJ5U1XSTAoKQkkjEkEjEkUikX7VXAiRGBYYVnEF3AFt3HsS61S05C6FlZ/3CcVlS\nJYFKHfzCeBtnWfFh76RfyBeKyVYjOg5IpGhIIhyHFSOjnsPai5qx9b8OysZtM+sRjcUx6A5g0B1E\nLJbAHV9ejh17uhXXSGs1UmXUIRZPKPxwubjWwvXz+CMYdgfFsffAixWLG7Dpa+cp2m+QqY7IFGkA\nQ6WHdQMkRgVHeOm1d48iEI4hEI7LIthyMWtmZ/1akWKpkkBZhjxB3H/jBfD5w+js9QDgEGLMbWaj\nDsFIQvX3AETBe//wEOISG1w0zmPHnm7FuAORhCyAYW/XMMAlV1jxeAIf9npw19a/guOA+XMcE2ZA\nt6yCQ5XZgL0fDovnGIsn8K0rzwIY0fQFo2jdlTrogxXvVAEW7d2j2PxCm2LFSAmjBKEOiVGBEUw9\n+Zwxq8361fwU7DF9TBKolHqnBdU2E4wGvaJcj0AohRAJgti6q1MmRNKxsHXq2IRbANjXNazwJQHA\nwR4PXHYzvn/dJ2Urpw+6hmTbHepJtk2fSjUG9jepAiwC4Zi4H7UAinSomUnZaEMKFa9spD6jmZD4\nSmJUJPJZYiXTQAeFaYt5yxv0HEwGPQAe0Vgc4/5IStFM1TI4HInhkVf3K6ogSMfC5hht3Kb0A6Xq\nS+z2hbFjT7fs3L/+4zdk24SiSZPdVKoxKD+TvxgmSyAFZIKtFkChBlvfTzT79XvR3j0Ks1Ev+wyg\nUPFKRvAZmWZI9W4SoyIxXZ9FLmraScfgtJsUJqd4ghcj3/Z1jWDr9v1w2c3oQfZJeFrFUvU6Dmct\nqFWcP1viJ1Pau0fQP+oXfV9q2qU2DrayhNrkgBXvRXOdMOh1sqaDdosp41B5QFuAWJImXblZVE0w\nS6ndgzQVoNhjKUcEnxGAGZH4SmJUJKZbYiUXpYGkY9i686Die3YVMjAagC1N7o+wOnA5zOD5ZMmf\n3gGfqmkOSAqeQa9TvKTUEoNlviCjDlVmA8b9EVnQRCAcxz3PvJ1ylSbdx+xamxippxYYAcgrKrgc\nZljNBgTCMQx7gphda8MPv75S1s9o7apmdPWNwR+MwmYxYu1FzZpjSFWNIx1qIldK7R6kqQDFHgtR\n+pAYlSnK1tf+ac1CM/FZNc6y4tiA+gxNzwGfWNSgetx/++mbslk9x8mFTu3Y7CpEmtQqa10RjOCu\np/+KoESoWCESqjP0DfnEMGsAsFQZZeYz6YvSF4jIwtbZFYtQiqh3yI+t2/dj/WWLxe92vNkt+p8i\nXqXpUEqq6+5ymBGOxGQirOZ/kq6GBhjzI1vAtpCwqQAUSUikgsSoiEynhhn7smZbPQDZzUK1QqMF\nrGY9Nly5DI++8p7qdrNrbfKachJT0bzZdhz6eDIk3GExYjww6aNRm+FnGoRht5hQZTTIxIhFqHDx\nw+ffltXFc1jVb39fIIKNz7dpRhay/qW2v/cjHI6JY9RKXlYzobHXXU1s0kX5pVpdZVJZIl+wqQAU\nSZgdQgADADGIQaASgxlIjIrIVGuY+QIRxOIJWM0G8OBhNOjg9ctfnFqzUC2fwtpVzfjwmAcejeTV\nJc21qLZN5uew4dnSlQ9rKmIfmbmNdhj0uskQ8UgMj7+2X6zirdb0DjxkK7+1q5rxyh86cajHo2kC\nBCZymIRade6Q7LtZjirV37BVMlisZr2sll94oop4e/cIljTXwmmXi8WYP5IM82Zyt7r6xnDHNcsB\nQHGurbs78cir+zNa5aZMaM6gskS+2HDlMoTDMWo9MUWEAAYAMJnN2NftA8f5EQz4ccl5CysumIHE\nqIhMtYZZ6+5OMXcGgOqqQGsWquZTWHdpC7b85z5VIRLK7axd1Yz7tv0NB7qGAXAw6IG4ZNLt8Ybx\n/Wf+imA0oQgRZ6Wi42M3OI4TTWYHPhoVv+vp98qETrpqyDQnCkiaAmusRtz5lU/gl3/sUs0H6jkx\nrlqUli2nxHJKgx2nmY2KArNCztjZp9VhxeIGWfKw2ljdEya8dZe2iBOE1l2diMUTitwog16nuTpK\ntarNpLJEvqi2UeuJ6SANYJgJkBgVEa2XyHRahXMcsGSeU6w64LKbZb2DWB/CwKg/pUlKKLeTqi8Q\nkBSc46NgaZ6DAAAgAElEQVSZ+QSS72/t1Qy70jnYPYIQU4SVNZUpxsMDnE4He5VxYgWmxOOPwuOP\noqffi30fDmHTDeditsuW1rTl9kZgMRuh13OAyqZub1hWsy+VaLZ3j2Db7w7JmgdazfLHUlrPL10B\nXWngiNpqpJSi7QhCColREVm3ugWxeAKHekYRjSVgMuqxeJ4rrTkj1UyY54G+keCkOUgSht3T74We\nsTN7gzHVl6U0IAEorvNZbeVnsxgRSfGSB5KisHFbm2Y/JCnROI8fvfQ+Hv3WharllKQMugPoG9Ze\nPUkLorL/VhzkMhwIx1XEkhVq+d9TLaALlFa0HZEaqc9ISqUmwZIYFRh2ZsrzPELRpKlHeGlqOazZ\nEGOH1YDaagsO9YwgFJ18YaVaNQirDo4DnDYzTDqNDTmg69gYtryyF7NrbVPOL8oErZp2bNSddPtA\nKH1hVgCqQltl1CGe4GWRdQDgnQiqYMsSsbAdYhXHlBRElYo529BvEvkLRYgcHBj1wxuMIRjKXUmh\nXDdoJPKH1GckpVKTYEmMCky6kjKpTDJswMPCk2tUTWhsAqcaPJ98aWrNq+KJ5PduXzJ8efnCWpy3\npBHv/n0A8UySeDKAA7D8tDrwPK/q09F65yd4IByd2iCMeg7xRAJRlcUSzyfNaopeTbFEsi7eBA6r\nspUFy/uHh/DNh/4XVrMBp9RbAQBhjRWakDzLTkC27jwoRkgCyS61S5pnTSsQIJ+VP4jckspnVIlJ\nsCRGBSZdSZlUJhnWsS74f9gwaGkCp+BDOHBkRFVEMn2lD44GML/JBb1eh3hMuwZdNvBIFj1dt7oF\n9z77Njz+1H4gLVjTVyrY1RCL8KKuthmx4KQaWUsIMdpv4voOuP0Y90UQiSUQjiRkvq44zyMe4xGJ\nReDxq6/iZOIiqTvXuqsT61a3KO6VBpdl2ia1XFWGJ4hcQ2JUYLRKymhVgpbOXLW6k6r5DNi/2Ryb\nbDkxGsw4QEGNk+ss8IfiGPNFZMLx7uFBxGIJ1NWYpy5GGua8bH5vMckrPIz7o5MRbfBi+cJa1Dst\nGPIEkxFwEvOpyWrGQy++oyn4UqTt0aX7UOvyy94rQoj4dAIPplv5gyDyBYlRgZGViqky4ov/sACz\nXZPht/2jfvScGMdYIAodOHj9ITyx/QO4vWGEInIxyiaHpNFlm5YYTdcyN+gOqa5KeB4yE1gxWL6w\nDga9LmW0oHSCwIZb+4JRDI+FNH8rRUjAZVHz5dz2pWWIxpIBDuFoQgwRT9VKnqgctAIYgMoMYiAx\nmkDaKE1a9DLXyErFqFSZ3vFmt7hCiINHR++45r7Ucki0QncFc0z/iB/Hh/058/tkSjrzmBaZmOBS\nNfRLt+8amwnRaAyD7mhW5r6Oj90ZRenJjscB0VhctfW4mi/HbtFu2UFdYysfrQAGoDKDGEiMJlAr\nqZKPBz1dNFO66Ca9joNex8FWpV6AUyt0VzDPbN15MGWkGIvRkGxkN9UX/nRRM8E5bca0Jj2jnksr\ngDwAj1/dp1NtMyIaS2iWGcpWiIDkeezrGsHzv+tQBCxo+XJS3Q+KflSUQ1RRpEt6rbQgBhKjCQoV\n8poumildjbh4gkc8wSPiC+MHz7yNMxfUYv0Vp4svHXbcQsdR4eWU7XktX1iXskxQvmFFsNpqxCkN\ndkSOewHwaGlyoueEVyEoU12JCcxyVKHeacm6orbTZkTzSTVo7x6VVWeQohUxqTb5SXU/sPcO5RAR\n5YxWlsmMQ00U8sG61S04+7Q6WM0GWM160Wyj9r2eMQWzf8cnZtqtuzoBJGfGbJtroeNoW8cgWnd1\nZnRe+gmHvtVsQCyWgJk9cBoMWW6fDf5gDAe73WLL9o8HfLjpqty/cIX6dy6HOavzcTqq8K0rz8Ky\nhXUptpILZXv3iOwekLJudQtWLG7AqbMdWL6wFmefVif+v1BlY+vOg/AFlY0PKYeIKCdoZTSBYBaR\n+ozygd1igkGvkzWt27itTVap+VtXngVfIIK7f/43pqGauldDeOmka0gnOMXbu0c0W4cDSZETzFBT\nCS5YPNeJg93urH+XCWypILc3jN1vH8PZC+syHqvJACxb2CC2XJCa4owGHZYvrBNbpKcq5aOGIPap\nSvSwEZOBcFz0/6iZ2tRWN5lE31EOUXmTKoABUFbyBsq7mjeJ0QSCT6W+3oGhofzYYoUXzX7mpSmN\nkorFE/jWlWehdXenorOnVnVqp92EJ7Z/gH1pXsZOu2liFZXfm/Wj44W1ZQsia9jViYMfjaT150Ri\nEF/89z73jkyMDLrktfEFo2jvVibipoIDEAzJw699gSi2/GKfGD35jc+fAXuVEXc/LZ9oSCcUmZja\ntKLvhP+nHKLyJ1UAAyCv5A2g7Kt5kxgVkEy6en7QNaJqcmEd+UJuTEuTExzHyap4q2E1G8BxnOz4\nZgOHWJxHAtPL02EJRwrbQ6fKyGHjtjb4glFEM0zI3fxCGzzesMLXFIwkK29PpfsqD+BgT7LOnCAk\nUn9bxBfGxmffwcn1dpiNepkYCfXsMjW1saugQXdATJZlgxYosKE8oardeSYQCOCuu+7C2NgYotEo\nbrrpJlxwwQWFHkZRYF8spolINamvPc7zuPXxPyfVRgIrFkJuzJAniEG38oWl5zjZSmpJ8yzF8WNx\n5DzEm0Pu95mOVOHvWqQKElFDr+NgMuiyiqIT6tFJicZ58dh6bvJauX1hbPvvQxmb2oRVT3v3qOg/\nEwSUXUlRYANRDhRcjHbs2IH58+fj1ltvxeDgIL761a/i9ddfL/QwigL7olm2sE7hPwAmXlAaSxW9\njsMnWuoRjcVTzt5tFgMWnFwj1lcTfCDS4yemncqqpEgR4Hmn2mbCHdcsx4493WJnXrNBhwF3UPOc\nnXYTevq198mu4Tp7PfjRN1cCSG9qE8zKm19ok/2bqq2k1FZbWqslWkWVDul8RixSH1I5+o4KLkYu\nlwuHDx8GAIyNjWHWrFmFHkLRkDq1nXYTYvEERr2hjHJiBPQ6TnwJpWI8EIVBr8O9161IvmB2dWLA\n7YfLbobdYsDsWhsOfzyC8WD2+TIzEbc3jF/+sQs3X7UMvkAE2353CJ29HlSZ9LBUGWAzG1A3UYVd\nCFSIxVObDJU5VFzWap7JSkptG63VklbzRRKowpPOZ8Qi+JBCwcGy9B0VXIwuv/xy/Nd//RcuvfRS\njI+P45lnnin0EAoOO9u87UvL0LpL7j9yOcwIR+KKoAUWm8UIIH0+EgAc/GgE/aN+bPnPfbKosGA4\nAl8ohnCsUtcxmZFNxQUAOHAk6c9r3d0pW80GI3EsWFyjMH2xEwa2VYYO8tWRycDh+dc7ZF1eAW2T\nmi8QQTQWn6j8zmHRXKdqMz2hRb2Ql7VudQseeXW/bDth9aS2iiIzX3GYqs+o3FZEAgUXo9/85jc4\n6aST8Oyzz6KjowP33HMPtm/fXrDj59MMobVvtYeZfegdFgPmNdrR8fEoojHAZNIhEU8oBOPkWgt8\nwUhGfXKCkbhCiAAgFOURimYXslyJ2C0GeIOZB1vEeeCZ37SrRgu+e3gQ//bTPWhpcopJyI6JiYMW\nsUQyJys2sSr2+KP44IjcZKtmdhPuM8FfJGDQ6xT3Mtui3mjQqzb9E1ZUap+nC6og0x6RCwouRu+/\n/z4uvPBCAMDixYsxODgInuc11dzlssJg0Kt+NxW2vdgmEwaz2YC7rl0h26a+Pv1sZMwfwdPb92Ng\nNIDGWVZsuHIZtr3eobpvNmLL44/glEaH7KEPhOM4Kpltn7O4ER09owgzBTgP9njw8v98CKNBL+7n\n7s+ejpd+fwhv7T+umOkHQlOrhD0dTAYOkTJYdWUjRAJa+VM8n/w33Nc1gu/87C84ucGO3n55YIVa\nSaU48yH7ty8YhdlqRrVt8uUuvYelePwRxb2rdu/V1ztwyzXnYCtz/1bbTKqfb92+X3avntLokB0n\n1TOVybNEqGO1mOCwV2X9Ox0iqKtzoKamvK59wcVo3rx52LdvHy655BL09fXBZrOlXFa63YGcHv/Y\ngFfxtzSvKNM8I2nS4Ye9HrR/NKLosCrs28Y00LOZ9bj6M/Ph84cnWk5z8AXkL42Pj4/BWqUHxpTH\nlja4+7DXg3A4hg1rluL9jkGFmS9RhKJyBr0ekVhhw7tLiUgsge7jmUX46ZioR0AeZTc8FsKjr7wn\nM4ux97CA02YS711htdI36NPcZv1li8XPw4EwhgJh1c+v/sx8hMMxceVz9Wfmy54RrWcqnzl75Uym\nAn287wSqRlVeAGkIBQPorjfA4Uhe+1IKZkh17gUXoy996Uv43ve+h3Xr1iEej2Pz5s0FPX6ustRZ\nU4WamUzYN3sjxBM8Wnd1orPXo1kJoX80AKNBvVoTG+uwv2sYW3cexIKTq3Hgo1HZd9LACKlJCNBu\n9z0dqi16jE9hxTFTMRl0iMUTsn8n9t+XvdfYe9hq1mNJc63MX8TmtKltI5DOzJauBxJVfsgP2QYw\nCEiTYcspEbbgYmS1WvHoo4/mfL+Z2q1z1ekyVQABxwGfXNQg7ntkTP4y6eob06wGLRCN84jGk9tY\nzHpEmE6iUiKxBNo6BlFl1MFpMyEcjavmw7AmoHwsmig6T45Rz4HjOPA8rxoxKfw7pYqo7B3w4YnX\nPsD1VyyWtQMZGPXDG4yp9rVSdom1agrKdAIUtAIkiOlDSa9lSqYPVK46XUpFrXfAJxMKi8kgOwbb\noTUSya5td+NEZ9B0VQFC0QRCUe3q2rmsskCkx6jnsOmGczHbZVPkA7EkV8/q/0BxnsfermH0bGvD\npvUrZO1AjnYMwu0Ni21BhPsum9XKdAqsagVIEES2VEzV7kJXLBZeCPdetwJnLaiVfbdorhNActa4\ndedBeANyE55RZQpgMeuxfGEtTCqmOSEnSa8rDbvvTMQ4hUrk0TiPHXu6AaQ3XdnSRN4BSVPwxufa\nxArf7D0umGuFaEuh2veKxQ0pVytqFeuFe1daFVwNqhRO5IqKWRnlw26dqenv+isWw7CrU2H606pF\nt3jeLHzc75NV2F460Y5aGhgBJPOPMqk9R+QPwdQ2lfoSA6N+PP7afhz6eNKXp+OARU01MJsMYoLs\n2ouasWNPNwbcfngDMYTCMVVTq9Dhdd2lLYp2IYK5FtDuj6R2T6uZrqV5cKksDeQvyh/ZVmBQQ62y\nt5RSCm6oGDHKlS9IynRNf2q16JZNtCcAgOd/14HDRz0AeLGvkdp5sAmKRGFJ+nKmZuM8NuzH0UF5\nZ90ED9itZsU9I/3bF4xg238fwoEjI4qAhncPD+LDXo9qh1pAe3XiC0Sw8fk2MdgmVWO/TFc8+Xju\niCRTDWCQwlb2llJqwQ0VI0a58gVJma4JwmU3oweTs8aWpuQ/+iOv7ofLbsaRE2OyvkZCTxv2PDKp\ntkCUJgkN92C6e8luMeHmq5ahf9SPjc+9Iwtu4Hll/pAUl8Ms/r90JaSWHJ1pVXCtFU8+njsiCQUw\nzDBYs8Ut15wjfjbI5DhlY4LwBSI4ckKeI3Bs0AePP5mLJBUpAcHmz5oD161uQVffWNaN3ojSZdAd\nUPxbq5nQdrzZnXUL9Wg0hq07DyYFyBdJ2XAxXVVwWvEQhYLj+dKOscp30hzro7lg2UkIh2NMjoYB\nLU014DhOVgU7VdQQu18gaaaLZNBv5+zTki2rBRNeS5MTo94Qjg4ol9pEeaPnALPJgEVNTvDgZTXv\nVixOdqPVWhULvqx4gpeF7bPtQ7RwOcy44/8tx443u/NSyoeSXtXJNOn1sW2/R5XFmrdxhIIBXPSJ\nuXA4qsXP8u1DmlbSq8/ng91ul33W29uLpqam6Y+sBOgfkb/g+4Z84JkEnAaXBUaDPqtcDDXzR7oq\nzgIdH7tlzut9XSNw2c0pfkGUK3EeCIRj2Ns1PFHwdBJBIKRiJIiXyaibaNqnFJ10QsS2VqciqKVJ\nLnxGqSi1TrFpxWj9+vV4+umnxVYPv/71r/HYY4/hjTfeyPvgCoEvJM8B8vojaJ5TnbZYZHv3qKy9\nNDubVPPzCBqn13GKBFQpkajyBrSYdDj1tDp0HHUjEkkgwfMV2zuoEjjtZAc+7Mt2VSCfkY56Qxhw\nB8TGfovmThZh3fjc22IHWUCtHYV8r7KveF68Z9n7un/EL5r4qOhpcSGfEcO3v/1t3HDDDXjwwQfx\n3HPP4cSJE3jllVcKMbaC4LAaZL6YaptJZi8XcnzYbqqBcAw9/V5Fz5f+ET+8gSjCKoIikE6MDHoO\ncabQaDCagEGvk1VuSLadiGmWFCKKR3e/L/1GDIvmOsXuvWywQTASx8cDk/tkJ1EGnbyCg8thRo0t\nWZ27b9CL46OT9280zovBMuykyReK0UqJKAppxej8889HXV0d/vVf/xWrVq1Ca2trIcZVMBpdNpkv\n5qR6uyxCiPX9CKYUqQCwPV/SYTXrU/qOjAYdwjG5wDisBvQNymfa3kAEZzbXYm8X5SCVGrEsgg44\nDqixGjHsCWJ2rQ3f+NwZuO8/3lNs5/aGRRFhJ1ENriqcVOeQBxzwyfQEtcg7YUXEBioMuP2y/bZ3\nj8IXjNDqiMg7mmJ0xx13yBxZc+fOxZ49e3DnnXcCAH7yk5/kf3Q5IlXyKvswbrhyGcKSiglqNb7Y\n0jxqZrxUBCMxseOqLxRTRMmprXQaXTbs+3BI9lksniwTwxZAJcoLg46Dxx+Fxx9F75Af73cOaa6c\nBTPasEd+z5xU51CsYNSCaASEKgvsc9G6q1M2OQuEY6IAEoUlF0mv2cAmyBY6IVZTjD796U8XbBD5\nJlXyKpsnUW0ziaX0AfV8C7Ww1+f/u0M1XFuNcJRHOBpGOBrHoiYn4vEExgOT7SfY9xDHJUXz3QxX\nXkR5wYZupzLhegMRsQ4dkKzmUGUyIBZLKFYw7ATJataLk6l1q1vw/O/kXWVj8QSuv3wx2rtHFCv/\nXJBqUkgN+pTkO4CBpdjVvjXFaO3atQUbRL6ZTvKqmvCoJfqx4QQ6HVBl1GP+HAeODQdkzmYBIYrK\nYtanrNqsA9C6q1PTSV0axTyIfONymBGKMP2qJNF4BskKxheIKMoFAZDdw8nUgUkOH/XAbjFhSXOt\nYuUvZarCwbZUj8UT+NaVZwGYXuXwSoUCGCqQ6dTPyiTD3BeITDTJm2RugwP3XpfsdukLRtC6qxPv\ndgyqRsClaycR54G2jkFYTRwCEeUeonEeVUYOoSiZ6iqZGpsJ4Yh2ryjpJGvb7w4pkl0D4bisdp0y\nLDz5d7qE16kKh5r4qY1d7W+i8pkRYpTPbHKh3hfr55GWZBEE7aaf7kkrPKngocOKxbUKMwoAEqIZ\ngMcXThk5OeAO4PYn34LdYsDxYe0E6fcPD+KHz78Ng14HYHJ/LU3JavPpJmBa1cLTr5DUxQ+ggqtE\nBmLU29ur+Eyv16OxsRF6vV7lF6VHPutnte7uVC3To1bYgpu2QY1HV9+Yah4SUfmomXqlBMNxBMPx\nlOV/gORKWwhSkIaAr13VnFGOESscbLVwLVqanLIKE4L4AVR+SI1CBzBISVXtO1+BDWnF6Bvf+AY+\n/vhjWCwW6HQ6BAIBNDY2wu/3Y/PmzVi9enXOB1VOaJkT1F4ci5qc0wrDjsV5qk9HyDAZdDDodWLB\n3WypsZlEc7I0+i6V+U0Qiv1dw7IUhXSmtfVXnI5WlVYrABVcVaPQAQxStKp95zOwIa0YXXTRRTj/\n/PNx4YUXAgDeeustvPPOO1i3bh02bNhQ8WKUzlmrVVFbzcxw/RWL8cHjf1a0BFCDA+CwGTGv0QFv\nIIp6pwV7OymajpBj0OtgNurTipFW+L/UnJyp+U3aaTZVoAMLCU52UAADw4EDB3D33XeLf59//vl4\n5plncOutt8JgqHyXUzpnrTC7E5qi2asMmF1rk836+kf82PKLffAHoxkJEQAsW1iLm69aJoph36AX\nGdRYJWYYgXAMgXBMEY3JVvnQykOTmpOzNb+RaY3IJWnVJJFI4KWXXsK5554LnU6HvXv3wuPx4P33\n3y/E+IoOO1scGFXW7ko329vyi31Zm9cEM182lR2ImUuMyU0yG3UZlYmSmpOzNb/RSie/FNNnpIWa\nLylXPqS0YvSTn/wEjz/+OF599VUkEgksWLAAW7ZsQSQSwf333z/tAZQ67GzRG4zhqGSlFI3FYTTo\nFWY8qXnPk8ahrHVcICl+xMwl02bnbLzM/JOq0TccgD8YBc/zmjlswn0mvV9tVUZEfGHFNkRhKabP\nSIt8VvpOK0ZNTU3YsmUL3G43dDodampKo0VtoWBNEf0j8tpdnb0ecQYqNeNNZ0Vj1HM4PuzH7U++\nlTYyiqhssgnYd9pNcNrNqHdaEI3FZfepy2GGPxiVrXisZj3WrW5RtCMXthei7KZjfqPKClOHfEYM\n7733Hu666y74/X7wPA+n04ktW7bgzDPPLMT4Cs6YP5LSDLd150FZORa2/oFg0mBNG3odB72Og9Ws\nx+xZFnx4bFzTfxSN8+hLkSdCEGp4/VFUW43oOjYGb0A+iQlHYlhy6ixZNOeS5lrYLSZs3XlQYUaW\nRtlNB6qsQGRKWjF65JFH8NRTT6GlJTk7+vvf/477778fL7/8ct4HVwye3r4/o4AFob1EzwkvpM+9\ny2HG1p0HFS3LP9FSL6sEHufH83kaRAWRaSHcOM/j6KD6JCYQjuPIibGJqvMcFs11yu5lllyZ5qiy\nApEpacVIp9OJQgQAZ5xxRtkku06FgVG5iLAPD9teQlqe3+UwIxqLi/W3AMBi1mNpc63M1EEPJJEO\nZUfX6TPunyzGy/O8aC5T6yYbjcVz0join5UVKt0EWIoBDCypkmOB7IIbMhKj3bt3i1W833zzzZIQ\no3zdiI2zrPhQUmdO6uDd9rtDEzXoOCxqcmLEK79RamwmfHRcnnPEgVOYJZz2ynlgiPyg0+uwpHkW\nBtz+nImRFGktRWGi1N49ikA4hjifbHWfi9YR+Qz/rnQTYCkGMLBoJccC2Qc3pBWjTZs24d///d9x\nzz33gOM4LF++HJs2bcp+1DkmkxtxKoL1lc+ejvaPRuAPRmGrMmLtRc3i8aSlTPZ2DcOolyt+vdOi\nMM+puaDZmcKZ82fhSN8YdWwlRKITOT4uu1n1e50OAC9vN6LnOJzcYBXz3eqcFvA8j5GxEOPnBKS+\nTmG1v/mFNtkqJhcr+HyGf1e6CZACGBhOPfVUPPfcc4UYS1ZkciNOZeb00u8Pic7ciC+MHXu6sWHN\nUtX9S8NljXoOB44MIcwULJXW3xJgncXeQFRRtp8gAMAfVI+mTCSS91xCcg+etbAW11+2GM+/3oHD\nRz0YGQ+hpcmJOqdFIUaL5irvy3IrVlpu4yVSoylG11xzTUpbX7EDGDK5Eacyc9LyGWmV/RGIxnlI\n65dWGTmcuaBeZpYQVmrs6slpNyEWTyiy5gkikmKxHI3zcDnMsFclOwaPjAexcVubLB1gX9cI9Dr5\nc6znOAx7gopSP+VWUaHcxkukRlOMbrnllkKOI2syuRGznTn5AhG4x0OKfQjHi8bi6Oz1gOeBWDyh\nmUgIJH1t7CpMLfeo2qLH4V7PtFpLEDMXIReorWNQs8oHO8GJ8zx6h/ziakmr63GpU27jzZZyCGDQ\noqrKgmAwu/QUTTE699xzpz2gfJLJjZjtzKl1dyeGxybFyOUwi0mBrbs74fFFsKS5FtFYXOY/UuvS\nqtaRVW1lNh4kESKmTr3TktGKX2g5PugOZN1SvNKj1kqVcghgUCMU9OO80+vgcMyBw1Gd8e8qutJp\ntjMn9sGssZnEpECp7ymZqzGJwaADz8dlhUyNRp0ieTadqY8gUuG0GXHTVWdi99vHZPdV665O2X2l\nNjla0lyrWWlbEJv+ET98oRgcVgNmOarAcRzc3jDGfBHR9FeJUWulSrkGMAT8Xjgc1VmXCKpoMcoW\nLbOecvYot8EHw3FUGTlZscpIJKYInli7qpmCFIgpcersyTb26y61iiuV1l2dYsSntGSVNGDBajaI\nVgGpuRngEIslsO13h2Qrfbc3LDbfU6PSotaI0oDESMK61S0wmw04NuCVmfVYkVo014nDRz2yHjI6\nnR6A9t9DniB2vNmd93MgKpOefi9u+PEbMBv1MBp1YgJrT78XsXgC37ryLHFbtmSV2aTHI6/uh8tu\nRjAcQUfvZPWPvV3DipV+OihqrTCUq89Imgib06TXUiIftmt2n7dccw7CTF0vNd9T6y55MMKiuU7w\nPC/OOE0GnaxMUCrbvl7Hodpmoi6uREoSPBCMxBFkQuwO9Yziie0f4PBRDwAe8+dUY/nCWnh8EYz5\nI3B7w3B7w+iBlok4/csiV4VTicwpV5+RkAgbCg7mNuk117z22mv49a9/DY7jwPM82tvbM+6NlE3e\nUCbCxVYr7un3Yuv2/Vh/2WLZdlLfky8QQeuuTgy4/XDZzbBbJpvpte7qFJ3DgXDSdj97lhWza21Y\nu6oZW/5zn+pYDTrAQ0JETJFQNCErQXWwx40Vixtw73UrsPmFtrSTnEVznTDodZo+o+lO/CgAYmqU\nq89IINseRwUXo6uuugpXXXUVAKCtrQ2///3vM/5tNnlDmQhX6+5OxYPK5hkJCA9Ue/eILBopHI1h\ndq1NdTzROA9fKIYhTxBbXtmn2Q4iHKPcopmKUc/BYtLlPKoy0/w4o57D9ZcvBnjkTTAqvWwPkRuK\naqb72c9+hocffjjj7bPJG8pEuNQ+a5xllf2tJUICgXBcfNBcdrPCFCKYSAhCjWicR5PLgvGgL6f7\nlebHAcl73eUwwxcI48O+5D1q0HO48ytnq0aMArkTjEov20PkhqKJ0YEDBzBnzhzU1tZm/Jts8oYy\nES52G5fDjA1XLpP5jDJtkjfkCcJeVfwCskT58dHxzIRIz0GzB5aUaptRfDYEE7MwqeobnhSCWJzH\n7rePYcMaZ14Fg8r2TI1yDWAQ4BOJ9BtJKJoY/epXv8IXvvCFtNu5XFYYDMmXfD2Ae7++MqP933LN\nOYJBBZwAACAASURBVNi6fT8GRgNonGXFhiuXodpmymwbyXbSFhGpOKXRgX2dQxltSxBTIc4DdTVV\nCEXi8AWjmts1zrKhea58krftxTbVSdWhj90wW804pdEhE4zGWiu2vd4hPhtf+ezpeOn3h1I+T2rU\n1zsyehYJJWYTB4ulPCe4wUAAl1+4CE1NJ2fsO+J4Xq1WQP757Gc/i9/+9rcwGFLr4dBQYZNE6+sd\nsmOySYJSpG2e161uwd1P/00W7l1l1OHMBXV4v3OIas4ROUHHAbNdFpwYDWq2JFdEvvHAXU//VRGF\nJ25vN+OOLy/Hjj3dotUhFpcHRbgcZpm5ecXihrRmPPZZIpLU12cWlPAfO9vKNoAh4PfigjPnKCLp\nUp17UVZGg4ODsNlsaYWoFFi3ukXTX3TqbAduvmoZgKRvyWSUh3NXmQ0Y8gSRYPSe44BT6mwqZf0J\nIjUJHjg+qm26Meq5yVDufi+6jo1h3my7phABgFtSnR5I3st3//yvsm38zEqM/D5ErtEV46BDQ0NZ\n+YqKid1iwpJm9bFKm54JtesEuInve/q9ijp1OnDwhWIgiFzBIblamVMnD8Bx+8KyRnpaSMWldXen\nYvJlqzLK/ia/D5FrirI0WbJkCZ555pliHHpKrFvdgn0fDinqfUkfSHammMooF+d5irAjcgqnA9q7\nR2DQq80v09vsx/wRbH6hDfVOCwbc8hW7XsfhxiuXKGriEfmlnAMYQsEAeH52Vr8pfTsZQ6ET6ITj\ngeMglZgqo072QGZSBJXj1Kt5Z4NBzyGWSUgVUZFwSEbVsalpiQQmVjNKc9yiuU4c6hlBKKp+33CA\nzLTHdpeNJ4SoO8oNKiTlWoEBSI49W8pOjNgEuq6+MZmzNlfClC6/aPE8F1p3TYri2oua0d49Kgtg\nYMlFqAgJ0cyGB2C3mWQmYS30HAezSQ/wwOJ5s2TFUGXb6SCrOG+3GBCOxrJuNUHklnKuwBDwe0u/\nAsN0YR8K6YwOgLxszzRWUFr5RUaDDnaLEYePekSnsFCs0mzSy8RIz3GIFydYkahgAhn6G+M8j0A4\nhr1dwzj7tDqsWNyAIU8Qo+MhjAcmAxKsFqNYeBUAZtfaMLvWptlqgsr6EPmg7MQolTmMdcJOJ6Nc\nayZoM+tV/T1sFW+Xw4w7rlmOjc++k7IjLEFkSySWXTIhkLw/f/TNT8FuMeGJ7R/IwrbnNTpQZTKo\n+oO0igNTWZ/8U04+o6oqi8w1GQxkHylcdmIkrcIgbfoFpA4oyNbMwIqe1WzAkuZZOHBEK7FVLjg1\nNhNmu2wTS1USI6KwsA32AuEYWnd1YsOapYrJlDcQxa1XL1fsgxWafFVpoBWXOuXiM5rs7Crv6ppN\nl1egDMVIVkE7GJH5bVIFFAhClemNr1Z6yG4x4d9++iakfYqA5IOfYEpfCMezVRkR0SiQShCZoOOS\n+UWZYpyoOffTX+xX9ftMtTxPvsr6UCFVdcrFZzTVzq4sZSdGUlK1FdeqY5fpja+170VNTuztGpZ9\nFo3ziE4888IKau2qZmzdeRDWKgM8vjCtjYgpk23xjmicx89eOwgdE+XttCcnXdnUeJSi9Tt2grd2\nVTN2vNkNjz8Cp82UdqVDhVQJoMzFKCUaDzB7o/eP+LF150HxQVr/+TOx7dfJv512k6Kny/VXLEbP\nNu0eMQ0uCzasWaooI8SaTTJlxeIGHB/2o2+YqjUQk+g5wFKlh0+j9YRaTUUhuinVJC4VWr9Ti3Bl\nn49Ux6NCqgRQwWLEPiDt3SNY0lwrzg4FfKGYbLvuE29heCyk2F9PvxcHjgzhzAX1uOOa5fjlH7vQ\n2etBOJqQ1Z0THqT+Ebl4ROM8qm1GhMOxrPsXzao2kxgRIi6HGZvWrwAAtO7qRP+IH8eG/GlX34eP\neuALRrLyx2Ri1mYneNmWDprqSq3SKZcAhmyrc2tRsWLEPgBC36Ez588SQ1yFbHPpLM4b0M7fCEV5\nUbiMBr3MHm8167GkuVY0zx0fVjbpG/dHocsu9B5tHYOothnTb0hUBDpdMoFVDYtJD6NRB4fVgNZd\nnVi3ukVccWx87u20tQ6lQQyZkolZm13Z2CxGRLzqgUVqTHWlVumUQwBDKOjHxZ+cn3WwghoVK0Za\nIeBH+sbx5K2rxL8ff20/jg5MPsTWKgPC0dQJhWozvbqaKgDAff/xrmqSrMBUindLc0AyRa8DdNzU\nTINE8dASIj0HLJ1fi7aOQYz7o+I9K7zEZ9dmVniXNUvnwp/DrmzWXtSMHXvkPiMie8ohgEEIXsg2\nwVWNihUj4QF49/AgU/mAraAtv4jzT3ZCB6SspiDM9KRid3TQj6ODpWNK43kgSm0rKgYeqYVBKghS\nX+eYPyJb+bNmaUC50pGa5saYSg9jvojC1Ke2stmwZim1kCCyomLFSHhAHn9tv6wMSkuTU7Yd62jt\n+HgUD37jU3jk1f0ysdFzwEl1ycx06UwvXQmgfJIq5Jd0qLLgkcbRL/n3Nhr04opHSH/oH/HDF4op\nmvJJBU2rBJY0+MbtC2PjtjbU2EywVxlwbMiHQDgOW5URd3x5OWa7bLk98RlMqfuMqqosCAZzNwGv\nWDESWH/F6Zq5SIDyAfcHY9i4rQ3zGu2y7T6xqAHrLm1B6+5OPPLqfnFfrGgJWM0GmE3q1RpyBQlO\nZaKWJl1jNaZ09LO+nVg8AYNeJ25b57Sg98NhsEgFTasEFpu4LZTgkhLxhbHx2Xfw8L+dTwmrOaKU\nfUaTia5zcuIvAmaAGKVzjq5b3YKD3SMISmaCbm8Yp852yAIdtMqhqPmmjHoOdU4zZjmqwPN8RkUt\nCUKAFaJkEusnxHtZWMEIk6K1q5JFeqVIy1P19HthNcsfdZNBh2UL6xSlf9RgAxK0iMb5rAMkCG1K\n2WeUq0RXKRUnRloJeFoOW7vFhCqjQSZGQFKQ7r1uhewz9mFt7x5BnbMKTrsJoXAMOh0Hk0EHz4SD\n+eiAX/ESIIhs0Os4LG2uhV3S3E4tr4c1FfNMgV7272UL62Si4QtEMMbkJokJ3Bc1T6YyRBIpi/+2\nd4+IfZFuueYccd9U7odIR8W9KVMl4Gk5bO0Wg6zGHZDMVmejjthVUCAcF6OaVixuwIY1S7H5hTZ4\nZNFvZEsjpk48wWNv1zAOPvkWZs+yYnatTdH8js3rsZr1MBh0slbjRqMOS+fXapqrW3d3ykxvQi6T\nIBrKVAYD5p/kQMdRj6ytSSAcR0+/Fz39Xmzdvh/rL1tM5X6IjKg4MZpKAh4bFutymMFxnOIBktrs\nB91B2Wz0+JAXt//sLXgYUWtpcsJo0Ccjk5jIJoLIlGicR++QH71DfkWumtWsl1XyXtJciwG3X5YS\n4LSnNlezz0WNzSRbvbDfN7gsuO1LZ8vqQ7LPxMBoQPW3VO4nM0oxgEGozj2VqtzpqDgxUiTgMYVK\n1RLwpCJzSqMDV39mPh55db9sm/buUdFGf9uXlsn8RwAw6AkpcnqWL6zF+itOFx/qzS9olxECAItZ\nj/qaKpwYCVB+UIVj1HM4ud6u2Q4lVa13NnDllAY7TjMbFf5Naf5cY4ooN18gogjhZp8TrUg+qU+W\nLYHVOMua8rdEakotgIGtzp2rwAWBihMjrQQ8NfMEa8u+7UvL0Dy3FkNDXhWTXEw0P6gdZ1/XMNjX\nh9Ggl80u07UmXzSxiiqlfCUiP8yps+K2q5fh5sf/rPq9w2oEj2R7h3QcOT6ORUzKglrknZbvpnV3\np8xM7XKYFds77SacfVqdrE4jC3vMDVcuQzgQpnI/U6TUAhjyEbQgpeLESCsBTw01W/a9X18JgDXJ\nBRSl+Nnj3P7kWwq/E2uOWLe6JWVeEsdxZMKYIQy5Q9j4fJvm9+OBKPQZJrUHw3Exl07wkzosBngD\nMdgtk4+4lu9Gy0THrnRWLG5QBPVIYZ+JapsJQ4EwlfshMkKXfpPKJZUtW3iA7r1uBZY018q2UzMz\n3PHl5TAybw92O7vFhCXNszTH0949qjCXEJVJMBJP6z+cqqXW7Q3j6KAfbl8YvUN+tHUMin4dKdL+\nRlKEv8nXQxSSilsZZUOmtux0ZgZfIIIde7oxe5YVvlAMDqsBjS6bpikjGourhslGYglEfGG4HGbU\n2ExwOczY9+EwxePNUHLZI7i9e0RRfUSIGD0+7E1OpDgO9ioj1l7UDIB8PcWmmAEMbBtxID9BC1Jm\ntBhlasvWMjNMlk+Rm94WnlyjaZawW0y4+aplyd9PRCLt7xqWRUM5LAbUOy0Y8gRRYzMyoeLETEGv\n5xCP8zJBSi6+OdkkRshzC0W1S/kHwnFwHCdL5I7FE0zFBR5uXxg79nRjw5ql5OspMsUKYNBqIw7k\nPmhByowWo+nasrXKpwx5ghkl+gnHZ23z3mAMRyV/uxxmhCOxlNXAicojpmKnM5v0+P51n5QF5axd\n1Ywtr+xDKDpp9uM4gM1NZRO5N7+g7rMSzHHk6ykuxQpgyHegghYzQozylQGuZUOvd1qySvRbt7oF\nsXgCh496APAIhuQroRqbCbetX4Hbn3yLQr5nOIFwXFy5CGzdeVARPKNWJCFduLbWdgRRCCpejHyB\nCDY+36ZahUFNpOqz2Df7MAsN9oQCqlJY4WKPHYsnUrassFtM2HTDudjyyj5KnJ3h7O8axtadB8VJ\nVarAAo4DLCYDFs11Ksxswt9CRe9Uvk7hflXblkr75IdC+oykPqJ8+4a0qHgxYsucAJPCkCq0OxXS\nB7PaZkQ0lgAHDouanOLDyQrVoDsoe4Gwx9YzafV6jkNTo11mq5/tsuHhm87Hv/30zaK1rSCKTyQ2\n6evZsGZpyvw1nk/myBn0Ok0zcSawJmm3N6xo8EfklkL5jNR8RPn0DWlR8WKkNmucbuiqlq9ob9cw\nDBNVi4WouQ+OjCAx8UJo6xhELJ7At648S3GsBGNXMZt0uO3qZYqWFXaLCYuanNjbpWwHQFQ2rB9I\nuIfWrW6R1WBMte1U0fo9hXvnj0L5jIrlI2Kp+Dwj1v4tZJerfZeprTzVAyh1/hoNekXplg+OJKsa\ns/lE7D+EQa/DrU++hbaOQfT0e8VcEQC4/orFyEGXX6IM0Os4zG20YcXiBixfUCf7bsw/2XV10/oV\nWLG4QWx9wm47XT+Q1u/Jv0TkiopfGamFpwrmiqmGrqYyi0gfzoFRpe01nuBVfxvnJ/NKOCQz8FlE\nEeQBg46jYIYyQq8D4tqR1+A4QMdx4HleNoGJJ3h4AzHouGRJHqck1N/tDWPjc23Y9LUVCpObLxiB\nYVcnBkb98AZj6B/xy8zE2ZKNf4kgpkLFi1Equ/hUQ1elIua0m8BxnGrNLm8gO78Oz/yXRRC61t2d\nJERlRiohApImtTjPY/nCWnT2emRh/NLOqmzFbqENuLTdAyBPGzjaMQi3NyxWpp/KPU9h3oUnnwEM\npRCwwFLxYpQXJDpgNOg1Z5tqfZKmilHPyURQ7fs5dVacGKaK3+WCUPUgKkl49vgiWNJcq+qTBNRb\nzbu9Yc0Oq1TSp3zJVwBDqQQssJAYMYz5I4qmeqzQZJJD5AtE4AulXxnpOS5l50yBaJzHzY/9GdU2\nIxIq0+xonBfbBEhbBxD5hQNQZdYjHI0jkWb1I0VoXse2IpGuroc8QYz5IhlNaLRExmU3oweTZmGX\nw5z5IImikq8AhlIJWGAhMWJ4evv+tEKTyWxTLaRcDYfVCI9fWRxVx6nPgsdTlAZq6xhEtc2o+T2R\ne3hA0bI+HU67STSrafk0hXvOF4xklOysFUjAM0Zftv04QZQKRRGj3/zmN3juuedgMBhw880346KL\nLirGMFQRulMKaIWGpysgmak5xOOPwKjnUF9ThWA0gVAkhmA4ripEmZBKrIjccepsh6KzKYtaSR4A\ncNrN4mpbJjyBya6pQpmfHW92J3ckERWLSY+6mqqMAgk8TNQm+zdBlAoFFyOPx4Of/exn2LlzJ/x+\nPx5//PGSEqPGWVZ82OsR/07XGVZqVpFWVdBqBeFymOEPRmWFUaNxHic3OLBhzVJsfqEtZQM+ojSo\nd1rgsptT5nvpOPU2EGP+CDa/0KYwA7PmXzZ3SGDp/NqMgwmo8nb5kqsABrYCd6kELLAUXIz+8pe/\n4Pzzz4fFYoHFYsHmzZsLPYSUbLhyGcLhWMpwb63IIjYZ1uUww2rSYdATSpbntxhxxzXLsWNPt8JB\nLaykWBu/w2qEPxgVV0oOqxHzGmwY80fhC8WoNFCRaOsYxNJmF1wOM8Z8YdWVrNS1Z9RzaHBZMegO\niNFxbCM8b0D+b+kPyle5JoMOyxbWZRVOreh8vKo5rU+UKA1yEcCgVYG7FAIWWAouRn19fQgGg9iw\nYQO8Xi9uuukmrFyZvgRPoai2TT2EVa1jZr3Tgr6RIAAebm8YP3jmbZiMehj18jwhl8OMrTsP4tDH\no7J9+AJRmdV/8VyXaqVvovB8dNybcVkmjuPgD0YUvh9p2DaLzWJERPLdsoV1Wd+b7MRJet+kK+BL\nFJdcBDCUarCCGgUXI57n4fF48NRTT+HYsWO49tpr8ac//Ulze5fLCoNBX8ARAvX1U7sBTml0yEwi\npzQ6FD6oOJ/s8gkAdTVVcFVXoXGWFdFYHP9/e+ce3FZ17/vv1tN6OJZsJzYE0zgJTlITnMc1FNIQ\nDu2tb05oIRMSOuGYNj5lyrMtpLzuMKQJh065HNqhUJIyCU1Joe0hrym3FGh7eoAL95JAEoMDxglx\niBNjR7YlRy9LlrTvH/KW9177oS1Zlhzp95lhiKT9WFraXt+1fr/f+v3eO9ovuyY74fYFo5g+vVwx\n6IHIL3Fm1mq3mlTFKRpLSEyzWljNBjR/uRb/8j8W4HevfYL+oRBqKu24fU0TpjnUVzHDwSi27WlH\n/1AIldPKAPAYOheRnMs+N8LzlCnie2m1Ldu/JQKw2ywod5ZN6BoGRFFdXY6Kiqn/O+RdjKqrq7F4\n8WJwHIe6ujo4HA4MDQ2hslK5HLfXG1J8f7KYPr0cHk92Ppt118yWmPjWXTM7lcJHiXPBKOovmIZ1\n18yWZflWw+WwwOPxw6UxKKlhNnKYdUE5jp0+l/G5hJzIqHSqkKvktZfNqUbbyvkA+LH/j90vFIEn\npG6WVVstH+vxIRKJ4fYbLpU9N56hIG76n/8bGEv0u2HVfF1mO/G9xNcXM5G/pWJGr0D3nvkCZUPD\nWd1D8BOFQ0EMDFQiGp0amd+0vnveW7hs2TK899574HkeXq8XoVBIVYjONwSTyL3rkpVcf/7HdozG\n4lh8STWMCsnkhOzLv3m1U+ZYNjKH260mNM+fkfIBrL66PrlpMgNG4zzOeKam83KqwGZPzyccgMWX\nZOYTEqMnZ2JrS0Mqh5273ApfcBShSByhSAyHjw9oTp607nW0ewiBMK3Wc4ngM8r0v1DwHJrqHfjq\nwgvw36+YOyX9Q0rkfWVUU1ODlpYWrFu3DhzH4ZFHHsl3EyYdNpChef4MzJxhV92M+ukpH35221cA\niBzNK+ol1TxZR/NLf802JRBlWNXCajbkraIu6zfkAcVSD3qLQ+rJmSj2IW3ZeVC1vEo62HuFIjHV\nLBBEdmTrMzqf/ERiCrLPaN26dVi3bl0hbj0psINF36BUdI52D6a5Aq8Yoae2/6S1pQGfnPTJrqK2\nr0WMxWSAyWSm/UgqhCLxZHRbePLrRVWVW9DnUxYDdpuAkIVBK+hAHDnnLrcm/bOBqGpUqJJ46Q39\nbm1pwNHuQYlwU6ohYiJQBgYdpJuZsvtD2JQr4j9Yo4FDnIkDbqhzad5fKf0QW/+IA/DUD76KXa93\nyQYJMb5gFHardkCIHlErZvzhGFwOM2ZdMA0dJwahM+5AkWRIdxlmuB041uNFYGT8dxnwy81a4mS4\natGSR7uHFPcpZZrMVKi51dXjA8ApVoNVw2mzyHLo0R4mYiKQGOngN3/pxOFjyc2NJ/v8qQJ5AuyM\nsNxuwtyZFfD4wrJd+qwY2a0mrLt2rubeD6X0QwamJIHBMD4YBcJRbNpxUDWnWTqhKbfTyskXHMXn\n/QFcOrsKR44rr2yNKptaBRbOrsQ96xalJjPssXGFk/u9yVIP/V51314oEsPJPr9klaTXlCfGabPg\nBzc2aR6jRbYlWAh9ZLLpdSpm4c4UEiMdfHrKp/maNXdUTRufIVrNRokYsbnBGuoq8MTvj6Rs90pm\nGHkJ85CsJIFJFMzgtFmw+V+bU6Y9NtnmqEo9g7rpDtRWOfCNyy/Cr/Z8lKqbU6p4/RHMqi3Horly\nQTIbOTTWV6oKFQD4x2pSqa1yDApJck/1B3GqPwi3U57Q1GYxgucTGBFF8QkTFT3Je3MNlZWYXPRu\nep2qWbgzhcRIF+wMVvqanSGOxuKSwUfsqB6N83CXW1MbYmPxRFon8uqr63Gsx5sSByUTnMEgDYxk\nk22mhCkYVd1k2TsYQoXDgl/t7ShaIbKaORg5IBTVZ4f0+iN45LvN6PMG8cRLRxAMj8IxlknDWWbG\nrte7cKjLIzO9AuNmK6UiiwCwYJYLn57yKQaiOG0mgIPktwpH43CXWzEyOv7ecCBZ7ZVKRRQfegMY\nzteABRYSIx001LkkM2DWx8POELfsPCj5nGMSXVY4LHjku80IhKJ48Nf/V3Y/1va+763utOJgNY2L\nEWuyWX11feqzSFTdMR9P8Og46dW8z/lOZJSXFajTYrrLhkAoin1vdqPCYcHcmRUSE9jtN1yKf3vh\nfZzole7dKjNziMUT2LLzIL4YlO6VMxo4LGmYjtaWBvz8j+2KEXC1VQ54fGHZxKHcnvyTFd73BpK1\njPTkoMvGlEcQ+YLESAdtqxbIotm0YAcGNq2L2EnNrnLc5VbZ9fXMch1lppTfSbz60Uq4WarozYhu\nt5rQ2tIgqTl0ss+PQ5+ehdViSm0SvXC6Uy5GVnPKz8hyYZU9NXlhnxW71YjG+iqsvroeT7x0RHau\nPxSDs8wk+T09vjDuvakp9W+1Z1RvHS4SLKIQkBjpIJsoJUC6Z+g//n48FbUUiyUUTSt2q0lWPhpQ\nDsGVrrWAUDShGn3ly1G12cnEyHHgOH5CkWtqqNWGSse8i11w2iyy3ynOI7VJ1PR6F9quX4j3Or6Q\nmNsiUXVbf22VI/VvtXpGW/d3KAagKE0qprtsup5RvXW4KHfd1EBPAENZmQ3h8PkZsMBCYjQJKA0M\nZpMxtQoSBjFWZBrrKxVnoa0tDYjFE2OBEzxMJoMk2s1dbpXNlsXkI0ybFcdMSfA8ym1mnAvl3lel\nR4iU2i8Em2htJvX4wnjxtU9kfh+FhBswGYDFDTMkqxY1EdFaDYujNTOJYtMy5QkronamJAb5ngpH\nugCG8cCFC87LgAUWEqM8IU+fMohqVxncTiucNhNqq9QLpDltFkko+ZadByViJARD9BQw1U8mQmQx\nGdBQV4Gj3d7UeTwwKUKkl7oaBwZ8IxKzaVePD4FwNPW7vP/pWZmwT3fZZMlwgeR3ZE2wHMfpNntp\nCWCN25HVakUrFFst4o/2DhWOdAEMxRK4IDA1sucVEYFQFFv3d2DLzoPYur8jla+LDdUNReI41R+E\nNxBBbVVycNFrm2cHCGFgUcp/NxVpmlsNm9U8oZWUGnq7gA1i6B0IpbKpC4Qi8WSutrGGllmkm4Vd\nzmTZ8JpKu+R9s5FTDDgZjfO6c78JOeTsVul8UcmnqBdhFfbId5tlzxs7WbKYDJJciAQx2dDKKMeo\n2dx5jaFXjylE7Fh2O624dJYLJ77wQ/BBAcDCOcr7XiZqQssFgikxMBJDvzcIj3dkUu5jsxh15ZZj\nTXcxld2rHl9YtmqwW01orK9MrXLYgoz93qBqHkLxb60VLOC0WdD6jQZZtGWFwzIpAQXsSiyb2klE\nbtHyGRWTr0iAxGiCsAMKu3NeGHx8KmXIAX2mEInIIZlyiPVBta1agE3Py5NfmkwGjOqMDHCXWzES\niclWCZnCZpoQTIkHO8+q+racNiMC4ezvazZyOfePTXfZZJOFGW4bVi+vx6bnD8IfjMBgMGC6y4YL\nqx2p6Ds1MXI51dNIAdJgAaVoy8kym1E2hamHms+o2HxFAiRGE0SWl44xxwn7VIaZomZmIweO4+Ao\nM2P1inqkgx0Q2ZLUHl8YTpsFFQ6LbLB3lplVUwOxVDgs2NzWrChqSrCrLiMHLJxThXiCx0cnxqvW\n+vwj6B3QnsmFRzIPpeM4wAAODpsR50IxjMZzl3HbXW5VDLGe7rLhiT+MZ81AIoEzA0GcGft+4oHd\n5x+RmOw4jtMdLKAUbTlZIkHZFKYeaj6jYvMVCZAYTRB2wHDaTJh7kTTSadfrXZKBnQPGoq94RAMR\n7HuzO+1AoHfvEnucu9yK+9Yvwr/t/ECSlshuNSKR4DEyKhUAIUxYSdSUMJkMWDS3WmZq+uVuabFA\nPRkd2NQ46Vh8SXUqsGPLzoM4F8ptIbcKhwX/8Z/HJUI+zWFGa0sDfvyrdxXPESYF4jIN4u/e0T2E\njb96RzHrgjBxef7VT9DV40OE+W2EaEvaC0QUIyRGE4Qd/IVgBDGsYLHDkB6fkdLeJbbekdJxwkDV\nWF8p8Xs01lehtaUBz//5E8WszWrRXOxKyGkzKwqpllkyF5iNHNZeOyf1Wiv6TIDjgKY56olPWc56\nw+jpl14zFkvAabPAUWZGVGG1KTbDKbVLyVzKccCiudWpiQvbPmEjrPDb0F4gohghMZogemzt6QbK\n4WAyv5jW7Far3lG644BkfrvjZ4aTudXGTINs1mZx3SS30wqXwyxb0fAQmRjHcrQpoUccJsJonMe+\nN7vR+o0G7HqjC32DQVmxOhaX04of3NiEtp/9p657KJURD0fj2Lq/A3esacSze4/C549IxJljwvmE\n56H9+ACiKn47nh8vqqc0MZnhtie/59hvc9YrDSWnvUDFiVIAQzEGLgiQGE0QPbb21pYGHD89LDH3\niAdOrz+StkpmNqYZSYE2UYogNdMgGyTBhhULmEwGzKtzwRdI5mxbfXU99r0lXaUJg7BWbaWJ27lJ\ndAAAFnhJREFUohTppiRIHJcUIkE4lUo/uMutqSSoNrMBvUPKAzzPI3W/J+9chi07D0pEV+hj9vf6\n8iy35opMqFE0rLCidJdbsek36j482gtUnLABDMUauCBAYpQFmQoDW9JBqAYr3qSabnbLmmaOdg9J\nwovTncPScWJQVqCNbYNaUtVwJJ4aWE/2+fFpjze1CVdsNhJqK+16Pbly6R0Iatb/yRSlSLfaSjuq\nXbZUtoqGOhfaVi0AeKR+s4aLXeg65UOcT4rX/f+yGHMuGE9+u3V/h0SMBKESr2zajw9g6/4OuJ1W\nnIQ8qwH7ey2+pBrN82eg3xuEPxRDeCQqKQUh1CgCgGl201ioedJ0yvO8TIjsVhNmuG0U+VbEsAEM\nxRq4IEBilAXZ2OzZFdTW/R0SMUo3u2UH3VAklmqDWnE1LYELR+OyAm2saU2vcPhD8sg+AdaZP1HT\nnTBQJxI8jvX4EBmVrrqUfHZAsr/Fwux2WrH5X+V5AIFx01rvQBBnvSH4gxGZ+S0aS+YCXDS3Cl9t\nuhCnvhiGPxxD36BycTyhFIWAuKxHT39AErwRiwPP3LMi9ZrNAg8kgxnIT0QUEyRGWZCL2jFsvrnR\nWFzTb6TmgznU5cFt//5f4Hk+ZZ4SjtPrtxHaL/Z/sRVqtVBKkaP3O5SZOSyYVQWvP6JZa0nAwHGp\ndo2Mjpu0jBwHq8Ug60e1MGpvIILfvNopSbPECro/HBWZ/HhwAIwGSJK5Dp0bgdNhxcBwMpWQ1x9B\njycIl8MsuZ9Qil4cLQdwmFfnQt9gAHGJnks7VClCklZDRLFBYpQFemrHpMNps8BkNKQG1iPHBzX9\nRq0tDTjaPSQTiHiCVyzsJi4roHQe+32ENgn3Z1cSYrQCBYS9OVv3d+DMWT88wyMAx8FZZsYdaxpl\nvjODwQiT0ZBq667Xu9A74MdZb/K8RDwhWaGp+Z/iPI/QmPlQ3I9apkq2Yi+74mVTC/EAyh1WiWD6\nwzH8n/Ze2bVHGBOnkHR11xvSaLnDxwfgcpgxMjquRmy9LLUISaK4EQcwFHPgggCJURbkard6Jiss\npfBsLcRlBdTMY2zIsBjhvb7BIPzhUUSicRiNBsydOQ3rvjYX+97sVowQq3BYsO+tbqadPLyBCJ7d\nezTlOxMCG1hz4+03XJoUsoEwlJIYqYVUixH3o1afjkRjEr8Ze6xSWXA2Y3bfYFBxNWcwGAGMC5IQ\n6q7UnmlOCy6pc6s+T6yJV8h/SOJU3AgBDMUeuCBAYpQFudqtnukKixXBT095FTNds2Yc9j5GjsPC\nOZVoW7VAdRATvuPW/R3oSQlLHGaTEbVjWaOVVk/JLNbKM7hgeFRVII92jwdU9A1Kzxc764X9VX2D\nQQRGYii3m+APxSSCIO5HLVNlgofEb8Ye++VZbnR+7pWsAtmM2azvT8hbF4slcFhkGlTLxKF0zXTQ\nPqPSQAhgKPbABQESowKS6QqLFcHPen34Xy8elpnM2GSarS0NkmqvcZ6H2WTUNZvWWr21tjRgJBrD\nxye9qXpEq1fU42e7Diley2Eb96OwA38oMh5QIfhXBKyibNnOMvkmW3EwANuP4j7uGwxIItjE9A8F\nUTmtDHarEUIU24Z/ng8AmlV+W1saYLWacLrfL1mlBMJRmJjz2EwcRgOHy+Yor0y1yIXPkiCmGiRG\nBYB1lN97U1NWZpY3DpxWTSsjRim9j9IAphSRx4Yui4XCabOgzGJK+azOhUax781uxSwDQloigfF9\nSHJ/ltgUJgQ1eP0R1VWA1kpVrx/MH47h1NlxX46wCVXpfuz1H7ilGR6PX/Z+ukwcdTOckgAKveTC\nZ0lMfQSf0Ug4BJ6vLXRzJh0SoxyRyd4jLTOL1nXSZQi3mAxoGksrw8KmqTntCeC2f/8vOMrMuO/m\nRah1OxTbxZa+4BkfitIsnQ2DtltNePLOZZL3tPxZ5wJRVE1LDrBs+e5MVwFCn/UPBXEuGEWZmYPB\nYMTsC8thNhnh9UcUfT+TsdrIlYhQhu3SQPAZJRL6olrPd0iMckQmdnwtM4vSdYSUN+JsBkoZwrVq\n0LACERMlan3ipSN48s5lusw/XT3DktBppQHW7bRK/CXzLnbJriM+nhUjX3AUh48NKB7vclp0Oe8F\nEVLOABGDyWiAyWhAIpHA8dPDCEekvpzJWG3kSkQow3ZpIPYZsX+/xQiJUY7IxI6vNUNWuo5aeLJS\nhnA1tPbvBMKj2Lq/Q5bzTGiX1LcTk4ROqw6wr3am9lDxPK+6h0pP7jYjBxiNBjjKzIjFE5LsD4Bc\n9AOhqGb6HCBZUlwpTFxIHaSnrIcS6QrmkYgQhDJUdjxHKJUCV0MoKT2rtlxW2lnpOmrCJmQbUCoj\nna59EngeBzvPpgZnu9WUaldrS8OYU38cNsNC6zcaUu0UymoLe6jEe3+UEAboprnVqs2L88mMB95A\nBCd6z6m2RWDXG106yl8ozzR5Pinc+97sTnO+MsLE4WSfHwc7z+ouM04QpQ6tjHJEJiYYrRmy0nV2\nvd4lWZ2Iy15n2r6PPhuQ1TDiGL9Q1bSk+e/nf2zHdJcN8+rcErMbayqLxRMps9rJPj+OnxlGuV36\naKXzwYi/t8tpAcdx8PojCpkgpCKiJLJK97JZjSizmOAsM6G2yiELvdZzDT1QpBuRK4QABj6RedHJ\n8xESo1yRowSgSkKVix34wnWf3vOhzB9jMpkQjY8P+IGRmMRvtWhuFZrnz4AvGIXLYUEsnpB8zmb3\n9vojCIQy88GoCTQbAWcxGdBQVwVfIKq7ZIe73IrNbdI8dELotVri0mx9RhTpRuSKRCKGUPAc/um/\nzS7qza4CJEY5YjI3ImqtpDLNIK5kvpp3sQsmo0ESpSc+rv2zQTTNqcJPbr0SkVBElrhTKbv3aJyH\nu9yKCodlQs56do+ULxiF2WSUJB1VOgfQFm9ZVgONvUosbJ//aP1SzXsTRDZUVtcAAMrLp1EAA6Ef\nNfPMZJeIZkXw+Olh1WzUgPKqYcM/z5ccv3V/B071j4eN83wyd97WPe1oWzlfd3bvCodFUzT0oLRH\n6mj3kGZS2XSBAmq/id7JA9vnQr/oufdEoZLjRLFCYpQj1Mwzk526hRVBb0C7UJ+eVYNaUtb+oZDs\nGlrZvXNlopJna4ilLUaoRSa/iZ7SHEK/5ANKBUQUKyRGOULNPDPZDm2lfTp6sitoZX1QS8paU2lP\nfa6W1cDIAVaLCfMuduXMRJUUR+l+oYn0Yya/idLgz/a50C8TRc+qhwIkSgff0CCs1rJCNyNv5F2M\nDhw4gB/+8Ie45JJLwPM85s2bh4cffjjfzcg5auaZyXZoK5U0V7pHpjNqtt5SQ50Lt69pQiQUkR0H\nMCI8VlVViMZTGlQzMTclxbFKInoT6Uc9v4laHSRxaQ6h7Ur9kg16fiMKkCgdgsFzWLHk4pIIXgAK\ntDK6/PLL8dRTTxXi1nlnsh3aSiXNle6R6YzaabPI8qZNc1jgYQZdJREWr5bUBtVsxFFo90T7Uc+1\n1DYai0tzCCj1Szbo+Y0oQKJ0cFdWl0zwAlAgMWLzmxUz+dh1r+ce+ZxRaw2qaiuO9uMD2Lq/Q3WF\nlG0/ZhuswH4Hrbx/uULPb0RZHIhipSBi9Nlnn+GOO+7A8PAw7rzzTlx11VWFaEZJsfrqehw/M4xg\neBSOMnPW6W70oJXpW23FEY0lJEX2lMgmkixbhz8rDFp5/3IFrXoIMcM+b0lN3PMuRl/60pdw1113\nYeXKlejp6cEtt9yCv/71rzCZlJvidtthMhkVP5sspk8vz+v98sHzf+lMhUdHAxG8+v968MAtmYdd\n6+kbC5M+yGIxps7zMcXlOEj3C/uCUdV7PP/CQYmwWK0mxe8wHIxi25529A+F8MWANLO51vXF/Gj9\nUmzd045eTwDnglEMnBvB83/pxO1rmjDNIRfAXDwz0wE8cuuVE77OVKIY/5byhdViQHV1OVyu0ujD\nvItRTU0NVq5cCQCoq6tDdXU1+vv7MXPmTMXjvd78hc0CyT8etjZNMXC63y97nen3tNiteOqlD9Ku\nTPoHQ7LXwr1czEDuKrdK9hC5HBbVdun9Dlp1i7Suz9K2cj6e3vMhTvSew8DwCLp7zyEYisp8acX6\nzEwU6hdl9Ap0mb0Cg4MBjI7mdzI+mWh997yL0SuvvAKPx4O2tjZ4PB4MDg6ipqYm380oOXLhM9q2\np12XyUvrXqwpSigjrsc0le47qPmjxGXLMzV9JaMJ1V8TBJEb8i5G1157LTZu3Ii///3viMVi2Lx5\ns6qJjsgdWv4Ivb4YdnOnWkSe1r2UHPB6fTHpfCpq/qjG+soJ+HukNvtINI4tOw8WbfYDyvBAFIq8\nq4DD4cC2bdvyfduSRysKS6+Tv6bSjmM94yuDs96wYgTcZEV8pbvuZETANdS5UvWTACDO8zjZ5y/a\n7AeU4WHqUGoBDFTPiNC9B+n2NU1onj8jVd8oFIlNqZo9rNlOiICbyMy+bdWCVO0prbpOxQJleJg6\nJBLy4o/FDIkRobsw4DRHcmUywy1NfzNVBiytooXZIqzGHvluMxrrqySfFWP2g0yKRBKTi7uyumQ2\nvAKUm45A5vtbJhIMMZk+icneEFoK+4BK4TsSUxMSoxJjouUTgIkNWOezT6IUsh+Uwnc8Xyg1nxGJ\nUYmRCzGYyIDVNxjUfE0QRJJS8xmRGJUYuXJQZ2tuC4zENF8TBJGk1HxGFMBQYuTKQS2ssE72+TOK\nqCu3mzRfEwRRmtBIUGLkykGd7Qqrxu2QlDSvcTuyuj9BEMUFiVGJkSsHdbYRdRStRRD6GBmZGlsm\n8gWJEaEK6xf60fqlqc+yFRWK1iIIffzT0vqSqfIKkBgRGrCRd1v3tKNt5XwAJCoEMdmUUpVXgAIY\nCA1YPxCbKJUgCCJXkBgRqrB+oJpKu8qRBEEQE4PMdIQqrF/o9jVNiIQiac4iCILIHBIjQhXWLzTN\nYYGHxIggiEmAzHQEQRBEwSExIgiCIAoOiRFBEARRcEiMCIIgiIJDYkQQBEEUHBIjgiAIouCQGBEE\nQRAFh8SIIAiCKDgkRgRBEETBITEiCIIgCg6JEUEQBFFwSIwIgiCIgkNiRBAEMQXpP+spdBPyCokR\nQRDEFKTn9JlCNyGvkBgRBEEQBYfqGRHnBYFQFLve6EoV+mttaYDTZinYdQiCyC0kRsR5wa43unCw\n8ywA4GSfHwAkhf/yfR2CIHILmemI8wKPL6z5Ot/XIYjJZnZ9faGbkFdIjIjzgukum+brfF+HICab\nWV+6uNBNyCtkpiPOC1pbGgBA4usp5HUIgsgtBROjSCSC6667DnfeeSduuOGGQjWDOE9w2iw58e3k\n6joEQeSWgpnpnn32WbhcrkLdniAIgphCFESMTpw4gRMnTmDFihWFuD1BEAQxxSiIGD3++ON48MEH\nC3FrgiAIYgqSdzHav38/Fi9ejJkzZwIAeJ7PdxMIgiCIKQbH51kN7rnnHpw+fRoGgwF9fX2wWq3Y\nvHkzrrzyynw2gyAIgphC5F2MxDzzzDO46KKLKJqOIAiixKFNrwRBEETBKejKiCAIgiAAWhkRBEEQ\nUwASI4IgCKLgkBgRBEEQBafkE6Vu27YN77zzDjiOQyKRwMDAAF577TXJMY2NjVi6dCl4ngfHcfjt\nb38LjuMK1OL8oKdf/vSnP+GFF16A0WjE2rVrceONNxaotfllx44deOWVV2A2m7Fp0yZceqk0110p\nPi9A+n4pxedl3759eOqpp3DxxckM3MuWLcP3v/99yTGl+rzI4IkU+/bt43fs2CF7/ytf+UoBWjN1\nUOqXUCjEt7S08IFAgB8ZGeGvu+46fnh4uEAtzB/Hjh3j16xZwycSCf7jjz/mn376adkxpfi8pOuX\nUn1e9u7dyz/++OOax5Ti86JEya+MBOLxOH7/+99j165dss/4Eg44VOuX9vZ2XHbZZXA4HACAJUuW\n4NChQ7jmmmsK0Mr88Y9//AMrV64Ex3FYsGABFixYIDumFJ+XdP1Sqs+LHkrxeVGCfEZjvPHGG1i+\nfDksFovss0gkgh//+MdYv349du7cmf/GFRC1fhkYGEBlZWXqdWVlJTweT76bl3fOnDmD3t5efO97\n38OGDRvQ2dkpO6YUn5d0/VKqzwsAHDhwALfeeis2bNiATz75RPZ5KT4vSpTUyujll1/G7t27wXFc\nyj579913Y9myZdi9ezceffRRxfMefPBBfOtb3wIA3HzzzWhubkZjY2M+mz6pZNsvYopxdifuFyD5\nHQcHB7F8+XJs374dH3zwAR5++GHs3r1bcl4pPS+A/n4RU+zPi/B3tGrVKtx9991YsWIFjhw5gvvv\nvx+vvPKK5Lxif170UlJitHbtWqxdu1b2fjgcxtmzZ3HhhRcqnnfTTTel/n3llVeiq6urqB6WbPpl\nxowZkpltf38/Fi9ePKntzDdK/fLMM89g9uzZAIClS5eit7dXdl4pPi/p+qVUnxcxixYtgtfrTQmV\nQLE/L3ohMx2Azs5O1NfXK37W3d2NjRs3AgBisRgOHTqEuXPn5rN5BUOrX5qamtDR0YFAIIBgMIjD\nhw9j6dKleW5h/lm+fDnefvttAMBnn32G2tpayeel+ryk65dSfV62b9+OP//5zwCArq4uVFZWSoSo\nVJ8XJUpqZaSGx+NBVVWV5L3nnnsOV1xxBZqamnDBBRfgxhtvhNFoxNe+9jUsXLiwQC3NL+n6ZePG\njWhra4PBYMDdd98Np9NZoJbmj6amJrz11lv49re/DQD4yU9+AoCeFz39UorPyze/+U3cd999+MMf\n/oB4PI6f/vSnAOh5UYJy0xEEQRAFh8x0BEEQRMEhMSIIgiAKDokRQRAEUXBIjAiCIIiCQ2JEEARB\nFBwSI4IgCKLgkBgRRcGBAwewfv36rM59++238etf/xoAcPjwYZw+fTqXTSMIQgckRkTRkG0NmOXL\nl6dqzOzduxc9PT25bBZBEDqgDAxE0XHy5Els2rQJiUQCiUQC9957L5YuXYqenh7cf//9MBgMWLhw\nId58800899xzeP/99/Huu++ipaUFr732Gj766CM89NBDuOKKK1LXbG1tRXNzM9rb23Hq1Ck89NBD\n2L9/P44dO4brr78et912WwG/MUGc/9DKiCg6Hn30Udx8883YtWsXNm3ahAceeAAA8Mtf/hKrVq3C\niy++iGXLluHzzz9PncNxHL7+9a9j/vz5eOCBByRCJGbHjh24/vrr8eSTT+IXv/gFtm/fjh07duTl\nexFEMUNiRBQdH374Ia666ioAQENDA4LBILxeLzo7O3H55ZcDSJrm7HZ7RtddsmQJAKCmpgaNjY0w\nGo2ora1FIBDI7RcgiBKExIgoOljfEc/zMBgMSCQSMBgMqselw2g0Kv6bIIiJQ2JEFB2LFi3CW2+9\nBQD4+OOP4XK5UFFRgTlz5uDw4cMAgHfeeQehUEh2rsFgQCwWy+h+lGuYICYOiRFRdDz88MN4+eWX\nccstt+Cxxx7DE088AQC466678Lvf/Q7f+c53cODAAdTU1MhWOMuWLcOmTZvwt7/9TfK+1ioq2yg+\ngiDGoRISRMnQ0dGBaDSKJUuWYGBgAKtWrcK7775LJjeCmAJQaDdRMtjtdjz22GMAklU1t2zZQkJE\nEFMEWhkRBEEQBYd8RgRBEETBITEiCIIgCg6JEUEQBFFwSIwIgiCIgkNiRBAEQRQcEiOCIAii4Px/\nFKjkgdgIlV4AAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f814b3c0438>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import lasagne\n",
"from collections import OrderedDict\n",
"\n",
"adam = lambda loss, param: lasagne.updates.adam(loss, [param], learning_rate=0.01)\n",
"\n",
"with get_model() as model:\n",
" x = model.basic_RVs[1]\n",
" vparams = pm.variational.advi_minibatch(n=10000, optimizer=adam, minibatch_tensors=[], minibatches=[], \n",
" observed_RVs=OrderedDict({x: 1}), local_RVs=OrderedDict())\n",
" trace = pm.variational.sample_vp(vparams, 10000)\n",
" \n",
"plot_samples(trace)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Normalizing flow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interface"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from abc import ABCMeta, abstractmethod\n",
"\n",
"class NormalizingFlow:\n",
" __metaclass__ = ABCMeta\n",
" \n",
" @abstractmethod\n",
" def init_model_params(self, d):\n",
" \"\"\"Initialize model parameters\n",
" \n",
" This method is called in ADVI inference functions, because \n",
" the dimension of parameter vector is difficult to know before \n",
" inference. \n",
" \n",
" d : int\n",
" Dimension of parameter vector.\n",
" \"\"\"\n",
" pass\n",
" \n",
" @abstractmethod\n",
" def trans(self, z_pre):\n",
" \"\"\"Transform variable (vector). \"\"\"\n",
" pass\n",
" \n",
" @abstractmethod\n",
" def ldj(self, z_pre):\n",
" \"\"\"Returns logdet of Jacobian. \"\"\"\n",
" pass\n",
" \n",
" @abstractmethod\n",
" def get_params(self):\n",
" \"\"\"Returns parameters. \"\"\"\n",
" pass"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Inverse autoregressive flow"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class SimpleMadeIAF(NormalizingFlow):\n",
" \"\"\"An inverse autoregressive flow: (z - f1(z, h1, g1)) / f2(z, h2, g2)\n",
" \n",
" f[1/2] are MADEs, whose connectivity constraints are deterministically set. \n",
" h[1/2] are the activation functions of the hidden layers in f[1/2]. \n",
" g[1/2] are the activation functions of the output layers in f[1/2]. \n",
" The number of units in all layers are same with the dimension of the \n",
" random variable in ADVI. \n",
" \n",
" Parameters\n",
" ----------\n",
" ns : list of int\n",
" The numbers of units in all layers, shared for f1 and f2.\n",
" hs : (tensor -> tensor, tensor -> tensor)\n",
" Elementwise activation function of the hidden layers in f[1/2].\n",
" gs : (tensor -> tensor, tensor -> tensor)\n",
" Elementwise activation function of the output layer in f[1/2].\n",
" rev_order : bool\n",
" If true, the order of connectivity constraints is reversed.\n",
" random_seed : int or None\n",
" Random seed for initialization of weight matrices.\n",
"\n",
" Example\n",
" -------\n",
" ls = (1, 1)\n",
" hs = (tt.nnet.sigmoid, tt.nnet.sigmoid)\n",
" gs = ((lambda x: x), tt.nnet.softplus)\n",
" SimpleMadeIAF(ls, hs, gs, 'upper')\n",
" \"\"\"\n",
" def __init__(self, ns, hs, gs, rev_order=False, random_seed=None):\n",
" self.ns = ns\n",
" self.hs = hs\n",
" self.gs = gs\n",
" self.model_params = None\n",
" self.rev_order = rev_order\n",
" self.rng = np.random.RandomState(random_seed)\n",
" \n",
" def init_model_params(self, d):\n",
" self.d = d\n",
" w1s, b1s = _init_made_params([d] + self.ns + [d], self.rng) # f1\n",
" w2s, b2s = _init_made_params([d] + self.ns + [d], self.rng) # f2\n",
" self.wss = (w1s, w2s)\n",
" self.bss = (b1s, b2s)\n",
" self.model_params = w1s + w2s + b1s + b2s\n",
"\n",
" # Masks\n",
" self.mask1s = _create_made_masks(self.d, self.ns, self.rev_order)\n",
" self.mask2s = _create_made_masks(self.d, self.ns, self.rev_order)\n",
" \n",
" def trans(self, zs):\n",
" \"\"\"Transform random variables and compute log determinant of Jacobian.\n",
" \n",
" Parameters\n",
" ----------\n",
" zs : tensor, shape=(n_mc_samples, dim_rv)\n",
" Random variables. n_mc_samples denotes the number of Monte Carlo samples\n",
" in ADVI. dim_rv is the dimension of (concatenated) random variables. \n",
" \n",
" Returns\n",
" -------\n",
" (zs_new, ldjs) : (tensor, tensor)\n",
" Transformed random variables and log determinant of Jacobians.\n",
" zs_new.shape is the same with zs. ldjs.shape = (n_mc_samples,). \n",
" \"\"\"\n",
" # Outputs of MADEs\n",
" n_layers = len(self.ns)\n",
" h1, h2 = self.hs\n",
" g1, g2 = self.gs\n",
" w1s, w2s = self.wss\n",
" b1s, b2s = self.bss\n",
" \n",
" def f(zs, n_layers, h, g, ws, bs, masks):\n",
" \"\"\"MADE\"\"\"\n",
" xs = zs\n",
" for l in range(n_layers):\n",
" xs = h(xs.dot(masks[l] * ws[l]) + bs[l])\n",
" return g(xs.dot(masks[n_layers] * ws[n_layers]) + bs[n_layers])\n",
" \n",
" f1s = f(zs, n_layers, h1, g1, w1s, b1s, self.mask1s)\n",
" f2s = f(zs, n_layers, h2, g2, w2s, b2s, self.mask2s)\n",
" \n",
" # Outputs\n",
" zs_new = (zs - f1s) / f2s\n",
" \n",
" # Log determinant of Jacobian\n",
" ldjs = -tt.sum(tt.log(f2s), axis=-1)\n",
" \n",
" return zs_new, ldjs\n",
" \n",
" def get_params(self):\n",
" if self.model_params is None:\n",
" raise RuntimeError(\"get_params() was invoked before trans().\")\n",
" else:\n",
" return self.model_params"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Masked autoencoder (MADE)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def _init_made_params(ns, rng):\n",
" \"\"\"Initialize model parameters of a MADE.\n",
" \n",
" Parameters\n",
" ----------\n",
" l : int\n",
" The numbers of units in all layers, \n",
" including the input and output layers.\n",
" rng : numpy.random.RandomState\n",
" Random number generator.\n",
" \n",
" Returns\n",
" -------\n",
" (ws, bs) : (List[shared], List[shared])\n",
" Model parameters (weights and biases).\n",
" \"\"\"\n",
" ws = list()\n",
" bs = list()\n",
" for l in range(len(ns) - 1):\n",
" d_in = ns[l]\n",
" d_out = ns[l + 1]\n",
" ws.append(shared(0.01 * rng.randn(d_in, d_out).astype('float32')))\n",
" bs.append(shared(0.01 * rng.randn(d_out).astype('float32')))\n",
"\n",
" return ws, bs\n",
"\n",
"\n",
"def _create_made_mask(d_pre, d, m_pre, output_layer, rev_order=False):\n",
" \"\"\"Create a mask for MADE.\n",
" \n",
" Parameters\n",
" ----------\n",
" d_pre : int\n",
" The number of rows in the weight matrix. \n",
" d : int\n",
" The number of columns in the weight matrix. \n",
" m_pre : numpy.ndarray, shape=(d_pre,)\n",
" The number of inputs to the units in the previous layer.\n",
" output_layer : bool\n",
" True for the output layer. \n",
" rev_order : bool\n",
" If true, the order of connectivity constraints is reversed. \n",
" It is used only for the output layer. \n",
" \n",
" Returns\n",
" -------\n",
" m, mask : (numpy.ndarray, numpy.ndarray)\n",
" Mask indices and Mask.\n",
" \"\"\"\n",
" d_input = np.max(m_pre)\n",
" mask = np.zeros((d_pre, d)).astype('float32')\n",
" \n",
" if not output_layer:\n",
" m = np.arange(1, d_input).astype(int)\n",
" if len(m) < d:\n",
" m = np.hstack((m, (d_input - 1) * np.ones(d - len(m))))\n",
" \n",
" for ix_col in range(d):\n",
" ixs_row = np.where(m_pre <= m[ix_col])[0]\n",
" (mask[:, ix_col])[ixs_row] = 1\n",
"\n",
" else:\n",
" m = np.arange(1, d + 1)\n",
" if rev_order:\n",
" m = m[::-1]\n",
" for ix_col in range(d):\n",
" ixs_row = np.where(m_pre < m[ix_col])[0]\n",
" mask[ixs_row, ix_col] = 1\n",
" \n",
" return m, mask\n",
"\n",
"\n",
"def _create_made_masks(d, ns, rev_order=False):\n",
" \"\"\"Create masks for all layers.\n",
" \n",
" Parameters\n",
" ----------\n",
" d : int\n",
" Input dimension.\n",
" ns : list of int\n",
" The numbers of units in all hidden layers. \n",
" rev_order : bool\n",
" If true, the order of connectivity constraints is reversed.\n",
" \n",
" Returns\n",
" -------\n",
" masks : List[numpy.ndarray]\n",
" List of masks.\n",
" \"\"\"\n",
" # The number of layers\n",
" n_layers = len(ns)\n",
" \n",
" # Mask indices for the input layer\n",
" m = np.arange(1, d + 1).astype(int)\n",
" if rev_order:\n",
" m = m[::-1]\n",
" masks = list()\n",
" \n",
" d_pre = d\n",
" for l, n in zip(range(n_layers), ns):\n",
" m, mask = _create_made_mask(d_pre, n, m, output_layer=False)\n",
" masks.append(mask)\n",
" d_pre = n\n",
" _, mask = _create_made_mask(d_pre, d, m, output_layer=True, \n",
" rev_order=rev_order)\n",
"\n",
" masks.append(mask)\n",
" \n",
" return masks"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Test logdet of the Jacobian of IAF"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[array(0.03311258554458618, dtype=float32), array(0.03311264514923096, dtype=float32)]\n",
"[array(0.0650162324309349, dtype=float32), array(0.06501622498035431, dtype=float32)]\n",
"[array(0.0008600028231739998, dtype=float32), array(0.0008599635912105441, dtype=float32)]\n",
"[array(-0.018910568207502365, dtype=float32), array(-0.018910527229309082, dtype=float32)]\n",
"[array(0.9090595245361328, dtype=float32), array(0.9090593457221985, dtype=float32)]\n"
]
}
],
"source": [
"def test_iaf_ldj(d=3, rev_order=True, random_seed=0):\n",
" # Random vector\n",
" z = tt.vector(dtype='float32')\n",
" z.tag.test_value = np.ones(d).astype('float32')\n",
" \n",
" # Triangular MADE-IAF\n",
" ns = [(d + 10)]\n",
" hs = (tt.nnet.softplus, tt.nnet.softplus)\n",
" gs = ((lambda x: x), tt.exp)\n",
" iaf = SimpleMadeIAF(ns, hs, gs, rev_order, random_seed)\n",
" iaf.init_model_params(d)\n",
" z_trans, ldj = iaf.trans(z)\n",
" \n",
" # Exact computation\n",
" j = jacobian(z_trans, z).reshape((d, d))\n",
" ldj_true = tt.log(tt.nlinalg.det(tt.abs_(j)))\n",
" \n",
" f = function([z], [ldj, ldj_true])\n",
" print(f(10 + np.arange(d).astype('float32')))\n",
" \n",
"test_iaf_ldj(d=3, rev_order=False)\n",
"test_iaf_ldj(d=3, rev_order=True)\n",
"test_iaf_ldj(d=3, rev_order=False, random_seed=1)\n",
"test_iaf_ldj(d=3, rev_order=True, random_seed=1)\n",
"test_iaf_ldj(d=100, rev_order=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ADVI with IAF"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration 0 [0%]: ELBO = -55.9\n",
"Iteration 1000 [10%]: Average ELBO = -42.63\n",
"Iteration 2000 [20%]: Average ELBO = -36.54\n",
"Iteration 3000 [30%]: Average ELBO = -36.62\n",
"Iteration 4000 [40%]: Average ELBO = -36.53\n",
"Iteration 5000 [50%]: Average ELBO = -36.59\n",
"Iteration 6000 [60%]: Average ELBO = -36.5\n",
"Iteration 7000 [70%]: Average ELBO = -36.52\n",
"Iteration 8000 [80%]: Average ELBO = -36.53\n",
"Iteration 9000 [90%]: Average ELBO = -36.55\n",
"Finished [100%]: ELBO = -36.27\n"
]
},
{
"data": {
"image/png": "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\nhUKhUKrO/w/bGRLaBRcjxAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f813a3d2be0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"n_unitss = [4]\n",
"hs = (tt.nnet.sigmoid, tt.nnet.sigmoid)\n",
"gs = (tt.nnet.softplus, tt.exp)\n",
"iaf1 = SimpleMadeIAF(n_unitss, hs, gs, rev_order=False, random_seed=0)\n",
"iaf2 = SimpleMadeIAF(n_unitss, hs, gs, rev_order=True, random_seed=1)\n",
"nfs = [iaf2, iaf1]\n",
"\n",
"with get_model() as model:\n",
" x = model.basic_RVs[1]\n",
" vparams = pm.variational.advi_minibatch(n=10000, optimizer=adam, minibatch_tensors=[], minibatches=[], \n",
" observed_RVs=OrderedDict({x: 1}), local_RVs=OrderedDict(), \n",
" global_NFs=nfs)\n",
" trace = pm.variational.sample_vp(vparams, 10000, global_NFs=nfs)\n",
" \n",
"plot_samples(trace)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"* Rezende, D. J., & Mohamed, S. (2015). Variational inference with normalizing flows. arXiv preprint arXiv:1505.05770.\n",
"* Salimans, T., Kingma, D. P., & Welling, M. (2015). Markov chain Monte Carlo and variational inference: Bridging the gap. In International Conference on Machine Learning (pp. 1218-1226).\n",
"* Albert, J. (2009). Bayesian computation with R. Springer Science & Business Media.\n",
"* Kingma, D. P., Salimans, T., & Welling, M. (2016). Improving variational inference with inverse autoregressive flow. arXiv preprint arXiv:1606.04934.\n",
"* Germain, M., Gregor, K., Murray, I., & Larochelle, H. (2015, February). Made: masked autoencoder for distribution estimation. In International Conference on Machine Learning (pp. 881-889).\n",
"* Kingma, D. P., & Welling, M. (2013). Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.2"
},
"nav_menu": {},
"toc": {
"navigate_menu": true,
"number_sections": true,
"sideBar": true,
"threshold": 6,
"toc_cell": true,
"toc_section_display": "block",
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@springcoil
Copy link

Based on my limited understanding I don't see much wrong with the design. I'll dig into that Normalizing flows paper. I think this needs some fleshing out into a tutorial - right now it's not clear what the strengths and weaknesses of these methods are. I'm happy to write up some notes and send a PR though.

@taku-y
Copy link
Author

taku-y commented Oct 11, 2016

Thanks for your comment! I also think this notebook needs better explanation. I will work on it.

@twiecki
Copy link

twiecki commented Oct 13, 2016

So the last cell is what I would need to create to run my model with NF-ADVI? How do I know what to pick for:

n_unitss = [4]
hs = (tt.nnet.sigmoid, tt.nnet.sigmoid)
gs = (tt.nnet.softplus, tt.exp)
iaf1 = SimpleMadeIAF(n_unitss, hs, gs, rev_order=False, random_seed=0)
iaf2 = SimpleMadeIAF(n_unitss, hs, gs, rev_order=True, random_seed=1)
nfs = [iaf2, iaf1]

?

Will that change for every model? Do I need a iaf for every RV?

@taku-y
Copy link
Author

taku-y commented Oct 27, 2016

Sorry for late reply. nfs=[iaf2, iaf1] means that the concatenated vector of RVs, denoted by z, is transformed as z_new = iaf1(iaf2(z)). I need to explain about inverse autoregressive flows and API in this cell.

@springcoil
Copy link

Hi @taku-y thanks for adding Autoencoding Variational Bayes. I think it's fair to add this, I'll try to add in MADE soon, maybe with some helper writing to explain where all of this comes from. Right now it feels a bit disjointed to the rest of the writing.

@taku-y
Copy link
Author

taku-y commented Oct 27, 2016

In the notebook, MADE is used as a model that satisfy the condition IAF requires. So I think IAF should be explained first. I will be on it when finish work.

@springcoil
Copy link

I'd say that when your code is ready add this in to the notebooks, we can add other things like IAF afterwards. What do you think @twiecki

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment