{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Table of Contents](table_of_contents.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Topic 27. Gradient Descent\n", "Author: Jordan Brown (3jordanbrown@gmail.com)\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Introduction\n", "\n", "Gradient descent, or steepest descent, is a function optimization method which iteratively approaches a minimum-cost solution for a function. It accomplishes this goal by updating the function after each iteration in such a way that it moves in the \"direction of motion,\" or towards a minimum (or at least a local minimum).\n", "\n", "Gradient descent is important as it allows a simple, fairly resource non-intensive way to solve difficult problems for which a precise model may be unkown, or direct minima calculation is complex. It also allows for adaptive solutions to such problems where new information may become available, and the model needs to be updated to reflect the new information. This is an idea commonly used in machine learning, for example, to train a neural network model to best approximate some unknown model for which inputs and desired outputs are known (like in the Engineering Application section below)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Explanation of the theory\n", "\n", "In my opinion, one of the easiest ways to introduce gradient descent is by visualizing a simplified example. For example, consider some equation for which the performance was evaluated by observing the error between the estimated model output, and some real desired output. \n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x18489e40a90>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "ins = np.arange(-5.0,5.1,.1)\n", "err = [x**2 for x in ins]\n", "\n", "plt.plot(ins,err)\n", "plt.plot(-4,16,'ro')\n", "plt.xlabel('Parameter X')\n", "plt.ylabel('Error')\n", "plt.title('First Error Point')\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now imagine that we didn't know the shape of the error curve. To move towards a minimum in the error, what we could do is differentiate the error function with regards to some parameter. Then the slope will tell us how to adjust that parameter so that the error function gets closer to its minimum. The adjustment is done by taking a \"step\" towards the minimum, or changing x by the derivative evaluated at the current parameter value, multiplied by some step size that we will call $\\mu$. This is represented as\n", "\\begin{equation}\n", " x_{k+1}=x_{k}-\\mu \\frac{\\delta E}{\\delta x},\n", "\\end{equation}\n", "where $x_{k+1}$ is the updated value, and $x_{k}$ is the previous.\n", "Let's now say we have a fairly large step size, and our updated parameter swings us to the other side of the minimum as in the next plot." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nEwwnGgAAAABJRU5ErkJggg==\n", "text/plain": [ "<matplotlib.figure.Figure at 0x18489e40470>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(ins,err)\n", "plt.plot(1,1,'ro')\n", "plt.xlabel('Parameter X')\n", "plt.ylabel('Error')\n", "plt.title('Second Error Point')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By looking at the parameter update equation, you can see that if the slope swings positive, the adjustment will now bring us backwards towards the minimum. We can continue this method, approaching the minimum closer and closer until we actually find a derivative of zero, get under some desired threshold of error, or reach some maximum number of iterations.\n", "\n", "Now that we have this visualized example, we can dig into the details. To define the above idea in a mathematical way, the goal of steepest descent is to keep updating a function such that\n", "\n", "\\begin{equation}\n", " f(x_{k+1}) < f(x_{k}).\n", "\\end{equation}\n", "\n", "We know we have reached a minimum (or other extremum) when\n", "\n", "\\begin{equation}\n", " f(x_{k+1}) = f(x_{k}),\n", "\\end{equation}\n", "\n", "since the derivative of a function at a minimum or maximum is zero and our above-defined function-updating equation doesn't change if the slope is zero.\n", "\n", "Overall, steepest descent is a simple idea which yields good results. Almost all of the complexity of this method lies simply in selecting the right value of $\\mu$ for our steps. In our original example, with an $x^2$ shape, if we would have selected a step value of 0.5, we would have oscillated back and forth and never converged to the minimum. Values larger than 0.5 would even cause us to diverge away from the minimum. Thus we need to be wise in our selection of $\\mu$ to ensure convergence to a minimum solution. There are some derived requirements for $\\mu$ in example 14.5 of [1]. Beginning with an example function defined as\n", "\n", "\\begin{equation}\n", " f(x) = x^TRx-2b^Tx,\n", "\\end{equation}\n", "\n", "where x $\\in R^n$ and $R$ is positive semi-definite. For this example the resultant step requirement was\n", "\n", "\\begin{equation}\n", " 0 < \\mu < \\frac{2}{\\lambda_{max}},\n", "\\end{equation}\n", "\n", "where $\\lambda_{max}$ is the largest eigenvalue of R. Similar rules can be found mathematically for equations where practical, or with a trial-and-error approach for more complex solutions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple Numerical Examples\n", "\n", "We will work through a Least-Mean Squares adaptive filter as an example to emphasize the concepts presented above. The discrete filter can be defined as \n", "\n", "\\begin{equation}\n", " \\mathbf{y}[t]=\\mathbf{f}[t]^T\\mathbf{h},\n", "\\end{equation}\n", "\n", "where $\\mathbf{f}$ is the input and $\\mathbf{h}$ is the filter impulse response, and our cost function $J$ which we will seek to minimize is defined as \n", "\n", "\\begin{equation}\n", " J(\\mathbf{h})=E\\{(\\mathbf{d}[t]-\\mathbf{y}[t])^2\\}.\n", "\\end{equation}\n", "\n", "Following the derivation in [1], equation 14.13 gives us an update rule (based on the derivative) which is \n", "\n", "\\begin{equation}\n", " \\mathbf{h}[t+1]=\\mathbf{h}[t]+\\mu(E\\{\\mathbf{f}[t]\\mathbf{d}[t]\\}-E\\{\\mathbf{f}[t]\\mathbf{f}[t]^T\\}\\mathbf{h}[t]).\n", "\\end{equation}\n", "\n", "Say our true system results in a portion of a cubic function, and we start with our adaptive filter impulse response as $h=\\mathbf{0}$. From there, follow the plots and code as we progressively update $h$, and observe the inputs passed through the our system which is adapting its impulse response so that the outputs more closely match the desired response. We'll let the input be time. Feel free to adjust $\\mu$ and observe how it affects the fit. (Note: in these plots, the green line is our adaptive filter output, and the blue line is our desired filter output)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nRK5CYII=\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1848ab2b5f8>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "mu=.05\n", "t=np.arange(-5.0,6.0,1)\n", "desired=[(x**3) for x in t]\n", "h=[0] * t.size;\n", "y=np.multiply(t,h)\n", "\n", "plt.plot(t,desired)\n", "plt.plot(t,y)\n", "plt.title('Beginning Filter Fit')\n", "plt.xlim(-5,5)\n", "plt.ylim(-125,125)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\nDBCSJKnZB7/pHXjxyE2iAAAAAElFTkSuQmCC\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1848abdb518>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prevh=h\n", "R=[x**2 for x in t]\n", "Rh=np.multiply(R,prevh)\n", "p=np.multiply(t,desired)\n", "\n", "newh=prevh+mu*(p-Rh)\n", "y=np.multiply(t,newh)\n", "\n", "plt.plot(t,desired)\n", "plt.plot(t,y)\n", "plt.title('Second Filter Fit')\n", "plt.xlim(-5,5)\n", "plt.ylim(-125,125)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nAhERERGd/Q0G+6y6fKfiBAAAAABJRU5ErkJggg==\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1848bc1d048>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prevh=newh\n", "R=[x**2 for x in t]\n", "Rh=np.multiply(R,prevh)\n", "p=np.multiply(t,desired)\n", "\n", "newh=prevh+mu*(p-Rh)\n", "y=np.multiply(t,newh)\n", "\n", "plt.plot(t,desired)\n", "plt.plot(t,y)\n", "plt.title('Third Filter Fit')\n", "plt.xlim(-5,5)\n", "plt.ylim(-125,125)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhAAAAFyCAYAAACk1ONFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XmcjfX/xvHXe4ZZzDAjhfbSIi1Mhvavb7sWaV+mhaQk\nSikJJVtFylKKqBAxlZRooVXakzFkSbJUUsgymH3mfH5/nKPvmB+ZYWbus1zPx+M8prnPfd/nclfu\n63zuzZxziIiIiJRHlNcBREREJPSoQIiIiEi5qUCIiIhIualAiIiISLmpQIiIiEi5qUCIiIhIualA\niIiISLmpQIiIiEi5qUCIiIhIualAiIgnzOxVM1te4vdoM/OZWS8vc5WFmcUGsnb3OouIV1QgRIKM\nmbUN7JyaVsC64s2sj5m1qIhsZfzMwwP5d/X6usSsDvDtYV1nBvInVm7qnT5zwG6yF5vZbSVmdYHX\njuX+E8hao6qyinipmtcBRGSXKuohNTWAPoH1zamgdZbVZOD9UtM2lPjnWwHbwzrOAh4FXgS2V1iy\nPXNAByC31PRvAJxz+WYWDxSWeK8F/qyjgJyqCCniJRUIkfC2px303q3UrIZzbk87yQzn3OTdvemc\nKy7LR5UvWdmYWbxzrnQ5KG2Kc27r7t50zhWUXu2+JxMJHTqEIRKCzKy6mfU3sx/MbIuZbTezOWZ2\ndol5DgfW4/823bfEUPyjJeZpaGZvmtlGM8s1s7lmdlmpz9pxSKWFmY00s3XA7xXwZ9jpHIhdvD8A\neCLw65oShxEOKpXtBzPLCfwZJpV8PzDPl2aWYWbNzewLM8sG+u1j9p3OgTCzgUD/wNt/lchad18+\nRySYaQRCJDTVAm4D0oExQE2gPTDTzE5xzi3Ef7igI/AC8FbgBbAQwMxOAL4E1gADgWzgOmCamV3l\nnHun1GeOxF9I+gEJZchYw8zqlJqW5ZwrCvzzTucQ7MIU4OhApruBLYHpmwL5++A/ZDAZ/yGOusC9\nwClmdrJzbschDxd4711gEvAK8GcZ8tcxs+olfi92zm3ZzbyvAUcBVwOdgB0jF7ubXyTkqUCIhKZN\nwBEldsaY2YvAMuAe4A7nXI6ZTcVfIBbu4nDCM8BqoHmJ9Ywysy+BJ4HSBeJv4DznXFnPz+jH/76V\ng39Hfg5lPBfDObfQzDIJlBrn3Nod75lZA6A30N05N6TE9GlABv7i9HSJ1R0ItHfOjS9jdgNWlJr2\nC3DsbrIuMLMF+AvEW8659WX8HJGQpQIhEoICO/EiADMzIBmIBn4A9nj1hpnVxr8z7w0k+Vfxjw+B\nPmZ2oHNuxzd1B7xYjvIA/pGRKaWmLSjH8v/m6kCmqaVGOf4EVuL/s5UsEDnAxHKs3wGXs/PJkDox\nUqQEFQiREGVmbYH7geOAkkPtK8uw+NH4v2UPAB7bxfs7hv1LDvWvLmfE5c65T8u5TFkdjb8w7erP\n6vjfIYQd1pTxpM2S5vzbSZQikU4FQiQEmdnNwDj85zUMxn9uQjHQC2hQhlXsOIH6aWDWbub5pdTv\ne7pqoSpF4R+BuWg3728r9XswZRcJCyoQIqHpamCFc+6akhPNrH+p+XZ3yGHHN/fCShwlqAi7y7+C\nwAiEc2511cX5VxV17w6RkKDLOEVC0/8bjjezU4HTS03ecdw+ueRE59wGYDZwp5nV38W69q+YmPss\nO/AzudT0qfh32H12tZCZ7VeZoXZjd1lFwpJGIESCkwHtzeziXbw3HP8liVcFrjp4D/9hizuBxcA/\nt312zuWZ2RLg+sA9FzYBi5xzi4HOwBfAj4ErOFYC9fCXkIOBk0vl8cK8wGcPNLMp+O/8OM05tzxw\nGWd/MzsKmI7/TpUNgCuBEcCzHmV9MnD1SyHw9i5uOCUSFlQgRIKTw38p4q6Mc86NN7N6+EvDhcAS\n4Cb8lzyWfu5Fe/w71KFADP7LKxc755aaWTP83+LbAnXwn0sxn50vv9yRp7z5y7JM6Xl2Ws45922g\nKHQALsE/anoosNY597iZLQXuw38/CPDf4Oo9/AVrX/KXRemsXwYOId0OXIa/TByIf5uKhB0r31VZ\nIiIiIjoHQkRERPaCCoSIiIiUmwqEiIiIlJsKhIiIiJRbWF6FEbg3fkv8t97N8zaNiIhISIkDjgBm\nOec27m6msCwQ+MvDJK9DiIiIhLCbgNJP8f1HuBaI1QCvvvoqjRo18jhK+XTt2pVhw4Z5HSOiaJtX\nPW3zqqdtXvVCcZtfPOQh1md9B+9tgz08QC9cC0QeQKNGjWjadI9PNg4qSUlJIZc51GmbVz1t86qn\nbV71Qm2bP/baTNYf+zHX5A/gzfd6wx5OAdBJlCIiIhFu09Zc+v3Qmdqbz+Whq3Z1B/3/L1xHIERE\nRKSMrhgykKL4NUxq/T5RUdl7XgCNQIiIiES0D+Yu4wvfk5wV1Z2Lmzcs83IqEEEmLS3N6wgRR9u8\n6mmbVz1t86oXCtvc53PcNKkT1XIP4Z0HepVr2bB8mJaZNQXmzZs3L6ROYBEREalKnV+YzMh1NzGg\n4Qc8csNFAGRkZJCamgqQ6pzL2N2yOgdCREQkAv26bgsvrLqfgwuv+ac8lIcKhIiISARqNfRhfNWy\nmdZ++F4trwIhIiISYV75aC6L4kdxRfxQmh178F6tQwVCREQkghQUFnPX+x2Jpwnpve7e6/WoQIiI\niESQG4ePJDdpPi+d/g1xMXtfA1QgREREIkTG8rVM3fwwjYo60L7lqfu0Lt0HQkREJEJcMep+rDiO\n97oO3Od1aQRCREQkAgya8hG/J73OnQdM4MgDa+/z+jQCISIiEua2bM/j0W87kbz5bEZ2vLlC1qkR\nCBERkTB3xdODKEz4lYmXTicqyipknRqBEBERCWMfzVvO58UDOYMHaXVqowpbrwqEiIhImPL5HDdM\n7ES13IN454GHK3TdOoQhIiISpu576XU21f6Yvse8x/5JNSp03SoQIiIiYei39Vk8/0tXDiq6ij43\nXlLh61eBEBERCUOthj6Cr/o23mq3dw/L2hMVCBERkTDz6ifz+DF2JK3jn+LURodWymeoQIiIiISR\ngsJi7ny3I3GcyOsPd6m0z1GBEBERCSM3P/MCOck/8ELzr/bpYVl7UqmXcZrZf8xsupn9YWY+M2u9\ni3n6m9laM8sxs4/M7OhS78ea2fNm9reZbTOzN82sbmXmFhERCUULV/7FlE29OC77Du685IxK/azK\nvg9EApAJdAJc6TfN7CHgbqADcAqQDcwys5gSsw0HLgWuBloABwFTKze2iIhI6Gn9/P2YL4Z37xtU\n6Z9VqYcwnHMzgZkAZrare2feCwxwzr0bmKcNsA64AnjDzGoBtwE3OOc+D8zTDlhqZqc4576vzPwi\nIiKhYvCbH/NrrXRu3388Rx20X6V/nmd3ojSzI4H6wCc7pjnntgLfAacHJjXDX3JKzrMM+K3EPCIi\nIhFty/Y8HvmmE0mbWzD6rjZV8plenkRZH/9hjXWlpq8LvAdQDygIFIvdzSMiIhLRrhoymMKEVbxy\n0dsV9rCsPQnrqzC6du1KUlLSTtPS0tJIS0vzKJGIiEjF+mT+L3xW9ASn0Y3LzzihXMump6eTnp6+\n07SsrKwyLetlgfgLMPyjDCVHIeoB80vME2NmtUqNQtQLvPevhg0bRtOmTSsoroiISHDx+RzXv9KZ\n6Gr1mdG7d7mX39WX6oyMDFJTU/e4rGfnQDjnVuEvAeftmBY4afJU4OvApHlAUal5GgKHAd9UWVgR\nEZEg9MDYKWys/SE9m4yo8Idl7UmljkCYWQJwNP6RBoAGZtYE2OSc+x3/JZqPmNkvwGpgALAGeAf8\nJ1Wa2cvAUDPbDGwDngW+0hUYIiISydZs2MqzP9/HgYVXMOCWy6r88yv7EEYz4DP8J0s6YEhg+ivA\nbc65wWZWAxgNJANfABc75wpKrKMrUAy8CcTivyy0cyXnFhERCWqthvbGVz2Lqbc+48nnV/Z9ID5n\nD4dJnHN9gb7/8n4+cE/gJSIiEvEmfZrBgpjnuCR2EKcff5gnGcL6KgwREZFwU1BYzJ0zOhJrxzOl\n532e5VCBEBERCSFtnx1DdvJcRjb7khpx1T3LoQIhIiISIhatWsdrf/fk2KL23HXpmZ5m8ewyThER\nESmf1s91w1w13r33Sa+jaARCREQkFAx561NW1XqVW2u/zDGH1PE6jkYgREREgt3W7Hx6fdWJWpvP\n4sXOt3odB9AIhIiISNC7ashTFCSs4LWWb1ItOji++6tAiIiIBLHZC1byScHjNHddufLME72O84/g\nqDEiIiLy//h8jmvHdyY6vy7vduvjdZydaARCREQkSD04bip/J8+k55HTqFs7wes4O1GBEBERCUJr\nN25j+E/3Ua/oMp5oc7nXcf4fFQgREZEgdNmQPvhiNjP11hFeR9klFQgREZEg8/rnmWRUf4aLYp7g\nzBMO9zrOLqlAiIiIBJGiYh/tp3Uk1hox9Yn7vY6zWyoQIiIiQaTtsy+SnfwdI5rO8fRhWXuiAiEi\nIhIkFq9eT/r6HhxdeCt3X/Yfr+P8K90HQkREJEi0fu5BcFFM7zLY6yh7pBEIERGRIDB82mxW1pxA\nm+QXaXTYAV7H2SONQIiIiHhse24BD83pROLm03n57tu8jlMmGoEQERHx2NVDhlBQ82cmnZ8RNA/L\n2hMVCBEREQ/NWbiKD/P6k+ru45r/NPY6TpmFRs0REREJQz6f49px9xCdvz/vPtDX6zjlohEIERER\nj/ScMI31ye/R/fC3qL9fotdxykUjECIiIh74a9N2hizuQt0tlzKwzRVexyk3jUCIiIh4oNWQvhTH\nbmTKLSOIijKv45SbCoSIiEgVe/OLhcyrNpwLqw+gReMjvY6zV1QgREREqlBRsY92UzsSE3UsUx9/\nwOs4e00FQkREpAq1f24s22t/w/CU2STGx3gdZ6+pQIiIiFSRpb9tYOJf3WlQ2IZ7L/+v13H2ia7C\nEBERqSKtn+0OwPS7n/I4yb7TCISIiEgVGDF9Dr/UHM9NSaM54Yi6XsfZZxqBEBERqWTbcwt4cPZd\nJG45jfH33O51nAqhEQgREZFKdu3QYeTXXMaE8+aFzMOy9kQFQkREpBJ9uWg1M3P70dTXhetaNPE6\nToUJjxokIiISpK55uQtR+fsx44F+XkepUBqBEBERqSS9JrzDuuQZdDv0TQ6qU9PrOBVKIxAiIiKV\n4K9N2xn84z0csOVinrz1Kq/jVDiNQIiIiFSC1kP6Uxy7gTdufi4kH5a1JxqBEBERqWCvfjKPudHD\nOD/2Ec5u0sDrOJVCBUJERKQCvf55Jm0+upAa25ow9f5uXsepNCoQIiIiFWTSpxmkzTyX+PwGLOr+\nEbUSYr2OVGlUIERERCrAKx/N5ZaPzqNG3jEs6fERRx5Y2+tIlUoFQkREZB+9POs7bv30AhLyjmNJ\nzw85vF6y15EqnQqEiIjIPhjzwTfc/vkF1Mw9kaW9ZnFY3SSvI1UJFQgREZG9NOq9r7jzywuplZPC\nT70/4JADankdqcqoQIiIiOyFEdPn0OnrliRnN2N5nw/C7k6Te6ICISIiUk7Dp82my3cXUzv7VJb3\ne4+6tRO8jlTlVCBERETK4ampn9D1h0vYL/tMfu43g/2TangdyRMqECIiImU0aMpHdJ/fijrZLVje\n/52ILQ+gAiEiIlImj702k54LL+OA7HP5ZcA09qsV73UkT6lAiIiI7EG/ye/Te/Hl1Nt+Ib889hbJ\niXFeR/Kc5wXCzPqYma/Ua0mpefqb2VozyzGzj8zsaK/yiohIZOk9cQZ9l15J/e0X88sTb4b17anL\nw/MCEbAIqAfUD7zO2vGGmT0E3A10AE4BsoFZZhbjQU4REYkgvSa8w2PLr+ag7FasGDiFxHjtenao\n5nWAgCLn3IbdvHcvMMA59y6AmbUB1gFXAG9UUT4REYkw3ce9xVOrrueQ7Vey7IlJ1Iir7nWkoBIs\nIxDHmNkfZrbCzF41s0MBzOxI/CMSn+yY0Tm3FfgOON2bqCIiEu7uf3kKT62+jsOyr2H5oMkqD7sQ\nDAXiW+BWoCXQETgSmGNmCfjLg8M/4lDSusB7IiIiFereF19n2G9pHL79epYNnEhcTLAM1gcXz7eK\nc25WiV8Xmdn3wK/AdcBP+7Lurl27kpS080NN0tLSSEtL25fViohImOr8wmRG/nkLDbJvYumgccRU\nj/Y6UqVKT08nPT19p2lZWVllWtacc5WRaZ8ESsRHwEvACiDFObewxPuzgfnOua67Wb4pMG/evHk0\nbdq0ChKLiEio6zhyIqPX3crR2W1YPPClsC8Pu5ORkUFqaipAqnMuY3fzBcMhjJ2YWSJwNLDWObcK\n+As4r8T7tYBTga+9SSgiIuHm9ufGM3p9Wxrm3MbSJ1+O2PJQHp4fwjCzp4AZ+A9bHAz0AwqB1wKz\nDAceMbNfgNXAAGAN8E6VhxURkbBz67Mv88qmO2iU04GFg0ZSLTrovlsHJc8LBHAIMBmoA2wAvgRO\nc85tBHDODTazGsBoIBn4ArjYOVfgUV4REQkTNw8fw6SsOzkxtxPzB45QeSgHzwuEc26PZzQ65/oC\nfSs9jIiIRIwbhozk9e2daZx7D/MHPkNUlHkdKaSoaomISMS55qkRvL69Myfn3cf8J1Qe9oYKhIiI\nRJQrnxzO1JwuNCvoxg+PD1V52EsqECIiEjEuGziEaXldObXwIb4bMFjlYR+oQIiISES4+PEnebeg\nG2cWP8zX/QeqPOwjFQgREQl7Fw54gplFPWjhHmVO3wEqDxXA86swREREKtN5/QfwqXuUc+jHp30f\n9TpO2FCBEBGRsOTzOc7t34/PrR/nRz3GR70f9jpSWFGBEBGRsOPzOf7b71G+jHqMltEDmflID68j\nhR0VCBERCSs+n+PMPr34ttogLo15ind7dvM6UlhSgRARkbDh8zlO6/0Qc2Oe4vLYoUzrscuHNksF\nUIEQEZGw4PM5mj/yABmxw7gq/hmmdu/idaSwpgIhIiIhz+dzNH34PhbEPcu1Cc/xRrfOXkcKeyoQ\nIiIS0nw+R0qve/gx/nlurPUCk7re6XWkiKACISIiIauo2EeTXp1ZEj+aNskv8sq9t3sdKWKoQIiI\nSEgqKvZxYo87WZbwMu3qvMzYe9p5HSmiqECIiEjIKSr2cXyPO1ieMI47DhjPmM5tvI4UcVQgREQk\npBQUFnN8z/asSJjIXfUnMrLjTV5HikgqECIiEjIKCos5rsetrEpM556DJ/Fshxu8jhSxVCBERCQk\n5BUUcVzPNvya+AZdD0tnaPtrvY4U0fQ4bxERCXo5eYUc2+Mmfk2YQrfDX1d5CAIagRARkaCWk1fI\nsb3S+CNxOj2OmsLAtld4HUlQgRARkSC2PbeAY3tdz5813+ORY6Yy4JbLvI4kATqEISIiQWn6t0s4\nvGcr/kx8nz4N31Z5CDIagRARkaDy/vc/0en1/vxa8zWiqx3GwMbv0uPaC7yOJaWoQIiISFD4aN5y\n7pzcn1WJk4mOOpgbk0Yx+qF2JMbHeB1NdkEFQkREPDV7wUrumDiAXxImEhVdj+trjWBM9/bUSoj1\nOpr8CxUIERHxxJeLVtP+lcf4ucZ4oqIO4KqEobz8YAeSE+O8jiZloAIhIiJV6pslv3Hb+Mf5KW4s\nFrUfl8c/xdgHOrJfrXivo0k5qECIiEiVmLtsDbeNHcii2BexqCQuiXuCcV07Ubd2gtfRZC+oQIiI\nSKXKXPEnbV8cyMLqYzBLoGVMf8bfdzf190v0OprsAxUIERGpFItWraPti0+SETUKszjOj+nNuC73\ncMgBtbyOJhVABUJERCrU0t820Gb0YH6w54HqnF29B690uY/D6iZ5HU0qkAqEiIhUiOVrNtJm9NN8\n6xsBLor/VOvGK527cuSBtb2OJpVABUJERPbJirWbaPvCUL4qfgZwnBF9L+M73M8xh9TxOppUIhUI\nERHZK7+u20KbUcOYUzAcrIhT7G7Gd+hGo8MO8DqaVAEVCBERKZc1G7bSdtQzfJo7BKLzSaUT42/v\nzolH1vM6mlQhFQgRESmTtRu3cevIEXyc8zSuWg4pdGRcu4dIOepAr6OJB1QgRETkX63fnM2tI59n\n5rbBuOrbOMl1YOwtPWh27MFeRxMPqUCIiMgu/Z2VQ7uRo3hvy5O42C0c79oz9sZenNroUK+jSRBQ\ngRARkZ1s2ppL+1Gjmb5pEL7YjRzn2vHS9Q9z5gmHex1NgogKhIiIALBlex53jHqJtzY8gS9+Pcf4\n2jDm6kc4u0kDr6NJEFKBEBGJcFuz87nzhbFM+esJimuspYHvZsZc0ZvzTj7a62gSxFQgREQiVE5e\nIR1fGM/kPx6jOOF3DvelMarVo1zcvKHX0SQEqECIiESYnLxCOo+ZyKu/DaAo8VcOLb6O5y76gNan\nHe91NAkhKhAiIhEir6CILi9OZtzK/hTVWsHBvmsYccEMrjzzRK+jSQhSgRARCXN/bdpO/zfe4aXl\n/SistZwDfVcw/JypXNeiidfRJISpQIiIhAmfz5G54k/enbuAr1ZksnRzJn9ZJoU1l4M56vpaMeSs\ndG4+L9XrqBIGVCBEREJQXkERs35YxocLFzD390xWZGeyOTYTV2ODf4b8WiT5Ujg+/iKa1unBFc1P\n1TkOUqFUIEREgtwff2/jnW8XMvunTBasy2RNUSY5CYugeh4A0QWHc4Cl0CK+E6cfkcKlqSmccfzh\nREWZx8klnKlAiIgECZ/P8cPPf/DuD5l8tTKTnzZnsj4qk6JaK/wzFFcnvugEDo5O4aRaN/Pfhim0\nPqUxRx5Y29vgEpFUIEREPJCdW8jMH37iw4WZ/PBHJitzMsmKy8TFbwLA8mqTRAqNY1uTun8KFzZO\n4aJmx5EYH+NxchG/kCkQZtYZ6AbUBxYA9zjn5nqbSkRkz35dl8U73y5g9rJMflyfyR/FmeQmLoZq\nBQBUK2hA3agUmta4j9OPbEKrZimc0vBQHYKQoBYSBcLMrgeGAB2A74GuwCwzO9Y597en4UREAnw+\nx9eLf+O9eZl8szqTZVmZ/B29gKKaq/wzFMVSo/hEDq3elMZJ7Ti7YQqtT2vMoQckeRtcZC+ERIHA\nXxhGO+cmAJhZR+BS4DZgsJfBRCQybcsp4N3vlvDRokzmr81kVe4CsuIzIW4LAJZXh9qczMmxV9Os\nXhMubJxCy9SGxMdW9zi5SMUI+gJhZtWBVOCJHdOcc87MPgZO9yyYiISM4mLH9twCtubksy03n+zc\nAv/P/Hyy8/yvnPwCsvPzySnIJ7cgn7zCAnIL8sktzCevKJ+8wnzyivJYvfUX1voyyau5BKILAahe\ncAz1olI4JaEbZx6VwmXNU0hpcJAOQUhYC/oCAewPRAPrSk1fB+iJLyJBxOdz5BUU+XfUOflsz8sn\nOy+wsw7sqLPz88ktKAj89O+w8woK/tlR5xft+FlAQXG+/+Xz/yx0BRT68il0+RSTT5Er8P+0fHzk\nU2z5uKgCfFH5uKh8XHQ+RBX8c67BXiuKheJYzBdLDd+RHBFzCinJHTinUQqtTzuJ+rVrVswGFAkh\noVAg9lrXrl1JStr52GJaWhppaWkeJRKpOMU+H1nZeYEddQHbc/P9rzz/Kye/gOy8/+2kcwv+9406\nt9C/o84vKvDvrIvzKSjy76gLfQWBn/4ddZEL7KjNv9MuDuyofVaAi8r376yj8yE6H6ILwNze/6GK\nYv7ZUZsvhihfrP/lYokmhmhiqUas/6fFEh9Vi+oWS/Uo/ysmOobY6FhiomOJqxZLbLUYYqvFElc9\nlvgdr5gY4mNiqRETS0JcLDViY0iIiyUxLpaE2FgS42OoGR9LzRqx1KoRS2z1aphpJEHCU3p6Ounp\n6TtNy8rKKtOy5tw+/M9eBQKHMHKAq51z00tMHw8kOeeu3MUyTYF58+bNo2nTplWWVaSy/LVpO9O/\nW8inSzJZuG4BvxVmkp3wI1TP3bsVFleD4hj/jjqww45ysUS5GKJdrP8V2FlXsxiqmX+HHbNjRx0V\nQ0xgRx1b7X8765121IGddY3YWGrE+nfOO3bYiXGxJMbH/rOjrhkfQ0JcjIb8RYJARkYGqampAKnO\nuYzdzRf0IxDOuUIzmwecB0wHMP/XgfOAZ73MJlLRfD7H/BVrmTE3k69XLGDp5kzWWSaFNX/xf7Mv\nrkZc4QkcFJXCiQk3cFBSXeJjYv/3jTrWv4OuEdhZ79hRJ8bFBHbU/m/YsTHRXv9RRSTEBX2BCBgK\njA8UiR2XcdYAxnsZSmRf5OYXMmveMmYtzOSH3xewMifwLIP4wJXJeckk+VI4If5SmtZpwvknpnBJ\n80YkJcZ6G1xEhBApEM65N8xsf6A/UA/IBFo65zZ4m0ykbNZs2Oq/kdBPC1i4PvAsg8RFUC0fgGr5\nR3IAKbSIu7vEswwO05C+iAStkCgQAM65kcBIr3OI/Bufz/H9st9574cFfL0qk5+2BJ5lUHOlf4ai\nGOKLTuSQ6BROrNnGfyOhUxtzRP1kb4OLiJRTyBQIkWCTnVfAB3P9zzKYt+NZBvGZuLjNAFjufiT7\nTqZJ3JWk7t/kn2cZJMTrRkIiEvpUIETK4Nd1W5j27QI+L/ksg5qL/3cjofyjqRuVQmr8/ZzRIIVW\nzVJoduzBOgQhImFLBUKkBJ/P8fWSX/3PMljlf5bBhuhMimv+6p+hMI4axSdxWLXmNK51O2cfl8Ll\npzXm4P11IyERiSwqEBLRVv25mQFvTiNjbSarczPJil8Acf6bqFjuAeznTiY19nqa1WtCy5QULmx6\nLHEx+t9GRER/E0pE+nXdFtqOGs7nBcMgZhsxBcdSLyqFUxMu4syjUmh9SgqNj6yvQxAiIruhAiER\nZc2GrbQd9Qyf5Q7FReeRap0Z3/ZBTjyyntfRRERCigqERIS1G7dx68gRfJw9BFc9mxQ6Mq7dQ6Qc\ndaDX0UREQpIKhIS19ZuzuXXk88zcNhhXfRsn0YGxt/Sg2bEHex1NRCSkqUBIWPo7K4d2I0fx3pYn\ncbFbON61Z+yNvTi10aFeRxMRCQsqEBJWNm3Npf2o0UzfNAhf7EaOc+146fqHOfOEw72OJiISVlQg\nJCxs2Z4X6tKbAAAVn0lEQVTHHaNe4q0NT+CLX88xvra8dM0jtGh8pNfRRETCkgqEhLSt2fnc+cJY\npvz1BMU11tLAdzNjrujNeScf7XU0EZGwpgIhISknr5COL4xn8h+PUZzwO0f4bmRkq95c3Lyh19FE\nRCKCCoSElJy8QjqPmcirvz1GUeJqDi2+jucu+oDWpx3vdTQRkYiiAiEhIa+giC4vTmbcyv4U1VrB\nwb5rGHHBdK4880Svo4mIRCQVCAlqBYXF3Pfya7y0vB+FtZZzoO8Khp8zletaNPE6mohIRFOBkKBU\nVOzj/pffYPRP/ShI+ol6vssY8p/XuOncpl5HExERVCAkyBQV+3ho/Fs8v7gv+UmLOcBdwlNnTKDt\nBc29jiYiIiWoQEhQ8PkcPSdM49kFfclLXkgd34U8d+pL3H7RaV5HExGRXVCBEE/5fI4+k95lSEYf\ncpPnU9udx9BmX3LXpWd6HU1ERP6FCoR4wudzDHjtAwbP7UNO8g8kuRYMTJnNvZf/1+toIiJSBioQ\nUqV8PsfAKR8y8Ns+ZCd/Ry13Fk+f9AldrziHqCjzOp6IiJSRCoRUCZ/PMeTtTxnwxaNsq/01iZzG\nwOM/pPvV56s4iIiEIBUIqXTDp82m7+w+ZNWeQ4I1Z0DDD+h1XUsVBxGREKYCIZXmuRlf0PuTPmyp\n/Rnx1pTeR82g742XqjiIiIQBFQipcGM++Iaesx5lU+2PibMm9DxyGo/d3FrFQUQkjKhASIUZ9+H3\ndP+gD38nzyQ26kS6HfomAx+5kmrRUV5HExGRCqYCIfts09ZcmvRty5qkKcRYI+47+HWeeuQaFQcR\nkTCmAiH75O+sHI7t05rNCd9w5wETeLbXjcRUj/Y6loiIVDIVCNlr6zdn07BfK7YkzGX4Ke/rJlAi\nIhFEBUL2yl+btnNc/0vJSsjg+dNn0qnVWV5HEhGRKqQCIeW2duM2jhtwMdtqLOSFM2dx5yVneB1J\nRESqmAqElMuaDVtp9PhFbK+xmBdbfKinZYqIRCgVCCmz39ZncfzAluTEL2P8OR/T9oLmXkcSERGP\nqEBImaz6czMnDW5JTtwvTDj/Y24+L9XrSCIi4iEVCNmjFWs3cdJTF5AXu5pJLT8h7eyTvY4kIiIe\nU4GQf7V8zUaaDDmfvNjfee2ST7muRROvI4mISBBQgZDdWvrbBpoOO5/8mD+Z0uozrj7rJK8jiYhI\nkFCBkF1avHo9qc+eR0HMet6+/DMuP+MEryOJiEgQUYGQ/2fRqnU0G3EuhdU2Mf2q2bQ6tZHXkURE\nJMioQMhOMlf8yanPn0tRtSzevXY2Fzdv6HUkEREJQioQ8o8ffv6DM0afS3F0NjOv/5wLUo/xOpKI\niAQpFQgBYO6yNZw55hx8Ufl8dNPnnJtylNeRREQkiKlACN8s+Y0WY8/BRRXx8c2zObtJA68jiYhI\nkFOBiHBfLf6Vs8edAzhmt/2cs048wutIIiISAlQgItichas4d8I5GNHMuW02px9/mNeRREQkRER5\nHUC88WnmCs6d+F+iXHW+bK/yICIi5aMRiAj00bzlXPzauUT5avD1nZ/S7NiDvY4kIiIhRiMQEeaD\nucu46PWziS5O5PtOs1UeRERkr6hARJD3v/+JVlPOpnpRMnPv/oyUow70OpKIiIQoFYgIMf3bJVw2\n9WyqF+3PvC6f0bhBfa8jiYhICPO0QJjZajPzlXgVm1n3UvMcambvmVm2mf1lZoPNTMWnHN7+ahFX\nvH02MQX1mH/fp5xwRF2vI4mISIjz+iRKBzwCvAhYYNq2HW8GisL7wFrgNOAgYCJQEFhO9uCNOQu4\n4f3ziSs4hPn3f0TDQ/f3OpKIiISBYPgmv905t8E5tz7wyi3xXkvgOOAm59yPzrlZQG+gs5l5XX6C\nXvrs+dzw/rnE5R/Gjw9+ovIgIiIVJhgKRA8z+9vMMsysm5lFl3jvNOBH59zfJabNApKAE6o0ZYh5\n9ZN53DTrPOLzG7C4+8ccddB+XkcSEZEw4vW3+GeADGATcAYwCKgPdAu8Xx9YV2qZdSXeW1AFGUPO\nKx/Npd2nF1IjryGLe8zk8HrJXkcSEZEwU+EFwswGAg/9yywOaOSc+9k5N7zE9EVmVgCMNrOezrnC\nfc3StWtXkpKSdpqWlpZGWlravq46aL086ztu//xCEnNPYHGvDzisbtKeFxIRkYiUnp5Oenr6TtOy\nsrLKtKw55yo0jJnVAersYbaVzrmiXSx7PPAjcJxzbrmZ9QMuc841LTHPEcBK4GTn3C5HIMysKTBv\n3rx5NG3adFezhKUxH3zDnV+0pGZOY37q/QEH1anpdSQREQkxGRkZpKamAqQ65zJ2N1+Fj0A45zYC\nG/dy8ZMBH7A+8Ps3QC8z27/EeRAXAlnAkn0KGmZGvvslnb+5mKScpvz06HvU3y/R60giIhLGPDsH\nwsxOA04FPsN/6eYZwFBgonNux/jJh/iLwkQzewg4EBgAPFcRhzjCxYjpc+jy3SUkZzdnWZ93qVs7\nwetIIiIS5rw8iTIfuAHoA8QCq4AhwLAdMzjnfGbWChgFfA1kA+MDywgwfNpsus69lNrZp/Fzvxns\nn1TD60giIhIBPCsQzrn5wOllmO93oFXlJwo9T039hO7zL2O/7LNY1m+ayoOIiFSZYLgPhOyFgW98\nSPf5raiT3YLl/d9ReRARkSqlAhGCHnttJr1+bM0B2efyy4Bp7Fcr3utIIiISYVQgQky/ye/Te/Hl\n1Nt+Ib889hbJiXFeRxIRkQjk9Z0opRx6T5zBY8uvpv72S1j+xBskxsd4HUlERCKUCkSI6PnKNAat\nuI6Dtl/G8oGvUSOuuteRREQkgukQRgh4cOxUBq24lkO2X8HyJ1QeRETEexqBCHL3vzyFYb+lcVj2\ntSwbNJG4GP0rExER72kEIoh1GfMaw35L44jtN7BsoMqDiIgED+2RglSnFyYx6s82NMi+maWDxhJT\nPdrrSCIiIv/QCEQQ6vD8BEb92YZjctqydKDKg4iIBB+NQASZ20aMY9zG9jTMac+iQaOpFq2OJyIi\nwUd7pyDy8MTpjNvYnkY5HVQeREQkqGkEIkis3biNQQs7UbfoUhY+PVLlQUREgpoKRJC4bEgffDGb\neevW51QeREQk6KlABIHXP88ko/qzXBzzBGeecLjXcURERPZIBcJjRcU+bp92F7F2HG8+0dXrOCIi\nImWiAuGxW0e8xPbkbxnRdI5uUS0iIiFDBcJDi1evZ/K6HhxT1I67L/uP13FERETKTGfreaj1cw+C\nM2Z0Gex1FBERkXLRCIRHnnnnc1bWnEDb2i/R8ND9vY4jIiJSLhqB8MD23AK6f34XNTefwUud23kd\nR0REpNw0AuGBq4cMoaDmz0y+YL7u+SAiIiFJBaKKzVm4ig/zBtDMdeXqs07yOo6IiMhe0dffKuTz\nOa4ddw/R+fsz44E+XscRERHZaxqBqEI9J0xjffJ79Djibervl+h1HBERkb2mAlFF/tq0nSGLu1C3\nqBWP33K513FERET2iQpEFWk1pC/FsRuZ2nYEUVHmdRwREZF9ogJRBd78YiHzqg2nZfXHOOvEI7yO\nIyIiss9UICpZUbGPdlM7EhvVkDcfv9/rOCIiIhVCBaKStX9uLNtrf8OzJ39OYnyM13FEREQqhApE\nJVr62wYm/vkQRxW15Z7WLbyOIyIiUmF0H4hK1PrZ7mCOGV2e8jqKiIhIhdIIRCV5bsYX/FJzPLck\njaHRYQd4HUdERKRCaQSiEmzPLaDbZ3eRuPl0xt7T3us4IiIiFU4jEJXg2qHDyK/5ExPOm6eHZYmI\nSFhSgahgXy5azczcfqT67uW6Fk28jiMiIlIp9PW4gl3zchei8vdj+gN9vY4iIiJSaTQCUYF6TXiH\ndckzePCwqRxUp6bXcURERCqNRiAqyF+btjP4x3s4YMslDGp7pddxREREKpVGICpI6yH9KY7dwBs3\n62FZIiIS/jQCUQGmfvkjc6OHcUFsb85u0sDrOCIiIpVOIxD7qKjYR7s37yIm6mjeeryb13FERESq\nhArEPrrj+fFsq/0VQxp/qodliYhIxFCB2AfLfv+bV9Z2p0HRLdx/5TlexxEREakyOgdiH1z27ENg\nxUy/+2mvo4iIiFQpjUDspVHvfcXyxLGk1RzFCUfU9TqOiIhIlVKB2As5eYV0/aQjCe5UJjzSwes4\nIiIiVU4FYi9cO3Q4+TWXMO6cH/SwLBERiUgqEOX0zZLfeD+7Lyf7upB29slexxEREfGEvj6X01Uv\ndiGqMJl3u/X3OoqIiIhnNAJRDr0nzuCv5HfoesgbeliWiIhEtEobgTCzXmb2lZllm9mm3cxzqJm9\nF5jnLzMbbGZRpeZpbGZzzCzXzH41swcrK/O/Wb85m4EL7mH/LRfxdLtrvIggIiISNCpzBKI68Abw\nDXBb6TcDReF9YC1wGnAQMBEoAB4JzFMTmAV8CNwJnASMM7PNzrmXKjH7/9N6yACK49bx+jWf6GFZ\nIiIS8SqtQDjn+gGYWdvdzNISOA44xzn3N/CjmfUGBplZX+dcEXAz/iLSPvD7UjM7GbgfqLIC8c7X\ni/kuagjnVnuUc1OOqqqPFRERCVpenkR5GvBjoDzsMAtIAk4oMc+cQHkoOU9DM0uqipA+n6PNG3dR\nPbsBbz/QvSo+UkREJOh5WSDqA+tKTVtX4r2yzlOpOox8ha21v2DgmaOolRBbFR8pIiIS9Mp1CMPM\nBgIP/cssDmjknPt5n1JVkK5du5KUtPNARVpaGmlpaWVafvmajYxd8yBHFN7EA1edWxkRRUREPJOe\nnk56evpO07Kyssq0bHnPgXgaGLeHeVaWcV1/Ac1LTatX4r0dP+vtYZ7dGjZsGE2bNi1jnP/vsmd6\n4KoVMuPuIXu9DhERkWC1qy/VGRkZpKam7nHZchUI59xGYGO50u3eN0AvM9u/xHkQFwJZwJIS8zxm\nZtHOueIS8yxzzpWtIu2l0e9/zbLEl7g+8XlOPLJ0hxEREYlslXkfiEPNrAlwOBBtZk0Cr4TALB/i\nLwoTA/d6aAkMAJ5zzhUG5pmM/7LOsWZ2vJldD3QBKnVIICevkPs+7kjCluZM6HJnZX6UiIhISKrM\n+0D0B9qU+D0j8PMc/FdW+MysFTAK+BrIBsYDfXYs4JzbamYXAs8DPwB/A32dcy9XYm6uH/YseTUX\n8+p/5xJTPboyP0pERCQkVeZ9INoB7fYwz+9Aqz3Mswj4bwVG+1ffLf2dd7f3oXFxZ246d+/PnxAR\nEQlnephWKVeOuZeowlrMuH+A11FERESClh6mVULfSe/xZ/LbdDnoNQ6rWyX3qRIREQlJGoEI+Dsr\nh8fn381+my9gWPvrvI4jIiIS1DQCEdD66ccoiv+T1674UA/LEhER2QONQADTv13CN/Y0Z1fryQWp\nx3gdR0REJOhFfIHw+RxtXutE9ewjePuBf7tLt4iIiOwQ8YcwOo6aSFbtz3nyhI9ITozzOo6IiEhI\niOgCsWLtJl76rRuHFd1A92vO9zqOiIhIyIjoAtFqeE9ctXze6TDU6ygiIiIhJWILxEszv+WnhDFc\nU2MEKUcd6HUcERGRkBKRBSKvoIh7ZnWkBqlM6nWX13FERERCTkQWiBuGjiAvaSGvnPW9HpYlIiKy\nFyKuQMxdtoZ3tj3KScWdaHN+M6/jiIiIhKSIuw/ElaPvI6oogRldH/M6ioiISMiKqBGI/ukf8EfS\nVO6uP5nD6yV7HUdERCRkRcwIxKatuQyY15nam8/jmTtu8DqOiIhISIuYEYjWTz9OUfwfpF8+Uw/L\nEhER2UcRMQLx/vc/8RWDaRHdg5bNjvU6joiISMgL+wLh8zlumnwX1bIP451uPb2OIyIiEhbCvkB0\nHj2JLbVn0/eU50PiYVnp6eleR4g42uZVT9u86mmbV71w3+ZhXSD+2LCV0asf4NCs63j4+pZexymT\ncP8PLhhpm1c9bfOqp21e9cJ9m4d1gbh38nO46Fym3TXM6ygiIiJhJayvwlgVN5Wrkp+h6TEHeR1F\nREQkrIT1CETs9oZMuq+T1zFERETCTriOQMQBtD30RpYsWuh1lnLJysoiIyPD6xgRRdu86mmbVz1t\n86oXqtt86dKlO/7xX688MOdc5aepYmZ2IzDJ6xwiIiIh7Cbn3OTdvRmuBaIO0BJYDeR5m0ZERCSk\nxAFHALOccxt3N1NYFggRERGpXGF9EqWIiIhUDhUIERERKTcVCBERESk3FQgREREpNxUIERERKTcV\niBBgZjFmlmlmPjNr7HWecGVmh5vZS2a20sxyzGy5mfU1s+peZwsnZtbZzFaZWa6ZfWtmzb3OFK7M\nrKeZfW9mW81snZm9bWbHep0rkphZj8Df3UO9zlLRVCBCw2BgDaBrbivXcYABdwDHA12BjsDjXoYK\nJ2Z2PTAE6AOcDCwAZpnZ/p4GC1//AUYApwLnA9WBD80s3tNUESJQjjvg/+887Og+EEHOzC4Gngau\nBpYAKc650Lo/dwgzs25AR+fc0V5nCQdm9i3wnXPu3sDvBvwOPOucG+xpuAgQKGrrgRbOuS+9zhPO\nzCwRmAfcBfQG5jvn7vc2VcXSCEQQM7N6wBjgZiDX4ziRKhnY5HWIcBA4FJQKfLJjmvN/g/kYON2r\nXBEmGf9Ipv6brnzPAzOcc596HaSyhOvDtMLFOGCkc26+mR3udZhIY2ZHA3cDYfWtwUP7A9HAulLT\n1wENqz5OZAmM9gwHvnTOLfE6TzgzsxuAFKCZ11kqk0YgqpiZDQycULO7V7GZHWtmXYBE4Mkdi3oY\nO6SVdZuXWuZg4APgdefcWG+Si1SokfjP7bnB6yDhzMwOwV/UbnLOFXqdpzLpHIgqFnjQV509zLYK\neANoVWp6NFAETHLOtauEeGGpjNt8pXOuKDD/QcBnwNfazhUncAgjB7jaOTe9xPTxQJJz7kqvsoU7\nM3sOuAz4j3PuN6/zhDMzuxx4Cyjmf1/8ovEfOioGYl2Y7HhVIIJUoMXWKjHpIGAW/pMpv3fOrfUk\nWJgLjDx8CswFbgmX/9GDxW5OovwN/0mUT3kaLkwFysPlwH+dcyu9zhPuzCwBKH3IeTywFBjknFta\n5aEqic6BCFLOuTUlfzezbPxtdqXKQ+UIjDzMxj8C1B2o69+/gXOu9HF72TtDgfFmNg/4Hv+lsjXw\n/wUrFczMRgJpQGsgO3BiNkCWcy7Pu2ThyzmXjf+KuX8E/v7eGE7lAVQgQo2+DVeuC4AGgdfvgWmG\nf7tHexUqnDjn3ghcStgfqAdkAi2dcxu8TRa2OuL/73d2qentgAlVniZyheXf3TqEISIiIuWmqzBE\nRESk3FQgREREpNxUIERERKTcVCBERESk3FQgREREpNxUIERERKTcVCBERESk3FQgREREpNxUIERE\nRKTcVCBERESk3FQgREREpNz+D8KoKgGTKRXnAAAAAElFTkSuQmCC\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1848bc35390>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for count in range(100):\n", " prevh=newh\n", " R=[x**2 for x in t]\n", " Rh=np.multiply(R,prevh)\n", " p=np.multiply(t,desired)\n", "\n", " newh=prevh+mu*(p-Rh)\n", " \n", "y=np.multiply(t,newh)\n", "\n", "plt.plot(t,desired)\n", "plt.plot(t,y)\n", "plt.title('Later Filter Fit')\n", "plt.xlim(-5,5)\n", "plt.ylim(-125,125)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## An Engineering Application\n", "\n", "Scatterometry is a field where microwave radar scattering off of the earth's surface is used to improve natural hazard and weather prediction, and study global climate patterns. Many, if not all of the relationships between physical phenomena and radar return echo are too complex, however, to be derived from known equations, especially in the presence of noise. This means methods like gradient descent can be very useful in deriving heuristic models based on real data. For example, the Advanced Scatterometer (ASCAT) was designed to measure ocean winds. It observes radar backscatter ($\\sigma$) as seen from 3 different azimuth look angles. Current models, known as Geophysical Model Functions (GMF), are used to retrieve wind speed and direction from these backscatter values. GMFs, however, have inherent ambiguity in their solutions. Thus there is room to improve our models to better discriminate between similar solutions. Here we will explore the idea of creating a model using gradient descent to minimize our error and improve our transfer function. Although this won't be a great model, it will illustrate the idea.\n", "\n", "To make things a simple, we'll create our model in this format:\n", "\n", "\\begin{equation}\n", " WSPD_{mod}=a\\sigma_{av}+b\\sigma_{av}^2+c\\sigma_{av}^3,\n", "\\end{equation}\n", "\n", "where $\\sigma_{av}$ is the average of the backscatter from the 3 azimuth look angles (fore, mid, and aft)\n", "\n", "\\begin{equation}\n", " \\sigma_{av} = (\\sigma_{f} + \\sigma_{m} + \\sigma_{a})/3.\n", "\\end{equation}\n", "\n", "If we define the error as\n", "\n", "\\begin{equation}\n", " err=(WSPD-WSPD_{mod})^2,\n", "\\end{equation}\n", "\n", "then taking the derivative of the error with regards to each of the three adjustable parameters ($a$, $b$, $c$) leads to our update steps, which can be seen in the code below.\n", "\n", "The data is actual data from a region near Hawaii. All speeds are reported in meters/second, and all backscatter measurements are in decibels.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<matplotlib.figure.Figure at 0x1848bd22128>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "a= -2.98797571844e-06 b= 4.47621004762e-05 c= -0.000622532752604\n" ] } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "sigf=np.array([-19.276, -19.242, -19.207, -19.976, -19.976, -19.976, -20.781, -20.781, -21.059, -21.072, -20.781, -20.801, -20.801, \n", "-20.801, -20.817, -20.817, -20.817, -20.817, -20.817, -23.026, -23.027, -23.029, -25.722, -25.875, -25.882, -25.89, -25.722,\n", "-25.722, -30.275, -30.275, -30.275, -30.275, -30.275, -37.014, -38.603, -38.603, -38.603, -38.603, -38.603, -33.786, -33.786, \n", "-34.167, -34.167, -34.167, -32.796, -32.796, -29.174, -29.174, -27.895, -27.801, -26.307, -26.307, -26.307, -25.755, -25.153, \n", "-18.995, -19.255, -19.298, -19.441, -19.489, -19.536, -19.339, -19.336, -19.374, -19.262, -19.228, -19.297, \n", "-19.282, -19.421, -19.438, -19.459, -19.59, -19.625, -19.66, -19.596, -19.609, -19.6, -19.501, -19.615, -19.995, -20.023, \n", "-20.214, -20.264, -20.315, -20.345, -20.388, -20.43, -20.659, -20.772, -20.893, -20.84, -21.197, -21.219, -21.241, -21.157, \n", "-21.157, -21.155, -21.187, -21.183, -21.243, -21.245, -21.252, -21.166, -21.125, -21.14, -21.302, -21.328, -21.224, -21.223, \n", "-21.219, -21.21, -21.198, -21.183, -21.946, -22.136, -22.57, -22.636, -22.697, -22.948, -23.004, -23.054, -23.095, -23.125, \n", "-23.001, -23.025, -22.75, -23.167, -23.181])\n", "sigm=np.array([-10.618, -10.618, -10.618, -11.815, -11.815, -11.815, -11.98, -11.98, -11.98, -11.753, -11.169, -11.169, \n", "-12.99, -12.99, -15.498, -15.498, -15.498, -15.498, -15.498, -15.245, -15.245, -15.245, -18.749, -18.749, -18.749, -18.749, \n", "-17.967, -17.967, -20.155, -20.155, -20.155, -20.155, -19.783, -29.264, -29.264, -29.264, -29.264, -29.264, -29.147, -28.837, \n", "-28.837, -26.396, -26.396, -26.396, -25.281, -25.281, -28.021, -28.021, -28.021, -28.186, -28.707, -28.259, -26.801, -25.714, \n", "-25.714, -10.414, -10.618, -10.618, -10.618, -10.618, -10.618, -10.618, -10.618, -10.618, -10.953, -10.993, \n", "-11.031, -11.069, -11.104, -11.139, -11.815, -11.815, -11.802, -11.801, -11.775, -11.775, -11.775, -11.775, -11.98, -11.503, \n", "-11.51, -11.518, -11.98, -11.98, -11.98, -11.758, -11.73, -11.701, -11.674, -11.647, -11.623, -11.599, -11.815, -11.765, \n", "-11.831, -11.895, -11.955, -12.99, -12.752, -12.718, -12.116, -12.116, -12.116, -12.116, -15.498, -14.749, -14.764, -14.78, \n", "-15.498, -15.498, -15.83, -15.885, -15.94, -15.993, -16.043, -16.091, -16.021, -16.026, -16.345, -16.28, -16.218, -16.158, \n", "-15.151, -15.135, -15.118, -14.865, -14.865, -14.865])\n", "siga=np.array([-16.956, -16.956, -16.956, -16.384, -16.348, -15.636, -17.724, -18.699, -18.138, -18.138, -18.138, -18.73, \n", "-19.624, -19.624, -19.972, -19.935, -19.286, -19.286, -21.211, -20.556, -20.556, -20.556, -27.459, -27.459, -27.459, -27.459, \n", "-25.903, -24.06, -26.567, -26.567, -26.567, -26.516, -26.516, -35.173, -37.602, -37.602, -37.602, -37.602, -38.075, -38.075, \n", "-38.075, -35.793, -37.318, -37.318, -34.893, -32.971, -27.403, -27.403, -27.403, -27.403, -25.669, -25.669, -25.669, -23.397, \n", "-23.397, -17.617, -17.688, -17.453, -17.892, -18.017, -18.017, -17.623, -17.597, -17.57, -17.332, -17.288, \n", "-17.246, -17.138, -17.103, -16.587, -16.484, -16.406, -16.373, -16.341, -16.793, -16.829, -16.883, -16.918, -16.951, -17.13, \n", "-17.16, -17.456, -17.657, -17.638, -17.682, -17.727, -17.772, -17.715, -17.736, -17.859, -17.888, -17.914, -18.483, -18.453, \n", "-18.472, -19.03, -19.033, -18.771, -18.809, -18.846, -19.395, -19.486, -19.579, -19.95, -20.056, -20.178, -20.187, -20.291, \n", "-19.852, -19.843, -20.011, -19.845, -19.817, -20.23, -20.245, -20.266, -20.289, -20.318, -20.349, -20.405, -20.447, -20.75, \n", "-20.722, -20.552, -20.858, -20.948, -21.862, -21.93])\n", "desired=np.array([5.3735, 5.3758, 5.3789, 5.5261, 5.5361, 5.7512, 5.2828, 4.9356, 5.2705, 5.3911, 5.8092, \n", "5.7077, 4.4992, 5.6902, 4.7739, 4.7662, 4.8616, 4.8616, 4.6411, 4.2863, 4.2871, 4.2871, 2.2614, 2.2568, 2.2568, \n", "2.2561, 2.6376, 2.7985, 2.1378, 2.1378, 2.1378, 2.1622, 2.3179, 0.45091, 0.40819, 0.40819, 0.40819, 0.40819, 0.41429, \n", "0.50279, 0.50279, 0.84231, 0.83087, 0.83087, 1.2421, 1.2749, 1.5473, 1.5473, 1.6579, 1.6327, 1.8876, 1.9997, 2.3812, \n", "3.3135, 3.4722, 4.5183, 4.9387, 5.0279, 4.9341, 4.9234, 4.9226, 5.0478, 5.0539, 5.06, 5.0195, 5.0462, \n", "5.0737, 5.1683, 5.2011, 5.7672, 5.5742, 5.5887, 5.6185, 5.6352, 5.7093, 5.7054, 5.7207, 5.7848, 5.6948, 5.6291, \n", "5.6207, 5.4758, 5.3056, 5.3072, 5.3026, 5.3667, 5.3865, 5.4682, 5.491, 5.4628, 5.4903, 5.5002, 5.2789, 5.3858, \n", "5.3514, 5.1943, 5.1576, 4.8158, 4.8906, 4.9173, 5.2293, 5.2057, 5.2057, 5.1599, 4.5991, 4.9165, 4.9081, 4.96, \n", "4.6602, 4.6648, 4.4984, 4.4855, 4.4687, 4.2848, 4.2199, 4.1368, 4.1963, 4.1589, 4.0376, 4.0452, 4.075, 4.0887, \n", "4.0628, 4.2344, 4.0544, 4.1879, 4.0101, 4.0056])\n", "\n", "t=np.arange(0,sigf.size,1)\n", "\n", "ins=[]\n", "for i in range(sigf.size):\n", " ins.append((sigf[i]+sigm[i]+siga[i])/3)\n", " \n", "mu=5*10**(-10)\n", "newa=0\n", "newb=0\n", "newc=0\n", "err=[]\n", "model=[]\n", "\n", "for k in range(sigf.size):\n", " a=newa\n", " b=newb\n", " c=newc\n", " model.append(a*ins[k]+b*ins[k]**2+c*ins[k]**3)\n", " err.append((desired[k]-model[k])**2)\n", " newa = a - mu*(-2*desired[k]*ins[k] + 2*a*(ins[k])**2 + 2*b*ins[k]**3 + 2*c*ins[k]**4)\n", " newb = b - mu*(-2*desired[k]*ins[k]**2 + 2*b*(ins[k])**4 + 2*a*ins[k]**3 + 2*c*ins[k]**5)\n", " newc = c - mu*(-2*desired[k]*ins[k]**3 + 2*c*(ins[k])**6 + 2*a*ins[k]**4 + 2*b*ins[k]**5) \n", "\n", "plt.plot(t,err)\n", "plt.title('Error over Iterations')\n", "plt.xlabel('Iteration')\n", "plt.ylabel('Error')\n", "plt.show()\n", "\n", "print('a=',a,' b=',b,' c=',c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "\n", "[1] Moon, Todd K., and Wynn C. Stirling. Mathematical Methods and Algorithms for Signal Processing. Prentice Hall, 2000.\n", "\n", "\n", "[2] R. Beard, T. McLain, C. Peterson. Introduction to Feedback Control: Using Design Studies. 2020.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Homework Problem:\n", "Author: Spencer Jensen \n", " \n", "Gradient descent can be used for control of systems. For any system, a quadratic cost function on states and inputs can be respresented as \n", "\n", "\\begin{equation}\n", "J = (x-x_{desired})^{T}Q(x-x_{desired})+u^{T}Ru\n", "\\end{equation}\n", "\n", "where $J$ is the scalar cost, $x$ is a nx1 vector of weights, $u$ is a mx1 vector of inputs and $Q$ and $R$ are nxn and mxm matrices of the weights on states and inputs respectively. Control of this system can be stated as a gradient descent problem where\n", "\n", "\\begin{equation}\n", "u_{k+1}=u_{k}-\\alpha\\frac{\\partial J}{\\partial u}(u_{k})\n", "\\end{equation}\n", "\n", "Here $u_{k+1}$ represents the input at the next timestep i.e. you will use a single step of gradient descent to find the next u to apply. One can estimate the gradient of $J$ numerically by\n", "\n", "\\begin{equation}\n", "\\frac{\\partial J}{\\partial u}(u_{k}) = \\frac{J(u_{k}+h)-J(u_{k})}{h}\n", "\\end{equation}\n", "\n", "In this problem, you will simulate the control of the mass-spring-damper system shown below. \n", "\n", "<img src=\"mass_spring_damper.jpg\" style=\"width: 200px;\">\n", "\n", "Given an initial $x_{o}$, $x_{desired}$, $h$, $Q$, $R$, $\\alpha$ and $u_{o}$ and a function $x_{k+1} = f(x_{k},u_{k})$ written in \"mass_spring_damper.py\", use gradient descent to find the inputs and states for 50 seconds (dynamics function returns the next state at .01 seconds). Show graphs for position, velocity and input force.\n", "\n", "\\begin{equation}\n", "\\begin{aligned}\n", "u_{o} = 0 \\qquad\n", "x_{o} = \\begin{pmatrix} 0 \\\\ 0 \\end{pmatrix} \\qquad\n", "x_{desired} = \\begin{pmatrix} 5 \\\\ 0 \\end{pmatrix} \\qquad\n", "h = .01 \\qquad\n", "Q = \\begin{pmatrix} 2000 & 0 \\\\ 0 & 100 \\end{pmatrix} \\qquad \n", "R = \\begin{pmatrix} .00001 \\end{pmatrix} \\qquad\n", "\\alpha = 5\n", "\\end{aligned}\n", "\\end{equation}\n", "\n", "Hints: You will probably want something like:\n", "\n", " from mass_spring_damper import Mass_spring_damper\n", " sys = Mass_spring_damper()\n", " newx = sys.get_next_xk(x,u)\n", "\n", " def J(x,x_des,u):\n", " Q = np.array([[2000,0],[0,100]])\n", " R = .00001\n", " cost = (x-x_des).T@Q@(x-x_des)+u*R*u\n", " return cost\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 2 }