Skip to content

Instantly share code, notes, and snippets.

@ColCarroll
Created April 6, 2019 16:10
Show Gist options
  • Save ColCarroll/01e3056515bcdceffa9e4c0027dcd45f to your computer and use it in GitHub Desktop.
Save ColCarroll/01e3056515bcdceffa9e4c0027dcd45f to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import autograd.numpy as np\n",
"from autograd import elementwise_grad, grad"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# plt.style.use('tufte')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Some exercises in automatic differentiation using `autograd` and `jax`\n",
"\n",
"This is a short note on how to use an automatic differentiation library, starting from exercises that feel like calculus, and ending with an application to linear regression using very basic gradient descent.\n",
"\n",
"I am using [autograd](https://github.com/HIPS/autograd) here, though these experiments were originally done using [jax](https://github.com/google/jax), which adds [XLA](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/compiler/xla/g3doc/overview.md) support, so everything can run on the GPU. It is strikingly easy to move from `autograd` to `jax`, but the random number generation is _just_ weird enough that the following is run with autograd. I have included the equivalent `jax` code for everyting, though\n",
"\n",
"Automatic differentiation has found intense application in deep learning, but my interest is in probabilistic programming, and gradient-based Markov chain Monte Carlo in particular. There are a number of probabilistic programming libraries built on top of popular deep learning libraries, reaping the benefits of efficient gradients and computation: \n",
"- [PyMC3](https://pymc.io/) uses [Theano](https://github.com/theano/theano), \n",
"- [Pyro](http://pyro.ai/) uses [PyTorch](https://pytorch.org/), and \n",
"- [Edward2](https://www.tensorflow.org/probability/api_docs/python/tfp/edward2) uses [Tensorflow](https://www.tensorflow.org/probability/). \n",
"\n",
"The [Stan](https://mc-stan.org/) library implements [their own automatic differentiation](https://arxiv.org/abs/1509.07164).\n",
"\n",
"At their simplest, these libraries both work by taking a function $f: \\mathbb{R}^n \\rightarrow \\mathbb{R}$ and return the gradient, $\\nabla f: \\mathbb{R}^n \\rightarrow \\mathbb{R}^n$. This can be chained to get second or third derivatives.\n",
"\n",
"## Example 1: Derivatives of a function\n",
"\n",
"Here are the first 4 derivatives of the hyperbolic tangent:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10, 7))\n",
"\n",
"x = np.linspace(-4, 4, 1000)\n",
"\n",
"my_func = np.tanh\n",
"ax.plot(x, my_func(x))\n",
"for _ in range(4):\n",
" my_func = elementwise_grad(my_func)\n",
" ax.plot(x, my_func(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note: the equivalent code in `jax` is \n",
"\n",
"```python\n",
"import jax.numpy as np\n",
"from jax import grad, vmap\n",
"\n",
"fig, ax = plt.subplots(figsize=(10, 7))\n",
"\n",
"x = np.linspace(-4, 4, 1000)\n",
"\n",
"my_func = np.tanh\n",
"ax.plot(x, my_func(x))\n",
"for _ in range(4):\n",
" my_func = grad(my_func)\n",
" ax.plot(x, vmap(my_func)(x))\n",
"```\n",
"\n",
"The difference being that we have `vmap` instead of `elementwise_grad`, so we take all our gradients, and _then_ map the function across a vector."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example 2: Trig functions\n",
"\n",
"My _favorite_ way of defining trigonometric functions like sine and cosine are as solutions to the differential equation \n",
"$$\n",
"y'' = -y\n",
"$$ \n",
"\n",
"We can use `autograd` to confirm that sine and cosine both satisfy this equality."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10, 7))\n",
"\n",
"x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)\n",
"\n",
"for func in (np.sin, np.cos):\n",
" second_derivative = elementwise_grad(elementwise_grad(func))\n",
" ax.plot(x, func(x), 'k-')\n",
" ax.plot(x, -second_derivative(x), 'w--', lw=2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Again, the equivalent `jax` code just maps `vmap` to `elementwise_grad`:\n",
"\n",
"```python\n",
"fig, ax = plt.subplots(figsize=(10, 7))\n",
"\n",
"x = np.linspace(-2 * np.pi, 2 * np.pi, 1000)\n",
"\n",
"for func in (np.sin, np.cos):\n",
" second_derivative = vmap(grad(grad(func)))\n",
" ax.plot(x, func(x), 'k-')\n",
" ax.plot(x, -second_derivative(x), 'w--', lw=2)\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Example 3: Gradient descent for linear regression\n",
"\n",
"We can also do linear regression quite cleanly with `autograd`. Recall that a common loss function for linear regression is squared error: given data $X$ and targets $\\mathbf{y}$, we seek to find a $\\mathbf{w}$ that minimizes \n",
"$$\n",
"\\text{Loss}(\\mathbf{w}) = \\|X\\mathbf{w} - \\mathbf{y}\\|^2 = \\sum_{j=1}^N (\\mathbf{x}_j \\cdot \\mathbf{w} - y_j)^2\n",
"$$\n",
"\n",
"One way of doing this is to use gradient descent: initialize a $\\mathbf{w}_0$, and then update \n",
"$$\n",
"\\mathbf{w}_j = \\mathbf{w}_{j - 1} + \\epsilon \\nabla \\text{Loss}(\\mathbf{w}_{j - 1})\n",
"$$\n",
"\n",
"after enough iterations, $\\mathbf{w}_j$ will be close to the optimal set of weights.\n",
"\n",
"Another way is to [just use some linear algebra](https://en.wikipedia.org/wiki/Moore%E2%80%93Penrose_inverse):\n",
"\n",
"$$\n",
"\\hat{\\mathbf{w}} = (X^TX)^{-1}X^T\\mathbf{y}\n",
"$$\n",
"\n",
"As an exercise, you can check that if $X$ is square and invertible, $(X^TX)^{-1}X^T = X^{-1}$. \n",
"\n",
"Let's convince ourselves that these two approaches are the same. Keep in mind here our goal is to find a $\\hat{\\mathbf{w}}$ that minimizes the loss function."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"np.random.seed(1)\n",
"data_points, data_dimension = 100, 10\n",
"\n",
"# Generate X and w, then set y = Xw + ϵ\n",
"X = np.random.randn(data_points, data_dimension)\n",
"true_w = np.random.randn(data_dimension)\n",
"y = X.dot(true_w) + 0.1 * np.random.randn(data_points)\n",
"\n",
"def make_squared_error(X, y):\n",
" def squared_error(w):\n",
" return np.sum(np.power(X.dot(w) - y, 2)) / X.shape[0]\n",
" return squared_error\n",
"\n",
"# Now use autograd!\n",
"grad_loss = grad(make_squared_error(X, y))\n",
"\n",
"# V rough gradient descent routine. don't use this for a real problem.\n",
"w_grad = np.zeros(data_dimension)\n",
"epsilon = 0.1\n",
"iterations = 100\n",
"for _ in range(iterations):\n",
" w_grad = w_grad - epsilon * grad_loss(w_grad)\n",
" \n",
"# Linear algebra! `np.linalg.pinv` is the Moore-Penrose pseudoinverse: (X^TX)^{-1}X^T. \n",
"w_linalg = np.linalg.pinv(X).dot(y)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAn0AAAGhCAYAAAAUZwIEAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3X98zfX///H7Zuwnya8thaHCUExjbGzGRvkdSr+QpN9FKSXkV60okaikml99vPv9U5lfEWXM6Af17u1XNGZmfm2zzc7O9499nTrZjmPndbZznNv1ctkl5/V8vY7HszNz93y+ns+Xl9mcbxYAAAAuad6VXQAAAACcj9AHAADgAQh9AAAAHoDQBwAA4AEIfQAAAB6A0AcAAOABXC70FRYW6plnJsjHJ1D79++/4PmnTp3S8OEjFRERpfDwSI0b96yKioos7VlZWerVq7+io7uqd+8Bys7Otrp+6NARevvtd4zuBgAAgEtxqdC3f/9+xcTE69ChwzKZTHZdM3z4vTKZTNq6dZM2b96g77/fpEmTpljan3tumsLCWmjjxnW6+uqmeu65aZa2lJQt+vXXXbrnnrsN7wsAAIArcanQl5OTqyVL3tXddw+16/xff92pTz/9XE899YQkqVq1aho9+mHNnv26cnJyJEkbN/6grl1jJEkJCd31/febJElms1mjRz+pV1+dIW9vl/rfAAAAYDiXSjutWrXU1Vc3tfv81avXys/PT61atbQci4hopzNnzmjjxh8kST4+Ppbp3qKiIvn4+EiSli59X1dddaViYroY2AMAAADX5FKh72Lt3btPwcH15OXlZTkWEhJiaZOkhIRu+uijTyRJH3/8qbp3j1Nubq6mTHleM2e+UPFFAwAAVAKfyi7AEbm5ufL19bU6du51Xl6eJGnixPF64olxioqKVatWLTVx4jNKTJyh2267RfXq1dODDz6qn3/+Ra1bt9Irr7ykgIAAq/fz8vKrmM4AAAAYwGzOL/W4W4e+wMBAFRQUWB079/pceAsICNAbb8y1tO/fv1/Ll3+on37aqmnTXlBeXp42blynu+66W9OnJ+qFF6bp38r6nwcAAOBKbA1WufX0bpMmjZWZeVRms9lyLCMjQ5LUtGmTUq8ZO/YZTZ48QYGBgUpOXqOBAwdIkgYPHqjk5DXOLxoAAKASuHXoi4/vpjNnzmjnzl2WY6mpafL391dUVMfzzl+/foPS0w/pjjtuk1SysKNKlSqSrBd8AAAAXGrcKvRNmPCcWrUKV35+yXRry5ZhGjCgn2bOnCVJOnv2rObMeV2jRz+soKAgq2uLi4s1ZsxTmjPnZcvCj+joTlq3br0kae3a7xQd3akCewMAAFBxXOqevsLCQiUk9NKJEyclSUOGDFX9+lfok0/+I0nKzy9QXl6e1XRuUtLbeuSRMYqIiJLJZFL37nGaOvW589574cJ31bp1S7VvH2E5NmXKRA0bNlLR0V1Vo0YNLV7MkzkAAMClyctszjdf+DTP5eXlx0IOAADgFmzlFrea3gUAAED5EPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPAChDwAAwAMQ+gAAADyA3aFvw4bvNWLEKC1f/oEk6fDhw+rSpZtq1gzW4MG36/Tp004rEgAAAI6xO/S98cYC5ebm6frrr5MkjR79pFJT0zRs2J1KTz+kCRMmO6tGAAAAOMjH3hN///0PbdmyUVWrVtWJEyf02WdfaMKEpzVx4njl5OSoY8cYZ9YJAAAAB9g90uft7a2qVatKkr744iuZTCaNGDFMkhQUFGRpAwAAgOuxO/QVFBTo2LFjkqQ331yozp2jdOWVV0qSTCaTzp4965wKAQAA4DC7p3cHD75ZrVq1U82al+mPP/6nDz5YJkn6888/9corcxQa2shpRQIAAMAxdoe+iRPHq2rVqvrxxxTdd99IDRw4QJL01lsL9csvv+qJJ0Y7rUgAAAA4xstszjdXdhGuzMvLT2ZzfmWXAQAAcEG2cothmzM/8sgYo94KAAAABruokb7Tp09r69ZUHT6cIZPJZNU2adJU7d//h+EFVjZG+gAAgLuwlVvsvqdv5cpVGjLkLp06dUpm8/k50cvLq/wVAgAAwKnsHulr3bqd4uJideedt6lOndry9v57ZthsNqtXrwHauXO7k8qsPIz0AQAAd2HISF9BQYHmzHmlzPannx578ZUBAACgQti9kKNhwwY228PD2zpcDAAAAJzD7tA3ceIzGj16rLKyskptv+uuEYYVBQAAAGPZfU9f48bNdOLESZ06dUq1a9dWUFCgVfuhQ4eVn3/SKUVWJu7pAwAA7sKQe/pOnTqt/v37lNpmNpv11VfflK86AAAAOJ3doa9hwwZ67723y2yPiIgypCAAAAAYz+7p3ZycHAUFBTm7HpfD9C4AAHAXhkzvngt8e/fuVXLyGh09elR169ZVQkI3NWnSxJhKAQAA4BR2hz5Jeuqp8Xr11ddUXFxseSpHlSpV9Pjjj+mll553SoEAAABwnN2hb968N7VgwTt6+OEH1KFDhGrXrqVjx7KVkrJVCxa8o0aNGurBB+9zZq0AAAAop4t6DNu7776liIgbzmtLTd2m4cPv1a+/phleYGXjnj4AAOAubOUWuzdnLioqKjXwSdINN7STyWQqX3UAAABwOrtD35kzZ3TmzJlS23Jzc5WXl2dYUQAAADCW3aGve/c49e49QDt2/GR1fPv2Herff7ASErobXhwAAACMYfc9fZmZmYqK6qq9e/epatWqqlmzpk6cOKGzZ8+qadMm2rRpnerWrevseisc9/QBAAB3YSu32B36JOnkyZN69dXXlJy8RllZWapTp4569Oiu0aMf0WWXXWZYwa6E0AcAANyFYaHPExH6AACAuzBk9e6F3HXX3Ua9FQAAAAxmc3PmtLTtCggIUPPmzbR48VKbb/T995sMLQwAAADGsTm9e/nlIQoNbaTt21Pk7e1v+428vGQyXXrbtjC9CwAA3IWt3GJzpC8p6W3VqFFdktSiRXOtWPFZqeeZzWb16jXAwTIBAADgLDZDX79+fSy/vv/+e9WoUaMyz73//nuNqwoAAACGsnshR8uWLUo9/uOPmzVy5P3q1aunYUUBAADAWHaHvrFjnyn1+JVX1lfdunU0dOg9hhUFAAAAY9kd+szm0td7NGzYUImJ05Wbe+kt4gAAALhU2Lynb8OG7/XddxskSUeOZGratBfOC39ms1l//ZWunJwc51UJAAAAh9gMfevWrdeUKc9bXj/33LTz38DHR40bh2rWrBlG1wYAAACD2P0YtrZtO2j79hRn1+Ny2KcPAAC4C0Mew/byy4mGFQQAAICKZXfo69Ytzmb7I4+McbgYSfrii68UERGlLl26KSoqVqmp22ye37z5dYqNjbf6mjPndUt7VlaWevXqr+jorurde4Cys7Otrh86dITefvsdQ2oHAABwVXZP756zbVuadu/eo4KCAqvjkyZN1f79fzhUzLZtaYqJideWLRsVFtZCX321QsOGjdTOnWkKCQkp9ZrY2Hh9992qMt/zoYceU0BAgGbOTNTo0WNlMpk0d+6rkqSUlC164IFHlZr6g7y9S8+/TO8CAAB3Ue7HsP1TZmam+vYdpC1btsrLy8tqFa+Xl5fjVUpKTJypHj3iFRZWshF07943KTi4nubNe1PTpk0u13tu3PiDEhNLFqAkJHTX+PGTJJWsOh49+km9+uqMMgMfAADApcLutDN+/CS1a9dWu3btUPPmzbRv3+/at+93bdy4VgkJ3Q1Zvbt69VrdcEO41bGIiHZatWptud/Tx8dHRUVFkqSioiL5+JTk3KVL39dVV12pmJgu5S8YAADATdg90rdt23Zt3bpJPj4+8vX1tTyHt1GjRvr44+Xq23egHnvs4XIXkp2drZMnT+qKK6yncUNCQvTNN8llXpebm6cRI0Zp9+498vb2VvfucRo7doz8/PwkSQkJ3fTRR5+ob9/e+vjjT9W9e5xyc3M1ZcrzWr16RbnrBQAAcCd2j/RVqVLFMkpmMpms2gICApSdfdyhQnJzcyVJvr6+Vsd9faspL6/sp300a3aNHnhglDZsWKOPPvo/rVixUoMG3WZpnzhxvAIDAxUVFSs/Pz9NnPiMEhNn6LbbblG9evX04IOPKjq6qx544BGbvw8AAIA7szv0FRUVWUJRnTq1tWrVaktbSsoWZWVlOVRIYGCgJJ23QKSgoFABAQFlXrd0aZIiIm74/3XV0bRpk/T1199ox46fJJUE0jfemKtNm77TW2/N09GjR7V8+Yd6+uknNW3aC8rLy9PGjeuUk5Oj6dPZlgYAAFya7A597dvfoJtu6qejR4/qrrtuV58+A9W370D17z9YXbv2UP/+fR0qpFatWqpZs6YyMo5YHc/IyFDTpk3sfp9z5+7evafU9rFjn9HkyRMUGBio5OQ1GjhwgCRp8OCBSk5eU87qAQAAXJvd9/SNH/+UUlK2qlq1aho27C7t3/+nFi5MUmFhoe688za9+OJ0h4vp3j1OqalpVsdSU9N08839Sj3/l19+VUrKFo0cOcJyLD39kCSpYcMG552/fv0Gpacf0h13lEz/FhUVqUqVKpKsF3wAAABcauwe6fP29lbHjh0UFBQkLy8vTZ48UX/9tUeZmQe1YMF8m1Ow9nr66bFauXKVfvvtd0nSihXf6vDhDD300P2SpAkTnlOrVuHKzy/Zf+bYsWOaMWOWjh07Jqlkajgxcabat49Qu3bWq4CLi4s1ZsxTmjPnZcsWM9HRnbRu3XpJ0tq13yk6upPDfQAAAHBFdo/0hYY2U3BwsLZu3airrrrKKcW0axeuZcuSNHToPfL395PJZNLKlV9aNmbOzy9QXl6eZY/A665rrUGDBuimm/rL399POTm5atPmOr377luWEbxzFi58V61bt1T79hGWY1OmTNSwYSMVHd1VNWrU0OLFPJkDAABcmux+IkdISCPt3r1TQUFBzq7JpfBEDgAA4C5s5Ra7p3evuaapzcD3+edfXnxlAAAAqBB2h7477rhN8+e/VWb7lCnPG1IQAAAAjGf3PX0pKVu0atVazZ07X61atVT16tajfgcOHDS8OAAAABjD7nv6fH1rqH79K8psP3w4Q/n5Jw0rzFVwTx8AAHAXtnKL3SN9YWEttH17Spntbdt2uPjKAAAAUCHsvqfv1Vdn2GxPSnrb4WIAAADgHHZP7/7TwYMHlZV1TG3btlFxcbG8ve3Ojm6H6V0AAOAuDNmyRZI+/vhTNWvWWqGhzdS7982SpDvvHK7x4yc6XiUAAACcxu7Q9/nnX+qWW+5QcHA9PfDAKAUGljx27bnnJiglZatmz57rtCIBAADgGLundzt06KyxY0dr8OCBkqTw8EilpW2WJGVnZ6tHjz7aunWT8yqtJEzvAgAAd2HI9O6JEycsge/fatWqJZPJVL7qAAAA4HR2h76CgoIyg11hYaGysrIMKwoAAADGsjv0RUTcoCFD7tKhQ4esjufk5Oj++x9WdHQnw4sDAACAMey+p2/Pnj2KjIzR8ePHFRraSJmZR9W4caj27t2nwMBAbd68XqGhoU4ttjJwTx8AAHAXhtzT17RpU23b9oPuvPM25eWdUX5+vo4ezdLgwTdr69aNl2TgAwAAuFSUa3NmT8JIHwAAcBeGjPTNmPFKqce//PJrXX11mL79Nrl81QEAAMDp7B7p++e+fP+Ul5en77/fpKeeGq+fftpqeIGVjZE+AADgLgx7DFtpAgIC1KNHvIqKihx9KwAAADiJj63GRYuWaNGipZKk3bv3KC6ux3nnmM1mpacfUq1atZxTIQAAABx2wZE+s9ls86tq1arq2jVGS5a8WxH1AgAAoBzsvqevbdsO2r49xdn1uBzu6QMAAO7CVm6xO/SdPHlSl112WZntBQUF8vX1LV+FLozQBwAA3IUhCzlsBT5J6tgx5uKqAgAAQIWxuZBj/vy3VLt2Ld1662CNGDHK5hsdOHDQ0MIAAABgHJvTu/XqNVBoaCNt2bJRvr41VL/+FWW+0eHDGcrPP+mUIisT07sAAMBd2MotNkf60tJ+VLVq1SRJYWEtbC7kaNu2gwMlAgAAwJlshr6rrrrK8uv58+fYfKMLtQMAAKDy2L1611MxvQsAANyFUx/DBgAAANdH6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD2Bzy5Zz8vLy9O23ydqx4ycdPZolLy8v1alTW23aXK+ePRMUEBDg7DoBAADggAuGvoUL39VTTz2rkydPymw+f3eXmjVrasaM5zVy5AinFAgAAADH2Qx9S5Ys00MPjdYddwxRfHw3XX11U9WoUUNms1mnT5/Wnj17lZy8Wo888rj8/f11xx23VVTdAAAAuAg2N2cOD4/U3LmzFBXVyeab/PDDj3roodE2H9PmrticGQAAuItyb85cXFx8wcAnSZ06dSx16hcAAACuwWboKygo0NGjRy/4JpmZmcrPZzQMAADAVdkMfYMGDVB0dJyWL/9AmZmZ57UfPXpUy5d/oJiYeN1yy0CnFQkAAADH2Lyn7+zZsxo27B4tX/6hvLy8FBAQoBo1akiSTp06pby8PEnSkCGDtWjRO/LxsWsHGLfCPX0AAMBd2MotNkPfORs3btLy5R/qp59+1tGjWTKbzapbt47atm2jW28dpOjoKMOLdhWEPgAA4C4cDn2ejNAHAADcRblX7wIAAODSYNdNeD/88KOWL//wvMewnZve7dSpo7PrBAAAgAMuuJDj7rvv1fvv/0eS5O/vb/VEjjNnzsjLy0u3336r3n13gapWrVphhVcUpncBAIC7KPf07tSpz2vz5i1KSnpb6el7lZubrcOH9ysj40/l5mbr0KF9eu+9BUpJ2arp0xOdUDoAAACMYHOkLyysjdatW6ng4GCbb5KRkaGuXXvot99+MrzAysZIHwAAcBflHumrVq3aBQOfJIWEhMjX17d81QEAAMDpbIY+Ly8vpaRsueCb2HMOAAAAKo/N1buPP/6oYmMTNGzYnYqLi1XTpk2snsixd+8+rVmzTosXL9Pbb8+vgHIBAABQHhfcnHnBgoUaN26CTp06dV6b2WzWZZddppdemq5Ro0Y6rcjKxD19AADAXTj8RI7c3Fx9883KUh/D1rNnggIDAw0v2lUQ+gAAgLvgMWwOIPQBAAB3wWPYAAAAPByhDwAAwAMYFvruuec+o94KAAAABjMs9G3ffuk9jQMAAOBSUeY+fSNGjLqoNzpw4KDDxQAAAMA5yly9e8UVocrMzJTZbN/iXi8vL5lMeYYW5wpYvQsAANxFuVbvLlgwT23bttHZszkqLj5zwa/rrmvttA4AAADAMWWGvj59eqlNm+s0Zcr0iqwHAAAATmBzIcfs2S8rODhYxcXFF3yj5OSvDCsKAAAAxuKJHBfAPX0AAMBd8EQOAAAAD0foAwAA8ACEPgAAAA9A6AMAAPAAZT6RAwDOmTx52j9+PbESKwEAlJfdq3cPHDggSbryyitVpUoVpxblSli9C5T8OTiHPw8A4LoMWb0bGtpMHTp00eHDhw0rDAAAABXD7undevXq6X//+1VBQUHOrAcAAABOYPdI3zXXNLUZ+D7//EtDCgIAAIDx7A59d9xxm+bPf6vM9ilTnjekIAAAABjP7undlJQtWrVqrebOna9WrVqqenXrUb8DBw4aXhwAAACMYffqXV/fGqpf/4oy2w8fzlB+/knDCnMVrN4FWL0LAO7CVm6xe6QvLKyFtm9PKbO9bdsOF18ZAAAAKoTd9/S9+uoMm+1JSW87XAwAAACcw+7p3X86ePCgsrKOqW3bNiouLpa396X7NDemdwGmdwHAXRgyvStJH3/8qcaPn6Tdu/coJCRE6el7deedwxUa2kgvvDDtwm8AAKhwPEYPgHQRI32ff/6lbr75VkVFddR117VWcvJq/fHHr/rvf//Qgw8+qj59emn06EecXW+FY6QPYKTP3fH5AZ7DVm6xO/R16NBZY8eO1uDBAyVJ4eGRSkvbLEnKzs5Wjx59tHXrJoNKdh2EPoDQ4O74/ADPYcj07okTJyyB799q1aolk8lUvur+5YsvvtK0aYny9/eTyWTSnDmv6IYb2pV5/qlTp/Too49r587fZDKZFB/fTc8/P0U+PiVdy8rK0rBhI3Xy5EnVrFlTixe/o1q1almuHzp0hDp3jtK9995jSP0A3A/Tn3B1fI/CCHaP9IWGXqs9e35TlSpVJFmP9BUWFurqq8N04MBuh4rZti1NMTHx2rJlo8LCWuirr1Zo2LCR2rkzTSEhIaVec/PNtyowMEBLlrynwsJCxcYmKDa2s+Uew4ceekwBAQGaOTNRo0ePlclk0ty5r0oq2XD6gQceVWrqD2UuRmGkz3H8sHJ/l/pIEf2Dq+MzhL0Mmd4dPPh2SdKcOS+rfv36ltCXk5OjRx99XPn5+Xr//cUOFTpo0G0ym836+OPllmNhYW00cGB/TZs2+bzzf/11p1q3bqeff05V69atJEkffPCRhg+/V5mZBxUUFKTrr49QYuI03XRTT61Y8a3Gj5+kHTu2yGw2q1OnWL344jTFxHQpsyZCn+P4YeX+LvXPkP65v0v9H5ee8BnCGIZM77744jRFRsaoYcNrFBraSJmZR3X99RHau3efAgMDtXnzeocLXb16rcaNe8LqWEREO61atbbU0Ld69Vr5+fmpVauWVuefOXNGGzf+oJ49E+Tj46OioiJJUlFRkWXad+nS93XVVVfaDHwAAPfwz+e/X4qhDzCC3RvsNW3aVNu2/aA777xNeXlnlJ+fr6NHszR48M3aunWjQkNDHSokOztbJ0+e1BVXWE/jhoSEaO/efaVes3fvPgUH15OXl5fV+efaJCkhoZs++ugTSSVbznTvHqfc3FxNmfK8Zs58waGaAQAA3MVF7dPXsGFDJSUtdEohubm5kiRfX1+r476+1ZSXl1fmNeefX/L63DUTJ47XE0+MU1RUrFq1aqmJE59RYuIM3XbbLapXr54efPBR/fzzL2rdupVeeeUlBQQEnPf7/HNYHY7h/6X7u9Q/Q/rn/i71Pl7q/YPz2B36Zsx4RU899cR5x7/88muNGfOkXn99tnr2TCh3IYGBgZKkgoICq+MFBYWlBrFz15x/fsnrc9cEBATojTfmWtr379+v5cs/1E8/bdW0aS8oLy9PGzeu01133a3p0xNL3WTamfdPcJ+G++MzBABcSEXdd2rrHwV2T+8uX/5hqce7deuqefPmaNy4Zy++sn+oVauWatasqYyMI1bHMzIy1LRpk1KvadKksTIzj8psNludL6nMa8aOfUaTJ09QYGCgkpPXaODAAZKkwYMHKjl5jUN9AAAAKM3kyRMtX5XF4YfmBgQEqEePeMtiCUd07x6n1NQ0q2OpqWnq3r1rqefHx3fTmTNntHPnLqvz/f39FRXV8bzz16/foPT0Q7rjjtsklSzsOLcFzT8XfAAAAFxqbE7vLlq0RIsWLZUk7d69R3FxPc47x2w2Kz39kNWGx+X19NNjFRuboN9++10tWjTXihXf6vDhDD300P2SpAkTntNnn32p1NQf5Ofnp5YtwzRgQD/NnDlLixa9o7Nnz2rOnNc1evTDCgoKsnrv4uJijRnzlN58c65l4Ud0dCetW7deN93UU2vXfqfo6E4O9wEAAMAVXfCevnNTp2az2Woa9ZyqVauqa9cYjR07xuFi2rUL17JlSRo69B7LEzlWrvzSsiI3P79AeXl5VnUkJb2tRx4Zo4iIKJlMJnXvHqepU587770XLnxXrVu3VPv2EZZjU6ZM1LBhIxUd3VU1atTQ4sXvONyHi/Xcc45NiwMAANijzM2ZV65cpf/+9w898siD8vLyUtu2HbR9e0pF11fp2JwZF3KpbwoLAHAf5XoiR8uWbdWvX2/LatbNm1MUGdnBeVW6KEIfAABwF7ZyS5kLOXx8fKy2L3nwwcds/iajR48tZ3kAAABwtjJD39mzZ5WdnW15Xdr9fP+0YcNG46oCAACAocpcyHHTTT3VuHFztWwZJj8/X+3Zs7fU1bvn7N69xykFAgAAwHFlhr6XXnpeDRpcpfXrv9fx48fLXL0LAAAA11fmQo5/u9Dq3Ut1dS8LOQAAgLso1+rdf/vjj//p2muvKXe7uyL0AQAAd1Gu1bv/dqFAN3fu/IurCgAAABXG7pG+c7ZtS9Pu3XtUUFBgdXzSpKnav/8PQ4tzBYz0AQAAd2Ert1zwMWznZGZmqm/fQdqyZau8vLysFnWce5YtAAAAXJPd07vjx09Su3ZttWvXDjVv3kz79v2ufft+18aNa5WQ0F2zZs1wZp0AAABwwEWt3t26dZN8fHwUHh6ptLTNlra8vDz17TtQq1d/47RCKwvTuwAAwF0YspCjSpUq8vEpmQ02mUxWbQEBAcrOPu5AiQAAAHAmu0NfUVGR8vLyJEl16tTWqlWrLW0pKVuUlZVlfHUAAAAwhN0LOdq3v0E33dRPH374vu6663b16TNQCQnd5e3treTk1Ro58m5n1gkAAAAH2H1P3/79+5WSslU9eyaoRo0amjJluhYuTFJhYaH69++j2bNfVkBAgLPrrXDc0wcAANyFIU/k8FSEPgAA4C4MWcgBAAAA90XoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPYHfoi4vrobi4Hvrrr7+cWQ8AAACcwO7NmTdt+lHLliXpiiuucF41AAAAcAq79+mLiIjS1q2bymw3m83y8vIyrDBXwT59AADAXRiyT1/r1i21e/eeMtvbtet48ZUBAACgQtg9vdu3b2/dfvswDRo0QC1bhql69SCr9pymz16iAAAgAElEQVScHMOLAwAAgDHsnt719va3vvAfU7nnpnZNpjxjq3MBTO8CAAB3YSu32D3S17RpEy1c+EapbWazWffe+2D5qgMAAIDT2R36+vTppZiYLmW2Dx16hyEFAQAAwHh2T+96KqZ3AQCAuzBk9a4knTp1SpMnT1NkZBc1bdpCkZFdNGXKdJ06dcqQQgEAAOAcdo/0ZWZmKiqqq/bs2StfX1/VqlVL2dnZKigo0DXXXK2NG9eqbt26zq63wjHSBwAA3IUhI33PPDNRoaGNtH17is6cOaH09L06c+aEtm9PUWhoIz3zzETDCgYAAICx7B7pa9y4mXbt2iF/f//z2vLy8hQW1kb79/9heIGVjZE+AADgLgwZ6fPz8ys18ElSQECA/Pz8ylcdAAAAnM7u0Ofj46OtW1NLbduyZat8fOze/QUAAAAVzO6kdv/99yo+vpeGD79L7dvfYFnIkZKyVYsWLVVi4jRn1gkAAAAH2B36Hnrofu3bt1+zZ8+V2VxyG6DZbJa3t7fGjHlUDzwwymlFAgAAwDEXvTnzvn37tGrVGmVlHVOdOrUVH99NjRs3dlZ9lY6FHAAAwF3Yyi12h74RI0pG8hITpyk4ONi46lwcoQ8AALgLQ1bvLlq0VGFhLXTZZZcZVhgAAAAqht0jfeHhkUpL2+zselwOI30AAMBdGDLS17RpE2VmZpbZfuONfS++MgAAAFQIu1fvPvbYQxo69B6NGDFMLVuGqXr1IKv2gwf/Mrw4AAAAGMPu6V1v75KncXh5eZV5jsmUZ0xVLoTpXQAA4C5s5Ra7R/oaNLhKU6dOKrXNbDZr8uTp5asOAAAATmd36OvYMVLDht1VZntKylZDCgIAAIDx7F7I4e/vpxEjRunIkSOltr/xxlzDigIAAICx7A59ixcvY58+AAAAN8U+fRfAQg4AAOAu2KcPAADAw7FPHwAAgAdgn74LYHoXAAC4C/bpAwAA8HDs0wcAAOAB7J7e9VRM7wIAAHdhyOpdSTKZTHr//eW65577dOedwyVJn376udLT0x0uEgAAAM5j9/Tu8ePHFR/fS2lp2yVJISEhkqSff/5FDz00WmvWfKMWLZo7p0oAAAA4xO6RvmeemShf32pavXqFMjMPKji4niTpuecm6LXXXtHEiVOcViQAAAAcY/c9fU2bttCOHVtUvXp1Sec/oaNdu47atu1H51RZibinDwAAuAtD7umrVq2aJfCVJicn5+IrAwAAQIWwO/R5e3vrxx9Lf/ZuSsoW+fr6GlYUAAAAjGX3Qo77779X3brdqKFD71B0dCfl5OTos8++UFrads2b95YSE6c6s04AAAA44KL26XvyyWf06quvyWw2y2w2y8vLS15eXnryyTFKTLw0n8jBPX0AAMBd2MotF7058759+7Rq1RplZR1TnTq1lZDQXaGhoUbU6ZIIfQAAwF0YGvo8DaEPAAC4C8OeyAEAAAD3ROgDAADwAIQ+AAAAD0DoAwAA8AAOh77CwkKZTCYjagEAAICT2B36Ro8eW+rxb75ZqerV62jRoiWGFQUAAABj2b1lS3h4pNLSSn8M23//+4cGDhyiX39NM7Q4V8CWLQAAwF04fcuWJk0a6+zZs0a8FQAAAJzA5rN358x5XXPmvC5JOnTosJo0aX7eOWazWVlZx9ShQ4RzKgQAAIDDbIa+0NBGionpLEn64ouvLb/+p6pVq6px41CNHHm3M+oDAACAAey+py8qKlabNn3n5HJcD/f0AQAAd1Ehz949fvy4Lr/8ciPeyqUQ+gAAgLuokGfvdut2o1FvBQAAAIPZvKfvn4qLi7V06ftavXqtDh/OOG9D5t279xheHAAAAIxh90jfU0+N14gR92nbtu0qLCyU2Wy2+gIAAIDrsnuk78MPP1ZKyvdq1y681Pa2bTsYVhQAAACMZfdIX61atcoMfJL03XfJhhQEAAAA49kd+tq0uU5//fVXme3z57/lcDEvvPCSwsMjFRnZRQMHDlFmZqbN8/fv36+QkEaKjY23+lq/foPlnG3b0hQZ2UWRkV00ZsyTVlPRhYWFatHieu3a9ZvDtQMAALgyu6d3+/Xro1tuuVMDB/ZXixbNFRQUaNX+3nuL9cwzT5W7kNdem6clS97X1q2bFBQUpLFjn9aAAbdccG/Anj3jlZS0sMz2oUPv0YwZL6hnzwS1bx+tTz75TAMHDpAkzZ49V/Hx3RQW1qLcdQMAALgDu/fp8/b2t77Qy8vya7PZLC8vL5lMeeUqori4WPXrN9azz47TI488KEk6cuSIQkIaafXqFerWLa7U6/bv36/Jk6eXGfqOHz+uWrWuUG5utgICAvTUU+NVWFio2bNf1pEjR9SxY4y2bfvR5v6C7NMHAADcha3cYvdIX9OmTbRw4RultpnNZt1774Plq07Szz//oiNHjuiGG/6+ZzA4OFgNGzbQqlVrywx9F+LjU9K9oqIiy3/PHRs/fpKeeGL0JbmhNAAAwL/ZHfr69OmlmJguZbYPHXpHuYvYu3efJOmKK0KsjoeEhFjayvL773+ob9+BOn78uAIDAzV06B26/fYhkqTq1asrMrKDPvroE91++xCtWPGtZs9+WWlp25WamqYFC+aXu2YAAAB3YnfomzVrhs32iRPHl7uI3NxcSZKvr6/VcV/fasrLK3vK2M/PT6GhjTR79kyFhIRox46fFB/fS+nph/Tkk49LkpYte0+jRz+p995brJEj71bPngnq3DlOs2a9pAMHDmj06CeVnZ2tAQP66fHHHyt3HwAAAFyZ3aFPkk6ePKl5897UmjXrVFRUpPXrV+utt95Whw7t1abN9Xa/z7ffJuvFF2daXo8adY8kqaCgwOq8goJCBQQElPk+ISEhWr58ieV1mzbX6/77R+r551+yhL4mTZroiy8+tpyzfPkHql27trp1i1PHjjG67757dOutg9WmTXu1ahWmhIR4u/sBAADgLuwOfQcPHlR0dJwOHvxLgYGBqlnzMklScbFZN97YT59++h9FRtq3QXPPngnq2TPB8nrHjp8kSRkZRxQaGmo5npGRobi4GHtLlFRy7+HJkyeVlZWlOnXqWLWdOXNGkyZN1TfffK7Tp09r8+YUJSd/JX9/f/XqdaOSk9cQ+gAAwCXJ7n36xo17Vu3ahWv37p06ffrvQPXAA6P0wQdLNWXK8+Uu4rrrWis4OFipqWmWY5mZmTpw4KC6dy97Ecf77y9XSsoWq2Pp6YcUEBCg2rVrn3f+jBmv6Oab+6tp06aWxR1VqlSRVLLo49wxAACAS43doW/z5i36z3+WqkmTJpKst2zp3Dlax45ll78Ib2+NH/+U5s9/y3J/38svz1anTpGKi+tqOS8mpruGDx9pef3HH//TrFmvWcLaoUOHtGDBO3rggVFW9UklI5WLFy/Ts8+OkyRdfvnlCgtroXXr1qu4uFjr13+v6OhO5e4DAACAK7N7erdq1aqqWrVqme3Hjh1zqJBHH31Ip0+fVnR0nHx9fVW//hX69NMPrMJbXt4ZnTnz994zt9wySDNnzlJ0dJyqVauq3Nw8jRp1j+V+vn8aN+5ZTZjwtKpXr245tnjxO3r44TGaOvUFdegQYdm0GQAA4FJj9+bM7dp11LPPjtPNN/eXJIWHRyotbbMkacWKbzV58nRt2bLReZVWEjZnBgAA7sKQzZmffHKMBg26TQkJ3RUd3UnZ2dl69dXXtH37Dn3wwcd6//1FhhUMAAAAY9k90idJ8+a9qfHjJ+n06dOWY9WrV9dLLz2v+++/1ykFVjZG+gAAgLuwlVsuKvRJUk5Ojn744UdlZR1TnTq11alTRwUFBRlSqCsi9AEAAHdhaOjzNIQ+AADgLmzlFru3bFm7dp3i4nqoV6/+Vsf79RukOXNed6xCAAAAOJXdoW/hwvckSePGPWF1/PHHH9X//d8HmjfvTWMrAwAAgGHsnt69/voIbdy41mqfu3Oys7MVH99L27b9aHiBlY3pXQAA4C4Mmd41m82lBj5JqlWrFo8wAwAAcGF2h77c3FxlZmaW2paZmamcnBzDigIAAICx7A59Awb0U7duN+rTTz/XoUOHlJ+fr0OHDumzz75QQkJvy5M6AAAA4HrsvqcvLy9PPXr01qZNP1o9D1eSOnWKVHLy1/L393dKkZWJe/oAAIC7MGyfPpPJpKVL39fKlassmzP37Jmg228fIh8fu5/o5lYIfQAAwF0YEvoWL14qqWSat6wFHZciQh8AAHAXhqzeHT78Xn344Sc6e/asYYUBAACgYtg90tesWWv997+/OLsel8NIHwAAcBeGjPQ1aHCVTCZTme0TJ06+6MIAAABQMewOfZMmjdeDDz5a5l59X3/9rWFFAQAAwFh2T+82btxMx4+f0OnTp1WrVi1Vrx5k1X7o0GHl5590SpGVieldAADgLmzlFrv3WTl16rQGDOhbapvZbNZXX31TvuoAAADgdHaHvoYNG+i9994usz0iIsqQggAAAGA8u6d3c3JyFBQUdOETLzFM7wIAAHdhyOrdc4Hvr7/+0pIlyzRv3puSpP/9b7cBJQIAAMCZ7B7pM5vNeuyxJ/TGGwtkMpkUEhKiQ4f26fbbh+rPPw9oxYrPddlllzm73grHSB8AAHAXhoz0vfTSy1q+/EM988yT+uCDZapV63JJ0pIl76lTp46aNGmqMdUCAADAcHaP9IWFtdHHHy9XixbNJUnh4ZFKS9ssSSoqKlJERJS2b09xXqWVhJE+AADgLgwZ6ZNkCXz/5uPjo6KioouvDAAAABXC7tCXn5+vI0eOWF6bzX8PEGZkZCgvL8/YygAAAGAYu0Nf3769FRMTr+XLP9Bff/0lLy8vnThxQmvXrlOfPgM1aNDNzqwTAAAADrioffoSEnpr8+YUeXl5WbVFRXXUypVfyd/f3ylFVibu6QMAAO7CVm6xO/RJJQs2li59X8nJq5WVdUx16tRWz54Juv32IfLxsfvhHm6F0AcAANyFYaHPExH6AACAu7CVWy44PLdr12+aM+d1HThwUNdcc7WeeOIxNWrUyPAiAQAA4Dw2R/p27fpN7dtHW63MrVOnjn75JVXBwcEVUmBlY6QPAAC4i3Lv0zdp0lSFhbXQN998oV27duiTT/6jOnVqKzFxplMKBQAAgHPYnN7dvn2HfvxxverVqydJat68ma699hoNH35vhRQHAAAAY9gc6fP19bUEvnPCwlooNzf3vHMLCgqMrQwAAACGsRn6/Pz8Sj3u6+t73rGOHWOMqQgAAACGszm9W1hYqIMHD1o9cq2s44WFhc6pEAAAAA6zuXrX29v/vKdvSCXP3S3tuMl06T1/l9W7AADAXZR7n77g4GDdf//IC/4GZrNZCxa8W77qAAAA4HQ2R/ratu2g7dtT7HqjiznXnTDSBwAA3EW5H8OWk5OjoKAgu36TiznXnRD6AACAu+DZuw4g9AEAAHdR7idyAAAA4NJA6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAIQ+AAAAD0DoAwAA8ACEPgAAAA9A6AMAAPAAhD4AAAAPQOgDAADwAC4V+jIyMtSnz80KDb3W7mt+//2/iovroc6d49SuXUctWbLMqn3btjRFRnZRZGQXjRnzpMxms6WtsLBQLVpcr127fjOsDwAAAK7IZUJfcvIq9eo1QCaTye5rcnJylJDQS3fcMUTff79Wn3/+oR57bKxWrlxlOWfo0Hs0ceIz2rRpnTZs2KhPPvnM0jZ79lzFx3dTWFgLQ/sCAADgalwm9Pn4+Oi775LVvv0Ndl+TlLREZ87k6+67h0mSrrrqKg0ZMljTpydKko4fP65du35T164xqlKlirp166rvv98kSTpy5IjefPNtTZky0fjOAAAAuBiXCX1xcV1VvXr1i7pm9eq1Cg9vI2/vv7sREdFOP/ywWXl5efLx8ZEkFRUVWf577tj48ZP0xBOjdfnllxvUAwAAANflU9kFOGLv3n0KD29jdSwkJETFxcXav/9PhYW1UGRkB3300Se6/fYhWrHiW82e/bLS0rYrNTVNCxbMt+v38fLyc0b5AAAAFcatQ19ubq58fX2tjvn6VpMk5eXlSZKWLXtPo0c/qffeW6yRI+9Wz54J6tw5TrNmvaQDBw5o9OgnlZ2drQED+unxxx877/cwm/Od3xEAAAAnq5TQ9+23yXrxxZmW18uXL1FISMhFv09gYKAKCgqsjhUUFEqSAgICJElNmjTRF198/I/f6wPVrl1b3brFqWPHGN133z269dbBatOmvVq1ClNCQnx5ugQAAODSKiX09eyZoJ49Exx+nyZNGisj44jVsYyMDHl7eys0tNF55585c0aTJk3VN998rtOnT2vz5hQlJ38lf39/9ep1o5KT1xD6AADAJcllFnKUR3x8N6Wl7VBxcbHlWGpqmjp1irSM9P3TjBmv6Oab+6tp06aWxR1VqlSRVLJ6+NwxAACAS41bhb6YmO4aPnyk5fWwYXfKz89XixYtkSSlp6dr+fIPNWHCM+dde/DgQS1evEzPPjtOknT55ZcrLKyF1q1br+LiYq1f/72ioztVTEcAAAAqmMuEvi1btio2Nl5JSUuUkXFEsbHxmjr1eatz8vLO6MyZvxdWBAUFKTn5ay1evEydO8epT5+BevXVGerR4/wp2nHjntWECU9bbQuzePE7mj79RXXsGKMOHSI0cOAA53XwX2Jj4xUaeq1iY+P17bfJluOnTp3S8OEjFRERpfDwSI0b96zVCGRS0mLFxsYrJKSRVQB2NWX1T5K2bk1VWFibUut35/4dOXJE48dPVHR0V8XGxqtt2w5KTJzhlp+fVHofCwoKNHHiZEVHd1W3bj3Vtm0H9e8/WLt377Fc5y59tPU9KpUsFGvU6BrFxlr/PHGX/kll97F58+sUGxtv9TVnzuuWdnfpo63P8M0331ZMTHd16dJNTZo0191332tpc+f+JSUtLvXz8/WtoU8//dxyjjv0Tyr7M1y/foOio7uqc+c4RUZ20fDhI5WdnW1pd5c+ltW/n376WT169FaXLt3UunU7Pfro41ZrFJzVPy+zOd984dNgtJI/qF00ebL15tA333yrAgMDtGTJeyosLFRsbIJiYzvrhRemWZ137psgKWlhhdV8Mcrq30svvaxVq9bo8OEMRUS0K7N+d+zf66+/offeW6zvvktW9erVdfDgQYWHd9QDD9yrqVOfs7re1fsnld7HjIwMhYd31PbtmxUcHKzi4mINGXKX9u7dp9TUH6yud/U+lvU9es4TT4zTu+8u0vXXt9Z33606r93V+yeV3cfY2PhS+/Rvrt5HWz9nNm78QR999H/y9fXVTz/9rPj4XsrMPGh1njv2LylpsSRp+PChlmP79u1TeHhHHTq0T/7+/pbjrt4/qfQ+njhxQg0aXK3ExGl6+OEHVFxcrFtuuUNeXl768MP3ra539T6W1r9Dhw6pZctwvfTSdI0aNVIFBQVKSOil5s2b6a235lldb3T/XGakD9Kvv+7Up59+rqeeekKSVK1aNY0e/bBmz35dOTk5lVydMZo3b6bk5K9Vt26dyi7FcPXq1dWTT46xjCY3aNBAt9wyUMuWLa/kyoxTq1Ytff31pwoODpYkeXt7q3PnKKuRvkvBjh0/aevWVPXt26uyS8FFOnbsmCZPnq5XXnnJsqXX9ddfp48+ev8CV7qH/v37qn//vlbHkpKWaMiQwVaBz53t2bNXOTk56tatq6SSnzNxcbFKTl5dqXUZZcmS91VUVKSRI0dIknx9ffXwww/onXeSdOTIkQtc7RhCn0EeeWSMqlWrrubNr9M777wnSfr88y/VtOnfz/W9++57VaNGXd1330Olvsfq1Wvl5+enVq1aWo5FRLTTmTNntHHjD6VeU1GM6J8k9evXx+oJKq7CiP7dcssgDRlyi9Uxf39/yzZClc2IPlarVk1t2/69IXp6eroWLVqqRx990LnF28Go79Hi4mI9+OBjmjdvjry8vJxe98Uwqo+uyoj+rVjxrS677DJde+01Vse7dOnsvMLtZET/atasqZo1a1pem81mLV68TCNGDHNu8XYyoo8tW4apefNmev/9kn8w5+Xl6ZNPPlNwcD3nd+ACjOjfgQMHVbduHau/C+vXv0Imk8npf9e73t++bmru3FfVpUu0evZM0D333C1J+uqrFdq7d5927fpNkjRv3hxFRLQ7b/j2nL179yk4uJ7VXzTn9i/cu3efk3tgmxH9c2XO6t+PP27WLbcMdErNF8vIPqanp6tdu45q2jRM3bvHlTlFWpGM6t/rr7+hzp2j1Lp1qwqp+2IY1cfc3DyNGDFKXbp0U2xsvKZPT1R+fuVvRG9E/375Zafq179CCxe+q65dE9SpU6zuv/9hHT16tML6URZn/JxZt+47BQUFKSLC/ufWO5MRffTz89OaNd9o7drv1KjRNapfv7F++WWn5s+fU2H9KIsR/QsNbaSMjCMqLPx7QOCvv9Kt/usshD4D9e59k776aoWkkn997d27T82aXWs5tnr1WnXvHlfm9aU/YaTk9bknjFQmR/vn6ozu3+rVa3TgwEFNmjTeKfWWh1F9vPLKK7Vt24/6888/tGnTDxo8+Han1m0vR/uXnp6uhQvf03PPPVsh9ZaHEZ9hs2bX6IEHRmnDhjX66KP/04oVKzVo0G1Or90ejvbv+PHj+vXXnVq//nutWrVC69ev0okTJxUbm6CzZ89WSB9sMfrnTFLSEt1zz3DjC3WAo308ffq04uN7qXPnaO3f/4fS0/fq2WfH6corr6yQ+i/E0f4NG3anfH199eKLM2U2m3XixAnNnVvyWFiTyeTU2gl9Burd+ybt2bNXv//+X6WmblN4eFv16nWjvvzya0nSl19+rT59yr5HqPQnjJS8Lm3fwYrmaP9cnZH9+/PPP/Xgg4/piy8+tpqKqWxGf4bBwcGaPftlffLJZ1q7dp2zyrabo/175JHHlZg4zSX+vJXFiM9w6dIky8hQnTp1NG3aJH399TfaseMnp9d/IY72r0qVKjp79qwmT54gHx8fVa1aVVOnTtKuXb9p5coLL15xNiP/DJ4+fVpffrlCd97pGoH9HEf7+M47Sdq7d58mT54gLy8vBQYG6rrrWikmJl4nTpyoqG6UydH+1atXT5s3b9DOnb+pU6dYDRlyl2WruVq1Lndq7W797F1Xc/XVTXXttdfoq69W6NSpU+rT5yaZTCbNmfO6jh07pp07f7O6X+/fmjRprMzMozKbzZYp3oyMDElS06ZNKqQPtjjaP1dnVP8yMzPVr99gvf32fKv731yBo30896/Qc5uaS1JYWMm9LDt3/qa4uK7O7cAFONK/06dPa8eOnzRz5izNnDlLkvT7738oPz9fsbHx6tixgxITp1dkd0rljD+H536+7N69R23aXO+Msu3maP+uvLK+JOmqq66yHGvUqKEkad++/U6t3R5Gfn4ffPCRunXrqjp1XGthnKN9/OOP/ykkJFh+fn6WY40bh+ro0aNav/579evXx/mdsMGIz7BZs2v1n/8stbzev3+/JDn9thJCn8HODft6e3vruecmyGw2KygoSNOmJapdu7Y2r42P76YxY57Uzp27LN8wqalp8vf3V1RUx4oo/4Ic6Z87cLR/x48fV69eA5SYOE0xMV0kSQsWLNSoUa6zj5QjfVyyZJmyso5p7NgxlmOHDh2S9PdftpWtvP2rXr269u793erY8OEjtX//n3Ztb1KRHPkMf/nlV6WkbLGsHJSk9PSSz7BhwwZOrdtejvQvNrbkz93hw4cVGhoqSZYVkZdC//4pKWmJxo8f58RKy8+RPl55ZX0dPZolk8lk+Qfm4cMlAyABAa6xQtmR/hUWFmrr1lRFRf39QIgNGzaqSZPGCg937t+jTO8arFevntq48QddcUWIqlSpIh8fHyUkdNe8eW+qT5+bbF7bsmWYBgzoZxllOHv2rObMeV2jRz+soKCgiij/ghzpnztwpH85OTm68cZ+6t69q+rWraPU1G1KTd2mt956p4Kqt4+jn+HChe9Zboo/e/asJk6cooYNG7jM/ZyX+veo5Fgfjx07phkzZunYsWOSSm4hSUycqfbtI9SuXXhFlH9BjvSvc+doRUV11KxZr1mOvfrqXF177TWlbtxfGYz4Ht29e4/27/9TCQndnVxt+TjSx9tuu0XFxcWaP/8tSSUzDLNmvaYGDa5Sx46RFVH+BTnSv1OnTqlfv8GWn6NHjx7Viy++rNmzX3b6jgGEPoN17hytoKAg9ep1o+VY7943ys/PT7GxMRe8PinpbUlSRESUOnTorE6dOp63sW9lcrR/CxYsVGxsvHbs+FnffrtKsbHx+uKLr5xZ8kVxpH9z5ryulJQtevHFlxUREWX5Skvb7uyyL4ojfezWrasSErorIaFkJ/nIyC4qKjJp9epvVKNGDWeXbhdHv0elkn36SnbQX6UdO35WbGy8vv76G2eVfNEc6eN117XWoEEDdNNN/RUbG6+oqK4KCQnWl19+bDVtX5kc/Qw//fQDZWYeVXh4pKKiYpWefkirVn1tNV1YmYz4Hk1KWqyhQ+9wmc/s3xzpY5MmTbRy5Zf68MOPFRUVq/bto5Wfn6+VK79ymQEQR/rn7++v9u1vUMeOMYqNjdfgwbfrpZeer5B74pneNVjVqlV14oT15opDh96poUPvtOv6GjVqaNEi1xoZ+idH+zdq1EiXmur8N0f69+yzT+vZZyhXIJEAAADHSURBVJ92VmmGcaSPDRo00GuvzXJWaYZw9HtUktq0ud7lpnT/yZE+1qpV67wn/LgaRz/DunXravnyJc4ozRBGfI9Onz7F6LIM5WgfO3eO1oYNa5xRmiEc6V9gYKBWrPjcWaXZxEhfJQkJCdFnn31Z5nM/y3LueXypqWkud/PuP9G/0rlL/6RLv4+Xev+kS7+P9K907tI/6dLvo6v1j2fvAgAAeABG+gAAADwAoQ8AAMADEPoAAAA8AKEPAADAAxD6AAAAPMD/A6DrO0HjCP8aAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 720x504 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10, 7))\n",
"ymax = np.maximum(w_grad - w_linalg, 0)\n",
"ymin = np.minimum(w_grad - w_linalg, 0)\n",
"ax.vlines(np.arange(w_grad.shape[0]), 100 * ymax / np.abs(w_linalg), 100 * ymin / np.abs(w_linalg))\n",
"ax.axhline(0, lw=1)\n",
"ticks = np.linspace(-0.01, 0.01, num=5, endpoint=True)\n",
"ax.set_ylim(ticks.min(), ticks.max())\n",
"ax.set_yticks(ticks)\n",
"ax.set_yticklabels([f'{100 * j:.1f}%' for j in ticks])\n",
"ax.set_ylabel(f'Percent error after {iterations} iterations')\n",
"\n",
"xticks = np.arange(w_grad.shape[0])\n",
"ax.set_xticks(xticks)\n",
"ax.set_xticklabels([f'w[{j}]' for j in xticks]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Both our answers agree to within one tenth of one percent, which is exciting, but should not be, because we already did some math."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The `jax` implementation here requires care in random number generation (and `np.linalg.pinv` is not yet implemented), so that the GPUs could deal with them:\n",
"\n",
"```python\n",
"from jax import random\n",
"\n",
"key = random.PRNGKey(1)\n",
"\n",
"data_points, data_dimension = 100, 10\n",
"\n",
"# Generate X and w, then set y = Xw + ϵ\n",
"X = random.normal(key, (data_points, data_dimension))\n",
"\n",
"true_w = random.normal(key, (data_dimension,))\n",
"y = X.dot(true_w) + 0.1 * random.normal(key, (data_points,))\n",
"\n",
"def make_squared_error(X, y):\n",
" def squared_error(w):\n",
" return np.sum(np.power(X.dot(w) - y, 2)) / X.shape[0]\n",
" return squared_error\n",
"\n",
"# Now use autograd!\n",
"grad_loss = grad(make_squared_error(X, y))\n",
"\n",
"# V rough gradient descent routine. don't use this for a real problem.\n",
"w_grad = np.zeros(data_dimension)\n",
"epsilon = 0.1\n",
"iterations = 100\n",
"for _ in range(iterations):\n",
" w_grad = w_grad - epsilon * grad_loss(w_grad)\n",
" \n",
"# Linear algebra! The Moore-Penrose pseudoinverse: (X^TX)^{-1}X^T. \n",
"w_linalg = np.dot(np.dot(np.linalg.inv(np.dot(X.T, X)), X.T), y)\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "minimc3.6",
"language": "python",
"name": "minimc3_6"
},
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment