{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear regression\n", "\n", "The goal of this exercise is to implement the least mean squares algorithm (LMS) for linear regression seen in the course. \n", "\n", "We start by importing numpy and matplotlib." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Least mean squares\n", "\n", "To generate the data for the exercise, we will use the `scikit-learn` library . It provides a huge selection of already implemented machine learning algorithms for classification, regression or clustering.\n", "\n", "If you use Colab, `scikit-learn` should already be installed. Otherwise, install it with either `conda` or `pip` (you may need to restart this notebook afterwards):\n", "\n", "```\n", "conda install scikit-learn\n", "# or:\n", "pip install scikit-learn\n", "```\n", "\n", "We will use the method `sklearn.datasets.make_regression` to generate the data. The documentation of this method is available at .\n", "\n", "The following cell imports the method:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import make_regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now generate the data. We start with the simplest case where the inputs have only one dimension. We will generate 100 samples $(x_i, t_i)$ linked by a linear relationship and some noise.\n", "\n", "The following code generates the data:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "N = 100\n", "X, t = make_regression(n_samples=N, n_features=1, noise=15.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`n_samples` is the number of samples generates, `n_features` is the number of input variables and `noise` quantifies how the points deviate from the linear relationship. \n", "\n", "**Q:** Print the shape of the arrays `X` and `t` to better understand what is generated. Visualize the dataset using matplotlib (`plt.scatter`). Vary the value of the `noise` argument in the previous cell and visualize the data again. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(100, 1)\n", "(100,)\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "print(X.shape)\n", "print(t.shape)\n", "\n", "plt.figure(figsize=(10, 5))\n", "plt.scatter(X, t)\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"t\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now is the time to implement the LMS algorithm with numpy.\n", "\n", "Remember the LMS algorithm from the course:\n", "\n", "* $w=0 \\quad;\\quad b=0$\n", "\n", "* **for** M epochs:\n", "\n", " * $dw=0 \\quad;\\quad db=0$\n", "\n", " * **for** each sample $(x_i, t_i)$:\n", "\n", " * $y_i = w \\, x_i + b$\n", "\n", " * $dw = dw + (t_i - y_i) \\, x_i$\n", "\n", " * $db = db + (t_i - y_i)$\n", "\n", " * $\\Delta w = \\eta \\, \\frac{1}{N} dw$\n", "\n", " * $\\Delta b = \\eta \\, \\frac{1}{N} db$\n", " \n", "Our linear model $y = w \\, x + b$ predicts outputs for an input $x$. The error $t-y$ between the prediction and the data is used to adapt the weight $w$ and the bias $b$ at the end of each epoch.\n", "\n", "**Q:** Implement the LMS algorithm and apply it to the generated data. The Python code that you will write is almost a line-by-line translation of the pseudo-code above. You will use a learning rate `eta = 0.1` at first, but you will vary this value later. Start by running a single epoch, as it will be easier to debug it, and then increase the number of epochs to 100. Print the value of the weight and bias at the end." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[35.129774] [0.43380744]\n" ] } ], "source": [ "w = 0\n", "b = 0\n", "\n", "eta = 0.1\n", "\n", "for epoch in range(100):\n", " dw = 0\n", " db = 0.0\n", " \n", " for i in range(N):\n", " # Prediction\n", " y = w * X[i] + b\n", " \n", " # LMS\n", " dw += (t[i] - y) * X[i]\n", " db += (t[i] - y)\n", " \n", " # Parameter updates\n", " w += eta * dw / N\n", " b += eta * db / N\n", " \n", "print(w, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Q:** Visualize the quality of the fit by superposing the learned model to the data with matplotlib. \n", "\n", "*Tip*: you can get the extreme values of the xaxis with `X.min()` and `X.max()`. To visualize the model, you just need to plot a line between the points `(X.min(), w*X.min()+b)` and `(X.max(), w*X.max()+b)`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(10, 5))\n", "\n", "plt.scatter(X, t)\n", "\n", "x_axis = [X.min(), X.max()]\n", "plt.plot(x_axis, w*x_axis + b)\n", "\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another option is to predict a value for all inputs and plot this vector $y$ against the desired values $t$.\n", "\n", "**Q:** Make a scatter plot where $t$ is the x-axis and $y = w\\, x + b$ is the y-axis. How should the points be arranged in the ideal case? Also plot what this ideal relationship should be." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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BQcHq0+fPi2O8fj/VzxaJ0OrFi5caEhq92vHjh1NHnPo0CEjICDA+Oc//9nh8//hD38wIiIiXDV8v9KVc2Hzz3/+05BklJSUGIZhGHfddZcxffr0FscFBQUZb731lkt/D3/QlXNx5MgRY8iQIcYdd9zR4fPzvnC+I0eOGJKMzZs3N7n9t7/9rXHuued6aFTdz7333mskJCQYhw4dave4goICIygoyHj33XfdNLLu68SJE0ZMTIzx9NNPG5s2bTIkGQUFBU2OufPOO40ZM2Z4aITdw/Tp040rr7yy3WN4X7iOmk3/s+e98Le//c0IDg5u8VxTp041fvazn7l0vB2hUuWF5s2bp5tuuqndYxITE5t8v3z5ckVFRemqq67q8PnHjRuniooKHT16tMWnAWiqK+fCxtYtKDs7W1FRUTKbzdq2bVuTY44dO6ba2lrOgx06ey4KCgqUlpam8ePH66WXXurw+XlfOF90dLQCAwNbfHpYXFzMa+wm9913nz788ENt2LBBAwcObPfY2NhYJSQkKCsry02j67569eql888/X1lZWbrmmmskWT+Bj42NbTiG94lrHThwQKtXr9Z7773X7nG8L9zH1hGzvfeC2WxWTU2Njh071qRaVVxcrAkTJrh3wM0QqrxQdHS0oqOj7T7eMAwtX75ct912m4KCgjo8fvfu3QoNDVXv3r0dGGX30Nlz0dju3bslqeEfhvHjx+uxxx5TYWFhw22ffPKJQkJCNGrUKOcM2I915lwcOXJEaWlpGjVqlJYvX66AgI6Xj/K+cL7g4GCNGjVKq1at0rXXXttw+6pVq3T11Vd7cGT+zzAM3XfffXr//fe1bt06JSUldfiY0tJSHTp0qMnFDFyjurpaX331lS699FIlJSXJbDZr1apVuuiiiyRZ1/qsX79eTz75pIdH6r+WL1+u/v3764orrmj3ON4X7mPPe2HUqFEKCgrSqlWrdMMNN0iSCgsLtXfvXj311FMeG7skpv/5g9WrVxuSjP3797e478MPPzReeuklY8+ePUZ2drbx8ssvGxEREcb8+fM9MFL/tXnzZuOPf/yjsXv3biM3N9d45513jLi4OOOqq65qOKaurs4YPny4kZ6ebuzatctYvXq1MXDgQGPevHkeHLn/sU35mzJlinH48GGjsLCw4cuG94X7vP3220ZQUJDx6quvGvv37zcWLFhg9OrVy8jPz/f00PzanDlzjMjISGPdunVN3gOnTp0yDMMwKisrjQceeMDYvHmzkZeXZ6xdu9YYP368MWDAAKOiosLDo/c/DzzwgLFu3TojNzfX2Lp1q3HllVca4eHhDe+D3/3ud0ZkZKTx3nvvGXv27DFuvvlmIzY2lnPhIvX19cagQYOMhx9+uMntvC9cr7Ky0ti9e7exe/duQ1LDtdOBAwcMw7DvvXDPPfcYAwcONFavXm3s2rXLmDJlinHhhRcadXV1nvq1DMMwDEKVH7j55puNCRMmtHrff//7X2PEiBHGOeecY/Ts2dMYPny48cwzzxi1tbVuHqV/27lzpzF27FgjMjLSCA0NNc4991xj4cKFxsmTJ5scd+DAAeOKK64wwsLCjL59+xrz5s0zqqqqPDRq/7R8+fI211zZ8L5wrz//+c9GQkKCERwcbIwcObJJW2+4RlvvgeXLlxuGYRinTp0ypk+fbvTr188ICgoyBg0aZNx+++3GwYMHPTtwP3XjjTcasbGxRlBQkBEXF2dcd911xr59+xrut1gsxsKFCw2z2WyEhIQYl112mbFnzx4Pjti//e9//zMkGd98802T23lfuN7atWtb/bfp9ttvNwzDvvfC6dOnjXnz5hl9+/Y1wsLCjCuvvNIrzpHJMAzDvbUxAAAAAPAf7FMFAAAAAA4gVAEAAACAAwhVAAAAAOAAQhUAAAAAOIBQBQAAAAAOIFQBAAAAgAMIVQAAAADgAEIVAAAAADiAUAUAQDOTJ0/WggULPD0MAICPIFQBAAAAgANMhmEYnh4EAADeYvbs2Xr99deb3JaXl6fExETPDAgA4PUIVQAANFJeXq7LL79cw4cP16OPPipJ6tevnwIDAz08MgCAt+rh6QEAAOBNIiMjFRwcrJ49e8psNnt6OAAAH8CaKgAAAABwAKEKAAAAABxAqAIAoJng4GDV19d7ehgAAB9BqAIAoJnExERt27ZN+fn5KikpkcVi8fSQAABejFAFAEAzDz74oAIDA5Wamqp+/frp4MGDnh4SAMCL0VIdAAAAABxApQoAAAAAHECoAgAAAAAHEKoAAAAAwAGEKgAAAABwAKEKAAAAABxAqAIAAAAABxCqAAAAAMABhCoAAAAAcAChCgAAAAAcQKgCAAAAAAcQqgAAAADAAYQqAAAAAHDA/w/6H7Hf4LXjRwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y = w * X + b\n", "\n", "plt.figure(figsize=(10, 5))\n", "\n", "plt.scatter(t, y)\n", "\n", "x_axis = [t.min(), t.max()]\n", "plt.plot(x_axis, x_axis)\n", "\n", "plt.xlabel(\"t\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** The points $(t, y)$ should be on a line with slope 1 and intercept 0 (i.e. t=y)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A much better method to analyse the result of the learning algorithm is to track the **mean squared error** (mse) after each epoch, i.e. the loss function which we actually want to minimize. The MSE is defined as:\n", "\n", "$$\\text{mse} = \\frac{1}{N} \\, \\sum_{i=1}^N (t_i - y_i)^2$$\n", "\n", "**Q:** Modify your LMS algorithm (either directly or copy it in the next cell) to track the mse after each epoch. After each epoch, append the mse on the training set to a list (initially empty) and plot it at the end. How does the mse evolve? Which value does it get in the end? Why? How many epochs do you actually need?" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mse: [255.93046608]\n" ] }, { "data": { "image/png": "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xhtvlMViOeFxySWXmF0aACCK2M0uAACAYLjkkkv0l7/8JaDN6XSaVA0AIBoxswUAiEhOp1NutzvgkZKSIqnhEr+FCxdqwoQJiouLU48ePfT6668HfH7jxo266KKLFBcXp7S0NN16660qLy8P6PPnP/9ZAwYMkNPpVKdOnXTnnXcGHD906JCuvPJKxcfHq1evXnrrrbf8x4qLizV16lR17NhRcXFx6tWr1wnhEAAQ3ghbAICo9Oijj+qqq67SF198oeuvv17XXXedtm7dKkmqrKzUJZdcopSUFK1bt06vv/66VqxYERCmFi5cqBkzZujWW2/Vxo0b9dZbb+n0008P+I1f//rXmjx5sr788ktdeumlmjp1qo4cOeL//S1btujf//63tm7dqoULFyo9Pb39/gAAAEFnMQzDMLsIAADa0o033qjFixcrNjY2oH3WrFl69NFHZbFYdPvtt2vhwoX+Y+eee67OOussPfvss3rhhRc0a9Ys5efnKyEhQZL0zjvv6PLLL1dBQYEyMzPVuXNn3XTTTfqf//mfZmuwWCx65JFH9N///d+SpIqKCiUmJuqdd97RJZdcokmTJik9PV1//vOfg/SnAAAwG2u2AAAR6cILLwwIU5KUmprqfz1ixIiAYyNGjFBeXp4kaevWrRo8eLA/aEnSeeedJ5/Pp23btslisaigoEBjxoz5zhrOOOMM/+uEhAQlJiaqqKhIkvSLX/xCV111ldavX6/x48friiuu0MiRI1t1rgCA0ETYAgBEpISEhBMu6/s+FotFkmQYhv91c33i4uJa9H0Oh+OEz/p8PknShAkTtHv3bv3rX//SihUrNGbMGM2YMUO/+93vflDNAIDQxZotAEBUWrNmzQnv+/btK0nq37+/8vLyVFFR4T/+ySefyGq1qnfv3kpMTFT37t31/vvvn1INHTt29F/y+PTTT+v5558/pe8DAIQWZrYAABGppqZGhYWFAW12u92/CcXrr7+uYcOG6fzzz9crr7yitWvXatGiRZKkqVOn6rHHHtP06dM1e/ZsHTx4UDNnztS0adOUmZkpSZo9e7Zuv/12ZWRkaMKECSorK9Mnn3yimTNntqi+X/3qVxo6dKgGDBigmpoavf322+rXr18b/gkAAMxG2AIARKRly5apU6dOAW19+vTRV199Jalhp8AlS5bojjvukNvt1iuvvKL+/ftLkuLj4/Xuu+/q7rvv1tlnn634+HhdddVVmj9/vv+7pk+frurqaj311FO6//77lZ6erquvvrrF9cXExOihhx7St99+q7i4OF1wwQVasmRJG5w5ACBUsBshACDqWCwWLV26VFdccYXZpQAAIhhrtgAAAAAgCAhbAAAAABAErNkCAEQdrqAHALQHZrYAAAAAIAgIWwAAAAAQBIQtAAAAAAgCwhYAAAAABAFhCwAAAACCgLAFAAAAAEFA2AIAAACAICBsAQAAAEAQELYAAAAAIAj+f5I43TkJy4H8AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "w = 0\n", "b = 0\n", "\n", "eta = 0.1\n", "\n", "losses = []\n", "for epoch in range(100):\n", " dw = 0\n", " db = 0.0\n", " mse = 0.0\n", " \n", " for i in range(N):\n", " # Prediction\n", " y = w * X[i] + b\n", " \n", " # LMS\n", " dw += (t[i] - y) * X[i]\n", " db += (t[i] - y)\n", " \n", " # mse\n", " mse += (t[i] - y)**2\n", " \n", " # Parameter updates\n", " w += eta*dw/N\n", " b += eta*db/N\n", " losses.append(mse/N)\n", " \n", "print('mse:', mse/N)\n", " \n", "plt.figure(figsize=(10, 5))\n", "plt.plot(losses)\n", "plt.xlabel(\"Epochs\")\n", "plt.ylabel(\"mse\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** The mse decreases exponentially with the epochs. It never reaches 0 because of the noise in the data (try setting the `noise` argument in the data generator to 0 and check that the mse reaches 0). 30 or 40 epochs seem sufficient to solve the problem, nothing happens afterwards. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's now study the influence of the learning rate `eta=0.1` seemed to work, but is it the best value?\n", "\n", "**Q:** Iterate over multiple values of `eta` using a logarithmic scale and plot the final mse after 100 epochs as a function of the learning rate. Conclude.\n", "\n", "*Hint:* the logarithmic scale means that you will try values such as $10^{-5}$, $10^{-4}$, $10^{-3}$, etc. until 1.0. In Python, you can either write explictly 0.0001 or use the notation `1e-4`. For the plot, use `np.log10(eta)` to only display the exponent on the X-axis." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[array([2502.38125727]), array([2498.82326114]), array([2463.56399936]), array([2141.11879663]), array([670.57755267]), array([276.42556726]), array([276.42533428])]\n" ] }, { "data": { "image/png": "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AAAAcAMmWwAAAADgBpQtAAAAAHADyhYAAAAAuAFlCwAAAADcgLLlBb788kslJiYqICBAYWFhuuWWW4yOhMsUHx8vk8lU7/Jf//VfRseCC1RUVOiaa66RyWRSRkaG0XFwmcaNG6cOHTrI399f0dHRSklJUV5entGx0EjZ2dm67777lJCQoICAAHXq1EnPPvusKisrjY6Gy/DCCy8oOTlZgYGBat26tdFx0EhvvvmmEhIS5O/vrz59+uibb74xOlKDULaauX/+859KSUnRPffco2+//Vbr16/XpEmTjI4FF/j973+vw4cPOy/PPPOM0ZHgAjNmzFBMTIzRMeAiQ4YM0ccff6zdu3frn//8p/bt26df/epXRsdCI+3atUu1tbV65513tGPHDs2ZM0dvv/22/vu//9voaLgMlZWVmjBhgh5++GGjo6CRPvroI6Wmpup//ud/tG3bNv3iF7/QmDFjdPDgQaOj/SwO/d6MVVdXKz4+Xs8//7zuu+8+o+PAheLj45WamqrU1FSjo8CF/v3vf2v69On65z//qe7du2vbtm265pprjI4FF/rss880fvx4VVRUyNfX1+g4cIGXX35Zb731lvbv3290FFym+fPnKzU1VcePHzc6Ci5RYmKirr32Wr311lvObVdeeaXGjx+vmTNnGpjs5zHZasb+85//6NChQzKbzerdu7eio6M1ZswY7dixw+hocIGXXnpJbdu21TXXXKMXXniB3ViauSNHjmjKlClauHChAgMDjY4DNzh27JgWLVqk5ORkipYXsdvtatOmjdExgBarsrJSW7du1ciRI+ttHzlypNLS0gxK1XCUrWbszP+yPffcc3rmmWf0xRdfKDQ0VIMGDdKxY8cMTofL8fjjj+vDDz/UqlWr9Nhjj+nVV1/VI488YnQsNJLD4dDkyZP10EMPqW/fvkbHgYv99re/VVBQkNq2bauDBw/qX//6l9GR4CL79u3TG2+8oYceesjoKECLdfToUdXU1CgyMrLe9sjISOXn5xuUquEoWx7oueeeO+/gCOdetmzZotraWknS//zP/+jWW29Vnz59NG/ePJlMJv397383+FngXA19XyXpiSee0KBBg3T11Vfr/vvv19tvv62//OUvKioqMvhZ4GwNfU/feOMNlZSU6OmnnzY6MhrgUv6sStJvfvMbbdu2TcuXL5fFYtFdd90l9tD3LJf6nkpSXl6eRo8erQkTJuj+++83KDkupjHvKZo3k8lU73uHw3HeNk/EZ7Y80NGjR3X06NGfXBMfH68NGzZo6NCh+uabbzRgwADndYmJiRo+fLheeOEFd0fFJWjo++rv73/e9kOHDql9+/ZKT09XYmKiuyLiEjX0Pb399tv1+eef1/tHoaamRhaLRXfccYcWLFjg7qi4BJfzZzU3N1exsbFKS0tTUlKSuyLiEl3qe5qXl6chQ4YoMTFR8+fPl9nM/017msb8OeUzW81TZWWlAgMD9fe//10333yzc/vjjz+ujIwMrVmzxsB0P8/H6AA4X1hYmMLCwn52XZ8+fWS1WrV7925n2aqqqlJ2drbi4uLcHROXqKHv64Vs27ZNkhQdHe3KSLhMDX1PX3/9df3v//6v8/u8vDyNGjVKH330EeXZA13On9Uz/39ZUVHhyki4TJfynh46dEhDhgxx7i1C0fJMl/PnFM2Ln5+f+vTpoxUrVtQrWytWrNBNN91kYLKGoWw1YyEhIXrooYf07LPPKjY2VnFxcXr55ZclSRMmTDA4HRprw4YNSk9P15AhQ2Sz2bR582Y98cQTzvP5oPk5931r1aqVJKlTp05q3769EZHgAps2bdKmTZs0YMAAhYaGav/+/frd736nTp06MdVqpvLy8jR48GB16NBBr7zyigoLC53XRUVFGZgMl+PgwYM6duyYDh48qJqaGuc5Djt37uz8+xiebfr06UpJSVHfvn2VlJSkP//5zzp48GCz+DwlZauZe/nll+Xj46OUlBSVl5crMTFRX3/9tUJDQ42OhkayWq366KOP9Pzzz6uiokJxcXGaMmWKZsyYYXQ0AGcJCAjQJ598omeffVYnTpxQdHS0Ro8erQ8//FBWq9XoeGiE5cuXa+/evdq7d+95/xHCpy6ar9/97nf1dtfu3bu3JGnVqlUaPHiwQalwKSZOnKiioiLnOUh79OihJUuWNIs9ufjMFgAAAAC4ATsiAwAAAIAbULYAAAAAwA0oWwAAAADgBpQtAAAAAHADyhYAAAAAuAFlCwAAAADcgLIFAAAAAG5A2QIAeIXBgwcrNTXV5fc7cOBAvf/++y6/33N98cUX6t27t2pra93+WACApkHZAgDgIr744gvl5+fr9ttvb/BtnnvuOV1zzTWX/Fhjx46VyWRqkmIHAGgalC0AAC7i9ddf1z333COzuWn+ubznnnv0xhtvNMljAQDcj7IFAPA6xcXFuuuuuxQaGqrAwECNGTNGmZmZ9da8++67io2NVWBgoG6++WbNnj1brVu3dl5/9OhRrVy5UuPGjat3O7vdrgceeEAREREKCQnR0KFD9e2330qS5s+fr+eff17ffvutTCaTTCaT5s+fL0maPXu2evbsqaCgIMXGxuqRRx5RWVlZvfseN26cNm3apP3797v+RQEANDnKFgDA60yePFlbtmzRZ599pg0bNsjhcOiGG25QVVWVJGn9+vV66KGH9PjjjysjI0MjRozQCy+8UO8+1q1bp8DAQF155ZXObQ6HQ7/85S+Vn5+vJUuWaOvWrbr22ms1bNgwHTt2TBMnTtSTTz6p7t276/Dhwzp8+LAmTpwoSTKbzXr99de1fft2LViwQF9//bVmzJhR7zHj4uIUERGhb775xs2vEACgKfgYHQAAAFfKzMzUZ599pvXr1ys5OVmStGjRIsXGxurTTz/VhAkT9MYbb2jMmDF66qmnJEldu3ZVWlqavvjiC+f9ZGdnKzIyst4uhKtWrdL333+vgoICWa1WSdIrr7yiTz/9VP/4xz/0wAMPqFWrVvLx8VFUVFS9XGcfvCMhIUF/+MMf9PDDD+vNN9+st65du3bKzs525UsCADAIky0AgFfZuXOnfHx8lJiY6NzWtm1bdevWTTt37pQk7d69W9dff3292537fXl5ufz9/ett27p1q8rKytS2bVu1atXKecnKytK+fft+MteqVas0YsQItWvXTsHBwbrrrrtUVFSkEydO1FsXEBCgkydPXvLzBgB4HiZbAACv4nA4LrrdZDKd9+uL3S4sLEzFxcX1ttXW1io6OlqrV68+7/7P/rzXuQ4cOKAbbrhBDz30kP7whz+oTZs2Wrdune677z7nro1nHDt2TOHh4Re9LwBA80HZAgB4lauuukrV1dXauHGjczfCoqIi7dmzx/n5qyuuuEKbNm2qd7stW7bU+753797Kz89XcXGxQkNDJUnXXnut8vPz5ePjo/j4+As+vp+fn2pqas677+rqav3xj3907pb48ccfn3fbU6dOad++ferdu/elP3EAgMdhN0IAgFfp0qWLbrrpJk2ZMkXr1q3Tt99+qzvvvFPt2rXTTTfdJEmaOnWqlixZotmzZyszM1PvvPOO/v3vf9ebdvXu3Vvh4eFav369c9vw4cOVlJSk8ePHa9myZcrOzlZaWpqeeeYZZ1mLj49XVlaWMjIydPToUVVUVKhTp06qrq7WG2+8of3792vhwoV6++23z8uenp4uq9WqpKQkN79KAICmQNkCAHidefPmqU+fPho7dqySkpLkcDi0ZMkS+fr6SpL69++vt99+W7Nnz1avXr20dOlSPfHEE/U+o2WxWHTvvfdq0aJFzm0mk0lLlizRwIEDde+996pr1666/fbbnQfTkKRbb71Vo0eP1pAhQxQeHq4PPvhA11xzjWbPnq2XXnpJPXr00KJFizRz5szzcn/wwQe64447FBgY6OZXCADQFEyOi+3cDgBACzJlyhTt2rWr3mHXjxw5ou7du2vr1q2Ki4tz6+MXFhbqiiuu0JYtW5SQkODWxwIANA0mWwCAFumVV17Rt99+q7179+qNN97QggULdPfdd9dbExkZqb/85S86ePCg2/NkZWXpzTffpGgBgBdhsgUAaJFuu+02rV69WqWlperYsaOmTp2qhx56yOhYAAAvQtkCAAAAADdgN0IAAAAAcAPKFgAAAAC4AWULAAAAANyAsgUAAAAAbkDZAgAAAAA3oGwBAAAAgBtQtgAAAADADShbAAAAAOAGlC0AAAAAcIP/H+rC66R1i6APAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "losses = []\n", "\n", "etas = [1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1, 1.0]\n", "\n", "for eta in etas:\n", " w = 0\n", " b = 0\n", " \n", " for epoch in range(100):\n", " dw = 0\n", " db = 0.0\n", " mse = 0.0\n", "\n", " for i in range(N):\n", " # Prediction\n", " y = w*X[i] + b\n", " \n", " # LMS\n", " dw += (t[i] - y)*X[i]\n", " db += (t[i] - y)\n", " \n", " # mse\n", " mse += (t[i] - y)**2\n", "\n", " # Parameter updates\n", " w += eta*dw/N\n", " b += eta*db/N\n", " \n", " losses.append(mse/N)\n", " \n", "print(losses)\n", "\n", "plt.figure(figsize=(10, 5))\n", "plt.plot(np.log10(etas), losses)\n", "plt.xlabel(\"log(eta)\")\n", "plt.ylabel(\"mse\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** With small values of the learning rate, LMS does not have time to converge within 100 epochs. A learning rate of 1 is actually possible in this simple problem. Try setting `eta` to 2.0 and observe what happens." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scikit-learn\n", "\n", "The code that you have written is functional, but extremely slow, as you use for loops in Python. For so little data samples, it does not make a difference, but if you had millions of samples, this would start to be a problem.\n", "\n", "The solution is to use optimized implementations of the algorithms, running in C++ or FORTRAN under the hood. We will use here the LMS algorithm provided by `scikit-learn` as you have already installed it and it is very simple to use. Note that one could use tensorflow too, but that would be killing a fly with a sledgehammer.\n", "\n", "`scikit-learn` provides a `LinearRegression` object that implements LMS. The documentation is at: .\n", "\n", "You simply import it with:\n", "\n", "```python\n", "from sklearn.linear_model import LinearRegression\n", "```\n", "\n", "You create the object with:\n", "\n", "```python\n", "reg = LinearRegression()\n", "```\n", "\n", "`reg` is now an object with different methods (`fit()`, `predict()`) that accept any kind of data and performs linear regression. \n", "\n", "To train the model on the data $(X, t)$, simply use:\n", "\n", "```python\n", "reg.fit(X, t)\n", "```\n", "\n", "The parameters of the model are obtained with `reg.coef_` for $w$ and `reg.intercept_` for $b$. \n", "\n", "You can predict outputs for new inputs using:\n", "\n", "```python\n", "y = reg.predict(X)\n", "```\n", "\n", "**Q:** Apply linear regression on the data using `scikit-learn`. Check the model parameters after learning and compare them to what you obtained previously. Print the mse and make a plot comparing the predictions with the data." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[50.61163981] -2.15821943523261\n", "mse: 276.42533428232537\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAAHECAYAAAApuvv+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/av/WaAAAACXBIWXMAAA9hAAAPYQGoP6dpAABvg0lEQVR4nO3deXiU5d33/89kDyEZCCEbZJngClGRfQuIymIVl1p3LVGILWpbq/117w24Uftoez9P76plMVixLnerFVpLFRcIO7IoiBtmskASIAGSEMg2c/3+iBkJ2SaT2fN+HQfH4VxzZXLOxQSvT87z/H5NhmEYAgAAAAB4TIivBwAAAAAAwY7gBQAAAAAeRvACAAAAAA8jeAEAAACAhxG8AAAAAMDDCF4AAAAA4GEELwAAAADwMIIXAAAAAHgYwQsAAAAAPIzgBQAAAAAeFlDBa8OGDZozZ45SU1NlMpn0j3/8o83zhmFo0aJFSk1NVXR0tC677DJ98sknbc5paGjQD37wAyUkJCgmJkbXXnutDh486MV3AQAAAKCvCajgVVdXp0suuUT/8z//0+Hzv/vd7/T73/9e//M//6MdO3YoOTlZM2bMUG1treOcBx98UG+88YZeeeUVbdy4USdPntQ111wjm83mrbcBAAAAoI8xGYZh+HoQrjCZTHrjjTd0/fXXS2qZ7UpNTdWDDz6on/3sZ5JaZreSkpL05JNP6nvf+56qq6s1ePBgvfjii7rlllskSWVlZUpLS9Nbb72lWbNmOfW97Xa7ysrKFBsbK5PJ5JH3BwAAAMD/GYah2tpapaamKiSk83mtMC+OyaOsVqsqKio0c+ZMx7HIyEhNmzZNmzdv1ve+9z3t3LlTTU1Nbc5JTU1Vdna2Nm/e3GnwamhoUENDg+PxoUOHNHz4cM+9GQAAAAABpbS0VEOHDu30+aAJXhUVFZKkpKSkNseTkpJUXFzsOCciIkIDBw5sd07r13dkyZIlWrx4cbvjpaWliouL6+3QAQAAAASompoapaWlKTY2tsvzgiZ4tTp76Z9hGN0uB+zunF/84hd66KGHHI9bL25cXBzBCwAAAEC3mSOgimt0JTk5WZLazVwdOXLEMQuWnJysxsZGHT9+vNNzOhIZGekIWYQtAAAAAD0VNMHLYrEoOTlZ77zzjuNYY2Oj1q9fr0mTJkmSRo8erfDw8DbnlJeXa9++fY5zAAAAAMDdAmqp4cmTJ3XgwAHHY6vVqj179ig+Pl7p6el68MEH9cQTT+jcc8/VueeeqyeeeEL9+vXT7bffLkkym82aN2+eHn74YQ0aNEjx8fH6yU9+oosuukhXXnmlr94WAAAAgCAXUMHrww8/1PTp0x2PW/ddzZ07VytXrtRPf/pTnT59Wvfdd5+OHz+u8ePH6+23326z0e0Pf/iDwsLCdPPNN+v06dO64oortHLlSoWGhnr9/QAAAADoGwK2j5cv1dTUyGw2q7q6mv1eAAAAQB/mbDYImj1eAAAAAOCvCF4AAAAA4GEELwAAAADwMIIXAAAAAHhYQFU1BAAAAHrDZje03XpMR2rrlRgbpXGWeIWGmHw9LPQBBC8AAAD0CWv3lWvxmv0qr653HEsxR2nhnOGanZ3iw5GhL2CpIQAAAILe2n3lWrBqV5vQJUkV1fVasGqX1u4r99HI0FcQvAAAABDUbHZDi9fsV0fNa1uPLV6zXzY77W3hOQQvAAAABLXt1mPtZrrOZEgqr67Xdusx7w0KfQ7BCwAAAEHtSG3nocuV8wBXELwAAAAQ1BJjo9x6HuAKghcAAACC2jhLvFLMUeqsaLxJLdUNx1nivTks9DEELwAAAAS10BCTFs4ZLkntwlfr44VzhtPPCx5F8AIAAEDQm52domfvHKVkc9vlhMnmKD175yj6eMHjaKAMAACAPmF2dopmDE/WdusxHamtV2Jsy/JCZrr8l81uBM3fF8ELAAAAfUZoiEkThw3y9TDghLX7yrV4zf42rQBSzFFaOGd4QM5QstQQAAAAgF9Zu69cC1btatd/raK6XgtW7dLafeU+GpnrCF4AAAAA/IbNbmjxmv0yOniu9djC1Z/IZu/oDP9F8AIAAADgN7Zbj7Wb6TqTIelwTYPe3H3Ie4NyA4IXAAAAAL9gsxvadKDSqXPf/+KIh0fjXhTXAAAAAOBzHRXT6Mrt4zI8PCL3IngBAAAA8KnWYhrO7NoyqaX/2jhLvKeH5VYsNQQAAADgM10V0zhbawevhXOGB1w/L2a8AAAAAPjMK9tLnF5emBzAfbwIXgAAAAC8ym439P7nR7SsoFBbC4859TUPTB+mH884P+BmuloRvAAAAAB4RX2TTW/sPqTlBYX66midJCnUZJLN6H6h4eRzBgds6JIIXgAAAAA87Fhdo17cUqwXtxap8mSjJCk2Mky3j0/XXRMzdNNzW1RRXd/hPq9ALaZxNoIXAAAAAI8oPHpSKzZa9fddB1XfZJckDRkQrbsnZ+qWsWmKjQqX1FIsY8GqXTJJbcJXIBfTOBvBCwAAAIDbGIahD4uPa9mGQr3z6WG1riK8aIhZ83Ms+tZFKQoPbVtcfXZ2ip69c1S7Pl6BXEzjbAQvAAAAAL3WbLPrP58c1rKCQu0pPeE4fsUFicqbmqXxlniZTJ3PWs3OTtGM4cnabj2mI7X1SoxtWV4Y6DNdrQheAAAAAFxW19Cs1z4s1YqNVh08flqSFBEWohtHDdG8KRadkxjr9GuFhpg0cdggTw3VpwheAAAAAHrscE29Vm4u0ktbi1VT3yxJGtgvXHdNzNRdEzI0ODbSxyP0LyHdnxI4MjMzZTKZ2v25//77JUm5ubntnpswYYKPRw0AAAAEjs8qavTwax9pypPv6dkPvlJNfbMsCTF67Ppsbf75FXpoxnmErg4E1YzXjh07ZLPZHI/37dunGTNm6KabbnIcmz17tvLz8x2PIyIivDpGAAAAINAYhqGNByq1dEOhCr6sdBwfmzlQ83OydOWFSUGzF8tTgip4DR48uM3j3/72txo2bJimTZvmOBYZGank5GRvDw0AAAAIOI3Ndq35qEzLCgr1WUWtJCnEJF2VnaL5ORZdmj7QxyMMHEEVvM7U2NioVatW6aGHHmpTPeWDDz5QYmKiBgwYoGnTpunxxx9XYmJil6/V0NCghoYGx+OamhqPjRsAAADwterTTfrrthKt3GzV4ZqW++B+EaG6eUya5k2xKC2+n49HGHiCNnj94x//0IkTJ5Sbm+s4dtVVV+mmm25SRkaGrFarfvOb3+jyyy/Xzp07FRnZ+TrUJUuWaPHixV4YNQAAAOA7pcdO6flNVr22o1R1jS1beBJjI5U7OVN3jMuQuV+4j0cYuEyGYRjdnxZ4Zs2apYiICK1Zs6bTc8rLy5WRkaFXXnlF3/72tzs9r6MZr7S0NFVXVysuLs6t4wYAAAC87aPSE1paUKh/7y2X/et0cH5SrPKmZmnOJSmKDAv17QD9WE1Njcxmc7fZIChnvIqLi7Vu3Tq9/vrrXZ6XkpKijIwMffnll12eFxkZ2eWMGAAAABBo7HZD7352RMs2FGp70THH8ZxzE5SXk6WccxO6bHiMngnK4JWfn6/ExERdffXVXZ5XVVWl0tJSpaSkeGlkAAAAgG/VN9n0910HtaLAqsLKOklSeKhJcy5J1fwpWRqeyoouTwi64GW325Wfn6+5c+cqLOybt3fy5EktWrRIN954o1JSUlRUVKRf/vKXSkhI0A033ODDEQMAAACeV3myQS9uKdaLW4t1rK5RkhQbFaY7xmcod1Kmks1RPh5hcAu64LVu3TqVlJTonnvuaXM8NDRUe/fu1V/+8hedOHFCKSkpmj59ul599VXFxsb6aLQAAACAZ3119KSWF1j1+q6Dami2S5KGDIjWvCkW3Tw2Tf0jgy4S+KWgLa7hSc5uoAMAAAB8wTAMbbMe0/KCQq379Ijj+CVDzcqbmqXZI5IVFhriwxEGjz5dXAMAAADoi5ptdv17X4WWFRTq44PVkiSTSbrigiTdOzVLYzMHUjDDRwheAAAAQIA72dCsV3eU6vmNVh06cVqSFBkWohtHD9W8KRYNG9zfxyMEwQsAAAAIUBXV9crfbNVft5Wotr5ZkhQfE6HvTszQXRMyNKg/LZH8BcELAAAACDD7y2q0vKBQqz8qU/PXHY+zEmI0PydL3x41RFHhNDz2NwQvAAAAIAAYhqH1XxzV8gKrNh6odBwfb4lXXk6WLr8gUSEh7N/yVwQvAAAAwI81NNu0ek+ZlhdY9fnhWklSaIhJV2UnKy8nS5ekDfDtAOEUghcAAADgh06catRL20q0cnORjtY2SJJiIkJ1y9h03T05U2nx/Xw8QvQEwQsAAADwIyVVp/T8Jqte3VGq0002SVJyXJRyJ2fqtnHpMkeH+3iEcAXBCwAAAPADu0qOa3lBodbuq9DX9TJ0YUqc8nIsuubiVEWE0fA4kBG8AAAAAB+x2Q29s/+wlhcU6sPi447j084brLycLE0+ZxANj4MEwQsAAADwstONNv1t10GtKChUUdUpSVJ4qEnXjRyi+TkWXZAc5+MRwt0IXgAAAICXHK1t0ItbivTi1mIdP9UkSTJHh+uO8emaOylTSXFRPh4hPIXgBQAAAHjYgSO1Wl5g1eu7D6mx2S5JSouP1rzJFt00Jk0xkdyWBzv+hgEAAAAPMAxDWwqrtLzAqvc+O+I4PjJtgO6dmqVZI5IVSsPjPoPgBQAAALhRk82ut/aWa1lBofYdqpEkmUzSzOFJysvJ0uiMgS4VzLDZDW23HtOR2nolxkZpnCWe4BZACF4AAACAG9TWN+nVHaV6fqNVZdX1kqSo8BB9Z/RQzZuSJUtCjMuvvXZfuRav2a/yr19XklLMUVo4Z7hmZ6f0euzwPIIXAAAAApqvZ4LKTpzWys1FenlbiWobmiVJCf0j9N2JmbpzQobiYyJ69fpr95VrwapdMs46XlFdrwWrdunZO0cRvgIAwQsAAAABy5czQfsOVWt5QaH++XG5mr/ueHxOYn/l5Vh03cghigoP7fX3sNkNLV6zv13okiRDkknS4jX7NWM4+8X8HcELAAAAAckXM0F2u6H1XxzVsoJCbf6qynF8YtYg5U216LLzEhXixgC03XqsTag8myGpvLpe263HNHHYILd9X7gfwQsAAAABx9szQfVNNr2555CWF1j15ZGTkqTQEJOuuThFeTlZyh5i7vX36MiR2s5DlyvnwXcIXgAAAAg43poJOl7XqFVbi/XClmJVnmyQJPWPDNNt49KUO9miIQOiXX5tZyTGOtdQ2dnz4DsELwAAAAQcT88EFVfVacVGq177sFT1TS0Nj1PMUbpnskW3jEtTXFS4S6/bU+Ms8UoxR6miur7D2T2TpGRzS0ER+DeCFwAAAAKOp2aCdhYf07INVv1nf4WMr5POiNQ43Ts1S9+6KEXhoSE9HWqvhIaYtHDOcC1YtUsmqU34al1AuXDO8D5TWMPXFSx7g+AFAACAgOPOmSCb3dDbn1RoWUGhdpWccByffv5g5eVkaeKwQV02PPZ0GJidnaJn7xzVrnpjch/r4xXovcxMhmF09FlFF2pqamQ2m1VdXa24uDhfDwcAAKBPaq1qKHU8E9RdVcNTjc363w8PasVGq0qOnZIkRYSG6IZLh2h+jkXnJsU6NQZvhYFAnu3prc4qWDr7d+1JzmYDgpcLCF4AAADu50qwcCX4HKmp1wtbirRqa4mqTzdJkgb0C9ddEzJ018QMp5cn+nMYCCY2u6EpT77XaTGV1tnNjT+73CdB1NlswFJDAAAA+JyrM0ezs1M0Y3iyU4Hti8O1WrahUG/uKVOjraVgRsagfpo/xaIbRw9Vvwjnb41pbOw9wdLLjOAFAAAAn+ptI+TQEFOnN9yGYWjzV1VauqFQ67846jg+OmOg8nKyNGN4kkvBKFjCQCAIll5mBC8AAAD4jKdmjppsdv3z4zIt22DV/vIaSZLJJM0ekaz5OVkanTGwV+MOljAQCIKllxnBCwAAAD7j7pmjmvomvbytRCs3FzleNzo8VDePGap7pliUMSjGLeMOljAQCIKllxnBCwAAAD7jrpmjg8dPKX9TkV7dUaqTDc2SpIT+kbp7cqbuGJ+uAf0iej3WMwVLGAgEwdLLjOAFAAAAn+ntzNHHB09oWYFVb+0tl83eckt+bmJ/5U3N0nUjUxUZFuq2sZ4pWMJAoAiGXmZBFbwWLVqkxYsXtzmWlJSkiooKSS2bKxcvXqylS5fq+PHjGj9+vP70pz9pxIgRvhguAABAn+fKzJHdbuj9z49o6YZCbbMecxyffM4g5eVkadp5g7tseOwuwRAGAklPKlj6o6AKXpI0YsQIrVu3zvE4NPSb33L87ne/0+9//3utXLlS5513nh577DHNmDFDn3/+uWJju2+QBwAAAPfqycxRfZNNb+w+pOUFhfrqaJ0kKSzEpDmXpGp+jkUjUs3eHn7Ah4FA01UFS38XdMErLCxMycnJ7Y4bhqH//u//1q9+9St9+9vfliS98MILSkpK0l//+ld973vf8/ZQAQAAoO5njsZZBun/rvtSL24tUuXJRklSbGSYbh+frtzJmUoxR/tq6JICOwzAe4IueH355ZdKTU1VZGSkxo8fryeeeEJZWVmyWq2qqKjQzJkzHedGRkZq2rRp2rx5c5fBq6GhQQ0NDY7HNTU1Hn0PAADAM2x2g5kJP9XRzNHg2AjlbyrSg6/uUX1TS8PjIQOidffkTN0yNk2xUeE+HjXgvKAKXuPHj9df/vIXnXfeeTp8+LAee+wxTZo0SZ988oljn1dSUlKbr0lKSlJxcXGXr7tkyZJ2e8cAAEBgWbuvvN2MSkqA7sUJ1gAZGmLShKx4fVh8XEs3FGrdp4dlfL328KIhZuVNzdK3spMVFhri24ECLjAZhtHRPsagUFdXp2HDhumnP/2pJkyYoMmTJ6usrEwpKd/845qXl6fS0lKtXbu209fpaMYrLS1N1dXViouL8+h7AAAAvbd2X7kWrNrVrnhDa1R59s5RARO+gilAnqnZZtd/PjmspQWF+qj0hOP4FRckKm9qlsZb4r1SMCOQBGsADzQ1NTUym83dZoOgmvE6W0xMjC666CJ9+eWXuv766yVJFRUVbYLXkSNH2s2CnS0yMlKRkZGeHCoAAPAQm93Q4jX7O6yYZ6glfC1es18zhif7/U1rZwGyorpeC1btCqgA2aquoVmvfViqFRutOnj8tCQpIixEN44aonlTLDonMXALoHkyGAVrAA9mQR28Ghoa9OmnnyonJ0cWi0XJycl65513dOmll0qSGhsbtX79ej355JM+HikAAPCU7dZjbW5Oz2ZIKq+u13brMUeBBH+cSQimAClJh2vqtXJzkV7aWqya+paGxwP7heuuiZn67sQMJfQP7F96ezIYBWMA7wuCKnj95Cc/0Zw5c5Senq4jR47oscceU01NjebOnSuTyaQHH3xQTzzxhM4991yde+65euKJJ9SvXz/dfvvtvh46AADwkCO1nYeujs7z15kEVwKkP/qsokbLNli1+qNDarK1RAdLQozmTbHoxlFDFR3hmYbH3uTJYBRsAbwvCargdfDgQd12222qrKzU4MGDNWHCBG3dulUZGRmSpJ/+9Kc6ffq07rvvPkcD5bfffpseXgAABLHE2Cinz/PnmYSeBkh/YhiGNh6o1NINhSr4stJxfGzmQOXlZOnKC5MUEiQhwdPBKFgCeF8UVMHrlVde6fJ5k8mkRYsWadGiRd4ZEAAA8LlxlnilmKNUUV3f4c2wSS39okZnDNS0//O+384k9CRA+ovGZrvWfFSmZQWF+qyiVpIUYpKuyk7R/ByLLk0f6OMRup+ng1EgB/C+LqiCFwAAwNlCQ0xaOGe4FqzaJZPUJli1xqeFc4ZrZ/Fxv55JcDZAjrPEe3to7VSfbtJft5Vo5WarDte0VIbuFxGqm8ekad4Ui9Li+/l4hJ7j6WAUiAEcLQheAAAg6M3OTtGzd45qt3cr+Yy9W2/uOeTUa/lqJsHZAOnLfT2lx07p+U1WvbqjVKcabZKkxNhI5U7O1B3jMmTuF/wNjz0djAIpgKMtghcAAOgTZmenaMbw5E6rFQbCTIIzAdIX9pSe0LKCQv17b7nsX6eB85NilTc1S9dekqqIsL7T8NjTwSgQAjg6FtQNlD3F2SZpAAAgcNjshqY8+V63N8wbf3a5z29q/aHcvd1u6N3PjmjZhkJtLzrmOJ5zboLycrKUc25Cn2143FqkReo4GLmjSIu/Vt/si5zNBgQvFxC8AAAITt64YQ509U02/X3XQa0osKqwsk6SFB5q0pxLUjV/SpaGp3JvJHknGPlDAAfBy6MIXgAABC9mEjpWebJBL24p1otbi3WsrlGSFBsVpjvGZyh3UqaSzRRzOBvBqG8geHkQwQsAgODmbzfMvhzPV0dPanmBVX/fdVCNzXZJ0tCB0bpnskU3j01T/0hKBqBvczYb8JMCAABwltAQk980n/XFDJxhGNpmPablBYVa9+kRx/FLhpqVNzVLs0ckKyy07xTMANyB4AUAAOCnWvecnb08qaK6XgtW7XL7nrNmm13/3lehZQWF+vhgtSTJZJKuvDBJeTlZGps5sFcFM/xtJhHwJoIXAACAH7LZDS1es7/DCouGWgp+LF6zXzOGJ/c6vJxsaNarO0r1/EarDp04LUmKDAvRd0YP1bwpFmUN7t+r15c6nrmLj4nQY9dl61sX9929c+g7CF4AAAB+aLv1WJuQcjZDUnl1vbZbj7m8LLK8+rRWbi7SX7eVqLa+WZI0KCZCd03M0F0TMjSof6RLr3u2zmbujtU16r6/7tL3Dlr0i28Nd8v3AvwVwQsAAMAPHantPHS5ct6Z9pfVaHlBoVZ/VKbmrzseZw2O0fwpWfr2qCGKCg/t8Wt2pquZu1Z/3mDVJUMH6FsXp7rt+wYqlmMGL4IXAACAH0qMda48u7PnGYah9V8c1fICqzYeqHQcH2+JV15Oli6/IFEhHrjB727mrtWv39ynWdkpfTpk0MoguBG8AAAA/NA4S7xSzFGqqK7vcLbIJCnZ3DIj0pWGZptW7ynT8gKrPj9cK6mlauO3LkpRXo5FFw8d4Paxn8nZGbljdU29Wjbpj3oye+XtQirwPoIXAACAHwoNMWnhnOFasGqXTFKbG/LWW/eFc4Z3eiN/4lSjXtpWopWbi3S0tkGSFBMRqlvHpevuyZkaOrCfR8ffytkZOcm1ZZP+qiezV94spALfIXgBAAC4kTv36MzOTtGzd45qdwOf3MXys5KqU3p+k1Wv7ijV6SZby/lxUcqdnKnbxqXLHB3u2htz0ThLvOJjInSsrrHbc3sS0vxZT2evvFFIBb5H8AIAAHATT+zRmZ2dohnDk7sNc7tKjmt5QaHW7qvQ1/UydGFKnPJyLLrm4lRFhPmm4XFoiEmPXZet+/66q8vzUpxYNhkIXJm98mQhFfgPghcAAIAbeHKPTmiIqcOZDpvd0Dv7D2t5QaE+LD7uOD7tvMHKy8nS5HMG9arhsbt86+IUfe+gRX/eYO3weZO6XjYZSFyZvXJ3IRX4J4IXAABAL3l7j87pRpv+tuugVhQUqqjqlCQpPNSk60cO0fycLJ2fHNvr7+Fuv/jWcF0ydIB+/eY+Hatrchz3ZdU+T5Rud2X2yl2FVODfCF4AAAC95K09OkdrG/SXLUVatbVYx0+1hBdzdLjunJCuuRMzlRjn3zMi37o4VbOyU/yiT5WnSre7MnvV20IqCAwELwAAABe1zpj8e1+5U+e7ukfny8O1Wl5g1Rt7Dqmx2S5JSouP1rzJFt00Jk0xkYFzS9fZsklv8uSyUFdnr1wppILAEjg/pQAAAE7wxPKxjnQ0Y9KdnuzRMQxDWwqrtLzAqvc+O+I4PjJtgO6dmqVZIygt7gpPLwvtzeyVs4VUEJgIXgAAIGh4avlYR9+noxmTzvRkj06Tza639pZrWUGh9h2qafl6kzRzeJLycrI0OmOgXxTMCFTeWBbam9krf5gRhGcQvAAAQFDw5PKxM3U1Y9IRZ/fo1NY36dUdpXp+o1VlX9+sR4WH6KbRabpnikWWhJjeDRySpIoa75RuZ/YKZyN4AQCAgOfNqoLdzZicrbtZjrITp5W/yapXtpeqtqFZkpTQP0JzJ2bqjgkZio+J6NV48Y21+8r16D8/cepcd5RuZ/YKZyJ4AQCAgOetqoKS8zMh352YoauyUzqd5dh3qFrLCgr1r4/L1fx1x+NzEvsrL8ei60YOUVR4aI/G5ereNm/tifM1Z5eHUrodnkLwAgAAAc+V3kmucnYm5KrslHYhz243tP6Lo1pWUKjNX1U5jk/MGqS8qRZddl6iQlwIPa7ubfPWnjhfc3Z5KKXb4UkELwAA/FhfmY3oLVd6J7lqdMZAxceEt2kCfKaOZkzqm2x6c88hLS+w6ssjJyW1LEO75uIU5eVkKXuI2eXxuLq3zVt74vyBs8tD42Mi9PgN2UHzvuFfCF4AgD4j0EJMX5mNcAdXeyf1VOvfSVehS/pmxuR4XaNWbS3WC1uKVXmyQZLUPzJMt41LU+5ki4YMiO7VeFzd2+bNPXH+wNmZzl9ffSE/W/AYghcAoE8ItBDTl2Yj3KE3vZOc5cweodZCGhckx+k3/9in/91ZqvqmlobHKeYo3TPZolvGpSkuKtzlcZzJ1b1t3twT5w+cnelMNvcuCANdCfH1AAAA8LTWG+azbzRbQ8zafeU+GlnHupuNkFpmI2x2Zwua9w2tvZOSzW1vspPNUb0Oqs7sERoUE6E/3DJSb+w+pOlPf6AXtxarvsmuEalx+sPNl+h337lYiXGR+uRQjdv+7lzd2+bNPXH+oHVGtLPYbVJLMKagBjyJGS8AQFALxCVVfW02wp081TvJmT1CVXWNunXpVsfj6ecPVt7ULFWfatQj//zUI7Otru5t8+aeOH/gjRlRoDtBNeO1ZMkSjR07VrGxsUpMTNT111+vzz//vM05ubm5MplMbf5MmDDBRyMGAHhaT0KMvwi22Qib3dCWr6r05p5D2vJVlcdn6lp7J103cogmDhvklptpZ691aIhJt4xJ0zs/nqr8u8ep5nST7ntpt8dmW12dyemLM0CenBEFnBFUM17r16/X/fffr7Fjx6q5uVm/+tWvNHPmTO3fv18xMd90e589e7by8/MdjyMiaEwIAMEqEENMMM1GBNreus44e63/57ZLddVFLe/LG7Otrs7k9NUZIE/NiALOCKrgtXbt2jaP8/PzlZiYqJ07d2rq1KmO45GRkUpOTvb28AAAPhCIIcZbFfo8zV0FQvyhGuU4S7wS+keo8mRjp+ekmKM0c8Q39xfeWjLaOpNzdsBN7ibguvp1ga51RhTwtqAKXmerrq6WJMXHt/0f0wcffKDExEQNGDBA06ZN0+OPP67ExMROX6ehoUENDQ2OxzU1NZ4ZMADA7QIxxATDbIS7Znt8PWNmGIY2f1WlpRsKOw1dnf2deHO21dWZHGaAAO8Jqj1eZzIMQw899JCmTJmi7Oxsx/GrrrpKL730kt577z09/fTT2rFjhy6//PI2wepsS5YskdlsdvxJS0vzxlsAALhBa4iR1G4/iz+HmEDfj+KOvXW+rEbZZLPrjd0HdfX/26g7lm/T+i+OKsQkXZo+QINi2m5R6OzvxNuzra7ubfPEnjgA7ZkMwwjKWrT333+//vWvf2njxo0aOnRop+eVl5crIyNDr7zyir797W93eE5HM15paWmqrq5WXFyc28cOAHA/X8+cuMofltm54s09h/SjV/Z0e97/vXWkrhs5pN1xm93QlCff6zS8tc5UbvzZ5W69HjX1TXp5W4lWbi5yfO/o8FDdPGao7pliUcagGKf/TlrfQ3ezre5+DwC8q6amRmazudtsEJRLDX/wgx9o9erV2rBhQ5ehS5JSUlKUkZGhL7/8stNzIiMjFRkZ6e5hAgC8yJ+WVPUkTAXqfpTezvZ4u6T+weOnlL+pSK9sL1Fdo02SlNA/UndPztQd49M1oN83s1zO/p0Ew5JRAO4TVMHLMAz94Ac/0BtvvKEPPvhAFoul26+pqqpSaWmpUlL897edAAD38IcQE6gzbz3V27113tof9fHBE1pWYNVbe8sdZe7PS+qv+TlZum5kqiLDQnv1+n21gAWA9oIqeN1///3661//qjfffFOxsbGqqKiQJJnNZkVHR+vkyZNatGiRbrzxRqWkpKioqEi//OUvlZCQoBtuuMHHowcABDt3VfkLBL2d7fHk/ii73dD7nx/R0g2F2nbGHrPJ5wxSXk6Wpp03WCaT+2ah/Gm2FYDvBNUer87+kczPz1dubq5Onz6t66+/Xrt379aJEyeUkpKi6dOn69FHH+1RwQxn13ECANDKV3uWfM3VGT5P7I+qb7Lpjd2HtLygUF8drZMkhYWYNOeSVM3PsWhEqrknbw0AJPXRPV7dZcjo6Gj95z//8dJoAAD4hrf3LPkLV2d73Lk/6lhdo17cUqy/bClSVV1LSfjYyDDdPj5duZMzlWKOdu3NAUAPBFXwAgDAX3mzp5O/cXVvXW/3RxUePakVG636286Dami2S5KGDIjW3ZMzdcvYNMVGhfd4TP4uUKtgAn0BwQsAAC/wdk+nYNHTGTPDMPRh8XEt3VCodZ8eVutimIuGmJU3NUvfyk5WWGhwtjHtK4VbgEBF8AIAwAt6W+WvL3NmxqzZZtd/PjmspQWF+qj0hOP4FRckKm9qlsZb4t1aMMPf9KXCLUCgIngBAOAF9HTyjLqGZr32YalWbLTq4PHTkqSIsBDdOGqI5k3J0jmJ/X08Qs+z2Q0tXrO/w0BvqOXztXjNfs0YnsznC/AhghcAAF4SDD2d/GUP0eGaeq3cXKSXtharpr5ZkjSwX7jumpip707MUEL/SK+PyVf6auEWINAQvAAA8KJA7unkD3uIPquo0bINVq3+6JCabC1zPJaEGM2bYtGNo4YqOqJ3DY/9ibMhty8XbgECCcELAAAvO3PPkr/MIHXHl3uIDMPQxgOVWrqhUAVfVjqOj8uM1/wci668MEkhfnjNeqMnIZfCLUBgIHgBAOAja/eVa9HqT1RR0+A4lhwXqUXXjvCrZYe+2kPU2GzX6o/KtLygUJ9V1EqSQkzSVRelKC8nSyPTBrjte/mTnoZcCrcAgYHgBQCAD6zdV67vr9rV7nhFTYO+v2qXnvOjKnTe3kNUfapJf91eopWbrTr8dSjtFxGqm8ekad4Ui9Li+/X6e/grV0IuhVuAwEDwAgDAy2x2Qz9/fW+X5/z89b1+U4XOW3uISo+d0vObrHp1R6lONdokSYmxkcqdnKk7xmXI3C/4Gh6fzdWQGwyFW4BgR/ACAMDLtn5VpROnmro858SpJm39qkqTz03w0qg65+k9RHtKT2hZQaH+vbdc9q+nay5IjtX8nCxde0mqIsKCs+FxR3oTcgO5cAvQFxC8AADwsi2Fld2f9PV5/hC8PLGHyG439O5nR7RsQ6G2Fx1zHM85N0F5OVnKOTchqBsed6a3IdeZZtMAfIPgBQCA1zkbKPwjeLhzD1F9k01/23lQz2+0qrCyTpIUHmrSnEtSNS4zXtERoQoPDZHdkEL94+17FYUygOBF8AIAwMsmDhuk/3n/gFPn+Yve7iGqPNmgF7cU68WtxTpW1yhJio0K0x3jM5QxKFr/790Den3XIcf53u4P5i8olAEEL5NhGB39QgVdqKmpkdlsVnV1teLi4nw9HABAgLHZDY1+7J0u93kN7BeuD389o9c32O7uE9bT1/vq6EktL7Dq77sOqrHZLkkaOjBa90y26Oaxadr45dEOS6e3vqIn+4P5M39oVg3AOc5mA4KXCwheAIDe6qycfCt3lJP31c27YRjaZj2m5QWFWvfpEcfxS4aade/UYZo1IklhoSGy2Q1NefK9Tqv4tS6r2/izy/vkDE+gNNcG+jqClwcRvAAA7tDSQHm/KmrcH4w6a8LryZmkZptdb+2r0PKCQn18sLrl+5mkKy9MUl5OlsZmDmxTMGPLV1W6bdnWbl/35bwJfrXsEgDO5Gw2YI8XAAA+0tvy32fOiCT0j5QMqbKuQQn9I7Vo9Sc9asLbGycbmvXK9hLlbyrSoROnJUmRYSH6zuihmjfFoqzB/Tv8Om/1BwMAf0DwAgDAh1wt/93RMkJnddaEt6fKq09r5aYi/XV7iWrrmyVJg2Ii9N2JmbpzQroG9Y/s8us93R8MAPwJwQsAgADT2TLCnnJ1Jml/WY2WFxRq9Udlav6643HW4Bjl5WTphkuHKCo81KnXoXQ6gL6E4AUAQACx2Q0tXrO/16FL6tlMkmEYWv/FUS0vsGrjgW8aQI+3xOveqVmafn6iQnq4bJHS6QD6EoIXAAABZLv1mEvLC8/Uk5mkhmab3txTphUFVn1+uFZSS2D61kUpysux6OKhA3o1lt72BwOAQEHwAgAggPS20ISzM0knTjXqpW0lWrm5SEdrGyRJMRGhunVcuu6enKmhA/v1ahxn6m2REQAIBAQvAAACSG8LTXQ3k1RSdUorNhbqtQ8P6nSTreVr4qJ09+RM3TouXebo8F59/864WmQEAAIFwQsAgADSXUGKM7UuKXzqO5eosq6hy5mkXSXHtbygUGv3Vejrehm6MCVO90616OqLUhURFtLrsdMQuPe4hkDgIngBABBAuipIcaYzlxROPjehw3NsdkPv7D+s5QWF+rD4uOP4tPMG696pWZo0bFCbhse90VH5e3c1i+4ruIZAYDMZhuGOwkh9irPdqQEA8JTu+nh1dUN+utGmv+0s1YqNVhVVnZIkhYeadP3IIZqfk6Xzk2PdPtaOyt+3Rrpn7xzlteAQqDNG/nQNAbTlbDYgeLmA4AUA8AdnhoiE/pGSoS6XFB6tbdBfthRp1dZiHT/VJEkyR4frzgnpmjsxU4lx7m9UbLMbmvLke50GxNblkBt/drlTAag3wSlQZ4zcfQ0BuJez2YClhgAABChnC1J8ebhWywusemPPITU22yVJafHRmj8lSzeNGap+Ee6/HWgNSJsOHO2y/L0hqby6Xtutx7p9L70JTp3NGFVU12vBql1+PWPUXQuBnlxDAL5D8AIAIAgZhqEthVVaXmDVe58dcRy/NH2A7s3J0swRyR6bHeluGWRHuiuT35vg1FXTaUMtM0aL1+zXjOGeuya94WwLgd62GgDgWQQvAACCSJPNrrf2lmtZQaH2HaqRJJlM0szhSbp3apZGZ3TfNLk3OgtI3emqTH5vg1Ogzxg520Kgt60GAHgWwQsAgCBQW9+kV7aXKn+TVWVfh4yo8BDdNDpN90yxyJIQ4/ExdBWQOtO6P2mcpfNA2NvgFOgzRt21EHDmGgLwvd435QhQzzzzjCwWi6KiojR69GgVFBT4ekgAAPRY2YnTevxf+zVpyXt6/K1PVVZdr4T+EXp4xnna/PMr9Oj12V4JXVL3AelsZ5a872qJX2+DU6DPGLW2EJC+uWatnL2GAHyvT854vfrqq3rwwQf1zDPPaPLkyfrzn/+sq666Svv371d6erqvhwcAQLf2HarWsoJC/evjcjV/3fH4nMT+ysux6LqRQxQVHur1MfV0xijZycIYvQ1OwTBjNDs7Rc/eOard3jlnryEA3+uT5eTHjx+vUaNG6dlnn3Ucu/DCC3X99ddryZIl3X495eQBAL5gtxta/8VRLd1QqC2FVY7jE7MG6d6pWZp23mCF+HDWY8tXVbpt2dZuz3tg+jmafE6C06XgW8updxecuiqn3rr3TGrbdDrQ+mAFah8yIJhRTr4TjY2N2rlzp37+85+3OT5z5kxt3ry5w69paGhQQ0OD43FNTY1HxwgAwJnqm2x6c88hLSuw6sCRk5Jalp9dc3GK8nKylD3E7OMRthidMVDxMeE6VtfU4fOtAenHM87rUVhoXWq3YNUumdRxcOpuqV2wzBg520IAgP/pc8GrsrJSNptNSUlJbY4nJSWpoqKiw69ZsmSJFi9e7I3hAQDgcLyuUau2FuuFLUWqPNkoSeofGabbxqUpd7JFQwZE+3iE32gtId9V6JJc34vkjuA0OztFM4YnM2MEwCf6XPBqZTK1/UfWMIx2x1r94he/0EMPPeR4XFNTo7S0NI+ODwDQdxVV1mnFRqv+d2ep6ptaGh6nmqN092SLbhmXpriocB+PsC1nSsi7Y2bJHcGJGSMAvtLngldCQoJCQ0PbzW4dOXKk3SxYq8jISEVGRnpjeACAPmxn8TEt3VCot/cfVusO7BGpcbp3apa+dVGKwkP9rxixMyXk42Mi9LsbL9axU43a8lVVr2aZCE4AAlWfC14REREaPXq03nnnHd1www2O4++8846uu+46H44MANAX2eyG3v6kQksLCrW75ITj+PTzBytvapYmZg3qdEWGP3CmhPyxukbd9fx2x+OUANtXBQDu0OeClyQ99NBDuuuuuzRmzBhNnDhRS5cuVUlJib7//e/7emgAgD7iVGOz/vfDg1qx0aqSY6ckSRGhIbrh0iGan2PRuUmxPh6hc1xpOlxRXa8Fq3YFTCVBAHCHPhm8brnlFlVVVemRRx5ReXm5srOz9dZbbykjI8PXQwMABLkjNfV6YUuRVm0tUfXplkIUA/qF664JGbprYobfNvHtjCvjNdRSbGPxmv2aMTyZ4hYA+oQ+2cert+jjBQDoqS8O12rZhkK9uadMjbaWghmZg/pp3hSLbhw9VP0ivPO7UHf3gequx1Z3Xs6bwJ4tAAGNPl4AAPiYYRjadKBKywoKtf6Lo47jozMGKi8nSzOGJ3l1tqe15PuZe7J6u9+qqx5bznBlqSIABCKCFwAAbtZks+ufH5dp6QarPi2vkSSFmKRZI5I1PydLozMGen1MnZV8d8d+q856bDkj0JZWAoCrCF4AALhJTX2TXt5WovxNRaqoaQkg0eGhunnMUN0zxaKMQTE+GVdXJd/dtd/q7B5bCf0j9fBre3S4pqHD72tSS2+vcZZ4l74fAAQaghcAIKC4e4+SO8Zhkkl7So/r1R2lqmu0SZIGx0Yqd1Km7hifrgH9Irw+vjN1V/LdkFReXa/t1mO92m91do+tRdeO6HAJYuvf1sI5wymsAaDPIHgBAAKGJ/YouWscrc5L6q/5OVm6bmSqIsNCvTamrji7j8rd+606W4KYHGR9vPzllwEA/BvBCwAQEDy5R6kn3tpbpvte2t3p8z++8lxddVGqx8fRE87uo/LEfquzlyAGWzDxl18GAPB/Ib4eAAAA3eluj5LUskfJZvdch5T6Jpte2lasH7y8p9NzTJIe+eenHh2HK8ZZ4pVijlJnUceklrDgqf1WrUsQrxs5RBOHDQqq0LVg1a52M5+tvwxYu6/cRyMD4I8IXgAAv9eTPUrudqyuUf933Zea/Nv39Ks39nUZqjw5jt5oLfkuqV34Yr+Va/zhlwEAAgvBCwDg93yxR6nw6En96o29mrjkXf1h3ReqqmvUwH7hXh+Hu7Tut0o2t11OmGyO8toyzWDiy18GAAhM7PECAPg9b+1RMgxDO4qOa1lBodZ9eljG15MVFw0xK29qluL7RejOFds8Pg5PCfb9Vt7kq4IlAAJXj4NXbm6u7rnnHk2dOtUT4wEAoJ3WPUoV1fUe6QnVbLNr7ScVWlZg1UelJxzHr7ggUXlTszTeEi+TySSb3fDoOLzh7JLvcI0vC5YACEw9Dl61tbWaOXOm0tLSdPfdd2vu3LkaMmSIJ8YGAICkb/YoddcTSpK2fFXl9GxOXUOzXvuwVCs2WnXw+GlJUkRYiG4cNUTzpmTpnMT+Lo2DGaTg5+lfBgAIPibDMHq867OqqkqrVq3SypUrtW/fPl155ZWaN2+errvuOoWHO7f+PZDV1NTIbDarurpacXFxvh4OAPQZXZXuluR0We/DNfVaublIL20tVk19syQpPiZCd03I0F0TM5TQP9LlcbBXqu9orWoodRzC2TsH9A3OZgOXgteZdu/ereeff17Lly9X//79deedd+q+++7Tueee25uX9WsELwCuoMmqe3R0Hd/ZX9Fhj6+zb4A/q6jRsg1Wrf7okJpsLWdbEmI0b4pFN44aqugI5xse8/cJiRAOwEvBq7y8XH/5y1/0/PPP69ChQ7rxxhtVXl6u999/X7/73e/04x//2NWX9msELwA9FQw3Z/4aNGx2Q1OefK/LCnPx/cI1YohZBV9WOo6Ny4zX/ByLrrwwSSF+8D4QuPz1ZwOAd3gseDU1NWn16tXKz8/X22+/rYsvvljz58/XHXfcodjYWEnSK6+8ogULFuj48eO9exd+iuAFoCdalyN1Nxvjz/w5OG75qkq3Ldvq1LkhJumqi1KUl5OlkWkDuj2fG2oAQHeczQY9Lq6RkpIiu92u2267Tdu3b9fIkSPbnTNr1iwNGDCgpy8NAEGnuyarJrXsS5oxPNlvb+g7C44V1fVasGqXz4Ojs+W6p52XoMeuv0hp8f2cOt+fwyYAIPD0uIHyH/7wB5WVlelPf/pTh6FLkgYOHCir1drbsQFAwAv0JqvdBUepJTja7L3aLtwrzpbr/v60c3oUuhas2tXu7641bK7dV97jcQIA+rYeB6+77rpLUVH0pAAAZwR6k9VACI6RYSGKCu/8f2cmtcxUOVvWOxDCJgAg8PR4qSEAwHmB3mTVX4Oj3W5o3aeHtbzAqu1FnYc+V3pr9SRs0ogYAOAsghcAeFCgN1n1t+BY32TT33Ye1PMbrSqsrJMkhYeadO0lQ3RhSn+t2FjUJjQlu7AnyxdhkyIeABD8CF4A4EGhISYtnDNcC1btkkkdN1ntyWyMt/lLcKw82aAXtxTrxa3FOlbXKEmKiwrTHRMylDspU0lxLcHv7slZvQ4w3g6bFPEAgL6h1w2U+yLKyQPoqUC+uW4tNCF1HBw9WdXwq6MntbzAqr/vOqjGZrskaejAaM2bYtHNY9IUE+n+3x+29gXrLmxu/NnlvQ7MwdBqAAD6Oq80UO6rCF4AXBHIy8m8GRwNw9A26zEtLyjUuk+POI5fMtSse6cO06wRSQoL7XFtqB7xRtjsrvGzOwMeAMBzPNbHCwDgmtAQU8AWY5idnaIZw5M9GhybbXa9ta9CywsK9fHBakmSySRdeWGS8nKyNDZzoEwm7wSQ2dkpevbOUe3Cpit7xjpDEQ8A6FsIXgAAp3gqOJ5saNYr20uUv6lIh06cltRSIv47o4dq3hSLsgb3d/v3dIanw6a/VowEAHgGwQsA4BPl1ae1clOR/rq9RLX1zZKkQTER+u7ETN05IV2D+kf6eISenaX0t4qRAADPIngBALzqk7JqLS+was1HZWr+uglx1uAY5eVk6YZLhygqPNTHI/QOf6kYCQDwDoIXAMDjDMPQ+i+OallBoTYdqHIcH2+J171TszT9/ESF9LECEoHeagAA0DMELwBBJZArBwajhmab3txTphUFVn1+uFZSS+D41kUpysux6OKhA3w7QB/zRhEPAIB/IHgBCBqB3Csr2Jw41aiXtpVo5eYiHa1tkCTFRITq1nHpuntypoYO7OfjEfoPb1SMBAD4Hn28XEAfL8D/0IjWP5RUndKKjYV67cODOt1kkyQlx0Xp7smZunVcuszR4T4eIQAA7uVsNvBsB0ovKioq0rx582SxWBQdHa1hw4Zp4cKFamxsbHOeyWRq9+e5557z0agBuIPNbmjxmv0dFihoPbZ4zX7Z7PyeyVN2lRzXglU7ddlT7+uFLcU63WTThSlx+sMtl2jDT6fre9OGEboAAH1a0Cw1/Oyzz2S32/XnP/9Z55xzjvbt26e8vDzV1dXpqaeeanNufn6+Zs+e7XhsNpu9PVwAbkQjWt+w2Q29s/+wlhUUamfxccfxaecN1r1TszRp2CCvNTwGAMDfBU3wmj17dpswlZWVpc8//1zPPvtsu+A1YMAAJScne3uIADyERrTedbrRpr/tLNWKjVYVVZ2SJEWEhui6kaman5Ol85NjfTxCAAD8T9AEr45UV1crPr59/5MHHnhA8+fPl8Vi0bx583TvvfcqJKTzVZcNDQ1qaGhwPK6pqfHIeAG4xtkGs5W1DXpzzyGKF7joaG2D/rKlSKu2Fuv4qSZJkjk6XHdOSNfciZlKjKPRLwAAnQna4PXVV1/pj3/8o55++uk2xx999FFdccUVio6O1rvvvquHH35YlZWV+vWvf93pay1ZskSLFy/29JABuKi7RrSSFGKSHv3Xp47HVDt03peHa7W8wKo39hxSY7NdkpQWH635U7J005ih6hcRtP8rAQDAbfy+quGiRYu6DT07duzQmDFjHI/Lyso0bdo0TZs2TcuXL+/ya59++mk98sgjqq6u7vScjma80tLSqGoI+JHWqoaSOg1fZwrEaofe7FFmGIa2FFZp2YZCvf/5UcfxS9MH6N6cLM0ckcyMIQAAcr6qod8Hr8rKSlVWVnZ5TmZmpqKiWpa4lJWVafr06Ro/frxWrlzZ5RJCSdq0aZOmTJmiiooKJSUlOTUmyskD/qmjPl4hJqmzYoYmtTSq3fizy70aIlwJUN7qUdZks+utveVauqFQn5S1LKs2maSZw5N079Qsjc5ov3wbAIC+zNls4PfrQxISEpSQkODUuYcOHdL06dM1evRo5efndxu6JGn37t2KiorSgAEDejlSAL52diPaytqGNssLz+aLaoeuBKjOepRVVNdrwapdbpm1q61v0ivbS5W/yaqyr8cWFR6im0anad4UizITYnr1+q7y5iwfAACe5PfBy1llZWW67LLLlJ6erqeeekpHj36zNKa1guGaNWtUUVGhiRMnKjo6Wu+//75+9atf6d5771VkZKSvhg7AjUJDTI4Q9eaeQ059jbeqHboSoLrrUWZSS4+yGcNdW/pXduK08jdZ9cr2UtU2NEuSEvpHau7EDN05IUMDYyJ6/Jru4q1ZPgAAvCFogtfbb7+tAwcO6MCBAxo6dGib51pXU4aHh+uZZ57RQw89JLvdrqysLD3yyCO6//77fTFkAB7mbLVDZ8/rDVcDlKd6lO07VK1lBYX658fljsbS5yT2V16ORdeNHKKo8FCnX8sTvDHLBwCANwVN8MrNzVVubm6X55zd6wtAcOuu2mHrHq9xFs/vW3I1QLmzR5ndbmj9F0e1dEOhthRWOY5PzBqke6dmadp5gxXiB8v4PD3L11ssfwQAuCJoghcAnC00xKSFc4ZrwapdMqlttcPW2+SFc4Z75abZ1QDljlm7+iab3txzSMsKrDpw5KSklmtzzcUpysvJUvYQs1Pfw1s8NcvnDix/BAC4iuAFICA5O+swOztFz945qt3NcrKXb5ZdDVC9mbU7XteoVVuL9cKWIlWebJQk9Y8M023j0pQ72aIhA6J7+ja8wp2zfO7E8kcAQG8QvAAEnJ7OOpxd7dAXy8NcDVCuzNoVVdZpxUar/ndnqeqbWhoep5qjdPdki24Zl6a4qHB3vjW386e9ea38ffkjAMD/EbwABBRXZx3OrHboC71Z9ujsrN3O4mNauqFQb+8/rNYOjdlD4pSXk6VvXZSi8NDuW2z4A3/am9fKn5c/AgACA8ELQMAI9FmH3ix77GzWTpL+vbdcSwsKtbvkhOP8yy9I1PwciyZmDZLJ5H/Xoiv+tDevlb8ufwQABA6CF4CAEQyzDr1Z9njmrN2pxmat2lqsFRutKjl2SpIUERqib48aonlTLDo3Kdaj78PT/GVvXit/XP4IAAgsBC8AASNYZh16s+zxSE29XthSpFVbS1R9ukmSNKBfuO6akKG7JmYE1Y2/P+zNa+WPyx8BAIGF4AUgYPTlWYfPK2q1vKBQb+4pU6OtpWBG5qB+mjfFohtHD1W/iOD859zXe/POHIe/LX8EAASW4Pw/NYCg1NdmHQzD0KYDVVpWUKj1Xxx1HB+TMVDzc7I0Y3gSN/pe5G/LHwEAgYXgBSBg9JVZhyabXf/8uExLN1j1aXmNJCnEJM3OTtb8nCyNSh/ose/tbH+0vsqflj8CAAKLyTCMjn5xjC7U1NTIbDarurpacXFxvh4O0Of0tI9XR/wxYNTUN+nlbSXK31SkipqW9xYdHqpbxqbpnskWpQ/q59Hv747r6ix/vP4AALjC2WxA8HIBwQvwPVdu3Fu/5p39FfrHnjIdq2t0POepgOGMg8dPKX9TkV7ZXqK6RpskaXBspHInZeqO8eka0C/C42PorD9a6xXtrD+aq9/LWwEPAABPI3h5EMELCDwd3eyfyRMBozsfHzyhZQVWvbW3XDZ7yz/F5yX11/ycLF03MlWRYaFeGYfNbmjKk+91eW2SzVHa+LPLez0r5c2ABwCANzibDdjjBcCj/GFJWWc3+2fyVgNmu93Qe58d0bKCQm2zHnMcn3JOgvKmZmnquQleb3jsrf5ogd4AGwCA3iB4AfAYf1hS1tXN/tk82YC5vsmmN3Yf0rKCQhUerZMkhYWYdO0lqZqXY9GIVLNbv19PeKs/WjA0wAYAwFUELwAe0dksU0V1vRas2uW1JWXd3ex3xJ0NmKtONujFrcV6cUuxqr7eUxYbGabbJ6Qrd1KmUszRbvtervJWf7RgaYANAIArCF4A3M6flpS5chPvjgbMhUdPavlGq/6+86AamlsaHg8ZEK17plh0y9g09Y/0n39+vdUfrS83wAYAwH/+zw8gaPjTkrKe3MT3NmAYhqEdRce1rKBQ6z49rNbSRRcPNSsvJ0tXZScrLDSk06/31X44b/VH62sNsAEAOBPBC4Db+dOSsu5u9lv1JmA02+xa+0mFlhVY9VHpCcfxKy9MVF5OlsZZ4rstmNHVfjhvNOydnZ2iZ+8c1W4MyW7ck9dXGmADANARysm7gHLyQHtnztZU1jbo0X992u3XvJw3wStFFFr3m0nqNHy5UvSjrqFZr31YqhUbrTp4/LQkKSIsRDeOGqq7J2Wqqq7RqbDUVYl1Q9KAfuE6caqpV2N1ljtn3Tp7LX8ougIAgLvQx8uDCF5AWx3dSIeYJHsn/7q4sy9Ub8YYHxOuG0YO0ZXDk9sFjK4CSEV1vVZuLtJftxWrpr7569eK0F0TMnTXxAx9WHTM6WDRXQ+tjgRCz6vuwpU/tBkAAMAdCF4eRPACvuFMj6wz+TI0OHuz31lomDclU/vLa7XmozI12VresSUhRvNzLLpx1FBFhYf2uEHwlq+qdNuyrT1+L74Ir86iSTIAoC+hgTIAj3OmR9bZM1/u3DPUU6Ehpm6XNnYWGsqr6/XYvz5zPB6XGa+8qVm64oJEhXwdfFyp5ujqPjd/7XnlTxUtAQDwJwQvoI9yx1IvZ3pk2Q3pN1dfqITYSL9fUuZMkIwKD9Ff50/QqIyB7Z5zpZqjt3pjeYs/VbQEAMCfELyAPshdxQ2cvelPiI3UdSOH9Hic3uZMkKxvsjv6cp3NlWqOzlZd7Iy/9bzyp4qWAAD4k84bygBwis1uaMtXVXpzzyFt+apKts4qSviJ1qV0ZweMiup6LVi1S2v3lTv9WsHUELf02Ck9u/6AU+d2FhpcuR6tJdalb/ZAOcOklrDsbz2vgukzAQCAOzHjBfRCoJXFdvf+m2BoiLun9ISWbSjUv/eVd1qF8WwJ/SM7PO7q9eish1ZrGflA6nkVDJ8JAAA8gRkvwEXunDnylp7sv3FGV7M1/hwO7HZDb39SoZuf26Lr/7RJ/9rbErpyzk1QfL/wbr/+4df2dPj325vrMTs7RRt/drlezpug/3vrSL2cN0E7fz1Dz905SsnmtrNDyeYov60MGKifCQAAPI1y8i6gnDy6673kL6W+zy6gUVF9Wj9+7aNuv+7/3jqyR3uyAmXmr77Jpr/tPKjnN1pVWFknSQoPNenaS4Zofo5FF6bEOdVsubuy6O6+HoHY8ypQPhMAAPQWfbw8iOAFZ3svvZw3wWeV2zpuGByhY3WN3X6tK+P253BwuKZeT679TP/5pEJ1DTZJUlxUmO6YkKHcSZlKims7o7R2X7kWrd6viprOZwe7C9f+fD28hWsAAOgL6OMFeJC/V27rrBfV8W5CV2/23zjTI8vbDhw5qUWr92njgao2x+OiwvTIdSN0/aVDO/y62dkpio0M1x0rtnX62t2VRffH6+FtXAMAAL4RVHu8MjMzZTKZ2vz5+c9/3uackpISzZkzRzExMUpISNAPf/hDNTZ2PwMAnMmfK7d1V0CjM8Gy/8YwDG0trNK8lTt05e/XtwtdklRb36wfv/pRl/vwKusanPp+lEUHAADOCLoZr0ceeUR5eXmOx/3793f8t81m09VXX63Bgwdr48aNqqqq0ty5c2UYhv74xz/6YrgIUP5cuc2ZXlSSFB8TrmN1TY7HyQG+/6bZZtdb+yq0vKBQHx+s7vJcZyo4+nO4BgAAgSfogldsbKySk5M7fO7tt9/W/v37VVpaqtTUVEnS008/rdzcXD3++OPs14LTWiu3LVi1y+9KfTs7A/Oba0YoOS4q4PffnGxo1ivbS5S/qUiHTpyWJEWGhSjn3ASt+/RIp1/X3VJBfw7XAAAg8ATVUkNJevLJJzVo0CCNHDlSjz/+eJtlhFu2bFF2drYjdEnSrFmz1NDQoJ07d/piuAhgrb2X/K3Ut7MzMMlxUZo4bJCuGzlEE4cNCrjQVV59Wkve+lQTn3hXj/3rUx06cVqDYiL04yvP0+afX645l6R2/yLqPKhSFh0AALhTUM14/ehHP9KoUaM0cOBAbd++Xb/4xS9ktVq1fPlySVJFRYWSkpLafM3AgQMVERGhioqKTl+3oaFBDQ3f7PeoqanxzBtAwJmdnaIZw5P9qnJbsM/UfFJWreUFVq35qEzNX3c8HjY4RvNzsnTDpUMUFR4qyT1LBTtrbBzoyzIBAID3+X3wWrRokRYvXtzlOTt27NCYMWP04x//2HHs4osv1sCBA/Wd73zHMQsmSSZT+xtiwzA6PN5qyZIl3Y4BfZe7K7f1tgS3Py+DdJVhGFr/xVEtKyjUpjOKZYy3xOveqVmafn6iQs56P+4KoP4YrgEAQODx+z5elZWVqqys7PKczMxMRUW1/631oUOHNHToUG3dulXjx4/Xf/3Xf+nNN9/URx9900D2+PHjio+P13vvvafp06d3+PodzXilpaXRxwtu586ms+56LV/2YmpotunNPWVaUWDV54drJbUEy29dlKK8HIsuHjqgy6/vrBlydw2QAQAAnEUDZUn//Oc/NWfOHBUXFys9PV3//ve/dc011+jgwYNKSWm52Xr11Vc1d+5cHTlyxOkQRQNleEJnvbd6ExJ6G5rcGQR74sSpRr20rUQrNxfpaG3LLz1iIkJ167h03T05U0MH9nP6tXz1HjyFpsQAAPiXPhe8tmzZoq1bt2r69Okym83asWOHfvzjH2vMmDF68803JbWUkx85cqSSkpL0f/7P/9GxY8eUm5ur66+/vkfl5AlevhOsN502u6EpT77XaRn41mVxG392udferyeCYHeKq+r0/EarXvvwoE432SS1FAG5e3Kmbh2XLnN0uEuvGyyfm2ALkQAABANns4Hf7/FyVmRkpF599VUtXrxYDQ0NysjIUF5enn760586zgkNDdW//vUv3XfffZo8ebKio6N1++2366mnnvLhyOGsYL7p7K73Vnelz92tuybM3fXA6qldJce1bEOh/vNJhb6ul6HhKXHKm2rR1RelKiKsdwVY3b0Pzxc6C8IV1fVasGoXyyYBAPBzQRO8Ro0apa1bt3Z7Xnp6uv75z396YURwp2C/6XS295az5/WWN4KgzW7onf2HtaygUDuLjzuOTztvsO6dmqVJwwZ1WfSmL/F2EAYAAO4XNMELwasv3HS6o/S5O3kyCJ5utOlvO0u1YqNVRVWnJEkRoSG6bmSq5udk6fzk2B6/ZrDztxlRAADQcwQv+L2+cNPpb723PBEEj9Y26C9bivTi1mKdONUkSTJHh+vOCemaOzFTiXHeCZWByN9mRAEAQM8RvOD3+sJNp7/13upJEOyucMWXh2u1vMCqN3YfUqPNLklKj++neVMsumnMUPWL4J+h7vjbjCgAAOg57njg95y9mUzoH+nhkXjW7OwUPXvnqHYFRJJ9UEDE2SD4zv6KDgue/Nc1F8rcL0LLNhTq/c+POp67NH2A7s3J0swRgbss1Bf8bUYUAAD0XNCUk/cmysl7V2up9c5uOlslx0Vq0bUjArrIhuRfpc+7qiQpqcOCJ2czmaSZw5N079Qsjc4gGLiKZtAAAPinPtfHy5sIXt7X2U3nmbgBdU13Qa+j5yV12Xes1Z3j0zU/J0uZCTEefQ99RTC3VAAAIFARvDyI4OUba/eVa9Hq/aqo6fxm3xeNhgOZqzfyW76q0m3Lum/f8HLehIAteOKv/GlGFAAAOJ8NeteVFPCi2dkpevqmS7o858wKh+ha6yzi2bNWrb3R1u4r7/RrdxY7d30DueCJv2ptBn3dyCGaOGwQoQsAgABBcQ0ElMq6BqfO44a/a670RrPbDa3/4qiWbijUlsIqp74PVfYAAABaELwQUCir7R496Y12afoA/WP3IS3faNWBIycltcy6hIeaVN9k7/DrqbIHAADQFsELAYWy2u7h7Izgi1uL9IOXj6nyZKMkqX9kmG4fn67cSZn6+OCJLqvsebPvGAAAgL8jeCGg+Fuj4bMFSuEDZ2cE39pbIUlKNUfpnikW3TI2TbFR4S3HBkT7Td8xAAAAf0dVQxdQ1dD3/LGstj+OqTPO9kYbkRqne6dm6VsXpSg8tONaPIESNgEAADyBcvIeRPDyD/50w99aIfDsHyZ/7i22dl+5vv/1UsGO/PjKc/XDK86VyUSIAgAA6Iyz2YClhghYrWW1fc2VCoG+VtfQrIrqeiX0j3Ds32qV0D9Cj12f7XdBEQAAIJARvIBe6kmFQF8HxSM19XphS5FWbS1R9ekmSdKA6HBdfkGiLs0YoHMGx7JUEAAAwAMIXkAvOVsh0Je9xT6vqNXygkK9uadMjbaWEvCZg/ppXk6WvjNqqKIjQn02NgAAgL6A4AX0kr/2FjMMQ5sOVGlZQaHWf3HUcXxMxkDNz8nSjOFJzGwBAAB4CcEL6CV/6y3W2GzXPz8u07ICqz4tr5EkhZik2dnJmp+TpVHpA70yDgAAAHyD4BWE/KnaX1/gL73Fqk836eXtJVq5qUgVNS3LGqPDQ3XL2DTdM9mi9EH9PPr9AQAA0DmCV5AJpF5SwWR2dorPmgkfPH5K+ZuK9Mr2EtU12iRJg2MjlTspU3eMT9eAfhEe+94AAABwDn28XOCvfbwCsZdUsPHmbOPHB09oWYFVb+0tl83e8rd+XlJ/5eVk6dqRqYoMo2AGAACAp9HHq48JxF5SwcjTvcXsdkPvfXZEywoKtc16zHF8yjkJypuapannJtDwGAAAwA8RvIJEIPWSQs/VN9n0+q5DWr6xUIVH6yRJYSEmXXtJqublWDQi1ezjEQIAAKArBK8gEQi9pNBzVScb9OLWYr24pVhVdY2SpNioMN0+Pl25kzKVYo728QgBAADgDIJXkPDXXlJwTeHRk1q+0aq/7zyohuaWhsdDBkTrnikW3TI2Tf0j+dEFAAAIJNy9BQl/6yWFrnVUhCPEJO0oOq5lBYVa9+lhtZa9uXioWXk5WboqO1lhoSG+HTgAAABcQvAKEv7SSwrd66jk/4DocA3oF66iqlOOY1demKi8nCyNs8RTMAMAACDAEbyCiC97ScE5nZX8P3G6SSdONyksxKSbxqRp3hSLzkns75MxAgAAwP0IXkFmdnaKZgxP9lovKTivq5L/reJjIvTY9dl98u/Lmz3QAAAAvI3gFYQ83UsKrvnfD0u7LPkvSUdqG/pkyf+Oll+mMFMLAACCCMELOIs7Z14Mw1DBl5VaVlCogi8rnfqavlbyv7PllxXV9VqwapeevXMU4QsAAAS8oAleH3zwgaZPn97hc9u3b9fYsWMlqcMiBc8++6y+//3ve3R8CAzumnlpbLZr9UdlWl5QqM8qaiVJJpMclQq70pdK/ne1/NJQS2GYxWv2a8bwZJYdAgCAgBY0wWvSpEkqLy9vc+w3v/mN1q1bpzFjxrQ5np+fr9mzZzsem81mr4wR/s0dMy/Vp5r00vZivbC5SIdrGiRJ/SJCdcvYNM2dmKnblm2l5P8ZtluPdbn80pBUXl3fJ5dfAgCA4BI0wSsiIkLJycmOx01NTVq9erUeeOCBdrNcAwYMaHMu0NuZl9Jjp7Rio1WvfViqU402SVJSXKRyJ1l0+7h0mfuFSxIl/8/i7LLKvrb8EgAABJ+g7ca6evVqVVZWKjc3t91zDzzwgBISEjR27Fg999xzstvt3h8g/EpPZl7OtKf0hO5/aZem/Z/3tXJzkU412nRBcqyevukSFfz0ci24bJgjdEnflPxPNrddTphsjuqTe5mcXVbZl5ZfAgCA4BQ0M15nW7FihWbNmqW0tLQ2xx999FFdccUVio6O1rvvvquHH35YlZWV+vWvf93pazU0NKihocHxuKamxmPjhm/0ZObFbje07tPDWlZQqB1Fxx3P5ZyboHunZmnKOQldNjym5P83xlnilWKOYvklAAAIen4fvBYtWqTFixd3ec6OHTva7OM6ePCg/vOf/+i1115rd+6ZAWvkyJGSpEceeaTL4LVkyZJux4DA5uyMykel1frvdV/KWlknSQoPNenaS4Zofo5FF6bEOf39KPnfIjTExPJLAADQJ5gMw5k6a75TWVmpysquy3BnZmYqKuqbG+dHH31Uf/zjH3Xo0CGFh4d38ZXSpk2bNGXKFFVUVCgpKanDczqa8UpLS1N1dbXi4py/2Yb/stkNTXnyvU5nXqS2VQnjosJ0x4QM5U7KVFIcy+B6iz5eAAAgUNXU1MhsNnebDfx+xishIUEJCQlOn28YhvLz8/Xd736329AlSbt371ZUVJQGDBjQ6TmRkZGKjIx0egwIPF3NvLQyDGnowGjNm2LRzWPSFBPp9z8+AYPllwAAINgF3Z3je++9J6vVqnnz5rV7bs2aNaqoqNDEiRMVHR2t999/X7/61a907733Eqyg2dkpeuaOS/Wrf3yiY3WNbZ7LHNRP/9+sCzRrRJLCQoO2Jo1PsfwSAAAEs6ALXitWrNCkSZN04YUXtnsuPDxczzzzjB566CHZ7XZlZWXpkUce0f333++DkcKfNNvsemtfhZZtKHSELpOk0RkD9f/NOl/jLPFdFswAAAAAuuL3e7z8kbPrOOH/TjY065XtJcrfVKRDJ05LkiLDQvSd0UM1b4pFWYP7+3iEAAAA8GdBs8cL8ITy6tNaualIf91WotqGZknSoJgIfXdipu6ckK5B/Vl6CgAAAPcheAUJm92gMIETPimr1vICq9Z8VKZme8tk77DBMZqfk6UbLh2iqPBQH48QAAAAwYjgFQQoxd01wzC0/oujWlZQqE0HqhzHJ2TFKy8nS9PPT1QIIRUAAAAeRPAKcGv3lWvBql3typ9XVNdrwapdevbOUX02fDU02/TmnjItLyjUF4dPSmqpnHf1RSnKy8nSRUPNPh4hAAAA+gqCVwCz2Q0tXrO/455TaqnKt3jNfs0Yntynlh2eONWol7aVaOXmIh2tbWl8HRMRqtvGpSt3cqaGDuzn4xECAACgryF4BbDt1mNtlheezZBUXl2v7dZjfaI/UnFVnZ7faNVrHx7U6SabJCk5Lkp3T87UrePSZY7uvqE2AAAA4AkErwB2pLbz0OXKeYFqZ/FxLS8o1H8+qdDX9TI0PCVOeVMtuvqiVEWE0fAYAAAAvkXwCmCJsVFuPS+Q2OyG3tlfoWUFVu0sPu44ftn5g5WXk6VJwwbR8BgAAAB+g+AVwMZZ4pVijlJFdX2H+7xMkpLNLaXl/Y2r5e9PN9r0t52lWr7RquKqU5KkiNAQXX9pqubnZOm8pFhPD92v0EYAAAAgMBC8AlhoiEkL5wzXglW7ZJLahK/WW++Fc4b73Y24K+Xvj9Y26C9bivTi1mKdONUkSTJHh+uuCRn67qSMoJzV6w5tBAAAAAKHyTCMjiZL0IWamhqZzWZVV1crLi7O18MJqBvwzsrft0bDs8vff3m4VssLrHpj9yE12uySpPT4fpo3xaKbxgxVv4i++buDnl5HAAAAeIaz2aBv3rUGidZlZg3Ndj31nUskk1R5ssFvl5w5W/7+yguTtN16TMsKCvX+50cd54xKH6C8nCzNHNG3yuOfjTYCAAAAgYfgFaC6muXy19Lxzpa/v/L361X09f4tk0maNTxZeVMtGp3hf3vVfIE2AgAAAIGH4BWAOltmVlFdrwWrdvntMjNny9oXVZ1SVHiIbh6TpnsmW5SZEOPhkQUW2ggAAAAEHoJXgAnkZWbOFsC4eUyafnHVBRoYE+HhEQWmvtxGAAAAIFDRWTbA9GSZmb9pLX/fleS4SC359kWEri60XsfOYrVJLctO/bGNAAAAQF9F8AowgbrMzG43tP6LI4qL6nyS1SRp0bUj/G6mzt+0thGQ1C58ddZGwGY3tOWrKr2555C2fFUlm51ipgAAAN7EUsMAE2jLzOqbbPrH7kNavtGqA0dOSpJCTFJEWIjqm+yO8/y1/L2/mp2domfvHNWuwEpyB9cxkNoNAAAABCuCV4BpXWZWUV3f4T4vk1puvn29zOx4XaNWbS3WC1uKVHmyUZLUPzJMt49PV+6kTCXFRWm79ZiO1Nb7bfl7fzc7O0Uzhid3eR0DtRALAABAsCF4BZjWZWYLVu2SSWpzQ93ZMjNvKqqs04qNVv3vzlLHjFaqOUr3TLHolrFpio0Kd5xLqfPeCw0xdXodA7kQCwAAQLAheAWgniwz8wbDMLSz+LiWFRTq7f2HZXx9p589JE55OVn61kUpCg9lO6G30e8LAADAfxC8ApQzy8w8zWY39J9PKrSsoFC7S044jl9+QaLycrI0ISteJhMzKb4SqIVYAAAAghHBK4B1tczMk+oamvW/H5bq+U1FKjl2SpIUERqib48aovk5Fp2TGOv1MaG9QCvEAgAAEMwIXnDakZp6vbClSKu2lqj6dJMkaUC/cH13QobumpipwbGRPh4hzhQohVgAAAD6AoIXuvV5Ra2WFRRq9Z4yNdpaCmZkDuqneTlZ+s6ooYqOCPXxCNERfy/EAgAA0JcQvNAhwzC06UCVlhYUasMXRx3Hx2QMVN7ULF15YRI37AHA3wqxAAAA9FUEL7TR2GzXPz8u07ICqz4tr5HU0vB4dnay5udkaVT6QB+PED3lD4VYAAAA+jqCFyRJ1aeb9PL2Eq3cVKSKmpaZkejwUN0yNk33TLYofVA/H48QveGrQiwAAABoQfDq4w4eP6X8TUV6ZXuJ6hptkqTE2EjNnZSpO8ana0C/CK+PyWY3mJ0BAABAUCF49VEfHzyhpRsK9e99FbLZW8ounJ8Uq/k5Fl07MlWRYb4pmLF2X3m7/Ugp7EcCAABAgCN49SF2u6H3PjuipQWF2m495jg+5ZwE5U3N0tRzE3za8HjtvnItWLWrXenziup6LVi1S8/eOYrwBQAAgIBE8OoD6ptsen3XIS3fWKjCo3WSpLAQk669JFXzc7I0PDXOxyNsWV64eM3+DvtNGWopf754zX7NGJ7MskMAAAAEnBBfD8BZjz/+uCZNmqR+/fppwIABHZ5TUlKiOXPmKCYmRgkJCfrhD3+oxsbGNufs3btX06ZNU3R0tIYMGaJHHnlEhtHR7X7gqzrZoP9e94Um//Y9/fKNvSo8WqfYqDB9b1qWCn42Xb+/ZaRToctmN7Tlqyq9ueeQtnxV5Via6E7brcfaLC88myGpvLq+zUwdAAAAECgCZsarsbFRN910kyZOnKgVK1a0e95ms+nqq6/W4MGDtXHjRlVVVWnu3LkyDEN//OMfJUk1NTWaMWOGpk+frh07duiLL75Qbm6uYmJi9PDDD3v7LXnMV0dPasVGq/6+86AamlsaHg8ZEK17plh0y9g09Y90/q/dW3uujtR2HrpcOQ8AAADwJwETvBYvXixJWrlyZYfPv/3229q/f79KS0uVmpoqSXr66aeVm5urxx9/XHFxcXrppZdUX1+vlStXKjIyUtnZ2friiy/0+9//Xg899JBP9zf1lmEY2lF0XEs3FOrdzw6rdRLv4qFm5eVk6arsZIWF9myC05t7rhJjo9x6HgAAAOBPAmapYXe2bNmi7OxsR+iSpFmzZqmhoUE7d+50nDNt2jRFRka2OaesrExFRUXeHrJbNNtaGh5f/6dNuvnPW7Tu05bQdeWFiXr13gl68/7JmnNJao9DV3d7rqSWPVfuWnY4zhKvFHOUOou+JrXMtI2zxLvl+wEAAADeFDAzXt2pqKhQUlJSm2MDBw5URESEKioqHOdkZma2Oaf1ayoqKmSxWDp87YaGBjU0NDge19TUuHHkrnv/syP6zZv7dPD4aUlSRFiIbhw1VPOmWHROYv9evXZP9ly5ozFvaIhJC+cM14JVu2SS2gS+1jC2cM5wCmsAAAAgIPl0xmvRokUymUxd/vnwww+dfr2OlgoahtHm+NnntBbW6GqZ4ZIlS2Q2mx1/0tLSnB6TJ8VGheng8dOKj4nQj644V5t/frmWfPuiXocuyTd7rmZnp+jZO0cp2dx2OWGyOYpS8gAAAAhoPp3xeuCBB3Trrbd2ec7ZM1SdSU5O1rZt29ocO378uJqamhyzWsnJyY7Zr1ZHjhyRpHazZWf6xS9+oYceesjxuKamxi/C1+iMgfrT7aN0xYWJigp3b8NjX+25mp2dohnDk7XdekxHauuVGNuyvJCZLgAAAAQynwavhIQEJSQkuOW1Jk6cqMcff1zl5eVKSWmZGXn77bcVGRmp0aNHO8755S9/qcbGRkVERDjOSU1N7TLgRUZGttkX5i9MJpOuvtgzs0Cte64qqus73OdlUstMlCf2XIWGmNyyfBEAAADwFwFTXKOkpER79uxRSUmJbDab9uzZoz179ujkyZOSpJkzZ2r48OG66667tHv3br377rv6yU9+ory8PMXFtfSquv322xUZGanc3Fzt27dPb7zxhp544omAr2joCa17riS1K3jBnisAAACgZ0xGgHQPzs3N1QsvvNDu+Pvvv6/LLrtMUks4u++++/Tee+8pOjpat99+u5566qk2s1V79+7V/fffr+3bt2vgwIH6/ve/r//6r//qUfCqqamR2WxWdXW1I9QFK2/18QIAAAACkbPZIGCClz/pS8FLaiktz54rAAAAoD1ns0HQlJOH57DnCgAAAOidgNnjBQAAAACBiuAFAAAAAB5G8AIAAAAADyN4AQAAAICHEbwAAAAAwMMIXgAAAADgYQQvAAAAAPAwghcAAAAAeBjBCwAAAAA8jOAFAAAAAB4W5usBIDDY7Ia2W4/pSG29EmOjNM4Sr9AQk6+HBQAAAAQEghe6tXZfuRav2a/y6nrHsRRzlBbOGa7Z2Sk+HBkAAAAQGFhqiC6t3VeuBat2tQldklRRXa8Fq3Zp7b5yH40MAAAACBwEL3TKZje0eM1+GR0813ps8Zr9stk7OgMAAABAK4IXOrXdeqzdTNeZDEnl1fXabj3mvUEBAAAAAYjghU4dqe08dLlyHgAAANBXEbzQqcTYKLeeBwAAAPRVBC90apwlXinmKHVWNN6kluqG4yzx3hwWAAAAEHAIXuhUaIhJC+cMl6R24av18cI5w+nnBQAAAHSD4IUuzc5O0bN3jlKyue1ywmRzlJ69cxR9vAAAAAAn0EAZ3ZqdnaIZw5O13XpMR2rrlRjbsryQmS4AAADAOQQvOCU0xKSJwwb5ehgAAABAQGKpIQAAAAB4GMELAAAAADyM4AUAAAAAHkbwAgAAAAAPI3gBAAAAgIcRvAAAAADAwwheAAAAAOBhBC8AAAAA8DCCFwAAAAB4GMELAAAAADwszNcDCESGYUiSampqfDwSAAAAAL7UmglaM0JnCF4uqK2tlSSlpaX5eCQAAAAA/EFtba3MZnOnz5uM7qIZ2rHb7SorK1NsbKxMJpOvh6OamhqlpaWptLRUcXFxvh5On8K19x2uve9w7X2Ha+87XHvf4dr7DtfeOYZhqLa2VqmpqQoJ6XwnFzNeLggJCdHQoUN9PYx24uLi+KHwEa6973DtfYdr7ztce9/h2vsO1953uPbd62qmqxXFNQAAAADAwwheAAAAAOBhBK8gEBkZqYULFyoyMtLXQ+lzuPa+w7X3Ha6973DtfYdr7ztce9/h2rsXxTUAAAAAwMOY8QIAAAAADyN4AQAAAICHEbwAAAAAwMMIXgAAAADgYQSvAPL4449r0qRJ6tevnwYMGNDhOSUlJZozZ45iYmKUkJCgH/7wh2psbGxzzt69ezVt2jRFR0dryJAheuSRR0SNlZ754IMPZDKZOvyzY8cOx3kdPf/cc8/5cOTBITMzs911/fnPf97mHGd+FtAzRUVFmjdvniwWi6KjozVs2DAtXLiw3XXlc+85zzzzjCwWi6KiojR69GgVFBT4ekhBZcmSJRo7dqxiY2OVmJio66+/Xp9//nmbc3Jzc9t9vidMmOCjEQeXRYsWtbu2ycnJjucNw9CiRYuUmpqq6OhoXXbZZfrkk098OOLg0dH/V00mk+6//35JfO7dJczXA4DzGhsbddNNN2nixIlasWJFu+dtNpuuvvpqDR48WBs3blRVVZXmzp0rwzD0xz/+UZJUU1OjGTNmaPr06dqxY4e++OIL5ebmKiYmRg8//LC331LAmjRpksrLy9sc+81vfqN169ZpzJgxbY7n5+dr9uzZjsfOdDZH9x555BHl5eU5Hvfv39/x3878LKDnPvvsM9ntdv35z3/WOeeco3379ikvL091dXV66qmn2pzL5979Xn31VT344IN65plnNHnyZP35z3/WVVddpf379ys9Pd3XwwsK69ev1/3336+xY8equblZv/rVrzRz5kzt379fMTExjvNmz56t/Px8x+OIiAhfDDcojRgxQuvWrXM8Dg0Ndfz37373O/3+97/XypUrdd555+mxxx7TjBkz9Pnnnys2NtYXww0aO3bskM1mczzet2+fZsyYoZtuuslxjM+9GxgIOPn5+YbZbG53/K233jJCQkKMQ4cOOY69/PLLRmRkpFFdXW0YhmE888wzhtlsNurr6x3nLFmyxEhNTTXsdrvHxx6sGhsbjcTEROORRx5pc1yS8cYbb/hmUEEsIyPD+MMf/tDp8878LMA9fve73xkWi6XNMT73njFu3Djj+9//fptjF1xwgfHzn//cRyMKfkeOHDEkGevXr3ccmzt3rnHdddf5blBBbOHChcYll1zS4XN2u91ITk42fvvb3zqO1dfXG2az2Xjuuee8NMK+40c/+pExbNgwx70hn3v3YKlhENmyZYuys7OVmprqODZr1iw1NDRo586djnOmTZvWphHerFmzVFZWpqKiIm8POWisXr1alZWVys3NbffcAw88oISEBI0dO1bPPfec7Ha79wcYhJ588kkNGjRII0eO1OOPP95muZszPwtwj+rqasXHx7c7zufevRobG7Vz507NnDmzzfGZM2dq8+bNPhpV8Kuurpakdp/xDz74QImJiTrvvPOUl5enI0eO+GJ4QenLL79UamqqLBaLbr31VhUWFkqSrFarKioq2vwMREZGatq0afwMuFljY6NWrVqle+65RyaTyXGcz33vsdQwiFRUVCgpKanNsYEDByoiIkIVFRWOczIzM9uc0/o1FRUVslgsXhlrsFmxYoVmzZqltLS0NscfffRRXXHFFYqOjta7776rhx9+WJWVlfr1r3/to5EGhx/96EcaNWqUBg4cqO3bt+sXv/iFrFarli9fLsm5nwX03ldffaU//vGPevrpp9sc53PvfpWVlbLZbO0+10lJSXymPcQwDD300EOaMmWKsrOzHcevuuoq3XTTTcrIyJDVatVvfvMbXX755dq5c2ebX2qi58aPH6+//OUvOu+883T48GE99thjmjRpkj755BPH57yjn4Hi4mJfDDdo/eMf/9CJEyfa/DKZz72b+HrKra9buHChIanLPzt27GjzNZ0tNczLyzNmzpzZ7nh4eLjx8ssvG4ZhGDNmzDDuvffeNs8fPHjQkGRs2bLFfW8sQLny91FaWmqEhIQYf/vb37p9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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.linear_model import LinearRegression\n", "\n", "# Linear regression\n", "reg = LinearRegression()\n", "reg.fit(X, t)\n", "\n", "print(reg.coef_, reg.intercept_)\n", "\n", "# Prediction\n", "y = reg.predict(X)\n", "\n", "# mse\n", "mse = np.mean((t - y)**2)\n", "print('mse:', mse)\n", "\n", "plt.figure(figsize=(10, 5))\n", "plt.scatter(t, y)\n", "x_axis = [t.min(), t.max()]\n", "plt.plot(x_axis, x_axis)\n", "plt.xlabel(\"t\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** No need to select the right learning rate, fast and error-free." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Delta learning rule\n", "\n", "Let's now implement the online version of LMS, the **delta learning rule**. The only difference is that the parameter updates are applied immediately after each example is evaluated, not at the end of training. \n", "\n", "* $w=0 \\quad;\\quad b=0$\n", "\n", "* **for** M epochs:\n", "\n", " * **for** each sample $(x_i, t_i)$:\n", "\n", " * $y_i = w \\, x_i + b$\n", "\n", " * $\\Delta w = \\eta \\, (t_i - y_i ) \\, x_i$\n", "\n", " * $\\Delta b = \\eta \\, (t_i - y_i)$\n", " \n", "**Q:** Implement the delta learning rule for the regression problem with `eta = 0.1`. Plot the evolution of the mse and compare it to LMS. " ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mse: [317.20325456]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "w = 0\n", "b = 0\n", "\n", "eta = 0.1\n", "\n", "losses = []\n", "for epoch in range(100):\n", " \n", " mse = 0.0\n", " \n", " for i in range(N):\n", " # Prediction\n", " y = w * X[i] + b\n", " \n", " # Delta learning rule\n", " w += eta * (t[i] - y) * X[i]\n", " b += eta * (t[i] - y)\n", " \n", " # mse\n", " mse += (t[i] - y)**2\n", "\n", " losses.append(mse/N)\n", " \n", "print('mse:', mse/N)\n", " \n", "plt.figure(figsize=(10, 5))\n", "plt.plot(losses)\n", "plt.xlabel(\"Epochs\")\n", "plt.ylabel(\"mse\")\n", "plt.show() " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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09nW59vK672y5c1TQdDdqhua9dw7ZfrTe5U602aTJGWMjFRBXpZuGpus0OAgx71m3ypopiAMAADOF9T3LebyxBNPaMSIERo7dqwee+wxtba2Ot63ZcsW5eTkOEKXJF177bVqaWnRjh07enzMlpYWNTY2dvkH3tX5ovPccNL5onPtniofrcw9nG197ux9A9WfIOgLFbWn9OO/faQZv16vFzaV60ybTTmjorXim+P01g9y9bXxo7uELrPrKwhLHUHYZg+YneMAAAScgKp4/dd//ZfGjRun4cOHa9u2bXr44YdVXl6u559/XpJUXV2thISELh8zfPhwhYWFqbq6usfHffzxx7Vs2TKPrh09M0v1ZSCcbX3u7H0D5W9BsNPHVY0qLC7VPz46os6MMSk9VovzszTjgjhZLOb8/vfF3yqiAACg//w+eC1durTP0LN9+3ZNmDBBP/jBDxzXLr/8cg0fPlxf+9rXHFUwSd2+MDMMo9cXbA8//LAeeOABx9uNjY1KSUnp75cCFw2GF53+NnvL34LgjgP1Wl5UqvWf1DiuXX1xvAryMjUhLbDnkUn+G4QBAIDz/D543X///brtttt6vSctLa3b65MnT5YklZSUaMSIEUpMTNR7773X5Z7jx4+rra3tvErY2axWq6xWa/8WDrcZDC86/W32Vn+CoKcanhiGoXf212p5UYne+3xLY5BFuv6yJC3Ky9SlyTED/hxm4W9BGAAA9J/fB6+4uDjFxcW59LG7du2SJCUldRw4nzJlih577DFVVVU5rq1bt05Wq1Xjx493z4Lhds6+mIwbau5w7M7ZWwPlbBB8a1+12xue2O2G1u2r1vKiUu0+3CBJCg226KvjRuu+3Eylx0W69kWZmL9VRAEAQP8FzByvLVu2aOvWrcrPz1dMTIy2b9+uH/zgB5owYYLeeOMNSR3t5MeOHauEhAT95je/UX19vebPn6+bb765X+3kmePlXTa7oelPrO/xRWenxGirlt54qek7u/lTy/zeOklKcuvcsTabXW98cEQriktUeuyUJCkiNFi3TxyjBTPTlRQTMZAvxfQ6G8xI3QdhuhoCAOAbzmaDgAleO3fuVEFBgT755BO1tLQoNTVVt912m370ox9pyJAhjvsqKytVUFBw3gDl/mwlJHh5X08vOs/GC1DX9BX0unu/JE1/Yn2PZ+86KzCbHrq6z9DY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V6700goHj//6r/8yMjMzHa8N+bl3D7YaBpAtW7YoJydHycnJjmvXXnutWlpatGPHDsc9ubm5XQbhXXvttTpy5IgqKiq8veSA8eabb6q2tlbz588/733333+/4uLidNVVV2nlypWy2+3eX2AAeuKJJzRixAiNHTtWjz32WJftbs78LsA9GhoaFBsbe951fu7dq7W1VTt27NDs2bO7XJ89e7Y2b97so1UFvoaGBkk672e8uLhY8fHxuvDCC7VgwQLV1NT4YnkBaf/+/UpOTlZ6erpuu+02lZWVSZLKy8tVXV3d5XfAarUqNzeX3wE3a21t1erVq3XXXXfJYrE4rvNzP3BsNQwg1dXVSkhI6HJt+PDhCgsLU3V1teOetLS0Lvd0fkx1dbXS09O9stZA88ILL+jaa69VSkpKl+u/+MUvdM011ygiIkL/+c9/9OCDD6q2tlY/+9nPfLTSwPBf//VfGjdunIYPH65t27bp4YcfVnl5uZ5//nlJzv0uYOBKS0v19NNP66mnnupynZ9796utrZXNZjvv5zohIYGfaQ8xDEMPPPCApk+frpycHMf16667TrfeeqtSU1NVXl6un//857r66qu1Y8eOLn/URP9NmjRJv//973XhhRfq6NGjevTRRzV16lTt3bvX8XPe3e/AgQMHfLHcgPX3v/9dJ06c6PLHZH7u3cTXJbfBbsmSJYakXv/Zvn17l4/paavhggULjNmzZ593PTQ01HjllVcMwzCMWbNmGffee2+X9x86dMiQZGzZssV9X5hJufL9OHjwoBEUFGT89a9/7fPxn3zySSM6OtpTyzc1V577Tn/9618NSUZtba1hGM79LuALrjz3hw8fNrKysoy77767z8fn537gDh8+bEgyNm/e3OX6o48+alx00UU+WlVgKygoMFJTU42DBw/2et+RI0eM0NBQ429/+5uXVjZ4nDx50khISDCeeuop49133zUkGUeOHOlyzz333GNce+21PlphYJo9e7bx5S9/udd7+Ll3DRUvH7v//vt122239XrPuRWqniQmJuq9997rcu348eNqa2tz/IUoMTHxvL+OdpaKz/0r0mDkyvdj1apVGjFihG688cY+H3/y5MlqbGzU0aNHeb7PMZDfhc7OSiUlJRoxYoRTvwv4Qn+f+yNHjig/P19TpkzRs88+2+fj83M/cHFxcQoODu72v988p+733e9+V2+++aY2btyo0aNH93pvUlKSUlNTtX//fi+tbvCIjIzUZZddpv379+vmm2+W1LGjISkpyXEPvwPudeDAAb399tt67bXXer2Pn3vXELx8LC4uTnFxcW55rClTpuixxx5TVVWV4z9K69atk9Vq1fjx4x33/OQnP1Fra6ujG826deuUnJzsdMALZP39fhiGoVWrVunb3/62QkND+7x/165dCg8P73EcwGA2kN+FXbt2SZLj596Z3wV8oT/P/eHDh5Wfn6/x48dr1apVCgrq+6gwP/cDFxYWpvHjx+utt97SLbfc4rj+1ltv6aabbvLhygKLYRj67ne/q9dff13FxcVObb+vq6vTwYMHu4QBuEdLS4s+/vhjzZgxQ+np6UpMTNRbb72lK6+8UlLHWaQNGzboiSee8PFKA8eqVasUHx+vG264odf7+Ll3ka9LbnDegQMHjF27dhnLli0zhg4dauzatcvYtWuX0dTUZBiGYbS3txs5OTnGNddcY+zcudN4++23jdGjRxv333+/4zFOnDhhJCQkGLfffruxe/du47XXXjOio6ONJ5980ldflqm9/fbbhiRj3759573vzTffNJ599llj9+7dRklJifHcc88Z0dHRxve+9z0frDRwbN682fjtb39r7Nq1yygrKzNeffVVIzk52bjxxhsd9zjzu4D+69xeePXVVxuHDh0yqqqqHP904ufec/785z8boaGhxgsvvGDs27fP+P73v29ERkYaFRUVvl5awFi0aJERExNjFBcXd/n5Pn36tGEYhtHU1GQ8+OCDxubNm43y8nKjqKjImDJlijFq1CijsbHRx6s3vwcffNAoLi42ysrKjK1btxpf/vKXjaioKMfP+K9+9SsjJibGeO2114zdu3cbt99+u5GUlMRz7yY2m80YM2aM8dBDD3W5zs+9+xC8TOTOO+/s9uxFUVGR454DBw4YN9xwgxEREWHExsYa999/f5fW8YZhGB999JExY8YMw2q1GomJicbSpUtpJe+i22+/3Zg6dWq37/vXv/5ljB071hg6dKgxZMgQIycnx/jd735ntLW1eXmVgWXHjh3GpEmTjJiYGCM8PNy46KKLjCVLlhinTp3qcp8zvwvon1WrVvV4BqwTP/eetXz5ciM1NdUICwszxo0b16XNOQaup5/vVatWGYZhGKdPnzZmz55tjBw50ggNDTXGjBlj3HnnnUZlZaVvFx4gvvGNbxhJSUlGaGiokZycbHzlK18x9u7d63i/3W43lixZYiQmJhpWq9WYOXOmsXv3bh+uOLD8+9//NiQZn376aZfr/Ny7j8UwDMPLRTYAAAAAGFSY4wUAAAAAHkbwAgAAAAAPI3gBAAAAgIcRvAAAAADAwwheAAAAAOBhBC8AAAAA8DCCFwAAAAB4GMELAAAAADyM4AUAgAvy8vL0/e9/39fLAACYBMELAAAAADzMYhiG4etFAABgJvPnz9fLL7/c5Vp5ebnS0tJ8syAAgN8jeAEA0E8NDQ267rrrlJOTo0ceeUSSNHLkSAUHB/t4ZQAAfxXi6wUAAGA2MTExCgsL05AhQ5SYmOjr5QAATIAzXgAAAADgYQQvAAAAAPAwghcAAC4ICwuTzWbz9TIAACZB8AIAwAVpaWl67733VFFRodraWtntdl8vCQDgxwheAAC44Ic//KGCg4OVnZ2tkSNHqrKy0tdLAgD4MdrJAwAAAICHUfECAAAAAA8jeAEAAACAhxG8AAAAAMDDCF4AAAAA4GEELwAAAADwMIIXAAAAAHgYwQsAAAAAPIzgBQAAAAAeRvACAAAAAA8jeAEAAACAhxG8AAAAAMDDCF4AAAAA4GH/Pyjk13dT7i8LAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "y = w * X + b\n", "\n", "plt.figure(figsize=(10, 5))\n", "\n", "plt.scatter(t, y)\n", "\n", "x_axis = [t.min(), t.max()]\n", "plt.plot(x_axis, x_axis)\n", "\n", "plt.xlabel(\"t\")\n", "plt.ylabel(\"y\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** The delta learning rule converges faster, but the final mse is higher. This is due to the learning rate as shown in the next question." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Q:** Vary the learning rate logarithmically as for LMS and conclude." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[array([2463.37614216]), array([2139.66406069]), array([670.31330378]), array([276.95458754]), array([281.52657112]), array([317.20325456])]\n" ] }, { "data": { "image/png": "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TVJDQ4N9zfTp05WVlaU1a9ZozZo1ysrK0owZM9r1+QKubkj3MN3UXJbxm/eyKcsAAAC4DCabzeYyP00VFxcrMjJS69ev13XXXSebzabY2FjNmzdPjzzyiKSmo1hRUVF67rnn9POf/1xWq1URERF66623dPvtt0uSCgoKlJCQoNWrV2v8+PHau3ev+vXrp4yMDKWmpkqSMjIylJaWpn379ql3794/OFtZWZksFousVqtCQkKc95cAGOxYWbWu/906VdY2aPG0K3XbNQlGjwQAAOBSWpsNXOqaLau16bSlLl26SJJycnJUWFiocePG2df4+flpxIgR2rRpkyRp+/btqqura7EmNjZWycnJ9jWbN2+WxWKxBy1JGjJkiCwWi33NuWpqalRWVtbiBniCqBB/PTC2lyTpv9ZQlgEAANBWLhO2bDabHnzwQQ0bNkzJyU3XjRQWFkqSoqKiWqyNioqy7yssLJSvr69CQ0O/d01kZOR5f2ZkZKR9zbkWLVpkv77LYrEoIYHf7sNznC7LOFlZq99//I3R4wAAALgllwlb9913n77++mv97//+73n7TCZTi89tNtt528517poLrf++x3nsscdktVrtt9xc3nsInsPHy6wn00+XZRxWdj5lGQAAAJfKJcLW3LlztXLlSn3++eeKj4+3b4+Ojpak844+FRUV2Y92RUdHq7a2ViUlJd+75tixY+f9ucXFxecdNTvNz89PISEhLW6AJ0m7IkzpA2PVSFkGAABAmxgatmw2m+677z4tW7ZMn332mZKSklrsT0pKUnR0tNauXWvfVltbq/Xr12vo0KGSpMGDB8vHx6fFmqNHjyo7O9u+Ji0tTVarVVu3brWv2bJli6xWq30NgPP9+sa+CvL10o4jpfp3Zt4P3wEAAAB2hoate++9V//85z/1zjvvKDg4WIWFhSosLFRVVZWkplP/5s2bp2effVbLly9Xdna2Zs6cqcDAQE2fPl2SZLFYNGvWLD300EP69NNPtWPHDt15550aMGCAxowZI0nq27evJkyYoDlz5igjI0MZGRmaM2eOJk2a1KomQsBTRYX4a96YprKM5z7cJ+upOoMnAgAAcB+GVr9f7Hqp119/XTNnzpTUdPTrySef1CuvvKKSkhKlpqbqT3/6k71EQ5Kqq6v1y1/+Uu+8846qqqo0evRo/fnPf25RanHy5Endf//9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byrLyCup0p/XfWf0OAAAwIOYbFzI0CplZWWyWCyyWq1cvwW4mdW7juqetzPl623W2geuU2JYkNEjAQAAN9babOBW12wBQFtMPKss46n39xg9DgAA8BCELQAdnslk0sLmsoxP9xXpkz3nN5QCAAA4GmELgEe4IqKTZg1rLsv4gLIMAADgfG0OW/X19frkk0/0yiuvqLy8XJJUUFCgiooKhw0HAI409/oeirH4K/dklf5nPWUZAADAudoUtg4fPqwBAwbopptu0r333qvi4mJJ0uLFizV//nyHDggAjhLk563Hb+wnSfrzuu905MQpgycCAAAdWZvC1i9+8QtdffXVKikpUUBAgH37zTffrE8//dRhwwGAo90wIFrX9ghrKsv4YLfR4wAAgA6sTWFr48aNevzxx+Xr69tie2JiovLz8x0yGAA4g8lk0pPpyfLxMumTvUX6dC9lGQAAwDnaFLYaGxvV0HD+xeV5eXkt3nAYAFxRj8hO+umwJEnSk+/voSwDAAA4RZvC1tixY/XSSy/ZPzeZTKqoqNCCBQt0ww03OGo2AHCa+6/vqegQfx05eUqvrD9o9DgAAKADalPYevHFF7V+/Xr169dP1dXVmj59urp166b8/Hw999xzjp4RABwuyM9bj0/qK0n687pvlXuSsgwAAOBYJpvNZmvLHauqqrRkyRJt375djY2NSklJ0R133NGiMKMjKSsrk8VikdVqVUhIiNHjAHAAm82mO17dok3fndCYvlF69a6rjR4JAAC4gdZmgzaHLU9D2AI6pm+LyjXhpQ2qb7Tp7zOv1vV9ooweCQAAuLjWZoM2nUb45ptvatWqVfbPH374YXXu3FlDhw7V4cOH2/KQAGCIHpHBmtVclrFwJWUZAADAcdoUtp599ln76YKbN2/Wyy+/rMWLFys8PFwPPPCAQwcEAGebO7qnokL8dOTkKf31C8oyAACAY7QpbOXm5qpHjx6SpBUrVuiWW27Rz372My1atEgbNmxw6IAA4Gyd/Lz1+I39JEl/+pyyDAAA4BhtCludOnXSiRMnJEkff/yxxowZI0ny9/dXVVWV46YDgHYy6coYDb0iTDX1jXrqgz1GjwMAADqANr/P1uzZszV79mx98803uvHGGyVJu3fvVmJiokMHBID2YDKZ9GR6f3mbTVq755g+319k9EgAAMDNtSls/elPf1JaWpqK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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "losses = []\n", "\n", "etas = [1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1]\n", "\n", "for eta in etas:\n", " \n", " w = 0\n", " b = 0\n", "\n", " for epoch in range(100):\n", " \n", " mse = 0.0\n", " \n", " for i in range(N):\n", " # Prediction\n", " y = w * X[i] + b\n", " \n", " # Delta learning rule\n", " w += eta * (t[i] - y) * X[i]\n", " b += eta * (t[i] - y)\n", " \n", " # mse\n", " mse += (t[i] - y)**2\n", "\n", " losses.append(mse/N)\n", " \n", "print(losses)\n", "\n", "plt.figure(figsize=(10, 5))\n", "plt.plot(np.log10(etas), losses)\n", "plt.xlabel(\"eta\")\n", "plt.ylabel(\"mse\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**A:** The optimal value of `eta` is now 0.001, higher learning rates lead to worse mse. One explanation is that the *true* learning rate of LMS is `eta/N = 0.001`, not `eta=0.1`. When using 0.001 for the learning, the delta learning rule behaves exactly like LMS: " ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "mse: [276.95458754]\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "w = 0\n", "b = 0\n", "\n", "eta = 0.001\n", "\n", "losses = []\n", "for epoch in range(100):\n", " \n", " mse = 0.0\n", " \n", " for i in range(N):\n", " # Prediction\n", " y = w * X[i] + b\n", " \n", " # Delta learning rule\n", " w += eta * (t[i] - y) * X[i]\n", " b += eta * (t[i] - y)\n", " \n", " # mse\n", " mse += (t[i] - y)**2\n", "\n", " losses.append(mse/N)\n", " \n", "print('mse:', mse/N)\n", " \n", "plt.figure(figsize=(10, 5))\n", "plt.plot(losses)\n", "plt.xlabel(\"Epochs\")\n", "plt.ylabel(\"mse\")\n", "plt.show() " ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.9.13 ('base')", "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.9.13" }, "vscode": { "interpreter": { "hash": "3d24234067c217f49dc985cbc60012ce72928059d528f330ba9cb23ce737906d" } } }, "nbformat": 4, "nbformat_minor": 4 }