{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![circdiff_img](../images/parameter-diffusion-teaser.png)\n",
    "\n",
    "I love using k-fold cross validation for my machine learning projects. But especially when I am dealing with neural network models that take hours or even days to train doing a full k-folds style analysis becomes an uncomfortably heavy computational burden. Unfortunately for models with such long training times I usually abandon training an esemble of models and just train one model with a single train/validation split. \n",
    "\n",
    "I really wanted a way to get at least some of the diagnostic benefits you get from having an ensemble of semi-independently trained models the way you do in K-folds, but without needing to wait days or weeks for my neural nets to train. I started experimenting with weakly coupled mixtures of models. Instead of feeding most of the data to K otherwise independent models as in K-folds why not try feeding just a fraction 1/K of the data to each model and let the models communicate about their parameters with each other in a controlled way. I thought that perhaps by cleverly controlling what information is passed between which models, how often messages are passed, and how information from them may be used I could effectively isolate the information in some data folds from the values of the parameters of some of the models. In this way I could hopefully save some computation time over a k-folds cross validation without sacrificing all of its benefits.\n",
    "\n",
    "<!-- TEASER_END -->"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## K-Fold Cross Validation\n",
    "\n",
    "First off, lets talk about cross validation using K-folds. In a K-fold cross validation scheme you split your data into K different data sets of roughly equal sizes. Each of these data sets is a data fold. In order to get an idea of how well your model will do when operating on unseen data you train each of your models on a large subset of all the data but leaving out one of the data folds. For convenience suppose you leave fold 1 out when training model 1, fold 2 is left out when training model 2, etc. Then the performance of model 1 on the data in fold 1 will give a robust estimate of the performance you can expect from your model on previously unseen data. \n",
    "\n",
    "To help visualize how the flow of information is controlled in a k-fold cross validation analysis I have made a diagram showing the information flow for a situation with 4 data folds. The left column shows how information flows during the training of the models and the right column of the diagram shows how information flows as we are validating our model quality. The circles represent data sets broken up into independent folds and I have drawn an arrow from a data set to a model if the model is allowed to use that data set.\n",
    "\n",
    "<img src=\"../images/diffusion_info_flow.png\" alt=\"K-folds information flow diagram\" height=400 width=400> \n",
    "\n",
    "The \"hold out data\" node in the above diagram is not really necessary for K-folds since thanks to the fact that there is no training time path from data set $i$ to model $i$ the different training folds are our hold out validation sets. I have included the hold out data node in order to keep the diagrams consistent for all the methods we will consider."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Distributed Parameter Averaging\n",
    "\n",
    "Now lets consider a very different sort of information handling strategy. Instead of giving each model access to most of the data we give each model access to only one data fold. If we didn't then allow the individual models to communicate with each other then we would get an ensemble of K independent but probably very weak models. But if we let the models communicate about their parameters with each other then the different models can come to a consensus about the best set of parameters. When the goal of the communication between models is to keep each models parameters as close as possible to the parameters of the other models this is a distributed training strategy called parameter averaging. Visualizing the flow of information in a parameter averaging scheme you get the following,\n",
    "\n",
    "<img src=\"../images/param_avg_info_flow.png\" alt=\"Parameter Averaging Information Flow Diagram\" height=400 width=400> \n",
    "\n",
    "Note that the arrows running between data nodes and models and the arrows running betwen models indicate very different sorts of communication. In the case of arrows from data to models the information being passed is the data itself (or possibly the gradients with respect to the current model parameters induced by that data). In the case of parameter averaging the model to model arrows represent an exchange of model parameter values. The way that parameter averaging is typically executed is by having one copy of the model living on each of K compute nodes each with just its part of the training data. A special \"parameter server\" node constantly collects, averages, and redistributes the parameters of each training node with the goal being to keep the different models parameters as similar to each other as possible. I have represented this operation here by a dense connection of arrows in both directions between all the models, since every model both receives and transmits information about its parameters to every other model with every averaging step.\n",
    "\n",
    "If you don't keep the parameters of each model extremely similar to each other the gradients obtained by each model start to diverge from each other and simply taking the average of the different model parameters after a large number of training iterations doesn't work very well  This is because of the very non-linear nature of the models being trained. If you take the mid-point parameters of two linear models then the resulting model gives predictions which are the average of the individual predictions. For complex non-linear models the mid-point parameters of two models can't be expected to give anything like the average of the predictions. The more different the parameters are from each other the less the mid-point parameters will act like an average prediction and the more damaging to model quality the averaging step is. \n",
    "\n",
    "Because of the necessity to keep the parameters of the different models as tightly coupled together as possible parameter averaging is not usually thought of as an esemble method but instead is simply a way to leverage a large number of compute nodes to simultaneously train a single model. Looking at the information flow network above it is easy to see that there is no reasonable way to treat any data fold as being a good validation set for any model and so it is essential that we keep a separate hold out set to validate our model quality with. Since the goal of frequent and every-to-every parameter broadcasting is to keep all the models as similar as possible to each other we can simply pick one of the models and use it to evaluate the model quality on the hold out set. Thus the single arrow from hold out to the last model in the above diagram. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Circular Parameter Diffusion (CPD)\n",
    "\n",
    "Looking at the above diagrams of K-fold cross validation and distributed parameter averaging I think it is pretty clear that the two algorithms represent nearly polar opposite strategies of information flow. The K-folds has a densely connected data to model information flow but no model communication at all, parameter averaging has no direct data sharing but depends on dense and frequent communication between all the models. Let's take a mid ground which has some of the data insulating properties of K-folds but also allows for some limited communication between models.\n",
    "\n",
    "The goal of the K-fold style of information flow is to hide some information from some models but because there is no communication between the different models there is no sharing of the computational burden between different models and so training the ensemble is very computationally expensive. On the other hand the goal of parameter averaging is to use the available compute power as efficiently to compute a single model very fast. As a result there is no advantage gained from having an ensemble of models and no model can be considered even remotely independent of any piece of data forcing us to rely entirely on a hold out set for model quality control.\n",
    "\n",
    "Let's allow some message passing between models so that the models can help each other to train more efficiently like in parameter averaging but we still tried to insulate some models from the data held in some data folds. Ideally we would like to get a model training technique that is fast like parameter averaging but which maintains some of the extra diagnostic power that comes with having a true ensemble of different models. Instead of using a densely connected 2-way communication channel between models during training we just pass parameters one way, and instead of densely connecting the models we just let each model talk to only a single other model. The natural information flow structure is to connect the models together in a message passing loop.\n",
    "\n",
    "<img src=\"../images/circular_diff_info_flow.png\" alt=\"Circular Diffusion Information Flow Diagram\" height=400 width=400> \n",
    "\n",
    "The two way arrows in the parameter averaging scheme represented replacing the model parameters with the average of the connected models. What do these one way arrows in circular parameter diffusion represent? At intervals we send a message from one model to the next consisting of the parameters of that model. Instead of replacing the current parameters with an unweighted average of the two parameter sets we take a small step towards the parameters of the informant model. The size of the step we take is controlled by a mixing strength parameter $\\alpha$.\n",
    "\n",
    "$$\n",
    "\\theta_{t+1, i} = (1-\\alpha) \\theta_{t, i} + \\alpha \\theta_{t, i+1}\n",
    "$$\n",
    "\n",
    "I have been calling this a \"diffusion update\" since after many such updates the effects of the parameters of each model slowly diffuse through the entire ensemble. The $\\alpha$ parameter may be thought of as a learning rate for the diffusion updates. With a low value for $\\alpha$ even if the differences between the parameters of different models are fairly large the updates from the diffusion step will still represent small perturbations. The reason to keep $alpha$ small is entirely analogous to the reason that it is good to use a low learning rate with gradient descent. A high learning rate may facilitate quicker learning but also runs the risk of taking steps which are too large for the gradient to be a good representation of the structure of the function. In the case of the diffusion steps if the informant models parameters differ significantly from the target models parameters then moving to the midpoint parameters may cause too much disruption to the model. By keeping $\\alpha$ small any one diffusion update is likely to be just a small perturbation and so will not disrupt the target model much. If $\\alpha$ is low then the communication between models is weak and it may take many many averaging steps for the models to effectively learn from each other. But keeping our step sizes small allows us to cope effectively with the non-linearity of the approximated function.\n",
    "\n",
    "Because the diffusion step as we have defined it is asymmetric with each model being informed only by the models upstream from it that means that it will take quite a number of diffusion steps for the effects of certain data sets to diffuse far enough to affect the parameters of models far away in the model chain. For example the parameters of model 1 will take at least K-1 diffusion steps before they could even in principle begin affecting the parameters of model K. Keeping the diffusion learning rate $\\alpha$ low also means that even after we have done perhaps many hundreds of diffusion steps the data in fold $i-1$ and the parameters of model $i$ may still not be meaningfully coupled together. This allows us to mimic the data isolating properties of K-folds without having to train each model completely independently.\n",
    "\n",
    "However we can't be really certain that the parameters of any one model are effectively independent of any of our input data. It may take a lot of diffusion steps but eventually we must expect that the parameters of all our models will come to be dependent on the data in every fold, regardless of how many models lie between them or how small our diffusion coupling $\\alpha$. Therefore it is still a good idea to keep a small independent hold out data set which we never feed in to any of our models during training. \n",
    "\n",
    "I would think that one could could treat a small holdout set as a sort of canary. As long as the model quality estimates of the hold out set roughly match the model quality estimates obtained by pairing data fold $i$ with model $i-1$ we can assume that the later is still a valid model quality estimate. This allows us to treat a circular parameter diffusion model ensemble in much the same way as we would treat a K-folds ensemble giving us the benefit of a low variance model quality estimate (albeit one with a bias that may increase over time). "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fashion MNIST test Case\n",
    "\n",
    "Now lets put these ideas to the test and see how circular parameter diffusion performs on a real data set in comparison to training a single monolithic model or training an ensemble via K-folds. I want a dataset which is just a bit more challenging than MNIST but which I can still train models for quickly. I've decided to use the <a href=https://arxiv.org/abs/1708.07747fashion>fashion MNIST</a> data set. Fashion MNIST is significantly harder to do well on than MNIST, in the table 3 of the fashion MNIST announcement paper they list a large number of machine learning algorithms and their respective accuracies on Fashion MNIST and MNIST. MNIST has a large number of models which achieve around 97% accuracy whereas on fashion MNIST none of the benchmark models perform at even 90% accuracy. \n",
    "\n",
    "Importantly essentially linear models like logistic regression actually do a pretty good job on MNIST data getting over 90% while they get closer to 80% on fashion MNIST. Parameter averaging in linear models is an intrinsically more stable process than parameter averaging on non-linear models. The higher degree of non-linearity which we are forced to deal with if we wish to achieve a high accuracy on the fashion MNIST data will make it a better test case for \n",
    "\n",
    "There are several questions which we will try to tackle,\n",
    "\n",
    "* Does CPD train an ensemble of models faster than a K-folds arrangement?\n",
    "* Can we take the average parameters of the CPD ensemble after training to boost performance?\n",
    "* Are the CPD trained models as accurate as the K-folds models?\n",
    "* Does CPD effectively isolate some data from the parameters of some models?\n",
    "* Is a CPD based cross validation an effective estimate of our model accuracy?\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import numpy as np\n",
    "np.random.seed(4321)\n",
    "import pandas as pd\n",
    "\n",
    "import scipy\n",
    "import scipy.stats\n",
    "import scipy.ndimage\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "plt.rcParams.update(\n",
    "    {\n",
    "        \"figure.figsize\":(12, 6),\n",
    "        \"font.size\":15,\n",
    "        \"image.cmap\":\"viridis\",\n",
    "        \"image.aspect\":\"auto\",\n",
    "        \"lines.linewidth\":2,\n",
    "    }\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using TensorFlow backend.\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "import keras\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Train/Test Split\n",
    "\n",
    "Instead of using the usual 60,000/10,000 train/test split of the data we will use only a small fraction of the data for training and use most of the data for the test set. This way the model accuracy estimate that we get from the test set will be more accurate than the estimate we get from the K-fold cross validation. This way not only will comparison with the test set give us a good idea of the accuracy of our models but will be accurate enough that we can treat the difference between the cross validation estimated accuracies and the test accuracy as the error in the cross validation estimated model accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_train = 20000\n",
    "batch_size = 32"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load the data\n",
    "from keras.datasets import fashion_mnist as dset\n",
    "\n",
    "(x_train, y_train), (x_test, y_test) = dset.load_data()\n",
    "\n",
    "y_train = y_train.squeeze()\n",
    "y_test = y_test.squeeze()\n",
    "\n",
    "#stack train and test together\n",
    "x_all = np.vstack([x_train, x_test])\n",
    "y_all = np.hstack([y_train, y_test])\n",
    "\n",
    "def normalize_images(\n",
    "    im_arr,\n",
    "):\n",
    "    im_arr = im_arr.astype(float)\n",
    "    flat_ims = im_arr.reshape((-1, np.prod(im_arr.shape[1:])))\n",
    "    norms = np.std(flat_ims, axis=1)\n",
    "    means = np.mean(flat_ims, axis=1)\n",
    "    bcast_shape = [-1] + (len(im_arr.shape)-1)*[1]\n",
    "    return (im_arr-means.reshape((bcast_shape)))/norms.reshape(bcast_shape)\n",
    "\n",
    "x_all = normalize_images(x_all)\n",
    "\n",
    "x_train = x_all[:n_train]\n",
    "x_test = x_all[n_train:]\n",
    "\n",
    "y_train = y_all[:n_train]\n",
    "y_test = y_all[n_train:]\n",
    "\n",
    "n_categories = len(np.unique(y_train))\n",
    "y_train_onehot = keras.utils.to_categorical(y_train, n_categories)\n",
    "y_test_onehot = keras.utils.to_categorical(y_test, n_categories)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Implementation \n",
    "\n",
    "I have made a convenience wrapper which takes a compiled keras model and a list of the training data id's and then treats the model like an ensemble. The wrapper manages splitting the training data up into different data streams for each model and keeping around the different parameters for each model as well as the different parameters for the optimizers of each model. If you don't also remember to retrieve and set the parameters of the optimizers then you get some combination of poor or confusing performance (the one exception being pure SGD with no momentum since there is no optimizer state to speak of). I have stayed away from any optimizers which have some concept of momentum in the preparation of this post because there is no convenient way to incorporate the information from the diffusion updates into the momentum vector for the different models and I would be afraid of causing runaway feedback loops between the momentum and diffusion updates. I have experienced this sort of thing in the past when doing updates by hand in the middle of optimization with optimizers like ADAM. I have chosen to use adadelta because it is my usual go to optimizer and it seems to train these models very effectively.\n",
    "\n",
    "Instead of actually making K different copies of each model we will make just 1 keras base model and periodically read and set the values of the model parameters. All this reading and writing to the parameter variables puts a strain on input/output bandwidth of the GPU. In order to stop all this I/O from slowing the training performance too much we need to do several gradient updates between parameter reads.\n",
    "\n",
    "For convenience so that we can use the same CPD ensemble wrapper to implement K-folds training of our model I have also added a flag for turning off the diffusion updates. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def accumulate_from_stream(model, stream):\n",
    "    accum_y = []\n",
    "    accum_pred = []\n",
    "    \n",
    "    for batch in stream:\n",
    "        ypred = model.predict(batch[\"x\"])\n",
    "        accum_y.append(batch[\"y\"])\n",
    "        accum_pred.append(ypred)\n",
    "    \n",
    "    return np.vstack(accum_y), np.vstack(accum_pred) \n",
    "\n",
    "class CircularDiffusionMetaModel(object):\n",
    "    \n",
    "    def __init__(\n",
    "        self,\n",
    "        model,\n",
    "        source_identifiers,\n",
    "        batcher_factory,\n",
    "        train_stream_kwargs,\n",
    "        validation_stream_kwargs,\n",
    "        n_folds,\n",
    "        k_overlap=0,\n",
    "        iterations_per_round=10,\n",
    "        mixing_alpha=0.01,\n",
    "        diffusion_on=True,\n",
    "        start_parameters=None,\n",
    "        initial_dispersion=0.01,\n",
    "        fold_seed=None,\n",
    "        perturbation_seed=None,\n",
    "    ):\n",
    "        self.model = model\n",
    "        self.n_folds = n_folds\n",
    "        self.source_identifiers = np.array(source_identifiers)\n",
    "        \n",
    "        assert 0.0 <= mixing_alpha <= 1.0\n",
    "        self.mixing_alpha = mixing_alpha\n",
    "        self.iterations_per_round = iterations_per_round\n",
    "        self.k_overlap = k_overlap\n",
    "        self.diffusion_on = diffusion_on\n",
    "        \n",
    "        if fold_seed is None:\n",
    "            fold_seed = int(np.random.random()*10000)\n",
    "        \n",
    "        if perturbation_seed is None:\n",
    "            perturbation_seed = int(np.random.random()*10000)\n",
    "        \n",
    "        n_train = len(source_identifiers)\n",
    "        \n",
    "        fold_rstate = np.random.RandomState(seed=fold_seed)\n",
    "        data_permutation = fold_rstate.permutation(n_train)\n",
    "        \n",
    "        train_identifiers = self.source_identifiers[data_permutation]\n",
    "        split_indexes = np.linspace(0, n_train, n_folds+1)[1:-1].astype(int)\n",
    "        split_train_ids = np.split(train_identifiers, split_indexes)\n",
    "        assert len(split_train_ids) == self.n_folds\n",
    "        \n",
    "        train_streams = []\n",
    "        fold_streams = []\n",
    "        \n",
    "        for fold_idx in range(n_folds):\n",
    "            collected_ids = [split_train_ids[fold_idx]]\n",
    "            for off_k in range(1, k_overlap+1):\n",
    "                collected_ids.append(split_train_ids[(fold_idx-off_k)%self.n_folds])\n",
    "            cur_train_batcher = batcher_factory(np.hstack(collected_ids))\n",
    "            cur_fold_batcher = neurad.pipeline.FixedBatcher(split_train_ids[fold_idx])\n",
    "            \n",
    "            cur_train_stream = neurad.pipeline.DataStream(\n",
    "                cur_train_batcher,\n",
    "                **train_stream_kwargs,\n",
    "            )\n",
    "            \n",
    "            cur_fold_stream = neurad.pipeline.DataStream(\n",
    "                cur_fold_batcher,\n",
    "                **validation_stream_kwargs\n",
    "            )\n",
    "            \n",
    "            train_streams.append(cur_train_stream)\n",
    "            fold_streams.append(cur_fold_stream)\n",
    "        \n",
    "        self.training_streams = train_streams\n",
    "        self.fold_streams = fold_streams\n",
    "        \n",
    "        if start_parameters is None:\n",
    "            start_parameters = model.get_weights()\n",
    "        \n",
    "        model_parameters = []\n",
    "        optimizer_parameters = []\n",
    "        \n",
    "        perturb_rstate = np.random.RandomState(seed=perturbation_seed)\n",
    "        \n",
    "        for i in range(n_folds):\n",
    "            fluctuated_params = []\n",
    "            for param_idx in range(len(start_parameters)):\n",
    "                cparam = start_parameters[param_idx].copy()\n",
    "                cparam_delta = initial_dispersion*perturb_rstate.normal(size=cparam.shape)*np.std(cparam)\n",
    "                fluctuated_params.append(cparam + cparam_delta) \n",
    "            model_parameters.append(fluctuated_params)\n",
    "            optimizer_parameters.append(model.optimizer.get_weights())\n",
    "        \n",
    "        self.model_parameters = model_parameters\n",
    "        self.optimizer_parameters = optimizer_parameters\n",
    "        \n",
    "        self.n_diffusion_steps = 0\n",
    "        self.n_gradient_steps = 0\n",
    "    \n",
    "    def get_average_parameters(self,):\n",
    "        mod_params = []\n",
    "        n_params = len(self.model_parameters[0])\n",
    "        \n",
    "        for param_idx in range(n_params):\n",
    "            avg_param = np.zeros(self.model_parameters[0][param_idx].shape)\n",
    "            for fold_idx in range(self.n_folds):\n",
    "                avg_param += self.model_parameters[fold_idx][param_idx]\n",
    "            avg_param /= self.n_folds\n",
    "            mod_params.append(avg_param)\n",
    "        return mod_params\n",
    "    \n",
    "    def apply_diffusion(self):\n",
    "        alpha = self.mixing_alpha\n",
    "        new_fold_model_params = []\n",
    "        for fold_idx in range(self.n_folds):\n",
    "            current_fold = fold_idx\n",
    "            informant_fold = (fold_idx + 1) % self.n_folds\n",
    "            pset_current = self.model_parameters[current_fold]\n",
    "            pset_informant = self.model_parameters[informant_fold]\n",
    "            p_next = []\n",
    "            n_params = len(pset_current)\n",
    "            for param_idx in range(n_params):\n",
    "                pv1 = pset_current[param_idx]\n",
    "                pv2 = pset_informant[param_idx]\n",
    "                mixed = pv1*(1.0-alpha) + pv2*alpha\n",
    "                p_next.append(mixed)\n",
    "            new_fold_model_params.append(p_next)\n",
    "        \n",
    "        self.model_parameters = new_fold_model_params\n",
    "        self.n_diffusion_steps += 1\n",
    "    \n",
    "    def accuracy_on_stream(self, dstream, parameters=\"average\"):\n",
    "        if parameters == \"average\":\n",
    "            self.model.set_weights(self.get_average_parameters())\n",
    "        elif isinstance(parameters, int):\n",
    "            self.model.set_weights(self.model_parameters[parameters])\n",
    "        else:\n",
    "            raise ValueError(\"parameters argument value not understood\")\n",
    "        \n",
    "        y_true, y_pred = accumulate_from_stream(self.model, dstream)\n",
    "        acc = np.mean(np.argmax(y_true, axis=1) == np.argmax(y_pred, axis=1))\n",
    "        return acc\n",
    "    \n",
    "    def run_training_round(\n",
    "        self,\n",
    "    ):\n",
    "        \"\"\"Perform one round of training for all the models doing iterations_per_round gradient steps for each\"\"\"\n",
    "        for fold_idx in range(self.n_folds):\n",
    "            #load the parameters\n",
    "            c_mod_params = self.model_parameters[fold_idx]\n",
    "            c_opt_params = self.optimizer_parameters[fold_idx]\n",
    "            self.model.set_weights(c_mod_params)\n",
    "            self.model.optimizer.set_weights(c_opt_params)\n",
    "            \n",
    "            dstream = self.training_streams[fold_idx]\n",
    "            for batch_idx in range(self.iterations_per_round):\n",
    "                cbatch = dstream.get_batch()\n",
    "                self.model.train_on_batch(cbatch[\"x\"], cbatch[\"y\"])\n",
    "            \n",
    "            self.model_parameters[fold_idx] = self.model.get_weights()\n",
    "            self.optimizer_parameters[fold_idx] = self.model.optimizer.get_weights()\n",
    "        \n",
    "        self.n_gradient_steps += self.iterations_per_round\n",
    "        if self.diffusion_on:\n",
    "            self.apply_diffusion()\n",
    "    \n",
    "    def timed_training_run(\n",
    "        self,\n",
    "        train_duration,\n",
    "    ):\n",
    "        stime = time.time()\n",
    "        \n",
    "        while time.time()-stime < train_duration:\n",
    "            self.run_training_round()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Architecture\n",
    "\n",
    "Since I am using just a small portion of the total training data I don't want to use a model with so many model parameters that my models immediately overfit. This is particularly true since we are using only a small part of the available training data. But I also wanted to make sure that the model is deep enough to make a good stress test of the diffusion type updates (the idea being that deeper networks are more non-linear).\n",
    "\n",
    "In the end most of the model architectures I tried out performed very similarly whether they had 5 layers or 8 layers and whether they had a million parameters or 250,000. The model below is on the smaller side of the models that I played with in terms of numbers of free parameters but is on the larger side in terms of number of layers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "from keras.layers import Conv2D, MaxPooling2D, Dense, Lambda\n",
    "from keras.layers import BatchNormalization, Flatten, Dropout\n",
    "from keras.layers import SeparableConv2D, concatenate\n",
    "\n",
    "im_size = x_train.shape[1:]\n",
    "\n",
    "def make_network(\n",
    "    dropout_rate,\n",
    "    inner_activation,\n",
    "    im_size,\n",
    "):\n",
    "    x_in = keras.layers.Input(im_size)\n",
    "    x = x_in\n",
    "    \n",
    "    if len(im_size) == 2:\n",
    "        x = keras.layers.Lambda(lambda x: tf.expand_dims(x, axis=3))(x)\n",
    "    \n",
    "    x = Conv2D(32, (3,3), padding=\"same\", activation=inner_activation)(x)\n",
    "    x = Conv2D(64, (3,3), padding=\"same\", activation=inner_activation)(x)\n",
    "    x = MaxPooling2D(pool_size=2, strides=2, padding=\"same\")(x)\n",
    "    x = Conv2D(128, (3,3), padding=\"same\", activation=inner_activation)(x)\n",
    "    x = MaxPooling2D(pool_size=2, strides=2, padding=\"same\")(x)\n",
    "    x = Conv2D(128, (2, 2), padding=\"same\", activation=inner_activation)(x)\n",
    "    x = Conv2D(16, (1, 1), padding=\"same\", activation=inner_activation)(x)\n",
    "    \n",
    "    x = Flatten()(x)\n",
    "    \n",
    "    x = keras.layers.Dropout(dropout_rate)(x)\n",
    "    \n",
    "    x = Dense(100, activation=inner_activation)(x)\n",
    "    x = Dense(100, activation=inner_activation)(x)\n",
    "    \n",
    "    probs = Dense(10, activation=\"softmax\")(x)\n",
    "    return keras.models.Model(x_in, probs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_kwargs = dict(\n",
    "    dropout_rate=0.4,\n",
    "    inner_activation=\"relu\",\n",
    "    im_size=im_size,\n",
    ")\n",
    "\n",
    "base_model = make_network(**model_kwargs)\n",
    "base_model.compile(loss=\"categorical_crossentropy\", optimizer=\"adadelta\", metrics=[\"accuracy\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input_1 (InputLayer)         (None, 28, 28)            0         \n",
      "_________________________________________________________________\n",
      "lambda_1 (Lambda)            (None, 28, 28, 1)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_1 (Conv2D)            (None, 28, 28, 32)        320       \n",
      "_________________________________________________________________\n",
      "conv2d_2 (Conv2D)            (None, 28, 28, 64)        18496     \n",
      "_________________________________________________________________\n",
      "max_pooling2d_1 (MaxPooling2 (None, 14, 14, 64)        0         \n",
      "_________________________________________________________________\n",
      "conv2d_3 (Conv2D)            (None, 14, 14, 128)       73856     \n",
      "_________________________________________________________________\n",
      "max_pooling2d_2 (MaxPooling2 (None, 7, 7, 128)         0         \n",
      "_________________________________________________________________\n",
      "conv2d_4 (Conv2D)            (None, 7, 7, 128)         65664     \n",
      "_________________________________________________________________\n",
      "conv2d_5 (Conv2D)            (None, 7, 7, 16)          2064      \n",
      "_________________________________________________________________\n",
      "flatten_1 (Flatten)          (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dropout_1 (Dropout)          (None, 784)               0         \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 100)               78500     \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 100)               10100     \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 10)                1010      \n",
      "=================================================================\n",
      "Total params: 250,010\n",
      "Trainable params: 250,010\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "base_model.summary()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In order to do a fair comparison between the various different training techniques it is important that we start all the ensembles off centered around the same initial parameters. In order to do that we can just fetch the weights of our base model and feed them in as the starting parameters for all our ensembles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "start_parameters = base_model.get_weights()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import neurad as nrd\n",
    "import neurad.pipeline\n",
    "\n",
    "class NumpyArrayTransformWrapper(object):\n",
    "    \n",
    "    def __init__(\n",
    "        self, \n",
    "        data_arr,\n",
    "        output_key,\n",
    "        as_array=True,\n",
    "    ):\n",
    "        self.data_arr = data_arr\n",
    "        self.output_key = output_key\n",
    "    \n",
    "    def __call__(self, data_in):\n",
    "        indexes = data_in[\"id\"]\n",
    "        targ = self.data_arr[indexes]\n",
    "        \n",
    "        #put the extracted data back into the data dictionary and return the whole dictionary\n",
    "        data_in[self.output_key] = targ\n",
    "        \n",
    "        return data_in\n",
    "\n",
    "train_transformer = neurad.pipeline.DataTransformer(\n",
    "    [\n",
    "        NumpyArrayTransformWrapper(x_train, output_key=\"x\"),\n",
    "        NumpyArrayTransformWrapper(y_train_onehot, output_key=\"y\"),\n",
    "    ]\n",
    ")\n",
    "\n",
    "train_formatter = neurad.pipeline.DataFormatter(\n",
    "    {\n",
    "        \"x\":None,\n",
    "        \"y\":None,\n",
    "    }\n",
    ")\n",
    "\n",
    "stream_kwargs=dict(\n",
    "    transformer=train_transformer,\n",
    "    formatter=train_formatter,\n",
    "    transform_controls={},\n",
    "    batch_size=batch_size,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are quite a few parameters going in to the ensemble initialization but most of them won't differ between the examples we are looking at here so we might as well collect the shared parameters for convenience."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "shared_kwargs = dict(\n",
    "    source_identifiers=np.arange(len(x_train)),\n",
    "    batcher_factory=neurad.pipeline.PermutationBatcher,\n",
    "    train_stream_kwargs=stream_kwargs,\n",
    "    validation_stream_kwargs=stream_kwargs,\n",
    "    start_parameters=start_parameters,\n",
    "    initial_dispersion=0.01,\n",
    "    fold_seed=1234,\n",
    "    perturbation_seed=4321,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will begin with an \"ensemble\" of just a single model. Training the model in this way makes it easier to collect diagnostics. We can just use the base model for this ensemble."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "mono_ensemble = CircularDiffusionMetaModel(\n",
    "    model=base_model,\n",
    "    n_folds=1,\n",
    "    k_overlap=0,\n",
    "    iterations_per_round=10,\n",
    "    mixing_alpha=0.0,\n",
    "    diffusion_on=False,\n",
    "    **shared_kwargs\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Unfortunately because the parameters for each optimizer aren't actually initialized until after the first training loop we can't simply use the same base model for each ensemble but instead we actually need to build and compile a fresh model per ensemble so that there are no data-leaks in the form of shared optimizer parameters (that was fun bug to figure out I can tell you).\n",
    "\n",
    "The CPD models behave quite differently depending on how strongly you couple the parameters of the different models together via diffusion steps. Therefore I have made one strongly coupled ensemble, which should train quickly but which may have more poor data isolation properties, and one weakly coupled ensemble, which will train more slowly but which should have better data isolation. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [],
   "source": [
    "cpd_sc_model = make_network(**model_kwargs)\n",
    "cpd_sc_model.compile(loss=\"categorical_crossentropy\", optimizer=\"adadelta\")\n",
    "\n",
    "cpd_sc_ensemble = CircularDiffusionMetaModel(\n",
    "    model=cpd_sc_model,\n",
    "    n_folds=10,\n",
    "    k_overlap=3,\n",
    "    mixing_alpha=0.5,\n",
    "    iterations_per_round=10,\n",
    "    **shared_kwargs\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "cpd_wc_model = make_network(**model_kwargs)\n",
    "cpd_wc_model.compile(loss=\"categorical_crossentropy\", optimizer=\"adadelta\")\n",
    "\n",
    "cpd_wc_ensemble = CircularDiffusionMetaModel(\n",
    "    model=cpd_wc_model,\n",
    "    n_folds=10,\n",
    "    k_overlap=2,\n",
    "    mixing_alpha=0.025,\n",
    "    iterations_per_round=30,\n",
    "    **shared_kwargs\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "kfolds_model = make_network(**model_kwargs)\n",
    "kfolds_model.compile(loss=\"categorical_crossentropy\", optimizer=\"adadelta\")\n",
    "\n",
    "kfolds_ensemble = CircularDiffusionMetaModel(\n",
    "    model=kfolds_model,\n",
    "    n_folds=10,\n",
    "    k_overlap=8,\n",
    "    mixing_alpha=0.0,\n",
    "    iterations_per_round=10,\n",
    "    diffusion_on=False,\n",
    "    **shared_kwargs\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_transformer = neurad.pipeline.DataTransformer(\n",
    "    [\n",
    "        NumpyArrayTransformWrapper(x_test, output_key=\"x\"),\n",
    "        NumpyArrayTransformWrapper(y_test_onehot, output_key=\"y\"),\n",
    "    ]\n",
    ")\n",
    "\n",
    "test_stream = nrd.pipeline.DataStream(\n",
    "    batcher=nrd.pipeline.FixedBatcher(np.arange(len(x_test))),\n",
    "    transformer=test_transformer,\n",
    "    formatter=train_formatter,\n",
    "    transform_controls={},\n",
    "    batch_size=batch_size,\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Diagnostic Value Collection\n",
    "\n",
    "I will focus mostly just on tracking classification accuracy of the various models on the different data sets. But every pairing of model and data set is of potential interest not to mention the performance of the mean model parameters. I thus compute the accuracy of every set of model parameters (including the global average parameters) on all of the training data folds individually as well as the test data. The large number of models combined with the large size of the test data set means that more time is actually spent evaluating the various model accuracies than is spent training the models. \n",
    "\n",
    "On a larger real world problem you probably wouldn't want to use this sort of diagnostic collection as frequently as we are doing here since it would hugely explode your training time. Though it might be worthwhile to collect these diagnostics once at the end of a full training run for these type of model ensembles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def collect_diagnostics(meta_model, test_stream):\n",
    "    train_accs = []\n",
    "    test_accs = []\n",
    "    cv_accs = []\n",
    "    acc_matrix = np.zeros((meta_model.n_folds, meta_model.n_folds))\n",
    "    \n",
    "    for model_idx in range(meta_model.n_folds):\n",
    "        train_accs.append(meta_model.accuracy_on_stream(meta_model.training_streams[model_idx], parameters=model_idx))\n",
    "        test_accs.append(meta_model.accuracy_on_stream(test_stream, parameters=model_idx))\n",
    "        \n",
    "        validation_idx = (model_idx - meta_model.k_overlap - 1) % meta_model.n_folds\n",
    "        for data_idx in range(meta_model.n_folds):\n",
    "            fold_stream = meta_model.fold_streams[data_idx]\n",
    "            cur_fold_acc = meta_model.accuracy_on_stream(fold_stream, parameters=model_idx)\n",
    "            acc_matrix[model_idx, data_idx] = cur_fold_acc\n",
    "            if data_idx == validation_idx:\n",
    "                cv_accs.append(cur_fold_acc)\n",
    "    \n",
    "    test_acc_centroid = meta_model.accuracy_on_stream(test_stream, parameters=\"average\")\n",
    "    \n",
    "    diagnostics = dict(\n",
    "        cv_accuracies = cv_accs,\n",
    "        mean_cv_acc = np.mean(cv_accs),\n",
    "        train_accuracies = train_accs,\n",
    "        mean_train_acc = np.mean(train_accs),\n",
    "        test_acc_centroid = test_acc_centroid,\n",
    "        test_accuracies = test_accs,\n",
    "        mean_test_acc = np.mean(test_accs),\n",
    "        acc_matrix=acc_matrix,\n",
    "        round_num = meta_model.n_diffusion_steps,\n",
    "        gradient_num = meta_model.n_gradient_steps,\n",
    "    )\n",
    "    return diagnostics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Model Training\n",
    "\n",
    "Instead of training for a certain number of passes through the data it is more meaningful to train each model ensemble for a certain amount of time. The monolithic model \"ensemble\" trains much faster than the rest of the models and so we only train it for a fraction of the total time that we train the other models so that the total number of training batches is similar between it and the other models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "run_duration = 50\n",
    "n_runs = 40"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.816 0.83256 0.8391 0.83256\n",
      "1.872 0.8553 0.8622 0.8553\n",
      "2.928 0.87578 0.8888 0.87578\n",
      "3.968 0.88492 0.89885 0.88492\n",
      "5.024 0.89202 0.90985 0.89202\n",
      "6.064 0.8944 0.9171 0.8944\n",
      "7.104 0.89716 0.92175 0.89716\n",
      "8.144 0.90546 0.9347 0.90546\n",
      "9.184 0.90598 0.9372 0.90598\n",
      "10.24 0.90776 0.94105 0.90776\n",
      "11.28 0.9101 0.9466 0.9101\n",
      "12.304 0.91112 0.95165 0.91112\n",
      "13.344 0.91136 0.95515 0.91136\n",
      "14.368 0.90822 0.95565 0.90822\n",
      "15.408 0.91482 0.9652 0.91482\n",
      "16.448 0.91478 0.9693 0.91478\n",
      "17.504 0.91028 0.96975 0.91028\n",
      "18.544 0.91156 0.9698 0.91156\n",
      "19.584 0.91396 0.9727 0.91396\n",
      "20.64 0.91494 0.97895 0.91494\n",
      "21.68 0.91466 0.98115 0.91466\n",
      "22.72 0.91506 0.9834 0.91506\n",
      "23.76 0.91536 0.9835 0.91536\n",
      "24.8 0.9152 0.98735 0.9152\n",
      "25.856 0.9129 0.98555 0.9129\n"
     ]
    }
   ],
   "source": [
    "fit_diagnostics_mono = []\n",
    "\n",
    "for i in range(n_runs):\n",
    "    stime = time.time()\n",
    "    mono_ensemble.timed_training_run(run_duration/10)\n",
    "    etime = time.time()\n",
    "    achieved_duration = etime-stime\n",
    "    cdiag = collect_diagnostics(mono_ensemble, test_stream=test_stream)\n",
    "    cdiag[\"dt\"] = achieved_duration\n",
    "    fit_diagnostics_mono.append(cdiag)\n",
    "    print(cdiag[\"gradient_num\"]*batch_size/n_train, cdiag[\"mean_test_acc\"], cdiag[\"mean_cv_acc\"], cdiag[\"test_acc_centroid\"],)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.024 0.84569 0.8485 0.85178\n",
      "2.064 0.86953 0.8796 0.87276\n",
      "3.104 0.88149 0.89545 0.88494\n",
      "4.128 0.890404 0.905 0.89364\n",
      "5.184 0.89668 0.9175 0.89958\n",
      "6.208 0.900268 0.9246 0.90462\n",
      "7.248 0.904828 0.9358 0.90816\n",
      "8.288 0.907316 0.9426 0.90988\n",
      "9.328 0.909774 0.94665 0.9124\n",
      "10.368 0.910686 0.9524 0.91332\n",
      "11.408 0.911746 0.958 0.91488\n",
      "12.448 0.913 0.9633 0.91522\n",
      "13.488 0.912692 0.9676 0.91522\n",
      "14.528 0.913554 0.9737 0.91684\n",
      "15.568 0.913784 0.97695 0.91644\n",
      "16.624 0.91467 0.9807 0.91668\n",
      "17.664 0.913578 0.98225 0.9156\n",
      "18.704 0.915182 0.98635 0.91698\n",
      "19.744 0.915278 0.9891 0.91708\n",
      "20.784 0.914284 0.99015 0.91618\n",
      "21.824 0.914988 0.9918 0.91774\n",
      "22.864 0.91501 0.9936 0.91666\n",
      "23.904 0.915242 0.99505 0.91708\n",
      "24.944 0.915216 0.9957 0.91636\n",
      "25.984 0.914658 0.99615 0.91678\n"
     ]
    }
   ],
   "source": [
    "fit_diagnostics_sc_cpd = []\n",
    "\n",
    "for i in range(n_runs):\n",
    "    stime = time.time()\n",
    "    cpd_sc_ensemble.timed_training_run(run_duration)\n",
    "    etime = time.time()\n",
    "    achieved_duration = etime-stime\n",
    "    cdiag = collect_diagnostics(cpd_sc_ensemble, test_stream=test_stream)\n",
    "    cdiag[\"dt\"] = achieved_duration\n",
    "    fit_diagnostics_sc_cpd.append(cdiag)\n",
    "    print(cdiag[\"gradient_num\"]*batch_size/n_train, cdiag[\"mean_test_acc\"], cdiag[\"mean_cv_acc\"], cdiag[\"test_acc_centroid\"],)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.152 0.837952 0.83725 0.82404\n",
      "2.352 0.861276 0.86055 0.8535\n",
      "3.552 0.86812 0.86895 0.8739\n",
      "4.752 0.881922 0.8839 0.88356\n",
      "5.952 0.88572 0.8857 0.89194\n",
      "7.104 0.891414 0.89315 0.89708\n",
      "8.256 0.895706 0.8948 0.90074\n",
      "9.456 0.897668 0.89785 0.90242\n",
      "10.608 0.899154 0.90085 0.90434\n",
      "11.808 0.900334 0.90305 0.90744\n",
      "13.008 0.899328 0.90335 0.90968\n",
      "14.208 0.901854 0.9047 0.91064\n",
      "15.36 0.903124 0.90895 0.91188\n",
      "16.56 0.904408 0.9113 0.91208\n",
      "17.76 0.902906 0.9106 0.91332\n",
      "18.96 0.90553 0.9147 0.91436\n",
      "20.16 0.906328 0.9193 0.91458\n",
      "21.36 0.907208 0.92175 0.9152\n",
      "22.56 0.905856 0.92445 0.91528\n",
      "23.76 0.907976 0.9296 0.91542\n",
      "24.96 0.907398 0.93325 0.91594\n",
      "26.16 0.907112 0.9357 0.9149\n",
      "27.36 0.908106 0.93815 0.91596\n",
      "28.56 0.908084 0.94215 0.9159\n",
      "29.76 0.908022 0.94465 0.91618\n"
     ]
    }
   ],
   "source": [
    "fit_diagnostics_wc_cpd = []\n",
    "\n",
    "for i in range(n_runs):\n",
    "    stime = time.time()\n",
    "    cpd_wc_ensemble.timed_training_run(run_duration)\n",
    "    etime = time.time()\n",
    "    achieved_duration = etime-stime\n",
    "    cdiag = collect_diagnostics(cpd_wc_ensemble, test_stream=test_stream)\n",
    "    cdiag[\"dt\"] = achieved_duration\n",
    "    fit_diagnostics_wc_cpd.append(cdiag)\n",
    "    print(cdiag[\"gradient_num\"]*batch_size/n_train, cdiag[\"mean_test_acc\"], cdiag[\"mean_cv_acc\"], cdiag[\"test_acc_centroid\"],)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.024 0.839744 0.83815 0.8112\n",
      "2.064 0.86176 0.86245 0.82854\n",
      "3.104 0.872108 0.87355 0.83406\n",
      "4.144 0.88547 0.8843 0.84924\n",
      "5.184 0.8898 0.88905 0.84982\n",
      "6.224 0.89602 0.89545 0.85112\n",
      "7.264 0.898716 0.8958 0.85612\n",
      "8.304 0.903832 0.90335 0.8547\n",
      "9.344 0.904614 0.9048 0.85884\n",
      "10.384 0.906166 0.9062 0.85782\n",
      "11.392 0.907512 0.90865 0.85742\n",
      "12.4 0.907744 0.9085 0.86088\n",
      "13.408 0.909978 0.9108 0.85908\n",
      "14.416 0.910182 0.9114 0.86076\n",
      "15.44 0.910338 0.91025 0.8578\n",
      "16.448 0.911348 0.91155 0.85778\n",
      "17.44 0.912136 0.91225 0.85912\n",
      "18.448 0.912682 0.913 0.85832\n",
      "19.472 0.912772 0.91165 0.85736\n",
      "20.48 0.912808 0.9127 0.8583\n",
      "21.488 0.912952 0.91125 0.85512\n",
      "22.512 0.91384 0.91455 0.85566\n",
      "23.552 0.913362 0.9134 0.85306\n",
      "24.592 0.912508 0.91085 0.85378\n",
      "25.632 0.911828 0.91035 0.85498\n"
     ]
    }
   ],
   "source": [
    "fit_diagnostics_kfolds = []\n",
    "\n",
    "for i in range(n_runs):\n",
    "    stime = time.time()\n",
    "    kfolds_ensemble.timed_training_run(run_duration)\n",
    "    etime = time.time()\n",
    "    achieved_duration = etime-stime\n",
    "    cdiag = collect_diagnostics(kfolds_ensemble, test_stream=test_stream)\n",
    "    cdiag[\"dt\"] = achieved_duration\n",
    "    fit_diagnostics_kfolds.append(cdiag)\n",
    "    print(cdiag[\"gradient_num\"]*batch_size/n_train, cdiag[\"mean_test_acc\"], cdiag[\"mean_cv_acc\"], cdiag[\"test_acc_centroid\"],)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "mono_df = pd.DataFrame(fit_diagnostics_mono)\n",
    "cpd_sc_df = pd.DataFrame(fit_diagnostics_sc_cpd)\n",
    "cpd_wc_df = pd.DataFrame(fit_diagnostics_wc_cpd)\n",
    "kfolds_df = pd.DataFrame(fit_diagnostics_kfolds)\n",
    "\n",
    "for df in [mono_df, cpd_sc_df, cpd_wc_df, kfolds_df]:\n",
    "    df[\"training_time\"] = np.cumsum(df[\"dt\"].values)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Training Speed\n",
    "\n",
    "My initial goal was to make an ensemble training method which would have the data insulating qualities of K-folds but which would leverage message passing to get accelerated training. Did it work? \n",
    "\n",
    "The answer depends on how closely you couple the parameters of the different models together and whether you are talking about speed or data insulating. As you can see below CPD with strongly coupled model parameters (an ensemble with a high $\\alpha$) trains somewhat faster than the corresponding K-folds ensemble, both in terms of training time and in terms of increase in increased accuracy per training batch. But very weakly coupled CPD actually takes longer to train than a K-folds style model. \n",
    "\n",
    "Unfortunately even in the case of the strongly coupled CPD the model takes longer to train in terms of wall clock time than simply training up a single model. Though if you are measuring model training in terms of number of training batches fed to each model CPD has a slight edge over training just a single model or training a K-folds ensemble. The fact that the K-folds and single model training curves are essentially the same when taken in terms of training batches per model is to be expected since the K-folds ensemble is just training the same model 10 times each with 90% of the same data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_diagnostics = [\n",
    "    dict(df=mono_df, model_name=\"Single Model\", color=\"k\", linestyle=\"-\"),\n",
    "    dict(df=cpd_sc_df, model_name=\"CPD [Strong Coupling]\", color=\"r\", linestyle=\"-\"),\n",
    "    dict(df=cpd_wc_df, model_name=\"CPD [Weak Coupling]\", color=\"r\", linestyle=\"--\"),\n",
    "    dict(df=kfolds_df, model_name=\"K-folds\", color=\"b\", linestyle=\"-\"),\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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Ze666y4SEoy82SZNmnDixAnmzZtHixYtqFWrVr7/3z355JO89dZb9OnThylTpnD58mWefvppWrZsydChQwvVxylTptChQwdGjhzJmDFj2L17N++99x4AAQVUOfr444/p3r07bdu25YknnqBZs2ZcvHiRFStW8N5777F+/Xrq16/P9OnT6dOnD2PGjGHkyJHs2LGD559/noceeshclNS3b19CQkIYO3YsEydOZP/+/bz99ttu3zckJIQBAwbw1FNPcezYMZ566inuvvtuM1/RW/r3788tt9zCPffcw4wZMwgJCWH69OnUqVOnwO+N8B1rIJVnoH7yJNgCqUNhzcm8ZMxy1q5dPmL0skjGbBmzK/SY7Umx9YrwKPKGR1u3mnMEL9aaY5ku+Iu+++67i/aapVh52Dwj16effqq7deumw8PDdWBgoG7UqJGeOHGiPnbsmHkNeWyMYYVtAxVABwcH65iYGH333XfrxYsXe9QPd+9x8OBBPXHiRH3LLbfoatWq6apVq+oWLVrov/zlL/rKlSvmddeuXdOjR4/WkZGRGtCjRo3SWue/GcOWLVt09+7ddUhIiK5WrZq+99579fHjx83z+/fv14BesmSJw33uXvM///mPTkxM1MHBwbpz58565cqVGtBffPFFgV/3sWPH9J/+9CedkJCgg4KCdPXq1XXv3r31Z5995nDdwoULdYsWLXRgYKCuV6+efvbZZ3VmZqbDNcuWLdPNmjXTISEhukuXLnrXrl0u39e4uDj95JNP6hdffFHXrl1bh4aG6pEjR+pz586Z17jbPMP5dbp27aqHDh3q8P7u7ktPT9d9+vTRwcHBOjY2Vr/zzju6V69eevDgwS7fC9nwyD/j9oIFC8yf1REjRri/KCXFHNNXJY43x/TbbivUW5UaMma7kjFbxmx/jNlae2fDoxIfaEvLo8iB+ldfmYP6qLrJ5qBel/F68qOPFu01S7HyNOiXFoD++9//7jKQlUUfffSRBvS+fftKuisu4uLi9MSJE0vs/c+fP69r1KihX3jhBfNYTk6OzszM1A888IAE6n4Yt//973+bAdpvf/tb9xctWGCO6e/c+qY5pv/ut2Xz51PGbO+TMds/yvqYrbV3AnVJfSmu1q3hX/+CgwdJX9ASjhqH/8V+ev9jJQQFwaxZJdtHUepNmDCBCRMmsHXrVpfyXKXZww8/TK9e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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3ee41c8198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, sharey=True)\n",
    "\n",
    "for mdiag in model_diagnostics:\n",
    "    pl_kwargs = dict(data=mdiag[\"df\"], label=mdiag[\"model_name\"], color=mdiag[\"color\"], linestyle=mdiag[\"linestyle\"])\n",
    "    axes[0].plot(\"gradient_num\", \"mean_test_acc\", lw=3, **pl_kwargs)\n",
    "    axes[1].plot(\"training_time\", \"mean_test_acc\", lw=3, **pl_kwargs)\n",
    "\n",
    "axes[0].legend()\n",
    "axes[1].legend()\n",
    "axes[0].set_xlabel(\"Training Batches per Model\")\n",
    "axes[1].set_xlabel(\"Time [seconds]\")\n",
    "axes[0].set_ylabel(\"Prediction Accuracy\");\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Global Average Parameter Performance\n",
    "\n",
    "In the speed analysis we were comparing the average performance of the various models in the ensemble on the test data. But in CPD because we let the models communicate during training we can expect that the average model parameters over all of the models in the ensemble should be a valid model. Intuitively I would expect also the model corresponding to the global mean parameter set to behave better than any individual model in the ensemble.\n",
    "\n",
    "Note that this is not the case for K-folds where I expect that because there is no communication between the different models the post-processing average of all the parameters in the k-folds ensemble is likely to be nonsense and so we should expect it to have significantly poorer performance than any model in the ensemble. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3eafc2d278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 2, sharey=True)\n",
    "\n",
    "axes[0].axhline(0.913, alpha=0.5)\n",
    "axes[1].axhline(0.913, alpha=0.5)\n",
    "\n",
    "for mdiag in model_diagnostics:\n",
    "    pl_kwargs = dict(data=mdiag[\"df\"], label=mdiag[\"model_name\"], color=mdiag[\"color\"], linestyle=mdiag[\"linestyle\"])\n",
    "    axes[0].plot(\"gradient_num\", \"test_acc_centroid\", **pl_kwargs)\n",
    "    axes[1].plot(\"gradient_num\", \"mean_test_acc\", **pl_kwargs)\n",
    "\n",
    "axes[0].legend()\n",
    "axes[1].legend()\n",
    "axes[0].set_title(\"Accuracy at central parameters\")\n",
    "axes[1].set_title(\"Typical model Accuracies\")\n",
    "\n",
    "for ax in axes:\n",
    "    ax.set_xlabel(\"Training Batches per Model\")\n",
    "\n",
    "axes[0].set_ylabel(\"Prediction Accuracy\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "When dealing with the average parameters both the strong and weakly coupled CPD outperform the typical accuracy of one of the models in their ensemble (as expected) and k-folds gets a significant hit in performance when we try using the mean model parameters (as expected). Note that the fact that the K-folds mean parameters performs better than random is due to the fact that we started all of the models int he K-folds ensemble at very nearly the same point in parameter space, something which is not usually done for K-folds.\n",
    "\n",
    "I find it very interesting that in the case of the weakly coupled CPD ensemble the test accuracy of the centroid parameters roughly follows the typical accuracy curve of the single model trained with all the data. The fact that the performance of each model in the weakly coupled CPD is relatively poor suggests that the models have failed to effectively communicate with each other. If the models are allowed to drift too much apart then we would expect a decrease in performance from taking the average parameters just as in the case of K-folds. But, apparently even though the communication has been too weak to much heighten the performance of the individual models, it has been somehow strong enough to keep the different models compatible with each other. \n",
    "\n",
    "I want to emphasize the importance of the fact that we can replace the CPD ensemble with a single model and still get an increase in performance, which is a very significant advantage over a K-folds type ensemble. A K-folds trained ensemble may give better predictions than any single model in the ensemble when the models are somehow allowed to vote. but this requires keeping around and deploying K different models instead of just 1 which is usually not worth the headache. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Data Isolation\n",
    "\n",
    "So a CPD ensemble trains slightly faster than a K-folds version, but instead of having perfect isolation of some data from the parameters of some models we have just an approximate isolation, and one that we can only expect to get worse over time.\n",
    "\n",
    "We can test the degree of information leakage between each data fold and each model by comparing the accuracy of the model predictions on that data fold and the accuracy of that model on the test data. In the case of K-folds there is no communication at all between models and so there is no information leakage from the held out data folds and the associated models. In CPD although there are no data folds which are perfectly isolated there are data folds which take a larger number of diffusion steps to reach the parameters of a given model. In the early stages of training we should expect that the maximally isolated data folds should still act as being essentially independent validation sets. The more strongly coupled the model parameters are to each other and the more diffusion steps we have undergone the more likely that we are to have begun overfitting each model to even the most distant data fold."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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7rrrLh544IEs9XHixIncc8899OnTh0GDBnHgwAHee+89AJcmn5988gnt27enSZMmjBkzxhp4a8OGDbz33nts376doKAgpk6dSnh4OIMGDaJPnz7s27eP559/nscee8x6YLdz5874+voyePBgoqKiOHr0aIYefHx9fenatSvjx4/n5MmTjB8/np49e1pt8LOL++67j0aNGvHQQw8xY8YMfH19mTp1KoGBgblvDpuRg37MO/5wV478gXDgojtO/4HxwFVgKhCKCcrV2JL3FLDNnXby8lWoA2+dPat15872EZiqV9f6559zu2c3R2qq1suXa121avrIUo88ovXBg7d8iy1btO7SxXnwKvevyxr+0LBVwwoN/9XwgobHdcWKI3RExAz99tvL9LFjx25dJoIgFEoKQuCtNJYtW6ZDQ0O1v7+/9vT01MHBwToqKkqfPHnSWoYMgmrZgk3QQG9vb125cmXds2dPvWbNGrf64ewex44d01FRUbpRo0a6ZMmS2s/PTzdo0EBPnz5dX7582VouMTFRDxw4UAcEBGhAP/roo1rrzAM57dmzR7dv3177+vrqkiVL6r59++pTp05Z848ePaoB/cUXX9jVc9bm559/rmvWrKm9vb11q1at9MaNGzWgV65c6fK5T548qZ966ildvXp17eXlpUuVKqU7deqkly9fblfus88+0w0aNNCenp66UqVK+tlnn9VJSUl2ZdatW6fr1aunfX19devWrfX+/fvTybVq1ap67Nix+oUXXtDly5fXxYoV03369NHnz5+3lnEWeMuxnXbt2ukHHnjA7v7O6sXExOjw8HDt7e2tq1Spot955x0dFhamu3fvnk4WORl4KzPlPAHo4LIB6ABccutmEANMsPy7iIPCHw6cdaedvHwVaoV/zBh7TTQ83CwC8iP792vdsWN67bpxY61//PGWmk5N1To6Wut27TJW4r28UvUdd1zX1aqd1pUr79F+fp9qeFHDCA0PaGiloZYGP+sPjlJKN2zYUI8cOVJ//vnn+sSJE9kjC0EQCj0FSeHPKwD6jTfeSKfE5kc++ugjDeg///wzt7uSjqpVq+qoqKhcu/+FCxd0mTJl9OTJk61pqampOikpSQ8YMCDHFP7MTHr+B9wPfO3iJcH9lrLuUAHYnUFeKuD2iQalVD3gTaAFcAF4H5iqtXZyitKuXklM8LAeGD+E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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3eafa902e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(2, 1, figsize=(12, 8), sharey=True)\n",
    "\n",
    "for mdiag in model_diagnostics:\n",
    "    df = mdiag[\"df\"]\n",
    "    pl_kwargs = dict(lw =3, label=mdiag[\"model_name\"], color=mdiag[\"color\"], linestyle=mdiag[\"linestyle\"])\n",
    "    axes[0].plot(df[\"gradient_num\"], df[\"mean_train_acc\"]-df[\"mean_test_acc\"], **pl_kwargs)\n",
    "    axes[1].plot(df[\"gradient_num\"], df[\"mean_cv_acc\"] - df[\"mean_test_acc\"], **pl_kwargs)\n",
    "\n",
    "axes[0].legend()\n",
    "axes[1].set_xlabel(\"Training Batches per model\")\n",
    "axes[0].set_ylabel(\"Overfitting \\n Core Training Data\")\n",
    "axes[1].set_ylabel(\"Overfitting \\n Maximially Isolated Data\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This all makes a lot of sense. The degree to which all the models predict the labels of the samples whose gradients they were fed directly increases with time. The larger the data set the longer it takes to overfit to. The single model which was fed all the training data with no distinction learns to overfit to all N training samples just slightly slower than the K-folds models overfit to their $(K-1)/K*N$ training samples. The strongly coupled CPD ensemble is the model that most quickly learns to fit the data and so it comes as no surprise to me that the higher training rate also comes with faster overfitting. Also because this higher training speed comes from frequent and strong parameter diffusion the models in the strongly coupled CPD also rapidly overfit to the data outside of the footprint of their immediate training data. \n",
    "\n",
    "The weakly coupled CPD tells the most interesting story here. Each model in the weakly coupled CPD has access to only a very small subset of the total data and so it learns to overfit to that individual data set very quickly. However because the coupling between models is weak it takes a long time for the information about distant training folds to diffuse out to permeate the parameters of the models in the ensemble.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Diffusion Plots\n",
    "\n",
    "An interesting new diagnostic that CPD makes possible is that we have much more information than simply the performance of our models on a hold out set and our training set to gauge how our models are fitting/overfitting to the training data. Because some models are more insulated from some data folds than others we can see a continuous progression from most overfit (the data on which each model trains directly), to most isolated."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAtMAAAGRCAYAAACnjD/LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJzs3XecJHWd//HXe2Yz7MIGsiigYOZnWDAhgsqJeMgZODDAIYcYMaCYTnHBHDkUFdczgShGFBAORYJwiIJIkKhEybK7sCzLxvn8/vhW7/b29Mx013ynu2vm/Xw8eme7uurT3w7v7m9XfatKEYGZmZmZmbWvr9sNMDMzMzOrKnemzczMzMxKcmfazMzMzKwkd6bNzMzMzEpyZ9rMzMzMrCR3ps3MzMzMSnJnOjNJCyRF3WW3brfJ8qh7bberm3ZIMW2PDrXhQw3vr47c70RS5QxLOqxqbc5F0sWS/t4w7QeS1nSwDefWvW86dr/W+yRtJOkESf+QNND4Xm2xxqD3+DDzvrR4H76x/dZauyrVmZY0Q9J7JF0kabGk1ZLuk3RW0amZVDfvBQ1fiKsl3SXpR5Ke2lD3toZ5l0m6o6j7Lkmblmjue4GDgBsb7msHSQsl3SBpuaQlkq6T9H1JezbMu0DSv5W470qQ9BJJPyk+XFZKeljSnyV9StJjut2+HnUG6X21sNsNKaPKGZa0d1H7E00e1/OK21ZKmtHk9nOKL9B5JdrRcZImFx3zcyX9s3juH5B0nqR3SJre7Tb2qM+Q3jOXdLshloekPYpsv7/JbS+S9JCkeyTtPEKpjwDvAH4I/AfwvjFornXJpJFn6Q2SngD8GtgJOJf0ofUAsDnwUuC7wFOAD9QtthI4rPj/dOA5pDfxKyTtEhH1Hd07gQ8X/58GbA3sARwP/Jek10XEeW00+ZcRcVvDY5gPXAisBk4Cri3atROwL/AwcH7dIh8Hvg/8so377XmS+oBvkl6b20kfLn8DpgDPJn3gvJn02va6k4FTgVWduLOIuBa4tuh0Ht6J+8xlHGT4YmANsGeTefcobpsCPL94fAAUr9Xzgb9GxANt3H9XSNqC9KNtF+BS4DjgHmAOsDvp+XwB8PputbENbwL+s1N3FhG/g/TDi/RetXFK0r8CPwXuBfaKiJHWGO8F/CUiPjjmjbOOq0RnulgLciawA/CaiPhFwyyfk7QL6cO/3pqI+EHd9W9Juh74IvAuUqet5qGGeQGOlfQi4HTgV5Ke2UJghvNxYAbwzIi4sv4GSe8EthxFbSTNjIiHR1OjQxaQOkg/Ag6JiA06opLeR3quel5ErAXWdrsdvW48ZDgilkm6DNhV0oyIWF538x7Ab4FnFP8/t+62XYCNgQvK3G8nSRLwc1Kb3xERX2+Y5UuSngi8quONKyEiVne7DTb+SHo9aUXXTaSO9N0tLLZlMb+NQ1UZ5nEY8ETgS02+hAGIiMuafPA3c07x9wmt3HFEXEjaHLMx8KFWlhnGjsCixo50cT8DtUBK2k5S7Tzv/1G/+bo2f3H9e8VQiYslLSOtTaKuxsnFJvSVkm6W9OnGTdBaPz70icXtdxbzXyVpn8Z2Fpvpv1xs1lou6dKiDd+rb99QJG0OHEVaI31oY0e6eC4ejIj3NizX6uMZsh2156yhZhTPweskXS1pRTE8YIHqhhwM83gGjZmum/ZiSe8v2rpS0k2S/qNJjX5JH5N0e3H/V0s6QE3GaFfYeMnw+cBk0ppZYIM1zxcCv2fwmus96pZdR9I2kk5UGua0SmkIy4lqGAoi6TFF5q6S9GDxHrlW0lGS+ltptKSPF++l44oO81D+rXhspwz1WkTEjRHx2Yb6eygNCVlafC78WdIhTdpxp6Rzm0wfNL5T68d/7ynpE0UuVxTPw/4tPu5BY6Zr0yRtKumbSsNYVhSfo40/5pC0WfG5slhp+NC5knZWG+NXbfyQ9DbSFskrgN1H6kjX3sfAtsBLtP77/KN187xG0h8kPVK8xy5SWvPdapteLenK+u8vmqwslTRd0rGSbtT6YabXSPrs4KrWjkqsmQZeW/zNMU50x+JvO5tbTwZOAAZ1Ltt0M/BESa8eqkNR+Cdp3N3JwEUM/bjnA68BvkX6lQyApMcBfwI2Ab5B+jW8B2kT+AskvSQiGneO+T5p+MkXSZuq3wP8UtJODZu6f0p6Hn5JWvu2PXAacOtwD7zOK0ib4E+KiBWtLFDy8bRjX9Lj/Rppk90rSWvGH0faTFzWp0lDE75JGq7wNuB7kv4eEf9XN98JwFtJna0vApsBX6f157QKxkuGzyeNfdyDtCYa1q95vhBYChwvaaOIeKS4fQ8gitsBkLQ9aVxtP/Bt4BbS43obsKfSEJalxezPIHVyTyN9hkwpHsfnge3YcO38BorO9jdIP2aOiogvjvD42n6dlPbr+BlpKMgXgEeA1wHflbR9RIx2K9MXSTk6gbQC6FDgJ5IOarIlouVmk16/u0lbyjYDjgR+LWmHiFgGIGka8DvgaaRhSJeTXo/zgIdIr6tNEJI+TPpcPw/Yr/Y+GcH5pO/zr5Deb7WO65VFzSOK264HjiG9x98EnCHpPyPiOyO0aX/gx6TPkGOAgWL5VzaZ/UTgYOB7wB9IKwZ2BF7cwuOw4UREz1+ARcDSNpe5AFgGzCsu25K+KP5B+gB8Wd28t5HGMw5X7+piuZkjzLegmG+7Jrc9jzS2Nkgdwu+QvjyfPEStAL43zG0BvLTJbacUt+3TMP0LxfT/bNLeMwHVTd+lmP6Zumn7FNO+1VC3Nj1aeF2+VMz76jZey3Yez/eGakfj80nqiARpmMaz6qaL1HEJ4LnDvbbAIcW0PZpM+wswpW76NqRO9Y/qpj21mPd/gb666U8v2jXUe2nQ/fbyhfGT4enFa3hJ3bQPF+2cBDy5WPZfitsmkfaFuLKhzq9JP9y2bpj+nOJ1/2jDfapJW35IGqe9ed20w4r7361Y7nTSZ84bWnzOryqWn9Xi/JNJY9UXA1vWTZ9KGm+9FtihbvqdwLlN6ry0uN83Nnkst9S3B9i0qPMAMK1u+sXA3xvq/oA0VKhxWgBfaZj+OgZ/nryrmPbBhnlr0//e+FiGul9fqnlh/Y/hm4u/pwFTS9QZ9N4H5gLLSTs5z6ybvknxmfZQw3t/g/d48flyF3A/MLduei0jjZlaCpze7ed0PF6qMsxjFulN0K6NSGt5/wncQVqrOok0Tvec4RZsonb/s0q0A4CI+ANpB7vvk8LyJtIayOuKzTo7tFnyqojYYJOp0s59ryTt6HBWw/yfIf1qbTbe8fgo0la09TJSJ2DHunn2Lf5+ueFxnUX6Vd2K2vPX0us5isfTjt9GxBW1K8Xz8Pni6mhqfz3qhrFExF2kH1H1z2ltU97xETFQN+81rB/OMB6Mlww/CvwRmC9po2LyHsD/RcSaiLie9MW2R3Fbba31uiEekuYALydt3VklaV7tQvrCvhX4l/r7rGVT0hRJc4p5f0Nas/3sJk2dS1p7tgfpR+gpLT7E2nPT6r4Xu5B+JP5PRNxb1+aVpDXKtfyOxtdj/Vp6IuJB0taeucALR1H3uIbrtZ1TGz/zVpPWitf7JukHlE0cWxV/byne3zm8jPSj9/io298pIh4ivedmMfxa411JO1p/OyIW1S1fy0ijh4Cnq+FoSDZ6VRnmsRSYWWK5FazvAK4B7gNurO+0tKGtTuBQik7SIbBu+MKLSGtgXkjaQerZ0WQc8RCa7cywGenL+9om971Y0j2kncAa3dJk2mLSF1bN9qTOa7NxgjeS1sqNpPb8tfp6ln087Wj2Q+C64u9oajd7TheRho/UbF/8vbHJvDeSOl3jwbjJMKlj/EJgN0m/I42X/kzd7fXjpvco/l5Qd/uTSFs/3lJcmlm3U6ukyaS13wcBjy+WrTe7yfInk36IvCAiLh320Wyo9txsTGsd6tr7d1A+gb8Wf3sxnwOk/Tbq1TojjZ95d8b6ITtA+rEg6TZSR8gmhs+Svq+PlEREbHBoO6WdrDdpWObBGH4442jzU7vthia3Xddk2rtJK/P+Kulm0mfZ6cCZ9SvTrH1VWTP9V2BWiTW3ayPi3OJyQURcX+ZLWNJU0uG87omMR8uIiNsj4iRSQP+PNC5v1zZKLG8ybbidi4Yz1BEp1OT/owld7QPimS3O3+7jado2Db8z4Vh9iLTznI534ynDtbXMe7DheOmaC0lrrjcu5hkgdbDXNaf4+33S4bKaXerH6h9PGgt5GemH+D7FPB8pbm/2OX5q8ffjxbjfVnUlnwy/YqfZMqPNTQzzPpqI+bSRLSdtSfwdqUPduGXjDaT9Buovr2V4o31/DfedPKh2pH21tiONm76A9DlyOnBe8aPdSqpKZ/rnxd/Dhp1r7BxEGgP467EoXvwi/GNxdZtRlruftEZp0GYcSbNJm6qarTFtxa2k98yOTW57Yos1fk1a23hQ0cEZSbuPZ3Fx25yG2YfrxD1lmGlln6tW3Vr8bfb8tfqcVsF4yvAfSO/hPUmd5UdJHd2aC0mdwz1IR8a4MiKW1N3+d9KX3+S6HwqNl/qTfrwROC8iXh8RJ0XE2cXwruF+FJxE+sLcCzhdrZ9kpd3X6ebib7PNxs0ytJh0vOpG7eazthWsE/l8TN2QHmDdj7Ptxvi+rccUw7z2Je18/x5J/11381kM/lE86Mg1DdrNz1DLN9sq3HRLcUQsioiTI+Iw0prxL5E+q1o+eogNVpXO9P+QNnm/X9J+zWaQ9GxJb899x0rHqP0S6YvrMyPMPlKtvZqtIS2+6GpjJOs3zSyj+RfPkIq1LWcAz1Q6cUC9D5Fe89PaqVmndui9xsPW7UNrQzyIiPtJOw5uB/yPpCmN80iaVfvVX+Lx1Ia+vLRh3uHONrWXpGfV3b9Yf+KQsT5hTu05fXcxPrzWhqeTxtONF+Miw7BuPHBt/4d/Bf7QMDTrr6QhA0eRhlpc0LD8faTxzvsPcSg2SdqsbtJaGtYySZpJOgLNcO08hbS2bE/SUSo2Gm7+wi9JW8kOktT0pECSdpJUO/HEZaQdoP5T6bCXtXmmAO8nrZU/vW7xm4CnSNqqbt5pwHCv+9uLx1ubf1PS8JhFpKMdjaUzSDtZvrNh+ltIWyRsgik61K8kHQ3m3ZK+Uky/u8mP4nuHLZY+Bx4F3lWfT0mzSO+5paQ14UP5E2kN+KGS1g1PqssIddMmSdpgGEqxIq92qN62+hq2oUqMmY6I5cUxF39NOlzbb0hv5EWkMbV7kjoenx+6yog20fpjnE4lDeqvrXm6HzgwIka7FuQ4YK6k04FrSJuNtiWdSWwn0uHirqmb/1LgpcUX1x2k9/6pjOwjpF/Fv5T0ddKasN2BA0ibm78/zLLDOYu0U9ybix2gaofGO5x0pISRTqdas4C0Rvkw0rjTU4s2TiEddmp/0hEIap32dh7Pj0iHLloo6Umk98jLSUeDGMpVpM1cXyN9MO1H6oyfXOw0OmYi4lpJC0nP4bmSTiO9p99BOhrIsxkHh98aRxmuOb+o/XwaTjAUESHpItLh7GrzNnoLac/8iyWdRHqtJ5Hy9G+kw+V9spj356TO6o9IO8ltSTo83IiHBoyIH0taTRr2cbakfWKYw3lFxICk15CO7vNNpeOin0k68simpLHi+5IOxUVErCkO7fVT4DJJ3yIdGu9A0pC1Yxue8xNIm75/J+mbpNfpYIbfmW8J8EelY8SLdEbDbUg7obZ0eM1RWEg6G+tnJO3E+kPjvYa0xrDy2bT2RcSjkl4J/Ao4QlJfRDT+4GqlziJJHyIN5fqjpO+TVhAdQvos+M/hhqUV+TuS9L33R0n/Q/oBeyjpM69+S/emwB1F/+PK4vYdSEcUW8wYbXmfMFo55EevXEhnD3wv6UtoCWkv6/tIb4KDgP66eS8AlrVY9zbWH2ouSJ3cfwBnkw6BtGkbbVzA0IfV+hfSsYyvIn0RriF1Js4nvfn7GubfkfTLdWmtbXW3bXCYtyb3tT1pJ6T7SR3TW0idzBlttPc24IKGaRsB/10877UjG7yYdJzZ5W2+ni8lfQnfWbTxYeDPwCeArco8nmLe55DWrq0onueFpA+SoQ6Nt4B0WKyrSYc9+wdwLGkz/LDPFcMfGm+PJm27ALitYVo/qUN2R3H/VwP/TjoaQlB36LNW7qOXL1Q8w3Xz7FZ3Xy9qcvt7itvWAJsMUWMz0hrzvxWv+5LitT8OeFJD5r5cvD9WkNbufoD0eTLU4eR2a7ivVxb3cQktHPaOtDb2zaS1Yg8Ur9MDxfW3UndIumL+PYvbHiZ9LlwBvGmI2ocWj6GW4/eP8Fj2JH0m/KMuHwc0qdvOofEGHbaO9GMmSEcmqZ++OWnYzBLSD4VzSSsOrgSuHuIx+tB44+TC+kPjvb/JbdNIhzUN0nf7oENY1s3b9LCQxW2vJW3tWl68xy4G9m0y36D3eN3yte+vO0j7WOxdnynSD9fPkrYmLSo+S24lbTV8fLef56pfVDzJlonSmYc+DjyL9OH/YIzuhCKVIOkaUufzSd1uS6uUzix4K3BMRCzoamOakHQG6YfKrEinLa8NCdqItObvq8CeEXFB1xo5Dk3UDPcaSYeRTkj1woi4uNvtqVcM11sM/D4i/rVu+izSFrZvAK+KiEps/TWz0anKmOkquoJ0bNzndrshOTXbkUnSK0hHIvnt4CVsJEM8pzuThqecV+tIF95Nel99tUPNm8jGZYatPUPsvPkO0qEeGz/zfkF6z4x0FAczG0f8qzm/k0ibYmquGWrGijpa0jNJQ1MeIo0fPJS02ehz3WxYhf2HpINJQx3+SToO8eGkzeBHN8z7I9K4zZqrOtLCiWW8Z9ja8x2l07JfSsrk80nDwm4ibSKvdxTrj1Nd5ljoZlZB7kxnFmlnm7E+XFM3XUQ63NdRpAPULybtIPWxiLizmw2rsCtIZ1p8F2mP6odJO5odExF/qZ8xIm5n8MkmLKMJkGFrz29IRxvZi3QEj3tJZ5c7OgafzOUvgxc3s/HOY6bNzMzMzErymGkzMzMzs5IqNcxjzpy+2PYx/dnq9SnfmWLXZl7Dv5J8jxNg2pBntm5fzucN8j93k9W7vxEHMh+W9sqrVz8QEZuNPGfnzZ3TF4/dNt9HzPLI97ouW9vOGbZH9uDqVk8w2Jo1qzLmf21vnxFb+T6aANh+3v3Zak1V3rxe1cN53WTOpNh8m3xnlL7/+nzntNnqKUuz1QKIzGeJH4h89SZnDsQjA62caLh1M/pWjTxTGwYyvhZTM/ZzAK65Zk3Lea1UZ3rbx/Rz1lnDnXujPTP68n1hPTyQ90W8ZU3ek2vtOGm4cyK0Z2Zf3rfN4oG8Rx3bqj9vxyan5ZH3g2jONnf17Pjpx247ifPO3nzkGVt01ap8r+vvl+U9guOv72p2NuDy7r0j38nI+pf29sf85Ifzdmy++6bjs9XacdLqbLUA5j3m7p7N6+bbTOb4Xz0+W72v7PL8bLX+6/ThTgLYvrWZN8ovz9hh3bI/7w+HSx/dIWu9XabfmrXeIzHoJMilbZexnwOw/bb3tpzX3l2FZ2ZmZmbW49yZNjMzMzMryZ1pMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5I63pmW9BRJv5O0XNLdko4tTtVqZj3ImTWrDufVrPM6eswkSbOBc4HrgP2AxwNfInXqP9rJtpjZyJxZs+pwXs26o9MHIH0rMB14dUQsBX4raRawQNLni2lm1jucWbPqcF7NuqDTwzxeDpzTEOhTSeF/UYfbYmYjc2bNqsN5NeuCTnemnwTcUD8hIu4Alhe3mVlvcWbNqsN5NeuCTnemZwMPNpm+pLjNzHqLM2tWHc6rWRd049B40WSahpiOpMMlXS7p8kWLB8a2ZWbWTMuZrc/rA4ucV7MuKJXXhxavHfuWmY1Tne5MLwE2bTJ9E5r/miYiFkbE/IiYP3eOD4tt1mFtZbY+r/PmOq9mHVY6r5vM8dHzzMrq9LfdDTSM25K0LbARDeO8zKwnOLNm1eG8mnVBpzvTZwMvkzSzbtoBwKPAhR1ui5mNzJk1qw7n1awLOt2ZPhFYCfxC0kslHQ4sAL7s41+a9SRn1qw6nFezLujoSVsiYomklwAnAGeQxnAdRwq7mfUYZ9asOpxXs+7o9BkQiYjrgBd3+n7NrBxn1qw6nFezzvPu9mZmZmZmJbkzbWZmZmZWkjvTZmZmZmYluTNtZmZmZlaSO9NmZmZmZiW5M21mZmZmVlLHD403GpKYLHW7GU1tpLy/S6ZpddZ6OatN1eSM1eDhgchab4v+gaz1VsSabLX66c3371jJ+Xj/35RHs9Ua2OimbLUAbthky6z1Zj1hZbZadyyena0WwIpF07PWi8l5PzsPPund2WqdfsgXstXqdX0KZvTle9+95pLrs9X69Etfna0WwP5nXZK1Xs7v61XRn60WpNc1p4cHpmWttzRjvVsi9/rhe1ue02umzczMzMxKcmfazMzMzKwkd6bNzMzMzEpyZ9rMzMzMrCR3ps3MzMzMSnJn2szMzMyspI53piU9QdI3JV0laa2kCzrdBjNrjfNqVi3OrFnndeM4008F9gEuBaZ04f7NrHXOq1m1OLNmHdaNYR5nRMS2EbE/cG0X7t/MWue8mlWLM2vWYR3vTEdE3tPTmdmYcV7NqsWZNes874BoZmZmZlaSO9NmZmZmZiX1fGda0uGSLpd0+aJF3npl1sucV7PqqM/rQ4vWdrs5ZpXV853piFgYEfMjYv7cuT3fXLMJzXk1q476vG4yt7/bzTGrLH/bmZmZmZmV5M60mZmZmVlJHT9pi6QZpAPKA2wDzJL02uL6WRGxvNNtMrPmnFezanFmzTqvG2dA3Bz4acO02vXtgds62hozG47zalYtzqxZh3W8Mx0RtwHq9P2aWfucV7NqcWbNOs9jps3MzMzMSnJn2szMzMysJHemzczMzMxKcmfazMzMzKwkd6bNzMzMzEpyZ9rMzMzMrKRuHGe6tIhgdUS2ev3kq5Xb1v0ru92EIa2M1VnrTdParPX6mJK1Xr+PMlXKP9dM52tLnp6t3ltnX52t1tOmPJytFsCOG92ftd68qcuy1bpj8exstQCm3dvbXxsDk/J9ru995pHZaiVHZa6Xz7K107h42ROz1dt6ypJstfY+4y/ZagGc+v+2z1pv98sezFZri8kPZasFcP/qWVnrLVs7LWu9OZPyfdYtH5iarVa7vGbazMzMzKwkd6bNzMzMzEpyZ9rMzMzMrCR3ps3MzMzMSnJn2szMzMysJHemzczMzMxK6mhnWtL+kk6XdJekZZL+LOl1nWyDmbXOmTWrDufVrDs6fcDQI4FbgfcCDwD7AD+UNC8ivtrhtpjZyJxZs+pwXs26oNOd6X0j4oG66+dJ2pr0AeCgm/UeZ9asOpxXsy7o6DCPhpDX/AXYvJPtMLPWOLNm1eG8mnVHL+yA+Hzgum43wsxa5syaVYfzajbGOj3MYwOSXgLsBxzazXaYWWucWbPqcF7NOqNra6YlbQf8EPhVRHxvmPkOl3S5pMsXLR7oUOvMrFErma3P6yNLVnWwdWZWz3k165yudKYlzQHOBu4A3jjcvBGxMCLmR8T8uXN6YVSK2cTTambr87rR7Ckda5+Zree8mnVWx3unkmYAZwJTgFdExCOdboOZtc6ZNasO59Ws8zo6ZlrSJOCnwI7ACyLi/k7ev5m1x5k1qw7n1aw7Or0D4tdJB5F/NzBH0nPrbvtLRKzscHvMbHjOrFl1OK9mXdDpzvS/FH+Pb3Lb9sBtnWuKmbXAmTWrDufVrAs62pmOiO06eX9mNjrOrFl1OK9m3eHDY5iZmZmZleTOtJmZmZlZSe5Mm5mZmZmV5M60mZmZmVlJ7kybmZmZmZXkzrSZmZmZWUmdPs70qASwttuNGEKflLXeQGQtx0zl+900Wf3ZagGsioGs9XLL+XhXR6++g/Nb/MAsfvStvbLV2+09N2artevUvAH7yLxrstb7y6p8mXhkzdRstQD+OPmxWestf2Ra1nrck/Hxzlydr1aP27R/OfvNujJbvZtXz81W6ylT78pWC+CFN9yUtd6Hn7pntlqfvDbvZ8lmk5ZmrfekKf/MWm915OubzOzr3ver10ybmZmZmZXkzrSZmZmZWUnuTJuZmZmZleTOtJmZmZlZSe5Mm5mZmZmV5M60mZmZmVlJ7kybmZmZmZXU0c60pNdKukTSIkkrJN0o6aOSpnSyHWbWGmfWrDqcV7Pu6PRJW+YC5wNfAB4EdgUWAFsC7+xwW8xsZM6sWXU4r2Zd0NHOdER8s2HS+ZJmAe+QdEREZD7vn5mNhjNrVh3Oq1l39MKY6UWAN0GZVYcza1YdzqvZGOv0MA8AJPUDU4FnAe8CvuFfzGa9y5k1qw7n1ayzutKZBh4hBR3gJOCooWaUdDhwOMA22/TCinSzCamlzNbndfLM2Z1pmZk1ajuvW23T35mWmY1DQ3amJR3dTqGIOLaN2Z8PzCDtHHE0cALw9iHqLgQWAuy882T/sjYbQi9ktj6vM7bY1nk1G0Kv5fWpO09xXs1KGm7N9BEN16eTwgmwDNi4+P/y4tJy0CPiiuK/F0t6APi+pC9FxM2t1jCzQZxZs+pwXs3GiSHHTUTEZrUL8ErgfuCNwIyImEUK/UHF9P1G0YZa6LcfRQ2zCc+ZNasO59Vs/Gh1zPRXgE9HxA9rEyJiBXCKpI2Ar5F2dCjjBcXfW0sub2aDObNm1eG8mlVYq53ppwF3D3HbXcCTWyki6X+Bc4FrgbWkkL8P+LE3P5ll5cyaVYfzalZhrXambwKOlPS7iFhZmyhpGnAkcGOLdS4DDgG2A9YAtwAfBk5scXkza40za1YdzqtZhbXamT4COAu4U9JvSWO4Ngf2Io3renkrRSLiY8DHSrTTzNrjzJpVh/NqVmEtHbg5In4P7Ah8F9gKeFnx97vAjsXtZtYjnFmz6nBezaqt5ZO2RMQ9wAfGsC1mlpEza1YdzqtZdfmUgmZmZmZmJQ13BsTLgJbPiBQRu2ZpkZmV4syaVYfzajZ+DDfM41raCLqZdZ0za1YdzqvZODFkZzoiDulgO1rSJzFNylZvbcbPsck9PmJmRt/kbLWWD6zOVgtgZt9A1nq9bLKqNUuqAAAgAElEQVT6x6x2r2V27RRY9th8r+1h33tntlrfPOTr2WoBPGvKiqz1nj1lSrZaKzb7v2y1AB5dm++zBGDp6mlZ6z28+dRstZauyFcL4Pa6//daXh+NyVy7asts9aYp3/fELas2z1YL4MG1M0aeqQ3HXHthtlof3e/gbLUA3vjT32att3yg5V3tWnLlym2z1dphyv3ZarWr7WdF0jxgNrA4Ihblb5KZ5eTMmlWH82pWPS2vTpV0gKTrgfuAG4D7JV0vaf8xa52ZlebMmlWH82pWXS2tmZb0OuAU4GzgM6SwbwEcAJwqqT8iTh2zVppZW5xZs+pwXs2qrdVhHv8FLIyItzZMP0nSicBHAQfdrHc4s2bV4byaVVirwzyeAPx8iNt+XtxuZr3DmTWrDufVrMJa7UzfB8wf4rb5xe1m1jucWbPqcF7NKqzVYR7fBRZI6gd+Rgr25sD+pM1Pnxmb5plZSc6sWXU4r2YV1mpn+lhgMvAh4Ji66Y8CXyxub5ukbYAbgY2AmRGxrEwdMxske2adV7Mx4+9YswprqTMdEQPAf0n6IvA0YCvgHuCvEbFkFPf/BWAZKehmlskYZdZ5NRsD/o41q7a2TtpShPqiHHcs6YXA3sCnSYE3s8xyZdZ5NRt7/o41q6Yhd0CUdJOknRumHSppzmjvtBgX9lXSpqsHRlvPzMYus86rWX7+jjUbP4Y7mscTgGm1K0U4vwVsl+F+31rU/lqGWmaWjFVmnVez/PwdazZOtDXMA9Bo71DSXOATwBsjYrU0fElJhwOHAzxmm/7R3r3ZRDOqzI4mr/2zZ4/mrs0moo5+x9bndd7WU0Z712YTVqvHmc7pU8AfI+KsVmaOiIURMT8i5s+d243mmk1opfPav5H3eTLrgpYzW5/XmXPaXbdmZjUjpWeapBkN89ZPWycilo90Z5KeChwK7C5p02JyrdYmktZGxKMttNvMmsuWWefVbMz5O9ZsHBipM31+k2lD7WncyhiMHUnH0vxDk9vuBL4NHNZCHTNrLmdmnVezseXvWLNxYLjO9JvG4P4uBvZsmLY38EFgH+CWMbhPs4kid2adV7Ox4+9Ys3FiyM50RHw/951FxAPABfXTJG1X/Pcin53JrLzcmXVezcaOv2PNxg/v0WdmZmZmVlLXO9MR8b2IkH8xm/U+59WsWpxZs7HX9c60mZmZmVlVuTNtZmZmZlaSO9NmZmZmZiW5M21mZmZmVtKQh8aT9E8gWi0UEZtnaZGZleLMmlWH82o2fgx30pav0UbQJ7oVsTZrvUcGMm80aOXcWS2arLxt64+BrPVyWxFrstWaoSnZajXRW5ntg4Hp+Zqzdk2+Wm/5/tuz1QI45g2nZK334ul3Z6v1vKnTstUCuHvuVVnrXbx0p6z1/vjw47LV2myjR7LVaqKn8ro2+nhw7UbZ6j116p3Zag1k3oi+KSOemb1rjvnVyXnr7f6qrPWOu/jHWett2p/vtZjb92i2Wu0a7qQtCzrYDjMbJWfWrDqcV7PxY7g104NImg08DdgWODsilkiaBqyK6PHVi2YTkDNrVh3Oq1k1tbTtRNIkSZ8H7gQuBE4Gti9u/jnw8bFpnpmV4cyaVYfzalZtrQ5E+hTwZuCdwA6A6m77FbBv5naZ2eg4s2bV4byaVVirwzwOBj4UEd+V1Lgr282k8JtZ73BmzarDeTWrsFbXTG9KCnQzU8h6rAgzy8CZNasO59WswlrtTP8V2G+I214OXJGnOWaWiTNrVh3Oq1mFtTrM45PAzyVNB35KOjbmMyS9CngL8MpW71DSIcB3m9z0tog4sdU6ZjasLJl1Xs06wnk1q7CWOtMR8StJrwc+DxxaTP4f4C7goIg4p8R9vxioP8L2LSVqmFkTY5BZ59VsjDivZtXW8nGmI+InwE8k7QTMAxYDN0ZE2TM4XRYRy0oua2YjyJxZ59VsDDmvZtXV1klbACLiJuCmMWiLmY0BZ9asOpxXs+oZsjMt6eh2CkXEsW3e982S5pL2YP5yRHyzzeXNrM4YZ9Z5NcvIeTUbP4ZbM31Ew/XpwIzi/8uAjYv/Ly8urQb9HuBjwJ9Ih/t5HXCipBkRcVzjzJIOBw4HeMw2PjqQ2TDGIrOl89o/Z9N22282kfRUXudsPbXd9ptZYchD40XEZrULaU/i+4E3AjMiYhYp9AcV04c6pE+zuudExCcj4jcRcXZEHAz8BPiopEHtiYiFETE/IubPndvqkfzMJp6xyOxo8tq/8caDC5oZ0Ht53Xj25FwPzWzCabV3+hXg0xHxw4hYARARKyLiFOCzwNdG2Y6fAXOA7UZZx8ySscys82qWl/NqVmGtdqafBtw9xG13AU/O0xzKHhnEzDbUicw6r2Z5OK9mFdZqZ/om4EhJGwyqkjQNOBK4cZTteA3wAHD7KOuYWTKWmXVezfJyXs0qrNVD4x0BnAXcKem3pDFcmwN7kcZ1vbzVO5T0c9LOEVeTdpA4oLi8KyIGWm+6mQ0jS2adV7OOcF7NKqzVMyD+XtKOwHuBXYBnAveSTlv63xEx1OapZm4kneFpW0DAdcDBEXFyOw03s6FlzKzzajbGnFezamvnDIj3AB8Y7R1GxEeAj4y2jpkNL0dmnVezznBezaqrrTMgStoaeB5pz+BFwKVtrpU2sw5yZs2qw3k1q6aWOtOS+oGvAm8mjcOqWStpIXCEx2OZ9Q5n1qw6nFezamv1aB7HkMZhfYR0rMrpxd+PFNMX5G+amY2CM2tWHc6rWYW1OszjYOCjEfHFuml3AF+QFMC7gKNzN87MSnNmzarDeTWrsFbXTG9OOtROM1cXt5tZ73BmzarDeTWrsHZO2nLgELcdyOhP2mJmeTmzZtXhvJpVWKvDPD4JnCrpscDPgPtIv5T3B/Zk6A+BrNYELM64C0Z/xrOrzlC2UgD8c2CjrPW2HFierda9a7OVAqBfeZ+8mbE6a73lA/ke8HIezVZrBN3PbP8A/bNXZisXy6Znq7ViqzXZagEc++03ZK233VuPz1Zr16n9I8/UhldtfH/Wei+a/o+s9S7aZJtstW5dmXeF8G+HvqnreZ3Wt5onTc134JDJyve5Oad/WbZaAIvZOG+9tfnqzezL+x3xH7+7KGu9d7zhHVnrfeUHX89Wa/HAtGy12tXqSVt+IulB0k4SxwOTgdXAn4G9I2KYzwgz6zRn1qw6nFezamvnpC2/AX4jqQ+YBzzgQ/WY9S5n1qw6nFez6mrrpC0ARbjzbuczszHjzJpVh/NqVj1DdqYltXMYnoiIT2Roj5mV5MyaVYfzajZ+DLdmegHwKPAIMNIeYgE46GbdtQBn1qwqFuC8mo0Lw3WmbwEeS9oB4lTgtIhY2pFWmVkZzqxZdTivZuPEkMeZjognAM8HriX9Ir5X0i8k7S+p9DGqJE2S9CFJf5O0UtKdko4rW8/MEmfWrDqcV7PxY9iTtkTE5RHx/oh4LLA3cC9wAnC/pFMk7V7iPr9LOjXqF4F/AT4EnTv4rtl45syaVYfzajY+tHNovN8Dv5f0HuBTwHuB6cDvW60haW/Swef/X0Rc12ZbzawNzqxZdTivZtXVcmda0gtIIX0tMJN0lqZvtHl/hwLnOeRmY8+ZNasO59WsuoYd5iHpWZI+L+l24HfAtqRfy5tHxIERcWGb9/cc4CZJJ0haKml5MUZs63LNN7N6zqxZdTivZuPDcMeZvhHYHjgP+Djwiwx7Gm8JHAJcRfoFPhP4PHCapOdGRDRpx+HA4QBbb9M/yrs3G796IbP1eZ00b5NR3rXZ+NVred1i67bP4WZmheHSsyOwAng28Czg89LQh8KMiM1buD8Vl/0iYhGApHuAC4EXk36ZN9ZdCCwEeNrOUwZ1ts1sna5ntj6vU3fYxnk1G1pP5fWJO09zXs1KGq4zfcwY3N8S4JZayAsXA6uAp9CkM21mLXNmzarDeTUbJ4bsTEfEWAT9emBqk+kCBsbg/swmDGfWrDqcV7PxY9gdEMfAmcDOkubVTdsdmEwa42VmvcWZNasO59WsCzrdmV4ILALOkLSvpNcDJwPnRsTFHW6LmY3MmTWrDufVrAs62pku9lR+MWlc16nA10hjuP69k+0ws9Y4s2bV4byadUfHj4UTEX8H9un0/ZpZOc6sWXU4r2ad1+lhHmZmZmZm44Y702ZmZmZmJbkzbWZmZmZWkjvTZmZmZmYluTNtZmZmZlaSO9NmZmZmZiV1/NB4o9FHME2Rrd7itZOz1ZravzpbLYDlA83OCFveiliWrdZGmX+C3bs272Pdon9N1npWzqRJA8yb/XC2eveu7M9Wq39xvuwD9GV+y73pW+/OVusnh38pWy2Ax2T+1pjXPz1rvZ0m35+13kSxKibxj9Vzs9WbrHyhuHv17Gy1AO5ZtWnWeltNeTBbrR2m5H3/ro68gX3zd07LWu+9rz08W60jTv1Ztlrt8pppMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5LcmTYzMzMzK8mdaTMzMzOzktyZNjMzMzMrqeOdaUkXSIohLs/rdHvMbGjOq1l1OK9m3dGN40y/HZjVMO1Y4JnAZZ1vjpkNw3k1qw7n1awLOt6Zjojr6q9LmgLMB34cET7bhlkPcV7NqsN5NeuOXhgzvTcwG/hRtxtiZiNyXs2qw3k164Be6EwfCNwFXNTthpjZiJxXs+pwXs06oKudaUkzgH1Jm6BiiHkOl3S5pMsXLR7obAPNbJ1287rmoeWdbaCZrdNuXh9evLqzDTQbR7q9ZnpfYGOG2QQVEQsjYn5EzJ87p9vNNZvQ2srrpE1mdK5lZtaorbzOnDO5cy0zG2e63Ts9EPh7RFze5XaY2cicV7PqcF7NOqRrnWlJmwAvxztGmPU859WsOpxXs87q5prpVwFTcdjNqsB5NasO59Wsg7rZmT4QuCoiru9iG8ysNc6rWXU4r2Yd1JXOtKR5wEuAU7tx/2bWOufVrDqcV7PO68bpxImIBwDvOmxWAc6rWXU4r2ad1+2jeZiZmZmZVZY702ZmZmZmJbkzbWZmZmZWkjvTZmZmZmYluTNtZmZmZlaSO9NmZmZmZiV15dB4veJxk9Zmq7UWZasF8LhJS7LWW52x1gzlfayb9q3KWm+apmSt19+X9/FOFLMmr2DPLf+Wrd45a56UrdYjG03NVgtg9dKZWeutnR7Zau37q/dmqwXw5X1+kLXeK2Y8lLXek6fkW0c0Vfdkq9XrImB19GerN7d/WbZas6bmfR22npz3+/XOVXOz1erXQLZaADP7Hs1ab8tJefN61I/znaRzwVGHZauVHNXynF4zbWZmZmZWkjvTZmZmZmYluTNtZmZmZlaSO9NmZmZmZiW5M21mZmZmVpI702ZmZmZmJXW8My3pQElXSFom6S5JJ0nautPtMLPWOLNm1eG8mnVeRzvTkl4J/Ai4BNgP+CCwO3CmJK8lN+sxzqxZdTivZt3R6ZO2vB64IiLeWZsgaSnwK+CJwPUdbo+ZDc+ZNasO59WsCzr9S3Uy0Hj6nAeLvz7NnFnvcWbNqsN5NeuCTnemvwO8UNLBkmZJ2gn4JHB+RFzX4baY2cicWbPqcF7NuqCjnemI+DVwCLCQ9Ov5RqAfePVQy0g6XNLlki5ftDjvOevNbHjtZrY+r8uXrOxYO81sdHldtmR1x9ppNt50egfEPYETgeOBPYEDgTnAaZL6my0TEQsjYn5EzJ87x/tPmHVSu5mtz+uM2VM721izCW40ed149uTONtZsHOn0DohfAk6PiA/WJki6EriBtOfxLzrcHjMbnjNrVh3Oq1kXdHpV75OAK+snRMSNwKPA4zvcFjMbmTNrVh3Oq1kXdLozfTvwrPoJkp4MTAdu63BbzGxkzqxZdTivZl3Q6WEeJwLHSbobOBvYAjiaFPKzOtwWMxuZM2tWHc6rWRd0ujP9FWAV8DbgraTjX14MfDgiHulwW8xsZM6sWXU4r2Zd0NHOdEQE8I3iYmY9zpk1qw7n1aw7fKw5MzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5LcmTYzMzMzK8mdaTMzMzOzktyZNjMzMzMrqdPHmR6VPokZUtZ6uayNyFYLYIoGstbbon9qtlp9mX+DLY9Hs9abRH/Wen3K93gHyPu69rI5/Y9w0OxLs9Wb0b8qW62/Prx1tloAf1z0hKz1spq2Nmu5I896Y9Z681/1xaz1tuqfka3Wk6dMzlar1y25bio/fsYO2eq9+69/yVZrLfm+qwGmKG8mnjPj79lqzelbka0WwN9Wz8tab6ZWZ623nHx9k6M+d3K2WgCv+nnr83rNtJmZmZlZSe5Mm5mZmZmV5M60mZmZmVlJ7kybmZmZmZXkzrSZmZmZWUnuTJuZmZmZldTxzrSkf5N0taSVkm6VdGSn22BmrXNmzarDeTXrvI52piW9APgF8CdgX+A7wOckvaeT7TCz1jizZtXhvJp1R6dP2nI0cHFEHFZc/42k2cDRkr4eEfnOymBmOTizZtXhvJp1QaeHeTwDOLdh2m+A2cDzOtwWMxuZM2tWHc6rWRd0ujM9DWj8Zbyy+PvkDrfFzEbmzJpVh/Nq1gWd7kz/HdilYdquxd85HW6LmY3MmTWrDufVrAs63Zk+EdhP0pslzZb0MuB9xW1rmy0g6XBJl0u6fNGigY411MyANjNbn9cli51Xsw4rnddV61Zgm1m7Ot2Z/g4p7N8AFpP2Oj62uO2+ZgtExMKImB8R8+fO9WGxzTqsrczW53X2HOfVrMNK53UKUzvXSrNxpqPfdhGxNiLeCWwG7AxsAVxa3HzpkAuaWVc4s2bV4byadUenD40HQEQsAZYASHo7cElE3NCNtpjZyJxZs+pwXs06q6OdaUnPBXYDrgRmAa8DXlZMM7Me48yaVYfzatYdnR7UuBo4APgl8D1gBvCCiLi6w+0ws9Y4s2bV4byadUFH10xHxJ8ZfNgeM+tRzqxZdTivZt3h3e3NzMzMzEpyZ9rMzMzMrCR3ps3MzMzMSnJn2szMzMysJHemzczMzMxKcmfazMzMzKwkRUS329AySf8Ebm9h1nnAA5nuNmetXq/Xy23r9XrdatvjImKzjPebTZfymrteL7ctd71ebluv13Ney+vler3cttz1erlt3arXcl4r1ZlulaTLI2J+r9Xq9Xq93LZer9fLbet1vfzc9XLbctfr5bb1ej3ndXzW6+W25a7Xy22rQj0P8zAzMzMzK8mdaTMzMzOzksZrZ3phj9bq9Xq93LZer9fLbet1vfzc9XLbctfr5bb1ej3ndXzW6+W25a7Xy23r+Xrjcsy0mZmZmVknjNc102ZmZmZmY27cdKYlPUXS7yQtl3S3pGMl9Zes9QRJ35R0laS1ki4YRbv2l3S6pLskLZP0Z0mvG0W910q6RNIiSSsk3Sjpo5KmlK1ZV3uboo0haeOSNQ4plm+8vLVkvUmSPiTpb5JWSrpT0nEla10wRNtC0vNK1DtQ0hXFc3aXpJMkbV2mbUW9f5N0dfE4b5V0ZNlavS5nXot6PZnZscxrUX9UmZ1IeS1qZsvsRMor+Du2F75jc+e1qNmzma3Sd+ykXIW6SdJs4FzgOmA/4PHAl0g/Fj5aouRTgX2AS4HRBuhI4FbgvaRjGu4D/FDSvIj4aol6c4HzgS8ADwK7AguALYF3jrKtXwCWARuNsg7Ai4FH667fUrLOd4GXAMcANwDbAk8pWevtwKyGaccCzwQua6eQpFcCPwK+BhwFbAV8EjhT0vyIGGiz3guAXwDfAd4PPAf4nKSBiPjvdmr1ujHIK/RuZscyr5Avs+M6r5A3sxMpr+DvWHrvOzZXXqFHM1u579iIqPwF+DCwBJhVN+0DwPL6aW3U66v7/8+AC0bRtnlNpv0QuDXj4/8UKfQaRY0XAouLN1kAG5esc8holm+otTewGnjKGL1vphSP+Rsllj0V+HPDtFcWj/3JJeqdA/y+YdqXi/ZNGYvH361L7rwWy1cmsznyWtQZdWYnSl6L5bNldiLltXhs/o7tge/YnHkt6vVsZqv2HTtehnm8HDgnIpbWTTsVmA68qN1i0eYvnhFqNTvDzl+AzXPdB7CIUfy6LzbVfZX0CzLnGYZG61DgvIi4bozq7w3MJv36bddk4KGGaQ8Wf1Wi3jNIa37q/YbUvlKbtHtY1rxC5TI7qrxCz2a2l/MKeTM7kfIK/o71d2w5E+Y7drx0pp9E2jyxTkTcQfrV/KSutGh4zydtLitNUr+kGZJ2A95F+uVX9tAsbwWmkTan5HKzpDXFeLO3lKzxHOAmSSdIWlqM1fvFaMZMNTgQuAu4qMSy3wFeKOlgSbMk7UTaBHV+yQ+macCqhmkri79PLlGvl1UtrzDKzGbOK+TP7HjPK+TN7ETKK1Qvs+P9OzZHXqG3M1up79jx0pmezfpfLPWWFLf1DEkvIY05G22oHikuFwEXksYUlWnPXOATwJERsXqUbQK4B/gYcBCwL/BH4ERJ7y1Ra0vSZq1nkEL5JuDZwGmSyvwyXUfSjKJ9Py7zARkRvy7atpD06/lGoB94dckm/R3YpWHarsXfOSVr9qrK5BWyZTZLXov25MzshMgrZM/sRMorVCiz4/w7NmdeoYczW7nv2LEYJ9PpC2nMz7ubTL8L+NQoa49qPFdDre2A+4DTMtR6FrAbaeeLB4Gvl6xzInB23fVDyDgmq6j5Y9Jmsr42l1tF2lljbt203Yv2vWSUbTqgqDO/5PJ7Ag8DnwP2KOpdT9pxpb9EvTcDa4q/s4GXAfcXbfxgrteiFy5jmdeiTs9lNldei1pjmtnxmNeiRrbMTqS8Fo/X37E9+h1bNq/Fsj2b2ap9x476heyFS/GEfLzJ9GXAUaOsnSXopF8+15P2aN0o8+M/uHhDPL7N5Z5ahOm5wKbF5e1FrW2A6Znat39Rc4c2l7sP+EPDtD7SppkjRtmm04C/jWL5K4BTGqY9sXicry5Rrx84oQh7kNaIvLP4/yE53y/dvoxlXos6PZ3Zsnktlh3zzI7HvBY1smV2IuW1eLz+ju3R79iyeS2W7dnMVu07drwM87iBhnFbkrYlHX7mhqZLdFCxueNM0g4Mr4iIRzLfxRXF3+3bXG5H0iD/P5A21y1h/aaxO0k7TOTU7qae64eYLqD0DiySNiHtUFN2RyZI77cr6ydExI2kwxU9vt1iEbE2It4JbAbsDGxBOmwUdX/Hi57OK4x5ZsvmFTqb2fGUV8iY2QmWV+jxzPo7Fmg/r9Dbma3Ud+y4OM40cDZwlKSZEfFwMe0A0pN+YfealQ6IDvyUFKoXRMT9Y3A3Lyj+3trmcheTNqXU2xv4IOlYnaM5dmW915D2YL69zeXOBI4pjhda2wN6d9KH01WjaM+rgKmMLui3kzYDriPpyaS9228rWzQiah+4SHo7cElEdP3LKrOezSt0JLNl8wqdyex4zCuMQWYnSF6hhzPr79jSeYXezmylvmPHS2f6RNLetr+Q9DlgB9JB1r8cGx7KpyXFr9x9iqvbALMkvba4flZELG+j3NeLWu8G5kh6bt1tf4mIlc0XG7Jt/0s6vMu1wFpSyN9HGuR/czu1ivBc0FB/u+K/F0XEsnbqFcv/HPgTcDVps8oBxeVd0f7hkBaSXtczJH0amEkaP3VuRFzcbtvqHAhcFRFD/SpvxYnAcZLuJn3RbAEcTQr5We0WK94Xu5F+ic8CXkca07XbKNrYq7LmFXo3sznzCvkzO4HyChkzO8HyCv6O7Ynv2Mx5hd7ObLW+Y0c7TqRXLqQz9pxH+qV8D2nv2bYHqRe1tiNtMml22a7NWrflqlXU+wTwV9JYtQdJm5+OACZneh4PYXQnbfk0aa/b5cVr8WfgoFG05wmk4DxC+jX5PWD2KOrNI+1M86FRPk8C3kb6UHuEtCPOjykxbq2o92zSWL9lwFLg18DTc7ymvXjJmdeiXk9mdqzzWtxH6cxOlLwWtbJldqLltXjM/o7N8zz2TF6Lmj2Z2Zx5LeqNaWZV3ImZmZmZmbVpvOyAaGZmZmbWce5Mm5mZmZmV5M60mZmZmVlJ7kybmZmZmZXkzrSZmZmZWUnuTJuZmZmZleTOdEVIWiApisuApCWSLpP0KUlblqz5AUl7ZGzjbXVtrL+8sY0a2xXL/OsI871Tko/raD3JeR00n/NqPc2ZHTSfM9uG8XIGxIniIdKpSAE2IZ1q823A4ZL2jog/t1nvA8AJNJyhaZR+CHy1YdrfM9Y3qwrn1axanFkrxZ3palkTEZfWXT9H0jeA3wM/lvTEiFjbpbbV3NPQRrOJynk1qxZn1krxMI+Ki4gHSb9+Hw/sVZsu6bOSrpG0TNKdkk6p31Ql6TZgLvDxuk1FexS3va/YvPWQpPsknSHpCTnaK+kZkn4naXmxGe0USVuMsMxUSSdIelDSYknHAZNztMesk5xXs2pxZq0V7kyPD+cDa4Dn1k3bHPg08ArgPcAOwHmS+ovbX0XapPVt4HnF5YritseQNk3tB7wZ6Af+T9ImLbRFkibVXfrrbtiMtLlrBvB64AjgRcBvJU0ZpuZngcOATwBvAB4HvK+Ftpj1IufVrFqcWRteRPhSgQuwAHhgmNvvAb4xxG39wDZAALvXTX8AWDDC/fYD04GHgYNHmPe24j7qL3fW3f5Z4EFgVt20XYv5Xldc3664/q/F9bnAo8AH65bpA25Ib9/uvza++NJ4cV6dV1+qdXFmndnRXLxmevzQBlekl0u6RNJDpF/UdxY37TRiIem5kn4raVGx7HJg41aWBX4A7FJ32afutl2B30TE0tqEiPgT6QNityHqPR2YBvyqbpmB+utmFeS8mlWLM2tD8g6I44CkaaRfl/cV13cBTgdOI/1SvZ/0S/RSUmiGq/VY4DfAn4C3AHcDq4Bfj7Rs4b6IuHyI27YCrm22DDBniGVqY9Dub5jeeN2sEpxXs2pxZm0k7kyPD3uSXss/FNdfBfwTOCCKbTaSHtdirb1J4632i/w1zu8AABAxSURBVIhHimUnMXQQ23EPaZxZoy2AoQ45dG/xd3Ngcd30ZnXMqsB5NasWZ9aG5WEeFSdpU+BzpONMnltMng6sroW88IYmi69i8C/h6cAAadNTzb+T54fXH4GXSZpZm1D8wt8OuHiIZa4BVpB21Kgt01d/3awqnFezanFmrRVeM10tkyTV9iaeCTybdED5GcDesf74l78F3iPpv4EzgOcDzc6QdAPwCkn/CywDbgTOI+0Q8V1J3waeCryftFPDaH25aO85kj5HGiP2WVKYf95sgYhYJGkhcIykNaRNWG8uljXrZc6r82rV4sw6s6V4zXS1bELazHQJ8FPgtaSdEZ4edWdmioizgA8CryGN63oR0OzUoUcBj5DGal0GPDsirgHeBDwHOJN0eJ39SYf4GZWI+Cdpc9kK4EfA14CLgL0iYtUwi34A+A5wdLHc3aQPDbNe5rw6r1YtzqwzW4o23EphZmZmZmat8pppMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5LcmTYzMzMzK8mdaTMzMzOzktyZNjMzMzMryZ1pMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5ImdbsBZuPVPG0Vq1iZrkio/kat+6duWuP1ZvMMNa3uP4PvaNAiI9dKAjVftmnNwfPGkPMOM11i0HlZh2x/k/tq4/5GbN8wt0XJ5eqnt9TmkdpRpg3D3hbtvV6DbotB05supvr/Dj4Tb2McinfjEHXXLz84RrHh3WnD6fW3rZ+nYZn6OhvUjxHnGXT/dctIjW1oXm+D2xtqa5h5N3hsLdzXhteHqCWo/zQb9Nyx/nYNmgJ/vnrlORGxN2bjiDvTZmNkFSt5Tt9eqE+gvnV/AehT6mD3Fdcl6Osr/hZfROpbN9+6b9DaPLXrtfk1uPaGy6X/x7rrDJonpA2nN06rXVe6HrXtWlLq0NVuq1tu3f2JdfOs6/wptStNry03eJ6m0/qGWGaDaQwxrbFNrS03aB7WT6tfZoPHN9T1JrU3mI9Wl4sR72+DeTZoazTMV7s9ms6jZsvUdbxVLFf7m6alZWodOalhvlqpYp71b9dYN622XG1aH02mrZsv/X/9PMX1unlqtw+aVrdcuj7QdFr/BtPSPP2N1xX0MbBuuX4G1t1XvwboI9JfpXn6KWoXf9O0gXXLDlpu3bRa7YG6+dJ999fXKZZb187i9n7WPwf9NF6P4jp1y0G/oB+t26zdL9GH6C9e9D5UTOujr5jWr3QNoH+rv83DbJzxMA8zMzMzs5LcmTYzMzMzK8mdaTMzMzOzktyZNjMzMzMryZ1pMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5LcmTYzMzMzK8mdaTMzMzOzktyZNjMzMzMryZ1pMzMzM7OS3Jk2MzMzMyvJnWkzMzMzs5LcmTYzMzMzK8mdaTMzMzOzkhQR3W6D2bgk6a/Aim63o8vmAQ90uxFd5ufAzwH4OaiZFhFP63YjzHKa1O0GmI1jKyJifrcb0U2SLvdz4OfAz4GfgxpJl3e7DWa5eZiHmZmZmVlJ7kybmZmZmZXkzrTZ2FnY7Qb0AD8Hfg7AzwH4Oajx82DjjndANDMzMzMryWumzf5/e3ceJGdRh3H8+ySQEI5kIcihIgQozipULrkhiGAIQgAxRG6LQwrkKjBcHoFwmBIMh1ookKgFAURAhACJxHBoAJVEEAga7iOkODYBJBfk5x/9bvLmzcyymZ13ZxaeT1XX5H3n7d7uzsy7v+np7jUzMzOrkYNps3ZI2kLS/ZI+kPS6pAsk9exAvi0lTcjyvSXpl5JWrXDdAZKelDRP0tOShpbTktqV1QeSekoaLukhSW9naYKk7cpt0fIr+3WQu36IpGjWHQ+64P3QX9I1kt6QNFfSdElHltOa2pTZB5J6SfqhpBlZ+2dIGiGpd3ktWn6SNs7+n/4l6SNJkzuYr5+kMZJaJc2RdIOk/hWua/r7olmet8Yzq0LS6sCfgaeBA4CNgMtIH0LPbydfP2AS8B9gKNAfGAWsCwzJXbcL8AfgF8ApwL7AOEmtETGhhCYtt5L7oA9wNjAGuAQI4GTgYUk7RcQ/S2jSciv7dZC7fiXgcmBWfVtQH13wfugLPAi8D3yPtCfzFkCv+remNl3wWrgU+G5W1lRga2Ak0AKcWt/WdMqWpPvVIyzf/8/NwKbAscAi4CfAHcCubRd0h/ui2TIiwsnJqUICzgFagb65c98HPsifq5LvXaAld25/UrC4be7cfcCkQt7xwMONbntX9AHQE1i9kK8X8CIwptFt76rXQe65HwAPAWOBfzS63V3dD6RAcgbQp9FtbWAfvAFcVsh7OTCr0W0v1KlH7t+3ApM7kGfHrL275c5tn53bK3eu6e+LTk7F5GkeZtUNAu6LiHdz524ijaju3k6+L5GCodm5cxNIvzQGA2Rf2w4EbinkvQnYMRvJagal9UFEfBQRrflMEbEAeApYqw51r5fS+qCNpC+QgrJmGn0sKrsfjgGui4i5dapvGcrugxWBOYW8swHVXOMSRMSiGrINIn0oeDBXzmPAC9lz3em+aLYUB9Nm1W0GTM+fiIiXSaNQm7WTbyVgQeHch6SvNTfPjjci/eKcXrjuGdL7cpPaqlx3ZfbBMrJfptuQvkZvFl3RB5cBt0TE452raqlK6wdJA0gfoGZLGi9pgaQ3JV0uqWmmeVD+a+Fa4ARJO0taVdKuwInA1Z2teBNYpu8yz7Ck77rLfdFsKQ6mzapbnTQqVNSaPVfNDOCLklbMnduGNK1hjVzZVCi/tfB8o5XZB5Wcl5V77XLWs0yl9oGkgcA+pLY3szL7YZ3scRTwGvB14GJSIDmyE3Wut7LfD2eT5gs/DLxHmkN+W0Rc0JlKN4mO9F13uS+aLcXBtFn7Km3Erirn2/wa+AxwlaR1JG1JWkzzUZbaK19VzjdS2X2QCpQGkwLK4RHxbOeqXHel9IGkFYArgZER8UZ9q1yKsl4Lbb+LnoqI4yJiUkT8jLQw9RRJK9en+nVR5vvhLOBw0gLM3UkL8A6T9EkIpqHjfdcd7otmizmYNquulbSKvqgflUdYAIiI6cDxwDBgJvAE8BgwjSU7NbSNtBTLbzuuWn4XK7MPFsu2w7sZuCYiRne+2nVVZh8cl5X9G0ktklpIizB7ZscrLltyw5TZD+9kj38pZJ8E9CZ9/d8MSusDSWuSRuGHR8TVEfFgRFwFDAfOkdRM6whqUa3vWljSd93lvmi2FAfTZtVNpzAPUtJ6wCpUnvu3WERcD6wNbAV8lrTl28akraQAngMWFsvPjheRttBqBmX2QVt5mwB3A/eTRuSaTZl9sCnwedIuDq1ZGkZasNZK2katWZT9fijOKYYlI5K1LHgrQ5l9sCFpvvC0QtappG1s1+9k3Rttmb7L5OdSd5f7otlSHEybVXcPsI+k1XLnhgJzgQc+LnNEzIuIJyNiFumr2x5kq9QjYj5pFO6QQrahwJSIKK7ob5TS+gBA0rqkrbCeA4ZFRMUpIA1WZh9cTdq9IJ/uIwUNA4GJ9WpEHZT5flhAauuehWxfJS3um9H56tdFma+Fl7LHrQvZtskeX6y10k3iHmCdbB9pACRtS/oQcQ90q/ui2dIavTefk1OzJtJil5mkX/J7kb6mfZ80vzV/3QzSll5tx31Jf4xgMGlh2aWk0ZajC/l2Ia3oHw3sQVp8tQjYu9Ft74o+IG0nNo301e1gYIdc+nKj295Vr4MKP28szbnPdNnvh+1Jo9NjgL2BM4F5wHmNbnsX9sHt2fvhVNKHqdNJW+Xd0ui2F+q5MvDNLE0hbWfZdrxypT7Izt0LPA8cRPpjNc8CDxWuafr7opNTMTW8Ak5OzZxIf4FtEmnkaSZwIdCzcM2LwNjc8SqkPWTfyfL9HRhSpfwhwL+B+aSvOg9tdJu7qg+ADUgLiiqlFxvd7q58HRTKGUsTBtNd0Q+kQPPx7P3wCukP2fQoqz3N1gekoPunpG9q5pIC0lHAao1ud6Ge7b13N6jUB9m5FtKHpdmkP2JzI7BmhfKb/r7o5JRPivDiWDMzMzOzWnjOtJmZmZlZjRxMm5mZmZnVyMG0mZmZmVmNHEybmZmZmdXIwbSZmZmZWY0cTJuZmZmZ1cjBtJlZyZS8ICkkbdzo+piZWf04mDYzK9+OpD90AXBoA+thZmZ15mDazKx8w4D/AY9m/24KklZqdB3MzLo7B9NmZiWS1BM4BLgTuB7YQtJWhWvWlzRO0luSPpD0hKRv557vI2mUpJckzc+mjFySez4knVwo88eS3sodH51dt72kyZLmAmdlz10q6UlJ70t6VdINktap0JbjsuvmSZol6VZJ/SQNlrRI0oDC9QOy8/t3qhPNzJqYg2kzs3LtCawN3ATcCiwkNzotaS1gCrAdcCbwDeA6YL3seQF/BE4Efg7sC/wIWLPG+owD7srKuSs7txZwMTAYOA3YEJiUfRBoq+f5wDXAA8CQrD5zgFWBe4HXgaMKP+to4E1gfI11NTNreis0ugJmZp9ww4DZwL0RsUDSROBQSedGRACnA/2AbSJiZpbn/lz+vYGvAQdExJ2587+tsT5XRsQV+RMR8Z22f2cB9BTgVWBn4EFJLcC5wOiIOCOX9bZcvrHAUZJGRERkHwKOAn4XER/WWFczs6bnkWkzs5JI6g0cCNweEQuy0+NIixF3yI73JAXaM5ctYfHz7xQC6c64u0I9B0n6m6Q5wIekQBpgk+xxR6APMKadcq8H1gf2yI4HZsft5TEz6/YcTJuZlWcQ0AKMl9SSjfBOBuazZKpHf6BaIN2R55fXrPyBpO1I87lfBY4gBc5tgX7bAsX+2WPVekTE86S2HZOdOgZ4LCKeqkutzcyalINpM7PytAXMvwdas/QK0Bv4Vjal4m1g3XbK+LjnIQXnvQrn1qhybRSODyTNax4aEXdGxCPAGxXqQAfqcS1wsKTPAQfhUWkz+xRwMG1mVgJJqwL7kaZ1DCykM0iLEgeS5kfvI2ntKkXdD6whab92ftyrwOa5n92DND2kI/oAC7P5220OK1wzBZjLsgsMi24DFpAWW/bIHs3MPtG8ANHMrBwHACsDV0TEo/knJP0VOI80cn02cCTwkKSLSCPXmwOrRMQoYCJwH3CjpAuAx0kjxLtFxAlZkbcDJ0maCjwPHAv07WA9JwKnSRoN/AnYCTg8f0FEzJZ0IXCRpF6k3Tl6k3b/GBERr2XXzZN0A3ASMC4iZnewDmZm3ZZHps3MyjEM+G8xkAaIiIXALaSpEO+Sds2YCowmbVd3PPBydm2QpmL8irRt3T3ASOCtXJEjSFNJRgJjgWmkBYEfKyLGA8OBg0lzp3cnjagXr7uEtB3eXqSt+q4hzQd/r3DpHdljh36+mVl3p6W/2TMzM6udpFHAUGBARCxqdH3MzMrmaR5mZtZpkjYFtiCNXo9wIG1mnxYemTYzs06TNBn4CmmqyBG5fbXNzD7RHEybmZmZmdXICxDNzMzMzGrkYNrMzMzMrEYOps3MzMzMauRg2szMzMysRg6mzczMzMxq5GDazMzMzKxG/wf5km+YiOUWgQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3eb46968d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 3)\n",
    "\n",
    "for mod_idx, mdiag in enumerate(model_diagnostics[1:]):\n",
    "    df = mdiag[\"df\"]\n",
    "    im = axes[mod_idx].imshow(df[\"acc_matrix\"].iloc[len(df)-1], vmin=0.9, vmax=1.0)\n",
    "    axes[mod_idx].set_title(mdiag[\"model_name\"])\n",
    "\n",
    "cbar = plt.colorbar(im, ax=list(axes), orientation=\"horizontal\", fraction=0.05)\n",
    "cbar.set_label(\"Prediction Accuracy\")\n",
    "\n",
    "for ax in axes:\n",
    "    ax.set_xticks(np.arange(10))\n",
    "    ax.set_yticks(np.arange(10))\n",
    "    ax.set_xlabel(\"Data Fold\")\n",
    "    ax.set_ylabel(\"Model Fold\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f3eaf409550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, axes = plt.subplots(1, 3)\n",
    "\n",
    "for mod_idx, mdiag in enumerate(model_diagnostics[1:]):\n",
    "    df = mdiag[\"df\"]\n",
    "    acc_matrix = df[\"acc_matrix\"].iloc[n_runs-1]\n",
    "    test_accs = np.array(df[\"test_accuracies\"].iloc[n_runs-1])\n",
    "    overfitting_matrix = acc_matrix - test_accs.reshape((-1, 1))\n",
    "    im = axes[mod_idx].imshow(overfitting_matrix, vmin=0.0, vmax=0.1)\n",
    "    axes[mod_idx].set_title(mdiag[\"model_name\"])\n",
    "\n",
    "cbar = plt.colorbar(im, ax=list(axes), orientation=\"horizontal\", fraction=0.05)\n",
    "cbar.set_label(\"Overfitting (Excess Accuracy)\")\n",
    "\n",
    "for ax in axes:\n",
    "    ax.set_xticks(np.arange(10))\n",
    "    ax.set_yticks(np.arange(10))\n",
    "    ax.set_xlabel(\"Data Fold Index\")\n",
    "    ax.set_ylabel(\"Model Index\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at the plots above we can see the different sorts of data insulation behaviors. With K-folds the accuracy is flat within the training footprint for each model and there is no leakage of information into the folds outside of the training footprint (as indicated by the accuracy being close to the test data accuracy). \n",
    "\n",
    "In contrast the strong coupling CPD training shows uniform overfitting of all models to all data folds regardless of which data sets are being fed directly into which models. \n",
    "\n",
    "The weak CPD is somewhere in between the two with high overfitting on the training footprint of each model and a slow fall off as we move to more weakly coupled models in the ensemble. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Final Thoughts\n",
    "\n",
    "The version of CPD that I have put together in this post is potentially useful as it stands. However I suspect that this task is more susceptible to roughly linear models than many problems would be and that may be exaggerating the apparent success of the diffusion steps and the usefulness of the parameter centroid. Also because the speedup over a more traditional K-folds type training is only modest this sort of approach is unlikely to be useful anywhere that K-folds wouldn't be also an option. Potentially a parallelized version of CPD that is designed to run on many compute nodes in a cluster could potentially outperform the typical sort of parameter averaging approaches since the communication between nodes is completely scalable with no need for a central parameter server and is just one way. In addition as the success of the weakly coupled CPD shows it is possible to extend the number of gradient updates in between diffusion updates by decreasing the mangitude of the mixing parameter. These two properties together make CPD potentially very useful for scaling up to distributed training on large clusters.\n",
    "\n",
    "Although CPD showed some training speedup in the strong coupling case in terms of training multiple models the strong coupling effectively destroyed the usefulness of the models as an ensemble and so I would have to say that using either K-folds or just training a single model with all the data is probably a superior option. The increase in model performance in this case that we got from using the central parameters of the ensemble is probably mostly just due to effectively smoothing some of the noise out of the parameter updates from the different models. I wouldn't be surprised to find that taking a temporal running average of the model parameters behaves similarly to the centroid parameter performance in the strongly coupled case. \n",
    "\n",
    "I think that weakly coupled CPD could be potentially a very powerful tool if an effective means can be found to keep the information leakage slow without completely stifling inter model communication. Using a very low mixing rate works fine but also makes the models communicate very ineficiently and so again ultimately a K-folds type CV is probably the way to go if maintaining data isolation is a must. But there are other potentially interesting ways to go about maintaining data isolation that I haven't explored yet. Uppping the noise in each model from regularization is a promising strategy. The coupling of the models together allows the training to benefit from a higher level of noise in the individual parameter updates than might be the case when training just a single model alone. Higher noise in the updates in turn should somewhat slow communication via diffusion. Intuitively anything that slows overfitting on the training set, like data augmentation, or l2 coefficient regularization, etc, ought to slow information leakage between models training on adjacent data folds. Trying to tweak the regularization mix to keep information leakage small seems more directly related to the goal of good generalization than simply searching over a hyper parameter grid to find the dropout rate which performs best on the hold out set. I think balancing data leakage and regularization strength is a beautiful way to approach model regularization but that doesn't necessarily mean it is a good way to approach it in practice."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  },
  "nikola": {
   "author": "Tim Anderton",
   "category": "",
   "date": "2018-04-20 10:59:50 UTC-06:00",
   "description": "",
   "link": "",
   "slug": "parameter-diffusion",
   "tags": "cross validation, neural networks",
   "title": "Parameter Diffusion",
   "type": "text"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
