{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# La più semplice rete neurale, per trovare la retta che meglio modella un insieme di punti $(x,y)$\n", "Luca Mari, aggiornamento maggio 2024 \n", "\n", "Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 4.0 Internazionale. \n", "\n", "\n", "[i file di questa attività: [linear.ipynb](linear.ipynb), [linearutils.py](linearutils.py)]\n", "\n", "**Obiettivi**: comprendere il funzionamento di base di una (molto) semplice rete neurale, per come specificato in Python mediante un modulo di alto livello come `PyTorch`, e poi anche comprendendo come la rete è addestrata e poi funziona \"a basso livello\". \n", "**Precompetenze**: basi di Python; almeno qualche idea di analisi matematica.\n", "\n", "> Per eseguire questo notebook, supponiamo con VSCode, occorre:\n", "> * installare un interprete Python\n", "> * scaricare da https://code.visualstudio.com/download e installare VSCode\n", "> * eseguire VSCode e attivare le estensioni per Python e Jupyter\n", "> * ancora in VSCode:\n", "> * creare una cartella di lavoro e renderla la cartella corrente\n", "> * copiare nella cartella questo notebook e il file `linearutils.py` e aprire il notebook\n", "> * creare un ambiente virtuale locale Python (Select Kernel | Python Environments | Create Python Environment | Venv, e scegliere un interprete Python):\n", "> * installare i moduli Python richiesti, eseguendo dal terminale: \n", "> `pip install torch matplotlib ipympl`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Supponiamo di disporre di un insieme di dati $(x_i, y_i)$, e da questo di voler costruire una funzione $f$ in grado di prevedere un $y$ per ogni $x$ dato, dunque tale che $y = f(x)$. Per ogni $x_i$, indicheremo dunque con $y_i$ il dato nel training set e con $\\hat y_i$ il valore previsto dal modello.\n", "\n", "Ipotizziamo che il modello $f$ da costruire sia una funzione lineare, dunque geometricamente una retta $y = k_0 + k_1 x$, così che il modello è una funzione $y = f_{k_0, k_1}(x)$ a due parametri, $k_0$ e $k_1$, di cui occorre stimare i valori: si tratta di un problema noto in statistica come *regressione lineare*.\n", "\n", "Il problema è così semplice che, come è noto, potrebbe essere risolto per via analitica, con il metodo dei minimi quadrati, dunque assumendo che la retta migliore sia quella che minimizza la sua distanza euclidea con i dati $(x_i, y_i)$. Noi risolveremo però il problema per via numerica, costruendo una semplice rete neurale, da addestrare mediante i dati $(x_i, y_i)$, considerati come il *training set*.\n", "\n", "Importiamo prima di tutto i moduli Python necessari." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib widget\n", "from linearutils import get_params, plot, polyfit, train\n", "import torch\n", "import matplotlib.pyplot as plt\n", "from matplotlib.animation import FuncAnimation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Costruiamo sinteticamente il training set, che supponiamo generato dalla sovrapposizione di valori disposti su una retta e di valori casuali estratti da una distribuzione normale standard, dunque a media 0 e deviazione standard 1, e quindi rappresentiamolo graficamente." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "a888f7d81d6f4a8aad371f03caee64d2", "version_major": 2, "version_minor": 0 }, "image/png": "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Fbfuq2DHXblypQoLC9W3b1/NnDlTaWlpmjt3ri699FL94x//UL9+/eLy2ZL0zTffaOjQobrqqqt0zTXX6NVXX9Vdd92ls846S4WFhWHf/49//EOvv/66Jk+eLEkqKirSFVdcoTvvvFNPP/20Jk2apG+++UYPPvigbrrpJq1cudL/3nnz5mnChAk699xzVVRUpH379unxxx/Xhx9+qI0bN/qHRrz77rsaNWqU8vLyVFRUpPLyck2YMCEgqPG55ZZb/Mf97//+b23dulVPPvmkNm7cqA8//DCqjFWk91cw3333nQYNGqQdO3bov//7v5Wbm6sXX3wx4PwbYvPmzbr22mt16623aty4cZo7d65Gjx6tpUuXasiQIQH7Tpo0SW3bttV9992nyspKSdKLL76ocePGqaCgQLNnz9a3336rOXPmaODAgdq4caO6dOmia665RnfeeadeeeUV/x+qPq+88oouu+wynXzyyUHbt2zZMo0ZM0aDBg3S7NmzJUlffPGFPvzwQ/9/t8FEei9Ix/9NKigoUP/+/fXwww9r+fLl+t3vfqdu3brptttu8+8Xz3sBNmAAUZg7d64hyfjkk09C7uN2u42zzz7b//zbb7+ts8/LL79sSDI++OAD/7aHHnrIkGRs3bq1zv6dO3c2xo0bV2/bFi9ebEgyHnzwQf+277//3rjgggsMScbcuXOjblMwzz//vCHJeOSRR+q8VlNTYxiGYbz33nuGJOO9994LeH3r1q112jJz5kwj3H+K33//vdG1a1ejc+fOxjfffBP0Mw3DMPLz843s7GyjvLzcv+3//b//Z6SlpRljx471b3O73cbkyZPr/cxhw4YZnTt3rrPdd26nnHJKnesY6lx8982J3+1FF11kXHTRRWGPW1NTY5x22mlGQUFBwLl+++23RteuXY0hQ4bUex7BPvvEzzvxO7rooosMScaf//xn/7aqqirD4/EYo0aNqvdzDMMwJBnp6ekBn/Xss88akgyPx2NUVFT4t8+YMSOgXUePHjWys7ONnj17Gt99951/vzfffNOQZNx3333+bfn5+UZOTo5x8OBB/7Z3333XkBTwnf3jH/8wJBl/+ctfAtq5dOnSOttrfx/B7tVI769gHnvsMUOS8corr/i3VVZWGqeeemqd72HcuHFB773aOnfubEgy/vrXv/q3eb1eIycnJ+DfIN89MHDg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ohHPewH2QAYQDfLOO+/oyy+/1Pfff699+/Zp5cqVWrZsmTp37qzXX3/dP3A5KytLF154oR588EEdO3ZM7du317vvvqutW7fWOWbfvn0lSb/4xS903XXXqXHjxho+fHjExVqHDx+u888/X3fffbe2bdvmrwdWO4iJpk3BjB07Vn/+8581ffp0rVu3ThdccIEqKyu1fPlyTZo0SSNGjJDb7dbo0aP1xBNPyOVyqVu3bnrzzTcbPM4mLS1Nc+bM0fDhw5Wfn68JEyYoJydHX375pT777DP9/e9/l3S8m7SwsFADBgzQzTff7C/T4Xa7NWvWLEnHawB26NBBV199tXr37q0WLVpo+fLl+uSTT/S73/3O/5l9+/bVwoULNX36dJ177rlq0aJF2GzHZZddpk6dOunmm2/WHXfcoUaNGun5559X27ZttWPHjgaf+x//+EcVFhaqR48emjBhgtq3b6/du3frvffeU1ZWlt54442Q7+/Ro4fOO+88zZgxQwcOHFCrVq20YMECff/99w1qT6I0btxYs2fP1oQJE3TRRRdpzJgx/tIfXbp00c9//nP/vkVFRRo2bJgGDhyom266SQcOHNATTzyhHj16BATJF110kW655RYVFRWpuLhYl112mRo3bqzNmzdr0aJFevzxxwMmZYQTyf0VysSJE/Xkk09q7NixWr9+vXJycvTiiy+qWbNmUV+rE51++um6+eab9cknn6hdu3Z6/vnntW/fPs2dOzfse7OysjRnzhzdeOON6tOnj6677jr/vfrWW2/p/PPPD/hDLzs7W5dccokeeeQRHTp0SNdee23Yz/jJT36iAwcO6NJLL1WHDh20fft2PfHEE8rPz9eZZ54Z9D3R3AuRive9ABtI2fxjWJKvnILv0aRJE8Pj8RhDhgwxHn/88YAyFz67du0yrrzySqNly5aG2+02Ro8ebezZs8eQZMycOTNg3wceeMBo3769kZaWFlAiI5IyMIZhGOXl5caNN95oZGVlGW6327jxxhuNjRs31ilnEU2bgvn222+NX/ziF0bXrl2Nxo0bGx6Px7j66quN0tJS/z5ff/21MWrUKKNZs2bGySefbNxyyy1GSUlJg8rA+KxevdoYMmSIkZmZaTRv3tzo1auX8cQTTwTss3z5cuP88883mjZtamRlZRnDhw83Pv/8c//rVVVVxh133GH07t3bf5ze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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "z0, z1 = 10, 1.5 # i \"valori veri\", e supposti ignoti e da stimare, dei parametri della retta e dunque del modello\n", "\n", "x = torch.arange(-5, 5, 0.1).view(-1, 1)\n", "y = z0 + z1 * x + 2 * torch.randn(x.size())\n", "plot(x, y, 'Dati da cui costruire un modello di previsione')\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "33b3e65f02a1424a9510028868ba84bf", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABvYElEQVR4nO3deVxU5f4H8M+ACMgyuLG54r4gmKaIaZppuGSauVFdt8pbaWXeumWbmRW35d7sZml1b+rvmkpaapqZa6apmQsqbimBuIGCMiMoi8z5/XGcGQZmYIbZzvJ5v16+imfOnHnOYWC+PM/3+T4aQRAEEBEREZFq+Hi7A0RERETkWQwAiYiIiFSGASARERGRyjAAJCIiIlIZBoBEREREKsMAkIiIiEhlGAASERERqQwDQCIiIiKVYQBIREREpDIMAImIiIhUhgEgERERkcowACQiIiJSGQaARERERCrDAJCIiIhIZRgAEhEREakMA0AiIiIilWEASERERKQyDACJiIiIVIYBIBEREZHKMAAkIiIiUhkGgEREREQqwwCQiIiISGUYABIRERGpDANAIiIiIpVhAEhERESkMgwAiYiIiFSGASARERGRyjAAJCIiIlIZBoBEREREKsMAkIiIiEhlGAASERERqQwDQCIiIiKVYQBIREREpDIMAImIiIhUhgGgg1q2bIlJkyZ5uxtu9fPPP0Oj0eDnn392+LmLFy+GRqNBVlaWqa1///7o37+/y/pH8ubM+8teWVlZ0Gg0WLx4sdteozYmTZqEli1bersbHmX8nbB///4aj/XG74pz584hICAAv/76q0U/YmNjPdoPJdJoNJg+fbq3uyE5+fn5CAoKwoYNG7zaD9kGgMZfKsZ/AQEBiI6ORlJSEv7973/j+vXrtT737t278eabb6KgoMB1HSZSoGXLlmHevHmqfX1rLl68iDfffBNpaWm1Pkf//v1Nf2hOmjSJf0DZoWLA37JlS7z55pt2Pe+tt95CQkIC7rrrLodfc9OmTXjssccQGxsLX19flwf3hYWFmD17NgYPHowGDRrU6o+agoICTJ06FY0bN0ZQUBDuueceHDx40Oqx33//Pbp164aAgAA0b94cs2fPxq1bt1xwJTX773//i44dOyIgIABt27bFJ5984rJzT5o0ySJeMP7r0KGD3eew997Yc78bNmyIxx9/HK+//rrT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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k1 = 1 # i parametri stimati \"a occhio\" della retta e dunque del modello\n", "k0 = 5\n", "\n", "plot(x, y, f'Dati e modello con parametri stimati \"a occhio\" (k1={k1:.2f}, k0={k0:.2f})', k0=k0, k1=k1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ovviamente, potremmo provare a stimare \"a occhio\" i valori dei parametri..." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Come ricordato, sotto l'ipotesi dei minimi quadrati il problema ha una soluzione algebrica, per cui possiamo trovare immediatamente i valori dei due parametri $k_0$ e $k_1$ della retta, e quindi disegnare la retta." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "99ec20694d784d358b9c10030f5c8b9f", "version_major": 2, "version_minor": 0 }, "image/png": "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65CpozmAW7ZsoU+fPlSsWJFy5crRtGlTXnvtNbtr1qxZQ8eOHSlXrhwVKlTgpptu4vfff3fqfn3++ed069YNk8lU6LXz58+nTJkytv8NANSqVcutvd6RkZFUqlSpxM9jGAZpaWkYhpHv73fv3s3y5csZM2YMlStXJiMjg+zs7BK/bn7tuP/++wkNDeWzzz4DLH+z2dnZPPzww7brTCYTDz30EIcPHy52r6fVd999B5CnJ3HgwIEYhsGHH35Y6OOrVq1Kt27dbOeCgoIYMGAAKSkprFu3Ls9jCrvfACEhIXTp0oUlS5YU5e2IH1MAFLe76667APjmm29s51auXMmff/7JsGHDeP311xk4cCCLFi2iT58+tn/EbrnlFgYNGgTAq6++ynvvvcd7771H1apVi/T6DzzwAGPGjKF9+/a89tprDBs2jPfff59evXo59aWTk5ND7969qVWrFjNmzKBOnTqMHDmSefPmkZiYyLXXXstLL71EZGQkd999N8nJybbHHj9+nOuuu46vv/6ahx9+mOeff56MjAxuvPFGFi9ebLvu4sWLdO/ena+//pqRI0fy9NNP89133zF27Ng87VmzZg2dOnUiLS2NSZMm8cILL3D27Fm6detW5OGzixcv0qVLF9577z3uvPNOZs6cSXR0NEOHDs0TfPIzb948ypcvz6hRo3jttddo2bIlEydOZPz48XmuPXPmDImJiTRr1oxXXnmFhg0bMm7cOJYvX267Ji0tjf/85z906dKFl156icmTJ3PixAl69erFjh07ivTeZs2aRc2aNWnYsKHtb+fpp592eP3KlSvp1KkTu3bt4rHHHuOVV16ha9eufPXVV7ZrVq1aRa9evfjrr7+YPHkyo0aNYuPGjbRv377QxSdHjhzh4MGDtGjRotC2v/322wwbNozx48czc+ZMp9+zVXZ2NidPnnTqx2w2F/n5C1OvXj2io6OJjIxk8ODBHD9+3O73q1atAqB69ep0796diIgIIiIi6N27t1OLeJyRk5PD0KFD+e9//8vixYu55ZZbAPjpp58oV64cV199td31rVu3tv3e6vz5807dw9TUVNtjrP/RFhERYff8ZcuWBWDbtm0FtjszMzPPYwt7fGH326ply5bs3LmTtLS0AtsgAcKDvY/iJwoaAraKjo42rrnmGttxfsPBH3zwgQEY69evt50raAg4Pj7eGDJkSIFt++677wzAeP/99+3Or1ixIt/zuQ0ZMsQAjBdeeMF27syZM0ZERIRhMpmMRYsW2c7v3r07z7Dk448/bgDGd999Zzt37tw5o27dukadOnVsw3mzZs0yAOOjjz6yXZeenm40aNDAbhjObDYbV1xxhdGrVy+7YcQLFy4YdevWNXr27Gk758wQsPV1FyxYYDuXlZVltGvXzihfvryRlpZW4P3J73N84IEHjLJlyxoZGRl2rwsY//3vf23nMjMzjZiYGOPWW2+1nbt06ZLdEJdhWO539erVjXvuucfufO57nd/7dTRMmnto/dKlS0bdunWN+Ph448yZM3bXXn6fmzdvblSrVs02TGoYhvHzzz8bQUFBxt13353ndS63atUqAzC+/PLLPL+7fAj4tddeM0wmkzF16tQCn6+gIWDr+3Pmx9H0iuIMAc+aNcsYOXKk8f777xuffPKJ8dhjjxllypQxrrjiCiM1NdV23aOPPmoARuXKlY3ExETjww8/NGbOnGmUL1/eqF+/vpGenu70a1pdPgScnZ1t3HHHHUZERITx9ddf213Xt29fo169enken56ebgDG+PHjbees//sv7Ofyz+HTTz81AOO9996ze/65c+cagNG4ceMC38cjjzxiBAUFGfv377c7P3DgQAMwRo4caTvn7P22WrhwoQEYW7ZsKbANEhi0CERKRfny5e1WA1/+X7gZGRmcP3+etm3bArB9+3Y6duzoktf9+OOPiY6OpmfPnpw8edJ2vmXLlpQvX561a9fmO6k6t/vuu8/2/1eoUIGrrrqKffv2MWDAANv5q666igoVKvDnn3/azi1btozWrVvToUMH27ny5ctz//33M2HCBHbt2kXjxo1ZtmwZsbGx3HbbbbbrypYty/3332/XC7hjxw727t3LM888k2cRQPfu3Xnvvfcwm81ODxMuW7aMmJgYW08rWIaKHn30UQYNGsS6desKLE9y+ed47tw5MjMz6dixI2+99Ra7d++mWbNmdu978ODBtuPQ0FBat25td7+Cg4NtE9jNZjNnz57FbDZz7bXXsn37dqfeU3H89NNPJCcn8+qrr+ZZbGQdrj127Bg7duxg7NixdsOkTZs2pWfPnixbtqzA17B+XhUrVnR4zYwZMxg3bhwzZsywG/otqmbNmrFy5Uqnro2JiSn26+T22GOP2R3feuuttG7dmjvv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bfjw4bzxxhvcfffdbNu2jdjYWN577z1b6QeroKAg/vOf/9C7d28aNWrEsGHDqFGjBkeOHGHt2rVERUXx5ZdfOt2++++/n7feeouhQ4eybds26tSpwyeffML333/PrFmziIyMdPjY6667jooVKzJkyBAeffRRTCYT7733XomGwG+44QY+++wzbr75Zvr27UtycjJz584lISEh38BbmJYtWzJnzhymTZtGgwYNqFatml19NaugoCDmzJlDv379aN68OcOGDSM2Npbdu3fz22+/8fXXXwOWoffevXvTrl077r33Xi5evMjrr79OdHS03b7Ejtx0000sXrw4T0/v5Ro0aMA333xDly5d6NWrF2vWrCEqKgqA9evXs379esDy5Z+ens60adMAy+4m1p7YkswBtD7fb7/9Blh68Dds2ADAM888Y7vu7rvvZt26dXafd3x8PHfccQdNmjQhPDycDRs2sGjRIpo3b84DDzxguy4sLIyZM2cyZMgQOnXqxF133cXBgwd57bXX6Nixo61kC1h6mrt27cqkSZOcusdW/fv359133+Xuu+8mKiqKt956C7CE7Mcff5yZM2eSnZ1Nq1at+Pzzz/nuu+94//337YbDizMHECz/4RkXF0dCQgJpaWm88847/PnnnyxdutTuf1Nbt27N970lJCRw++23U7t2bZKTk5kzZw6VKlVi7ty5dq/j7P0GS2mgdevW2dU/lABX+guPxd9Yy29Yf0JDQ42YmBijZ8+exmuvvZZvKZHDhw8bN998s1GhQgUjOjrauP32242jR4/mu7vD1KlTjRo1ahhBQUF2ZSucKQNj9fbbbxstW7Y0IiIijMjISKNJkybG2LFjjaNHjxb4uCFDhhjlypXLc75z585Go0aN8pzPb0eHpKQk47bbbjMqVKhghIeHG61btza++uqrPI89cOCAceONNxply5Y1qlSpYjz22GO2cjW5S3H89NNPxi233GJUrlzZCAsLM+Lj440BAwbY7R7g7E4gx48fN4YNG2ZUqVLFCA0NNZo0aWK8++67Bd4Xq++//95o27atERERYcTFxRljx441vv766zxtdnS/hgwZYsTHx9uOzWaz8cILLxjx8fFGWFiYcc011xhfffVVnusMw7kyMCkpKUbfvn2NyMhIu3IdjnZY2bBhg9GzZ08jMjLSKFeunNG0aVPj9ddft7tm1apVRvv27Y2IiAgjKirK6Nevn7Fr1y6n7tf27dvzlAUyjPz/brZs2WJERkYanTp1spXbse78kN9PYbuiOMvR8+f+urCW9rncfffdZyQkJBiRkZFGSEiI0aBBA2PcuHEOywl98MEHRrNmzYywsDCjevXqxsiRI/Nc++WXXxqAMXfu3ALb7WgnkDfffNMAjNGjR9vO5eTk2P7OQkNDjUaNGtmVQiqpl156yWjYsKERHh5uVKxY0bjxxhuNn376Kc911r/D3J/dwIEDjVq1ahmhoaFGXFyc8eCDDxrHjx/P8/ii3O/ly5cbgLF3715XvU3xcSbDcOOMdRERsdO9e3fi4uJsc2OlYGPHjuWDDz5g3759+ZZvEef0798fk8lkV4BeApsCoIhIKdqyZQsdO3Zk7969BS6yEYtWrVoxfPhw7r//fk83xWf9/vvvNGnShB07dhRY6kgCiwKgiIiISIDRKmARERGRAKMAKCIiIhJgFABFREREAowCoIiIiEiAUQAUERERCTDaCaQEzGYzR48eJTIyssR71oqIiEjpMAyDc+fOERcXZ7cPeiBRACyBo0ePUqtWLU83Q0RERIrh0KFD1KxZ09PN8AgFwBKw7ul46NAh216dIiIi4t3S0tKoVatWgfud+zsFwBKwDvtGRUUpAIqIiPiYQJ6+FZgD3yIiIiIBTAFQREREJMAoAIqIiIgEGAVAERERkQCjACgiIiISYBQARURERAKMAqCIiIhIgFEAFBEREQkwKgQtIiIiLpFjNtiafJq/zmVQLTKc1nUrERwUuMWWvZkCoIiIiJTYip3HmPLlLo6lZtjOxUaHM6lfAomNYz3YMsmPhoBFRESkRFbsPMZDC7bbhT+AlNQMHlqwnRU7j3moZeKIAqCIiIgUW47ZYMqXuzDy+Z313JQvd5Fjzu8K8RQFQBERESm2rcmn8/T8Xc4AjqVmsDX5dOk1SgrlEwFw+vTptGrVisjISKpVq0b//v3Zs2eP3TUZGRmMGDGCypUrU758eW699VaOHz9e4PMahsHEiROJjY0lIiKCHj16sHfvXne+FREREb/y1znH4a8410np8IkAuG7dOkaMGMHmzZtZuXIl2dnZXH/99aSnp9uueeKJJ/jyyy/5+OOPWbduHUePHuWWW24p8HlnzJjBv/71L+bOncuWLVsoV64cvXr1IiNDf6QiIiLOqBYZ7tLrpHSYDMPwuUH5EydOUK1aNdatW0enTp1ITU2latWqLFy4kNtuuw2A3bt3c/XVV7Np0ybatm2b5zkMwyAuLo4nn3yS0aNHA5Camkr16tWZN28eAwcOLLQdaWlpREdHk5qaSlRUlGvfpIiIiA/IMRt0eGkNKakZ+c4DNAEx0eFsGNfNa0rC6PvbR3oAc0tNTQWgUqVKAGzbto3s7Gx69Ohhu6Zhw4bUrl2bTZs25fscycnJpKSk2D0mOjqaNm3aOHyMiIiI2AsOMjGpXwJgCXuXsx5P6pfgNeFPLHwuAJrNZh5//HHat29P48aNAUhJSSE0NJQKFSrYXVu9enVSUlLyfR7r+erVqzv9mMzMTNLS0ux+REREAl1i41jmDG5BTLT9MG9MdDhzBrdQHUAv5HOFoEeMGMHOnTvZsGFDqb/29OnTmTJlSqm/roiIiLdLbBxLz4QY7QTiI3yqB3DkyJF89dVXrF27lpo1a9rOx8TEkJWVxdmzZ+2uP378ODExMfk+l/V87pXCBT1mwoQJpKam2n4OHTpUgncjIiLiX4KDTLSrX5mbmtegXf3KCn9ezCcCoGEYjBw5ksWLF7NmzRrq1q1r9/uWLVsSEhLC6tWrbef27NnDwYMHadeuXb7PWbduXWJiYuwek5aWxpYtWxw+JiwsjKioKLsfEREREV/jEwFwxIgRLFiwgIULFxIZGUlKSgopKSlcvHgRsCzeuPfeexk1ahRr165l27ZtDBs2jHbt2tmtAG7YsCGLFy8GwGQy8fjjjzNt2jS++OILfv31V+6++27i4uLo37+/J96miIiISKnwiTmAc+bMAaBLly525999912GDh0KwKuvvkpQUBC33normZmZ9OrVizfffNPu+j179thWEAOMHTuW9PR07r//fs6ePUuHDh1YsWIF4eGqVSQiIiL+yyfrAHoL1RESERHxPfr+9pEhYBERERFxHQVAERERkQCjACgiIiISYBQARURERAKMAqCIiIhIgFEAFBEREQkwCoAiIiIiAUYBUERERCTAKACKiIiIBBgFQBEREZEAowAoIiIiEmAUAEVEREQCjAKgiIiISIBRABQREREJMAqAIiIiIgFGAVBEREQkwCgAioiIiAQYBUARERGRAFPG0w0QERHxtByzwdbk0/x1LoNqkeG0rluJ4CCTp5tVatz5/gP93norBUAREQloK3YeY8qXuziWmmE7FxsdzqR+CSQ2jvVgy0qHO99/oN9bb6YhYBERCVgrdh7joQXb7QIKQEpqBg8t2M6Kncc81LLS4c73H+j31tspAIqISEDKMRtM+XIXRj6/s56b8uUucsz5XeH73Pn+A/3e+gIFQBERCUhbk0/n6Z26nAEcS81ga/Lp0mtUKXLn+w/0e+sLFABFRCQg/XXOcUApznW+xp3vP9DvrS9QABQRkYBULTLcpdf5Gne+/0C/t75AAVBERAJS67qViI0Ox1FBEhOWFaut61YqzWaVGne+/0C/t75AAVBERAKOtTZd78YxGJAnqFiPJ/VL8NuadcFBJib1SwBc//7d+dziGibDMLQEp5jS0tKIjo4mNTWVqKgoTzdHRESckF9tuiATXL4gNZBq1QViHUB9fysAloj+gEREfIu1Np2jL75729ehR0JMwO1WEWg7gej7WzuBiIhIgCioNh1YhiaX7Uzhqb6BNzQZHGSiXf3KPvfcUnyaAygiIgFBtel8R47ZYFPSKZbsOMKmpFMqGO0G6gEUEZGAoNp0vsFb5w36G/UAiohIQFBtOu+n/YNLj08EwPXr19OvXz/i4uIwmUx8/vnndr83mUz5/sycOdPhc06ePDnP9Q0bNnTzOxEREU9RbTrvpv2DS5dPBMD09HSaNWvG7Nmz8/39sWPH7H7eeecdTCYTt956a4HP26hRI7vHbdiwwR3NFxERL6DadN4t9xzNRqZkFoZMo6bpL0BzNF3NJ+YA9u7dm969ezv8fUxMjN3xkiVL6Nq1K/Xq1SvwecuUKZPnsSIi4r8SG8cyZ3CLPHPMYjTHzOOscy+jOc/oMh9xZ/BqgkwGY/mQR7MfyXOdlIxPBMCiOH78OEuXLmX+/PmFXrt3717i4uIIDw+nXbt2TJ8+ndq1azu8PjMzk8zMTNtxWlqaS9osIiKlJ7FxLD0TYryuNl2gq1Y+lDuC1zK2zCIqm84BsCTnOl7I/of9dZqj6RJ+FwDnz59PZGQkt9xyS4HXtWnThnnz5nHVVVdx7NgxpkyZQseOHdm5cyeRkZH5Pmb69OlMmTLFHc0WEZFSpNp0XubIdtquHUO7kB8B2GOuyaRLQ9lsTrBdYsLSU6s5mq7hczuBmEwmFi9eTP/+/fP9fcOGDenZsyevv/56kZ737NmzxMfH889//pN7770332vy6wGsVatWQFcSFxGRwFXiXT4unIbVz8G2eYDBpTLlePFif+bn9CL7sj4q6zPOGdzCJcP02gnEz3oAv/vuO/bs2cOHH35Y5MdWqFCBK6+8kn379jm8JiwsjLCwsJI0UURExC+UqF6fOQe2z7eEv4tnLOea3kGZns9x7QGDpZqj6XZ+FQD/7//+j5YtW9KsWbMiP/b8+fMkJSVx1113uaFlIiIi/sPRnsrWen0F9tQd3gbLnoSjP1mOqzWCvi9D/HUAJDZGczRLgU8EwPPnz9v1zCUnJ7Njxw4qVapkW7SRlpbGxx9/zCuvvJLvc3Tv3p2bb76ZkSNHAjB69Gj69etHfHw8R48eZdKkSQQHBzNo0CD3vyEREREfVVi9PhOWen09E2LsQ1v6KVg9Gba/Z7kyLAq6PgWthkOwfRzRHE3384kA+OOPP9K1a1fb8ahRowAYMmQI8+bNA2DRokUYhuEwwCUlJXHy5Enb8eHDhxk0aBCnTp2iatWqdOjQgc2bN1O1alX3vREREZF8lHguXSkqyp7K7epXtgz3bnsXVk+FjLOWi5oNgh5TILJ6qbRZ8vK5RSDeRJNIRUSkpHxt79slO47w2KIdhV732sDm3FT5CCwbDcd+tpys3sQy3Fu7rXsbWQh9f/tID6CIiIg/KtFcOg9xpg5fZVJp9+tESPrEciIsGro9A9fek2e4VzzDJ7aCExER8Te+uvdtQXsqB5PDkOCvWRs+mmrW8Nd8MDyyDdrcr/DnRRQARUREPKAoc+m8iaM9lVua9vBl6DNMCZlPFOkQ0xTuXQn9Z0N5za/3NoriIiLiUr60oMGTnN3T1hv3vr18T+Xs1ONMCFnIrcHfAZAVEk3o9ROh5TAICvZwS8URBUAREXEZX1vQ4EnO7mnrrXvfJl5dlevP7cG85nnKZJ/HwIRxzV2E9pgM5VTCxdtpCFhERFzCuqAh97CmdUHDip3HPNQy71TQXDqwDK/Geuvet/u/h7c6EfT1BMpkn4e4azDdt5qgm15X+PMRCoAiIlJivrqgwZMczaW7/HhSvwTvGj4/lwKfDod5feCv3yCiItwwC+5bDTVberp1UgQKgCIiUmK+uqDB06xz6WKi7Yd5Y6LDvasETE42bHwDXr8Wfv0IMFnm+D2yHa7VXD9fpDmAIiJSYr68oMHTEhvHevfet8nfwbIxcOJ3y3GNltDnZajRwrPtkhJRABQRkRLz9QUN+SnN1cxeufdt2lH45hnY+anluGxl6DHZUtcvSAOIvk4BUERESsy6oCElNSPfeYAmLMOaXrmgIR8BvZr5UhZsmQPrZkDWeTAFWXbw6Po0lPWNz08KpwgvIiIl5pMLGhwI6NXMf34Lc9vDyomW8FezFQxfC31fUfjzMwqAIiLiEj6zoKEAAbuaOfUIfDwU/nsTnPwDylaBm96Ee76BuOaebp24gYaARUTEZbx+QUMhirKa2evm7BXHpSzYPBvWzYTsdMtwb6vh0PUpiKjg6daJGykAioiIS3nlggYnBdRq5n2rYflYOLXPclyrLfSZCbFNPdsuKRUKgCIiIn/zx9XMeZw9BF8/Bb9/YTkuVw2unwpN7wCTb/TUSskpAIqIiPzN31Yz27mUCRtfh/Uvw6WLYAqG1vdD1wkQHp3n8txlcFrGV2TbgTM+ObQveSkAioiI/M26mvmhBdsxgV0I9LXVzHb2rrIM955OshzXvg76vgzVG+V7eX5lcIJMcPnal4Api+OnTIZh+NlSptKTlpZGdHQ0qampREVFebo5IiLiIn5TB/DMActw7+6vLMflq8P106DJ7Q6He61lcAoLB9ZHF3WFd2kW2HZE39/qARQREcnD11czk50BG/8F370ClzIsw71tH4LO4yDcceApqAxObgaWEDjly130TIhx6t74TbD2AwqAIiLilTzdU+Szq5n/+BqWj4MzyZbjOh0tq3urXQ0UfF8LK4OTW1HK4jjqWbQW2PaVWpH+QgFQRES8jnqKiuF0MqyYAH8stxxHxlqGexvfahvuLey+Fre8TWGPK6zAdlF7EqXktBOIiIh4lYDeiq04si/C2ukwu40l/AWVgesehZE/QJPb7MJfYfe1uOVtCntcUQpsS+lQABQREa8RsFuxFYdhwO5lluC37kXIyYS6neGhjZa6fmGRtkudva8t4ysSGx2eZz9nR0xYehALK4sTUAW2fYQCoIiIeA31FDnpVBIsHACLBsHZAxBVA26fB3cvgapX5bnc2fu67cAZJvVLACg0BBalLE5AFNj2MQqAIiLiNdRTVIisC7BmGrzZFvZ+A0Eh0OEJGLEVGt3ssLRLUe5rYuNY5gxuQUy0fRjLnfFiosOdXrhhLbDtKCY625MorqNFICIi4jXUU+SAYVhq+a14ClIPWs7V7wa9Z0CVKwp9eFHva35lcEqyE4jfFtj2YQqAIiLiNfx6K7biOrnPsotH0mrLcVRNSJwOV/dzeu/e4tzX/MrglKQsjrVnMfcq5Bit7vYIBUAREfEa6im6TFa6Zd/eTW9AThYEh1pW93Z8EkLLFumpvOW++nyBbT+ireBKQFvJiIi4h7N1AD1dLNotDAN2LYGvn4a0w5ZzDXpC75egcv0SPbXqK1ro+1sBsET0ByQi4j6FhTu/DDMn/oDlY+DPby3HFWpDr+nQsK/Tw72F8cvQXET6/lYALBH9AYmIeIajbcWsMcbnthXLPA/rZ8Km2WDOhuAw6PC4ZYVvSISnW+d39P3tI2Vg1q9fT79+/YiLi8NkMvH555/b/X7o0KGYTCa7n8TExEKfd/bs2dSpU4fw8HDatGnD1q1b3fQORETEVfyqWLRhwM7P4I1W8P0sS/i7MhFGbIauTyn8idv4RABMT0+nWbNmzJ492+E1iYmJHDt2zPbzwQcfFPicH374IaNGjWLSpEls376dZs2a0atXL/766y9XN19ERFzIb4pF/7Ub/nsjfDIMzh2FCvEwaBH840OoVM9lL5NjNtiUdIolO46wKemUVwZjX2ijv/GJVcC9e/emd+/eBV4TFhZGTEyM08/5z3/+k+HDhzNs2DAA5s6dy9KlS3nnnXcYP358idorIuLtfHkemM8Xi848B+tegs1zwHwJyoRDh1HQ/lGX9/j5wjxJX2ijP/KJAOiMb7/9lmrVqlGxYkW6devGtGnTqFw5/3pFWVlZbNu2jQkTJtjOBQUF0aNHDzZt2lRaTRYR8Qhf/8L12WLRhgE7P7Ws7j2fYjl3VR9LTb+KdVz+co7mSaakZvDQgu1eMU/SF9ror/wiACYmJnLLLbdQt25dkpKSeOqpp+jduzebNm0iODg4z/UnT54kJyeH6tWr252vXr06u3fvdvg6mZmZZGZm2o7T0tJc9yZExOv4ci+ZI/7whVvUosZe8Tke3wXLxsCBDZbjinUtu3hceb1LX8b6XlNSLzJ16e8O50masMyT7JkQ47G/6cLmcnpDG/2ZXwTAgQMH2v7/Jk2a0LRpU+rXr8+3335L9+7dXfY606dPZ8qUKS57PhHxXr7eS5Yff/nCLUpRY49/jhmp8O1LsGUuGDlQJsJSyPm6RyDEtT2U+b1XRy6fJ1mS3T1KoihzOT3VRn/mE4tAiqpevXpUqVKFffv25fv7KlWqEBwczPHjx+3OHz9+vMB5hBMmTCA1NdX2c+jQIZe2W0S8g7WXLPeXk7WXbMXOYx5qWcn4zeIJ/retWEy0fYiKiQ639WJ69HM0DPj5Q3j9Wtg82xL+Gt4AI7dC5zFOhb+iLIxw9F4L48l5kj4/l9PH+UUPYG6HDx/m1KlTxMbm/193oaGhtGzZktWrV9O/f38AzGYzq1evZuTIkQ6fNywsjLCwMHc0WUS8hL/0kuXH375wC9pWzKOfY8pOy3DvwY2W40r1oc8MaNDD6acoyk4om5NOMf7TX/N9r4Xx5DxJn53L6Sd8IgCeP3/erjcvOTmZHTt2UKlSJSpVqsSUKVO49dZbiYmJISkpibFjx9KgQQN69eple0z37t25+eabbQFv1KhRDBkyhGuvvZbWrVsza9Ys0tPTbauCRSQw+fOwlD9+4QYHmfL9HDzyOV48C99Oh63/tvT4hZSFTqOh3Ugo43zngbPzNIsy5Jtb7nmSnlDUuZziWj4RAH/88Ue6du1qOx41ahQAQ4YMYc6cOfzyyy/Mnz+fs2fPEhcXx/XXX8/UqVPteuuSkpI4efKk7fiOO+7gxIkTTJw4kZSUFJo3b86KFSvyLAwRkcDib71klwuUL9wcs8H3+04WfiEu+hzNZvhlEaycCOknLOcSboLrn4cKtYr0VM72XJrNMGJh3pDojNzzJD2lKHM5xfW0FVwJaCsZEf+zKekUg/69udDrPhje1ud6AOF/vUuQ/xeuL6wCLkhRe8VK/Dke+wWWjYZDWyzHla+APjOhfteCH+eAs39/lcqFcjo9q1iv4W2LmTyxUEff3z7SAygiUlr8vZfMungi9xdujJeFguJwNHSanxJ/jhfPwJrn4cf/A8MMIeWg81ho+zCUCS3ec+J8j2RRw1+lciE8e0MjYqK8r5xRQXM5xX0UAEVELhMIw1L++IVb0NBpbiX6HM1m2PE+rJoMF/4eZm50C1w/DaJrFO258uHq+ZfWd/fCzU28Otw7mssp7qMAKCKSiz/3kln52xduYYs+Llfsz/HoT5bVvYd/sBxXbWgp5lyvcxFb65gzPdAVy4VwOj3bqefzp79ZcS0FQBGRfPhjL5k/c3bodGTX+jzR86qifY4XTsOaqfDju4ABoeWhy3ho8yAEhxSvwQ440wM97abGTF36u8OQCFAhIoTZd7agbb3K+puVfCkAiog44G+9ZP7M2aHT9g2qOh+IzGb46b+wagpc/Ls4dpPboedUiHJfj5ozPdBBQaYCQ+KLtzahfYMqbmuj+D4FQBER8XkuX7xzZBssHQ1HLSumqZZgWd1bp4OrmlygwnqgA2GagriXysCUgJaRi4h4D5eUuEk/BaunwPb/Wp4lLAq6TIDWw1063JtjNlwyvcBVzxNo9P2tAFgi+gMSEfEuxa4pZ86BbfMsc/0unrGcazoQej4Hka7dIMATde/Enr6/FQBLRH9AIiLep8i9Yod/hKVPwrEdluPqjaHPyxDfzuVtc1Sr0F8KcfsKfX9rDqCIiPgZpxfvpJ+EVZPgpwWW47Ao6Po0tLoPgl3/9ejsNm89E2I0jCtupwAoIiKBxZwDP75jGe7NSLWca34n9JgM5au57WULq1VoAMdSM9iafFqrz8XtFABFRCRwHNwCy56ElF8txzFNoM8rULuN21/a2VqFzl4nUhIKgCIi4v/On7AM9+5433IcHg3dnoVr74Gg4FJpgrO1Cl29HZxIfhQARUTEf+Vcgh//D9Y8D5l/D/deMxh6TIFyri+UXNACFJfXKhQpAQVAEREforpvRXBgo2Xv3uM7LcexzSzDvbVaueXlCivv4sw2b5P6JTj8PPXZiyupDEwJaBm5iJQm1Y9z0rnjsHIi/LLIchxeAXpMghZD3DbcW5TyLsX5HPXZu5a+vxUAS0R/QCJSWlQ/zgk5l2Dr2/DtdMhMA0zQ4m7oPgnKuW9VbY7ZoMNLaxyu8LUO7W4Y183WY1eU3jx99q6n728NAYuIeD3Vj3PC/g2W4d6/dlmO466xDPfWbOmyl3AU2opT3sXZWoX67MVdFABFRLyc6scVIO0YrHwWfv3YchxRyTLce81dLh3uLWgINvOS2annKE55F3324i4KgCIiXk714/KRkw1b5sK3L0LWecAE1w6zlHYp69pVtI6GYFNSM3howXYe73GFU89TnPIu+uzFXRQARUS8nOrH5ZK83jLce2K35bjGtdBnJtRo4fKXcmYI9oOtB4mJCud4Wv7lXQAqlQshJS2DTUmnirR6V5+9uIsCoIiIl1P9uL+lHoFvnoHfPrMcl61s2b6t+WAICnLLSzozBJuSlskTPa5k1qo/8pR3sTqdns0TH+4AirZ6V5+9uIt7/hcjIiIuY60fB/9b+WnlTP04b5RjNtiUdIolO46wKekUOeYCClJcyoINs+CNVpbwZwqCVvfByB8tq3zdFP7A+aHVOlXKMmdwC2KiC++Jsw4dr9h5rNBr/fGzF++gHkARER+Q2DiWOYNb5FmIEOODteCKVNMuaS0sHwsn/7Ac12wNfV+2FHUuBUUZgm1XvzI9E2LYmnyalNSLTF36O6fTs/JcW9TVu/702Yv3UB3AElAdIREpbb6+G4TTNe1SD8PXT8GuJZZflK0CPZ+DZoPc2uOXm7XGX2FDsJfX+APYlHSKQf/eXOjzfzC8rdOrd339s/cm+v5WD6CIiE9xtn6cN3JmQcULX/zM9acXEvTdy5B94e/h3uHQ9SmIqFC6DYZib9/mjtW7vvzZi/dRABQRcTH11OSvsAUVHYJ+YUrGPILWpFhO1G5nWd0b06SUWpi/4gzBavWueDsFQBERF9KerY456u2qwQmeDVlAYvAPAGSEVSa8zwvQ9A4weUdwTmwca5vf50yw1+pd8XZaBSwi4iLW+W25e7mKsurTn+Xu7Qoji5HBi1kVNobE4B+4ZATxf5d680v/1dBsoNeEPyvrEOxNzWvQrn7lAnt1tXpXvJ0CoIiICxQ2vw0sqz4LLHfi56y9YiagS9BPrAgdx+iQj4kwZbHF3JAbsl7gP+WG0/KqOp5uqktYh45zl4aJiQ7/32IXEQ/RELCIiAtoz9bCBQeZeLFbFFlfPU/P4G0AHDcq8Hz2nXxpvg4wMcfPesWKOnQsUloUAEVEXEB7thYiOwO+f43OG/4JwRlcIph3LiXyr0s3c56yPjtP0pkFP1q9K95IAVBExAW06rMAe1bAinFwZr/luE5HTL1n0uR8NZ734V4xLfgRX+YTcwDXr19Pv379iIuLw2Qy8fnnn9t+l52dzbhx42jSpAnlypUjLi6Ou+++m6NHjxb4nJMnT8ZkMtn9NGzY0M3vRET81eXz2/JjwhIOAmrV5+k/YeEd8MEdlvAXGQu3vQNDviS4+tV2CyoA57eG8wJa8CO+zid6ANPT02nWrBn33HMPt9xyi93vLly4wPbt23n22Wdp1qwZZ86c4bHHHuPGG2/kxx9/LPB5GzVqxKpVq2zHZcr4xO0QEQ9yNORX3ILBfin7Imx41bJ/b04mBJWBdiOg01gIK5/ncmd70rylvqIzBa2d3eZNxFN8IvH07t2b3r175/u76OhoVq5caXfujTfeoHXr1hw8eJDatWs7fN4yZcoQExPj0raKiP8qLKh4y56tHgtKhgF7lsGK8XD2oOVcvS7QeyZUvTLfhzjaGs7ak2ZdLetNw61a8CP+wCcCYFGlpqZiMpmoUKFCgdft3buXuLg4wsPDadeuHdOnTy8wMGZmZpKZmWk7TktLc1WTRcTLORtUPL3q02NB6VQSLB8H+/7+D/KoGtDreUjo77Cen7M9aWYzjFhY+L0vLVrwI/7AJ+YAFkVGRgbjxo1j0KBBBW7w3KZNG+bNm8eKFSuYM2cOycnJdOzYkXPnzjl8zPTp04mOjrb91KpVyx1vQUS8TFFr/BWlYLAreWReWtYFWD0V3mxrCX9BIdBhFIz8ARrdXGAxZ2d70p5ZstOr6itqwY/4A78KgNnZ2QwYMADDMJgzZ06B1/bu3Zvbb7+dpk2b0qtXL5YtW8bZs2f56KOPHD5mwoQJpKam2n4OHTrk6rcgIl6oKEN+nlLqhagNA3Z9AbNbw3cvQ04W1O8OD2+GHpMgtFyhT+FsD9np9CzHzaD0770W/Ig/8JsAaA1/Bw4cYOXKlQX2/uWnQoUKXHnllezbt8/hNWFhYURFRdn9iIj/84Uhv1INqSf3wYJb4KO7IPUQRNeCAe/B4E+hSgOnn8aVPWSlee+1zZv4A78IgNbwt3fvXlatWkXlykWfdHv+/HmSkpKIjVXtJhGx5wtDfqUSUrPSYdVky3Bv0hoIDoWOo2HEVki4sch79zrTk1apXIhTz1Xa917bvImv84lFIOfPn7frmUtOTmbHjh1UqlSJ2NhYbrvtNrZv385XX31FTk4OKSkpAFSqVInQ0FAAunfvzs0338zIkSMBGD16NP369SM+Pp6jR48yadIkgoODGTRoUOm/QRHxatagkpKake8QqwnLF78nh/zcGlINA3Z9Dl8/DWlHLOca9ITeL0Hl+kV/vr85Uzpn2k2Nmbr0d6+8955e8CNSEj4RAH/88Ue6du1qOx41ahQAQ4YMYfLkyXzxxRcANG/e3O5xa9eupUuXLgAkJSVx8uRJ2+8OHz7MoEGDOHXqFFWrVqVDhw5s3ryZqlWruvfNiIjP8YUaf24LqSf+gGWjIXmd5bhCbUh8Ca7qXeQev/w4UzonKMjktfde27yJrzIZhuHd5da9WFpaGtHR0aSmpmo+oEgA8KZadPmxrgKG/INSkYYmM8/Buhmw+U0wX4LgMOjwOHR4AkIiXNlsoPDahd5+78W36PtbAbBE9AckEni8ZTcKR0oclAwDdn4K3zwD5/4uG3NlIiROh0r1PPr+vf3ei+/Q97cCYInoD0hEvFGxg9Jfv8OyMbD/O8txxTp/D/cmAuqFE/+h728FwBLRH5CI+IWMNFj3EmyZaxnuLRNuKebc/jEIsSwacbQTSrGGl0U8TN/fPrIIRERE3MAw4NeP4Ztn4bylesKxmG4cazuJZk2b2XoNnd2yrWdCjIZkRXyEAqCISCA6/ptluPfA9wAcMsXybOZdfLu/Oew/QuzyU7ah3aIUmdaKWBHfoAAoIhJIMlJh7XTY+jYYOeQEh/Nqxo38O6cPmYTaLrPuHzxncAsyL5mdempP7oQiIkWjACgiEggMA35eBCsnQvpfllMN+3Hbn335KSfvHKjLh3Zfvr2ZUy/hyZ1QRKRoFABFJCAFVEmRlF8tw70HN1mOKzeA3jPYbGrOTzs2O3yYdWgXgwKLTANUiAjBbBjkmA3/vY8ifkQBUEQCTsCUM7l4Fta+AD/8GwwzhJSFTmOg3QgoE8ZfO4449TQn0zMd7oRidfZiNnf+Z4t/3kcRPxTk6QaIiJQmazmT3IsarHPeVuw85qGWuZDZDD+9D6+3hK1vWcJfQn8Y+QN0HAVlwoCi7R9s3bItJrrgx/jVfRTxYwqAIhIwCitnApY5bzlmHy6PenQHvNMLljwMF05ClSvhrs9hwHyIrml3qXX/YEcDtiYsPaPW/YMTG8eyYVw33r+3DRUiQvJ9jN/cRxE/pwAoIgGjKOVMfM7FM7D0Sfh3Vzi8FULKQc/n4MHvoX7XfB8SHGRiUr8EgDwh0Ho8qV+C3Zy+4CATQUEmzl7MdtgUn76PIgFCcwBFJGA4W6bEp8qZmM2wYwGsmgwXTlnONb4Vrp8GUXFAwQterEO7uedExhQwl88v76NIgFEAFBG/4yjwFGXOm084sh2WjYYj2yzHVRtCn5lQt5PtEmcWvCQ2jqVnQozTq6L97j6KBCAFQBHxKwUFnp4JMQWWMzFh6fmyznnzWhdOw+rnYNs8wIDQSOgyDto8CMH/m5vnaP/ey4s8W0NgcJApzy4ejoK0de6gz99HkQBmMgxDs3SLSZtJi3gXR4HH2o81Z3ALAB5asB2wL2dy+TVeW8LEnAPb/2sJfxf/nl/XZABcPxUiY+wuzTEbdHhpjcM5j9aQtmFct3x7+grrObTea/DB+ygBT9/fWgQiIn7C2RW+PRNi8i1nEhMd7t2h5fA2+E93+OpxS/irlgBDl8Kt/84T/qBkC16cKZXjqCyM199HEQE0BCwifqIogaeoc948Kv0UrJ4M298DDAiLgq5PQavhEOz4n/DiLtQoLEhbt4frmRDjW/dRROwoAIqIXyhq4MlvzptXMefAtndh9VTIOGs512wQ9JgCkdULfXhxF2oUJUi3q1/Z+++jiORLAVBE/IJfrUw99AMsexKO/Ww5rt4Y+rwM8e2cforiLtRQiReRwKA5gCLiF4q6q4VXOn8CPh8B/9fDEv7CoqH3TLh/XZHCHxSvyDP4WZAWEYcUAEXELxQWeAxgYKtafPXLUTYlnfKubcpyLsGWt+GNlpaizgDNB8Mj26DN/QXO9StIcRZq+EWQFpFCqQxMCWgZuYj3ya98SYWyltp4Zy/8b/uy3MWQPebgZlg6Go7/ajmOaWoZ7q3dxmUvUdBOIPlRiRfxd/r+VgAsEf0BiXinywPP/pMXmLXqjwJrA3oizOSkHefU5+Op9udnABjh0Zi6PQvX3gNBwaXentyc2UFExFfp+1uLQETED1lXplqLITtT0qTUSpfkXOL3L16h1s+zqMYFABZd6sJ88xAeK9uORC8If1D07eEKUtQeSBFxPwVAEfFbRS1p4nb7v+fc4se5OvUPAH4x12Vi9jB2GA0wpZFnezZPc0WJF/UkingnLQIREb/lNSVNzqXAZ/fDvD5Epv7BGaM8T2XfS/+sqewwGgD2u5V41QKVEnBmRxER8QwFQBHxWx4vaZKTDRvfgNevhV8+xMDEwkvd6Jr5CgtzumPO9U9wQduz+Rpnt+bzl7Ar4ms0BCwifqu4xZBdIvk7WDYGTvxuOa7RkvUNxvLU1zmFPtQfiix73fC7iNhRD6CI+K3iFkMukbSj8Mk9MP8GS/iLqAT9/gX3riK0diunnsIfiix7zfC7iORLAVBE/FpxiiEXS042fP8veKMV7PwUMMG191qKObccAkFBAVVk2ePD7yJSIA0Bi4jfc2VJk3z9uc4y3Htyj+W4ZitLMee45naXWXskH1qw3bY7iZXbeiQ9xKPD7yJSKJ/oAVy/fj39+vUjLi4Ok8nE559/bvd7wzCYOHEisbGxRERE0KNHD/bu3Vvo886ePZs6deoQHh5OmzZt2Lp1q5vegYh4mrWkyU3Na9CufmXXhKzUI/DREPjvjZbwV7YK3DQb7vkmT/izKrUeSQ/zyPC7iDjNJ3oA09PTadasGffccw+33HJLnt/PmDGDf/3rX8yfP5+6devy7LPP0qtXL3bt2kV4eP7DCx9++CGjRo1i7ty5tGnThlmzZtGrVy/27NlDtWrV3P2WRMSXXcqCzbNh3UzITgdTkGW4t9vTEFGx0Ie7vUfSS1jDbu46gDGqAyjicT63FZzJZGLx4sX0798fsPT+xcXF8eSTTzJ69GgAUlNTqV69OvPmzWPgwIH5Pk+bNm1o1aoVb7zxBgBms5latWrxyCOPMH78eKfaoq1kRAJQ0hpYNhZO/T3KUKst9JkJsU092y4vpp1AxNvo+9tHegALkpycTEpKCj169LCdi46Opk2bNmzatCnfAJiVlcW2bduYMGGC7VxQUBA9evRg06ZNpdJuEfExZw/B10/B719YjstVhZ5TodlAMCnMFMQVO4qIiGv5fABMSUkBoHr16nbnq1evbvtdbidPniQnJyffx+zevdvha2VmZpKZmWk7TktLK26zRcRXXMqEja/D+pfh0kUwBUPr+6HLeIio4OnWiYgUi88HwNI0ffp0pkyZ4ulmiEhp2bsKlo+F00mW49rXWYZ7Yxp7tl0iIiXkE6uACxITEwPA8ePH7c4fP37c9rvcqlSpQnBwcJEeAzBhwgRSU1NtP4cOHSph60XEK505AIvuhPdvtYS/8tXhln/DsGUKfyLiF3w+ANatW5eYmBhWr15tO5eWlsaWLVto165dvo8JDQ2lZcuWdo8xm82sXr3a4WMAwsLCiIqKsvsRET+SnQHrZsDs1rD7K8twb9sRMPJHaDpAc/1ExG/4xBDw+fPn2bdvn+04OTmZHTt2UKlSJWrXrs3jjz/OtGnTuOKKK2xlYOLi4mwrhQG6d+/OzTffzMiRIwEYNWoUQ4YM4dprr6V169bMmjWL9PR0hg0bVtpvT0S8wR9fw/JxcCbZchzfwTLcWz3Bs+0SEXEDnwiAP/74I127drUdjxo1CoAhQ4Ywb948xo4dS3p6Ovfffz9nz56lQ4cOrFixwq4GYFJSEidPnrQd33HHHZw4cYKJEyeSkpJC8+bNWbFiRZ6FISLi504nw4oJ8Mdyy3FkLFw/DRrfqh4/EfFbPlcH0JuojpCID8u+CBtmwYZXIScTgspA24eg8zgIi/R060TEjfT97SM9gCLiPXy+qK9hwJ7lsGI8nD1gOVe3E/SeCdUaerZtIiKlRAFQRJy2YuexPNt6xfrStl6nkizBb+83luPIOOj1PDS6WcO9IhJQFABFxCkrdh7joQXbyT1nJCU1g4cWbGfO4BbeGwKzLsCGf8L3//p7uDcE2o2ATmMgrLynWyciUuoUAEWkUDlmgylf7soT/gAMwARM+XIXPRNivGs42DBg91LLIo/Ug5Zz9bpaVvdWucKzbRMR8SAFQBEp1Nbk03bDvrkZwLHUDLYmn/aePV9PJVl28di3ynIcVRMSX4Crbyz14V6fnzcpIn5HAVBECvXXOcfhrzjXgRtDUVa6Zd/eTW9AThYEh8J1j0DHJyG0XMmfv4h8ft6kiPglBUARKVS1yPDCLyrCdW4JRYYBv38BK56CtMOWc/W7W4Z7K9cv3nOWkE/PmxQRv6YAKCKFal23ErHR4aSkZuQ7D9AExERbevEKU1AoenDBdp7ocQV1qpQrWq/gyb2wbAz8udZyHF0bEqdDw74eW93rs/MmRSQgKACKSKGCg0xM6pfAQwu2YwK7UGONLpP6JRQaZAoLRQCvrtprO1dor2DmeVg/EzbNBnM2BIdB+8egwxMQWtbJd+cePjlvUkQCRpCnGyAiviGxcSxzBrcgJtp+mDcmOtzpoczCQlFu1qHSFTuP2f/CMGDnZ/BGK/h+liX8XdELHt4E3Z72ePgD98ybFBFxFfUAiojTEhvH0jMhptiLN4oadvIdKj2xB5aNhuT1losqxEPvl+Cq3kV7My7iaDGLq+dNioi4kgKgiBRJcJCp2EOWxQk71qHSH/84SJuD/4bNc8B8CcqEW4Z62z8GIRHFak9JFbSYpWdCjMvmTYqIuJqGgEWk1FgXkxRtyYPBjUEbafZ5d9j4uiX8XdUHHt4MXcZ7NPw9tGB7niFt67D1yl0pTOqXAJDn/RZl3qSIiDsoAIpIqbEuJoG8oSg/V5oO8UHI8/wr9A3CM05Axbrwj49h0AdQqa57G1sAZxazWIetSzpvUkTEHTQELCKlyrqYJPfQ6eXKc4HHy3zK0OCvKWMyk0koIV3GENT+UQjx/Jy5oqzwLem8ycJolxERKQ4FQJEA5cngkDsU7T95gVmr/gAMbgr6nqdCFlLNdBaAr3OuJfyGF+ncplWptM0ZRV3hW5J5kwXRLiMiUlwKgCIByBuCQ+5Q1DL8COVWT+AaYxcAf5pjeD3sPnrdNpjOXhZmvGGFr3YZEZGSUAAUcQNvHpbzVHBweE8unoVvp9Nh67/ByCEnOJw9Vz5A2jUP8nKDWK+5b5dz5c4oxaFdRkSkpBQARVzMG3rXHPFUcMjvnsRFhTK36V6a/v5PSD9hOXn1jQT3eoGECrVc9tru4KqdUYpLu4yISElpFbCICxVWGiTPjhalrCjBwVXyuycJpv38K+Mpmv44wRL+Kl8Bdy2GO94DLw9/Vq7YGaW4tMuIiJSUegBFXMQXhuVKOzjkvidRnOfJMh8zOHgVwSaDdCOMeWVu58EH/0lwSJhLXrM0uXuFryPeMAdRRHybAqCIi/jCsFxpBwfrPTFh5rbg9Ywrs4gqpjQAvsppy7TsO0nJrEyLg+dpV9/3AiC4b4VvQTw9B1FEfJ8CoIiLFKd3rbQXi5R2cPjrXAaNTMlMDXmXFkH7ANhrrsGkS0PYaG5sd504z9NzEEXE9ykAihSRo9BW1N41TywWKdXgcOE0bXZNo1/oBwSZDM4b4bx26Rbm5SSSneufHg1VFp2jgtoxXrLgSES8m8kwjPw6AsQJaWlpREdHk5qaSlRUlKebI6WgoNDWMyGGDi+tKbR3bcO4bqzclZJvKRZr7HL3IgJH7+PZvldTsVxYyXokzWb46b+wagpctCwmWZJzHS9k/4Pj2PcsXn5P1FtVPN5cckjEW+n7WwGwRPQHFFgc1c+7PLQBPLRgO5B/79qcwS1sQdHRfMHSCkW5g8OZ9CymLi1hj+SRbbB0NBy13AOqXs3Wq8dzxzchgON74uj5nQ03/hqC/PV9iXiavr8VAEtEf0CBI8dsOB3aVu5KKXBod1PSKQb9e3Ohr/nB8LaltrjAmXBbYAi8cBpWT4Ft8wEDQiOh6wRofT8EhxRruNvZx3hz3cWiujzw7T95gQ+2HiQlzfffl4i30fe35gCKOKUoK3wLKw3ibTXcSlS+xpwD2+bBmqlw8YzlXNM7oOdzEBlju6yo5VKc3a3En7ZDyy/I5uaL70tEvJMCoIgTihraCioN4m013Ipdvubwj7D0STi2A4D0ClfxU+OnCa7bgdblKhGc63mcLZfibCDt1rC619dddJajIJubr70vEfFeCoAiTnBlaPO2Gm5F7pFMPwmrJsNP7wGQXaY8rxt3MDulCzkpwcDmEg1VOhtI39u03+vrLjqjoMCbH195XyLi3bQVnIgTrKHNUX+LCcv8LGdCm7UUi/VxuZ8HSreGm9PhtlwIbP03vN7CFv6OxPfnuvMz+Vd6d3Iu6/MrydZ3zgbSA6cvuPT5PKWwwOuIt78vEfFuCoAiTnB1aPPkPrK5ORNue0YeoO3qW2HZaMhIhepNyBm6gttS7uYE0XkeY+3NmvLlLnLMRVtn5mwgja9U1qXP5ynFDXLe/r5ExLtpCFj8lqtLaLi68K6n9pHNraDi0FVIZVyZD7g9ez2kAOHR0O1ZaDmMrftTOZbqeDVzcYcqnR0iv6tdHf6zIdlrhtKLq6hBzlfel4h4N78JgHXq1OHAgQN5zj/88MPMnj07z/l58+YxbNgwu3NhYWFkZGhYxR+4qzSIq0ObJ/aRzU/ucBtMDoODVzE65GMi+Xuotflg6DEZylcF3Lea2dndSkLLBPnFdmiFBd7L+dL7EhHv5jdDwD/88APHjh2z/axcuRKA22+/3eFjoqKi7B6TX4AU32NdUZl7XlVJ5qVdzhrabmpeg3b1K/vNF3Fi41g2jOvGVzcFs73aNKaEzLeEv9hmcO8q6D/bFv7AvauZnR0i96ah9OIqaHpBbr70vkTEu/lND2DVqlXtjl988UXq169P586dHT7GZDIRExPj8Pfie0pU0y7QnTtO8MqJNP5lkeU4vAJ0nwgth0JQ7qIu7l/N7Gxvq7cMpZeEw+kFUWEMal2bOlXK+eT7EhHv5TcB8HJZWVksWLCAUaNGYTI5/sfy/PnzxMfHYzabadGiBS+88AKNGjUqxZaKqxW7pl0gy7kEW9+Gb6dDZhpgghZ3QffJUM7xPXJ2qLYkgcXZIXJXDaV7cus1fwiyIuI7/DIAfv7555w9e5ahQ4c6vOaqq67inXfeoWnTpqSmpvLyyy9z3XXX8dtvv1GzZs18H5OZmUlmZqbtOC0tzdVNlxLytl02vEm+4ebgRsvK3r92WS6Kuwb6vAI1Wzr1nK5eGONJ3rClnLfMCRUR/+eXewH36tWL0NBQvvzyS6cfk52dzdVXX82gQYOYOnVqvtdMnjyZKVOm5DkfyHsJehtv3GfXG+QON9U4w9Syi+hl/s5yQURF6D4JWtyd73BvYTzZc+YKJd4LWUR8ivYC9sMewAMHDrBq1So+++yzIj0uJCSEa665hn379jm8ZsKECYwaNcp2nJaWRq1atYrdVnE9b9tlwxtcHm7KcImhwV/zeJlPKW/OwGyYOFx/ALVvexHKFv+e+HLPleaNikgg8ptVwFbvvvsu1apVo2/fvkV6XE5ODr/++iuxsY7/Kz8sLIyoqCi7H/EuntplI8dssCnpFEt2HGFT0qkiFz92l8vDTdugXSwLncAzIe9T3pTBT+YG3JQ1lTuO3EFOeEVPN9VjijJvVETEX/hVD6DZbObdd99lyJAhlClj/9buvvtuatSowfTp0wF47rnnaNu2LQ0aNODs2bPMnDmTAwcOcN9993mi6eJCpT0vzRvmjjmyNfk05tSj/CvkfW4M3gTAKSOSFy8N4pOcThgEQYAvitG8UREJRH4VAFetWsXBgwe555578vzu4MGDBAX9r8PzzJkzDB8+nJSUFCpWrEjLli3ZuHEjCQkJpdlkcZPSWlHpaO6YteagR+eOXcoiavtsVofNprwpgxzDxIKcHrxy6XbSKG93aSCHG3fWMxQR8VZ+uQiktGgSaWDLMRt0eGmNw+FD63zDDeO6lf7csaS1sHwsnPwDgG3mK5iYPYzfjDr5Xh5oi2IuZ/0cC5s36pHPUUTcQt/fftYDKFIQV69U9cqag6mH4eunYNcSSxvKVmFa1kDePd8Wcz5Tfn1xUYyrP8fSqGcoIuJtFAAlILhjnp5XzR27lAmbZsP6mZB9AUxB0Go4pq5P0SrpIu/4Sbhx5x7P/lLPUETEGRoCLgF1IfsGd9V485qag/tWwfJxcOrvEka120GfmRDTxHaJNy9UcVZp1Orz9XqGIuIcfX+rB1D8nDtrvHm85uDZg7BiAuz+ynJcrhpcPxWa3gG5tkD09W3GSqtWny/XMxQRKQq/qwMocjl31njzVM1BsjNg3Ux4o7Ul/JmCoe3D8MiP0GxgnvB3eXvb1a/MTc1r0K5+ZZ8Jf6BafSIirqYAKH7N3fP0rHPHYqLtS4TERIe7pwTM3pUwpx2snQaXLkJ8e3hwAyROh/Bo176WF/Gq+ZYiIn5AQ8Di10qjxlupDK+e2Q8rnoI9Sy3H5WPg+mnQ5DaHPX7+RLX6RERcSwFQSo0nJtiX1jw9t80dy86A71+DDf+ESxkQVAbaPAidx0F44Exc9vh8SxERP6MAKKWiJKtQSxIcfbrG254VsGKcpfcPoE5H6PMyVGvo0WZ5gk9/jiIiXkhlYEpAy8idU5LyHa4qX+JTZVBOJ8OK8fDHCstxZCz0eh4a3RIQw70F8anPUUS8lr6/FQBLRH9AhSvJdmmurvvm9TXesi/ChldhwyzIybQM97Z9GDqPhbBIT7fOa3j95ygiXk/f3xoCFjcr7nZp7qj75rU13gwD9iyz9PqdPWg5V7ezpZhz1as82zYv5LWfo4iID1EAFLcqbvkOr9xn1x1OJVl28di30nIcVQN6vQAJNwX8cK+IiLiPAqC4VXHLd/h93besC/DdK7DxX5CTBUEhcN1I6DQGQsvZXaohTxERcTUFQHGbHLOB2WxQISKEsxez873GUfkOv637Zhjw+5fw9VOQeshyrn436D0DqlyR53ItehAREXdQABS3yC+45GYt5zGwVS2++uWoXe+WX9Z9O7kPlo+FpNWW4+haluHeq/vlO9zraBFMSmoGDy3Y7p6dRkREJCAoAIrLOQouuUWXDQHg1VV7becu793ym7pvWemwfiZsfAPM2RAcCtc9Ch2fhNCy+T7EHYtgRERErLQXsLhUQcHFqkJECI93v4LUC9mcvWA/NGzt3Vqx81jp77PraoYBvy2GN1pZyruYs6FBT3h4M3R/1mH4g6ItghERESkq9QCKSxUWXADOXszmv5sPONW75ew+u163UOLEH7B8DPz5reW4Qm1IfBGu6uPU6l6/XwQjIiIepQAoLuVsIDmdnuXwd7lLvBRW982rFkpknof1M2DTm38P94ZBh8ehwxMQEuH00/jtIhgREfEKGgIWl3JlIHEmTFrnG+budbx8KLlUGAbs/NQy3Pv9a5bwd2UijNgMXZ9yOvzlmA02JZ0iJfUilcqF4qiv0IQl5PrUIhgREfEa6gEUl3Jm9W7FciGcTs+/LMzlCguTXrNQ4q/dluHe5PWW44p1IPEluCqxSE/jzMppKwPo09gyNO7x4W4REfE56gEUlwoOMjGpXwJAnt4r6/G0mxoTGx1e4t4tjy+UyDwHXz8Nc9tbwl+ZcOjyFDy8pVjhL7+ezPxYs97/fb+fQf/eTIeX1rDsl6NsSjrFkh1H2JR0ihyztvgWERHH1AMoLmddvZu7Nyvmsnl5QUGmEpd48dhCCcOAXz+Bb56B8ymWc1f1hcQXLL1/ReTMyulK5UK4qXkN3v1+P7mz3bHUDB5e+JPdORWLFhGRgigAilsUtnrXmZBYGI8slDi+C5aNgQMbLMeV6ll28biiZ7Gf0pmV06fTs1my46jTz6li0SIiUhAFQB/ldWVP8lHY6l1nS7w4Uqq7hWSkwrcvwpa3wMiBMhHQ6Ulo9wiElCxgumLldG4qFi0iIgVRAPRBXlX2pIQKC4mFPdbtu4UYBvzyIaycCOePW85d3c+yhVuF2sV/3su4q5RL7nI6IiIiVloE4mO8puyJl3DrbiEpv8K7vWHxA5bwV7kBDP4M7ljgsvAH/+vJLGhRTKVyIcV+fhWLFhGR3NQD6EO8puyJlynpUHIeF8/C2hfgh3+DYYaQstBpDLQbAWXCXNp2cK4nc9pNjZm69HeHw90FUbFoERHJTQHQhxSl7EmgDfmVZCjZxmyGnz+AVZMg/YTlXEJ/6PU8RNcscRsLUpKV0464ag6kL8w3FRGRolEA9CHaH9aNjv0MS0fD4a2W4ypXWlb31u9aak0o7srp/LhqDqQ/zTcVEZH/UQD0Idof1g0unoE1z8OP//f3cG856DIO2jwEZUJLvTnFWTl9Jj2LqUvtQ1r1qDAGta5N5iUzm5JOFavXzjrfNHdvo0rMiIj4PgVAH1KqZU/8ndkMO963DPdeOGU51/hWuH4aRMV5tm2FyC8k9mr8v1C4/+QFPth6kFdX7bX9vqi9dppvKiLi3/xiFfDkyZMxmUx2Pw0bNizwMR9//DENGzYkPDycJk2asGzZslJqbfE5s81aicueBIKjP8H/9YQvRlrCX9WGcPcXcNs7Xh/+HLGGwrAyQcxa9QcpaSVbJe7xbfZERMSt/CIAAjRq1Ihjx47ZfjZs2ODw2o0bNzJo0CDuvfdefvrpJ/r370///v3ZuXNnKba4eNxa9sTfXTgNXz0Bb3eFIz9CaCRc/zw8uAHqdfZ060qssF47sPTaObNPsOabioj4N78ZAi5TpgwxMTFOXfvaa6+RmJjImDFjAJg6dSorV67kjTfeYO7cue5spku4vOyJvzOb4af/wqopcPHvHqsmA+D6qRBp/zfjyyteXblKXPNNRUT8m98EwL179xIXF0d4eDjt2rVj+vTp1K6df7HeTZs2MWrUKLtzvXr14vPPPy/wNTIzM8nMzLQdp6WllbjdxeWSsieB4Mg2y+reo9stx9USoM9MqNMhz6W+vuLVlb12mm8qIuLf/GIIuE2bNsybN48VK1YwZ84ckpOT6dixI+fOncv3+pSUFKpXr253rnr16qSkpBT4OtOnTyc6Otr2U6tWLZe9B3FejtlgU9Ipluw4wqakU/kPaaafgi8ehX93t4S/sCjoNR0eWO8w/Pn6Diuu7LXTfFMREf/mFz2AvXv3tv3/TZs2pU2bNsTHx/PRRx9x7733uux1JkyYYNdzmJaWphBYygrtpTPnwLZ5sPo5yDhruaDpQOj5HERWz/c5/WXFq6t77ZwpTi0iIr7JLwJgbhUqVODKK69k3759+f4+JiaG48eP2507fvx4oXMIw8LCCAtz/VZg4pzC6tIt7B1Mu90vWIo6A1RvDH1ehvh2BT6vv+yw4syWckXttdN8UxER/+QXQ8C5nT9/nqSkJGJj8++haNeuHatXr7Y7t3LlStq1KzgoiOcU1EtXkTReLPM27dbeYQl/YdGWXTzuX1do+AP/WvHqjlXi1vmmNzWvQbv6lRX+RET8gF/0AI4ePZp+/foRHx/P0aNHmTRpEsHBwQwaNAiAu+++mxo1ajB9+nQAHnvsMTp37swrr7xC3759WbRoET/++CNvv/22J9+GFCC/XrogzNwZvIrRZT4i2nQBgL/q30q1m1+E8tWcfm5/W/GqXjsRESmMXwTAw4cPM2jQIE6dOkXVqlXp0KEDmzdvpmrVqgAcPHiQoKD/dXZed911LFy4kGeeeYannnqKK664gs8//5zGjRt76i1IIXL3vrUw/cHUkHdpFHQAgJ3mOkzMHsqQJgO4qQjhD/xzxatWiYuISEFMhmEUXhVW8pWWlkZ0dDSpqalERUV5ujl+bVPSKQb9ezNVSGV8yAfcFrwegFSjLDMv3cHCnO6YCeKD4W2LFXys8wsh/7lzKrItIuI/9P3tp3MAxf+0jo/i0XKrWRP2pC38LbrUha6Z/2RBTk8MgogtQS+ddlgREZFA4hdDwOLnDmwkeNkYRuXsBBP8Yq7LxOxh7DAaAK6rS6e5cyIiEigUAMV7nUuBlRPhlw8txxEV+e3qx3hoZyOOZGXbLnNlXTrNnRMRkUCgACjeJycbtr4Na6dD1jnABC2HQLeJNCpXmfU3+O5+vSIiIt5AAVC8y/4NsGwM/LXLchzXAvq+DDVa2i5RL533yzErpIuIeDMFQPEOacfgm2dg5yeW44hK0GMyXHMXBGmtki8pdLs+ERHxOAVA8aycbNgyF759EbLOAya49h7o9gyU9Z26e84IhF6xwrbr04pqERHvoAAonvPnOstw78k9luOarSx798Y192iz3CEQesUK2q7PwLJae8qXu+iZEON3wVdExNcoAPoJn+pdSj1iGe797TPLcdnK0GMKNL+z1Id7S+O+BUqvWH7b9V3OAI6lZrA1+bTmcIqIeJgCoB/wmd6lS1mw+U1YNwOy08EUBK3ug65PQUTFUm9Oady3QOoVy71dX0mvExER99Hseh9n7V3K3fNi7V1asfOYh1qWS9IamHMdrJpkCX+12sL966DPTI+Fv9K4b0XpFfN11SLDC7+oCNeJiIj7KAD6sMJ6l8DSu5Rj9uB2z6mH4aO74b2b4dReKFcV+s+BYcshtqlHmlSa9y2QesVa161EbHQ4jvoxTVCi7fpERMR1FAB9mFf3Ll3KhO9egTdawa4lluHeNg/CyB+h+T88WtqlNO9bIPWKBQeZmNQvASBPCHTVdn0iIuIaCoA+zGt7l/atgjfbwernIPsC1L4OHvgOer8EERVKty35KM37Fmi9YomNY5kzuAUx0faBNiY63G8Wu4iI+AMtAvFhXte7dPYgrJgAu7+yHJevDtdPgya3g8l7en1K875Ze8UeWrAdE9gNO/trr1hi41h6JsT4zqp0EZEApADow6y9SympGfnOZzNh6Xlxe+9SdgZsfN0y5HvpIpiCLcO9XcZDeJR7X7sYSvu+WXvFcq84jvHGldouou36RES8mwKgD/OK3qU/voHlY+FMsuU4voNlZW/1BPe9Zgl54r6pV0xERLyJyTAMDy4R9W1paWlER0eTmppKVJTnero8UgfwzH7LcO+eZZbjyFjLcG/jW71quLcgPlM/UUREXMpbvr89SQGwBLzpD6jUdgLJvgjfvwYbXoVLGRBUBto+BJ3HQVik61/PzXxqBxUREXEJb/r+9hQNAfuJUplztWc5LB8HZw8AkBrTjm0JE4io0ZjWIeUJdu+ru4XmqomISCBSAJTCnf4Tlo+HvV8DkBFRnWnZg1mwvwXsPw9s1tCpiIiID1EAFMeyLliGer9/DXIyISiEP68YSr+f25GOfYkU6xZqqvUmIiLi/VQIWvIyDPj9K5jdBtbPsIS/el3JefB77tzfO0/4Ay/aek5EREQKpQAo9k4lwfu3wYd3QupBiKoJA/4Ldy1m67kq3rv1nIiIiDhNQ8BikZVuKeS88XXIyYKgEGj/KHR8EkLLAV689ZyIiIgUiQJgoDMM+P0LWPEUpB22nGvQAxJfgioN7C71uq3nREREpFgUAAPZyb2wbAz8udZyHF0bEqdDw775FnP2mq3nREREpEQ0BzAQZZ6HlZPgzXaW8BccCp3GwIgtcPUNDnfysG6hBv/bMs2q1LaeExERkRJTAAwkhgG/LYbZreH7WWDOhit6wcObodszEFq20KdIbBzLnMEtiIm2H+aNiQ5XCRgREREfoSHgQHFij2W4N3md5bhCPPR+Ca7qXeSnSmwcS8+EGG2hJiIi4qMUAH1AifarzTwH616CzXPAfAnKhEOHJ6D9YxASUew2aQs1ERER36UA6OVW7DzGlC932dXfc2rbNcOAnZ/CN8/AuWOWc1f1hcQXoGId9zbaz5QogIuIiHghv5gDOH36dFq1akVkZCTVqlWjf//+7Nmzp8DHzJs3D5PJZPcTHu5d5UtW7DzGQwu25ym+bN12bcXOY/k/8K/fYX4/+PReS/irWBf+8TEMWqjwV0Qrdh6jw0trGPTvzTy2aAeD/r2ZDi+tcXzvRUREfIBfBMB169YxYsQINm/ezMqVK8nOzub6668nPT29wMdFRUVx7Ngx28+BAwdKqcWFyzEbTPlyV77lVhxuu5aRBl8/DXPaw/7voEwEdH3GssjjyutL1JZNSadYsuMIm5JOBcxWb8UO4CIiIl7OL4aAV6xYYXc8b948qlWrxrZt2+jUqZPDx5lMJmJiYtzdvGLZmnza6W3X2tWrBL9+bBnuPX/cckHDGyw1/SrULlE7ij0E7eMKC+AmLAG8Z0KMhoNFRMTn+EUPYG6pqakAVKpUcEHi8+fPEx8fT61atbjpppv47bffSqN5TnF2O7WLh3+BeX3hs+GW8FepPgz+FAa+75LwF6g9YEUJ4CIiIr7GL3oAL2c2m3n88cdp3749jRs3dnjdVVddxTvvvEPTpk1JTU3l5Zdf5rrrruO3336jZs2a+T4mMzOTzMxM23FaWprL229V2HZqkVzgiTKf0PXblWDkQEhZ6DQa2o2EMmElfv1A7wHTvsciIuLP/C4Ajhgxgp07d7Jhw4YCr2vXrh3t2rWzHV933XVcffXVvPXWW0ydOjXfx0yfPp0pU6a4tL2OON52zeCWoO+YEPIBVU2pljSWcBNc/zxUqOWy1y/SELQfloPRvsciIuLP/GoIeOTIkXz11VesXbvWYS+eIyEhIVxzzTXs27fP4TUTJkwgNTXV9nPo0KGSNtmh/LZdu9p0gI9Dp/DP0LlUNaVyPrIu3LUYBvzXpeEP1ANmDeCO+jZNWOZCat9jERHxRX4RAA3DYOTIkSxevJg1a9ZQt27dIj9HTk4Ov/76K7Gxjhc2hIWFERUVZffjTtZt1xpE5TC5zDy+Cn2KVkF/cIFw9jQZTfnHtkL9bm557UDvAdO+xyIi4s/8Ygh4xIgRLFy4kCVLlhAZGUlKSgoA0dHRRERYdru4++67qVGjBtOnTwfgueeeo23btjRo0ICzZ88yc+ZMDhw4wH333eex95GH2Uxi9mp6lZmEqcxJAE7G30DFm1/iqgpF6+EsKsdD0BYmLPv/+nMPmDWA514FHRMAq6BFRMS/+UUAnDNnDgBdunSxO//uu+8ydOhQAA4ePEhQ0P86PM+cOcPw4cNJSUmhYsWKtGzZko0bN5KQkFBazXYox2zw24/rqbnpWSqd+dnS41TlKugzkyr1OpdKG6w9YA8t2I4J7EJgIPWAad9jERHxRybDMAKjqq8bpKWlER0dTWpqqsuGg1fsPMaxxc8w5NKnBJkMzhvhvFPmDq66aTS9mpasrEtx2xOIdQBFRMR/ueP729f4RQ+gv7DW3bs1uDJBIQZLcq7j+ew7OZFZERb+ypygELeHrtz73vZMiFEPmIiIiJ9RAPQSl9fd+zSnI3vNNfjZaGD7fWnU3VNvn4iISGDwi1XA/uDyunsGQXbhz3LOvTtPBPKuHyIiIoFGAdBLeLLuXmG7foCl9zHH7Hi6aI7ZYFPSKZbsOMKmpFMFXisiIiKepSFgL+HJunsl3fVDQ8ciIiK+RT2AXqI0dp5w1EtXkt5HDR2LiIj4HvUAegl3190rqJeuuL2PhQ0dl8bCFRERESk69QB6EevOEzHR9kErJjqcOYNbFHs4taBeugcXbGfznyepEBHi8PGOeh+LMnQsIiIi3kM9gF7G1TtPOLPA47XV+xw+vqDeR08uXBEREZHiUwD0QsFBpnwXWxRHYb10hSlo31tPLlwRERGR4lMA9HPF7X2rEBHC7Dtb0LZeZYe9j9aFKympGfn2MJqwBMiSLFwRERER19McQD9X3N63sxezCTKZChx6ti5cAfKsXnbFwhURERFxDwVAP1dYeZmCONN76K6FKyIiIuI+GgL2cwWVlymMs72Hrl64IiIiIu6lABgArL10uesAOlKcuXuuWriSYzYUJEVERNxMAdCP5Q5T68Z0ZduBM/x1LoP9Jy8wa9UfgOuLTheXtpQTEREpHQqAfqqgMHVT8xoAXBVTPs81BZV9cXd7H1qwPc8QtXVLOc0nFBERcR2TYRhFmRYml0lLSyM6OprU1FSioqI83RwbR2HK2p93eZjyhiHXHLNBh5fWOByetg5JbxjXTcPBIiJSYt76/V2a1APoZ4q6P68ri04XV1G2lPN0W0VERPyBysD4GV/cn1dbyomIiJQuBUA/44thSlvKiYiIlC4FQD/ji2GqsGLVJiwLWLSlnIiIiGsoAPoZXwxT2lJORESkdCkA+hlfDVPaUk5ERKT0qAxMCXjzMnJfLarsDWVpRETEv3nz93dpUQAsAW//A1KYEhERycvbv79Lg+oA+jFvqPEnIiIi3kdzAEVEREQCjAKgiIiISIBRABQREREJMAqAIiIiIgFGAVBEREQkwCgAioiIiAQYBUARERGRAKMAKCIiIhJgFABFREREAox2AikB6y56aWlpHm6JiIiIOMv6vR3Iu+EqAJbAuXPnAKhVq5aHWyIiIiJFde7cOaKjoz3dDI8wGYEcf0vIbDZz9OhRIiMjMZlMnm6Ox6WlpVGrVi0OHToUsJtrlxbd69Kje116dK9LT6Dfa8MwOHfuHHFxcQQFBeZsOPUAlkBQUBA1a9b0dDO8TlRUVED+g+IJutelR/e69Ohel55AvteB2vNnFZixV0RERCSAKQCKiIiIBBgFQHGZsLAwJk2aRFhYmKeb4vd0r0uP7nXp0b0uPbrXokUgIiIiIgFGPYAiIiIiAUYBUERERCTAKACKiIiIBBgFQBEREZEAowAobpWZmUnz5s0xmUzs2LHD083xO/v37+fee++lbt26REREUL9+fSZNmkRWVpanm+Y3Zs+eTZ06dQgPD6dNmzZs3brV003yO9OnT6dVq1ZERkZSrVo1+vfvz549ezzdrIDw4osvYjKZePzxxz3dFCllCoDiVmPHjiUuLs7TzfBbu3fvxmw289Zbb/Hbb7/x6quvMnfuXJ566ilPN80vfPjhh4waNYpJkyaxfft2mjVrRq9evfjrr7883TS/sm7dOkaMGMHmzZtZuXIl2dnZXH/99aSnp3u6aX7thx9+4K233qJp06aebop4gMrAiNssX76cUaNG8emnn9KoUSN++uknmjdv7ulm+b2ZM2cyZ84c/vzzT083xee1adOGVq1a8cYbbwCW/b9r1arFI488wvjx4z3cOv914sQJqlWrxrp16+jUqZOnm+OXzp8/T4sWLXjzzTeZNm0azZs3Z9asWZ5ulpQi9QCKWxw/fpzhw4fz3nvvUbZsWU83J6CkpqZSqVIlTzfD52VlZbFt2zZ69OhhOxcUFESPHj3YtGmTB1vm/1JTUwH0d+xGI0aMoG/fvnZ/3xJYyni6AeJ/DMNg6NChPPjgg1x77bXs37/f000KGPv27eP111/n5Zdf9nRTfN7JkyfJycmhevXqduerV6/O7t27PdQq/2c2m3n88cdp3749jRs39nRz/NKiRYvYvn07P/zwg6ebIh6kHkBx2vjx4zGZTAX+7N69m9dff51z584xYcIETzfZZzl7ry935MgREhMTuf322xk+fLiHWi5SMiNGjGDnzp0sWrTI003xS4cOHeKxxx7j/fffJzw83NPNEQ/SHEBx2okTJzh16lSB19SrV48BAwbw5ZdfYjKZbOdzcnIIDg7mzjvvZP78+e5uqs9z9l6HhoYCcPToUbp06ULbtm2ZN28eQUH6b7uSysrKomzZsnzyySf079/fdn7IkCGcPXuWJUuWeK5xfmrkyJEsWbKE9evXU7duXU83xy99/vnn3HzzzQQHB9vO5eTkYDKZCAoKIjMz0+534r8UAMXlDh48SFpamu346NGj9OrVi08++YQ2bdpQs2ZND7bO/xw5coSuXbvSsmVLFixYoH+8XahNmza0bt2a119/HbAMT9auXZuRI0dqEYgLGYbBI488wuLFi/n222+54oorPN0kv3Xu3DkOHDhgd27YsGE0bNiQcePGadg9gGgOoLhc7dq17Y7Lly8PQP369RX+XOzIkSN06dKF+Ph4Xn75ZU6cOGH7XUxMjAdb5h9GjRrFkCFDuPbaa2ndujWzZs0iPT2dYcOGebppfmXEiBEsXLiQJUuWEBkZSUpKCgDR0dFERER4uHX+JTIyMk/IK1euHJUrV1b4CzAKgCI+bOXKlezbt499+/blCdfq3C+5O+64gxMnTjBx4kRSUlJo3rw5K1asyLMwREpmzpw5AHTp0sXu/LvvvsvQoUNLv0EiAUBDwCIiIiIBRjPFRURERAKMAqCIiIhIgFEAFBEREQkwCoAiIiIiAUYBUERERCTAKACKiIiIBBgFQBEREZEAowAoIiIiEmAUAEVEREQCjAKgiIiISIBRABQREREJMAqAIiIiIgFGAVBEREQkwCgAioiIiAQYBUARERGRAKMAKCIiIhJgFABFREREAowCoIiIiEiAUQAUERERCTAKgCIiIiIBRgFQREREJMAoAIqIiIgEGAVAERERkQCjACgiIiISYBQARURERAKMAqCIiIhIgFEAFBEREQkwCoAiIiIiAUYBUERERCTAKACKiIiIBBgFQBEREZEA8//12qytp7wjMgAAAABJRU5ErkJggg==", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "k = polyfit(x, y)\n", "plot(x, y, f'Dati e modello analitico (k1={k[0]:.2f}, k0={k[1]:.2f})', k0=k[1], k1=k[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Costruiamo allora una rete neurale con un neurone di input e uno di output, per $x$ e $y$ rispettivamente, che avrà dunque due parametri, $k_0$ e $k_1$, corrispondenti all'intercetta della retta (il bias) e alla pendenza della retta (il \"peso\" della connessione). \n", "\n", "Questa è dunque la struttura della rete: \n", "\n", "![rete](simplenet.drawio.svg)\n", "\n", "I valori iniziali di $k_0$ e $k_1$ sono casuali, e quindi la retta di regressione non ha alcuna affidabilità. " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "5b452b2824074a729181a7b171bc1a4e", "version_major": 2, "version_minor": 0 }, "image/png": "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rvfee0/t2rVTcnKyWrdurf/85z8e5x04cED33HOPzjvvPKWlpSkjI0MDBgzQ119/7XGea7hr3rx5+uMf/6hGjRqpZs2aKiwsDPox/v3vf2vKlClq1KiR0tPTNXToUBUUFKioqEjjxo1TVlaW0tLSNHr0aK8/8zlz5rivX2Zmpq699lr9+OOP7tt79eqlt99+W9u2bXP/njRr1izg6whmDuDOnTt10003qWHDhkpKSlJubq5uu+02nTx5MqjrKkkzZsxQmzZtVLNmTdWuXVsXXnihx3tm1KhR7vaXNXny5Aq9HbNmzdKll16qrKwsJSUlqXXr1po5c2bA12N2DuCJEye0aNEi9e7dO+BjStLDDz+shIQEzZgxw30sJycnrL00r776qjp16uTRK9eqVStddtll+ve//+33vqdOndLx48dVv359j+NZWVlKSEhQSkqK1/sdPnxYp0+frnrjvTh48KDy8vLUuHFjbdiwQVLpa6xfv76uuuoq93n16tXTsGHDtGDBgrDNh1uwYIFOnTql3/72t+5jDodDt912m3bs2KEVK1aYfqzDhw/7/VvWpEkT06NaHTt2VGZmphYsWGD6+e2KIeAo+tWvfqXf//73eu+993TzzTdLkt5//3398MMPGj16tLKzs/Xtt9/queee07fffquVK1fK4XDoqquu0vfff6+5c+fq8ccfV926dSWV/tIH49Zbb9Xs2bM1evRojR07Vlu2bNGTTz6pr776SsuXLw84BFRcXKwBAwaoR48e+stf/qKXXnpJt99+u1JTU/WHP/xB119/va666io988wzuuGGG9SlSxd3V/+ePXt08cUX69ixYxo7dqzq1KmjF154QVdccYVeffVVXXnllZKk48eP67LLLtP27ds1duxYNWzYUC+++KI++OCDCu354IMPNGDAAHXs2FGTJk1SQkKC+0Pwk08+qTBc48/x48fVq1cvbdq0Sbfffrtyc3M1f/58jRo1SocOHdKdd97p9/6zZ8/WjTfeqDZt2mjixImqVauWvvrqKy1atEjXXXed+5zRo0erU6dOmjp1qvbs2aMnnnhCy5cv11dffeUxDFJcXKx+/fqpc+fO+utf/6rFixfr//7v/9SiRQvddtttAV/Pxo0bdc011+g3v/mNRo4cqVmzZunqq6/WokWL1KdPH0mlgfyNN97Q1VdfrdzcXO3Zs8c93PXdd9+pYcOGHo/50EMPKTExUffcc4+KioqUmJio7777LqjHmDp1qlJSUjRhwgRt2rRJM2bMUI0aNZSQkKCDBw9q8uTJWrlypWbPnq3c3Fw98MAD7vv+6U9/0v33369hw4bp17/+tfbu3asZM2aoR48e7uv3hz/8QQUFBdqxY4cef/xxSaowV83b6zBr165dysvLc8/BatWqlXbu3KlXX31Vx44dU2Jiounr+vzzz2vs2LEaOnSo7rzzTp04cULffPONPvvsM/d7JhgzZ85UmzZtdMUVV6h69epauHChfvvb36qkpERjxowJ+vHKW7VqlU6ePKkOHToEPPePf/yjHnnkET377LPuv3XBKCoqMj1n2vX3sKSkRN98841uvPHGCufk5eXpvffe0+HDh5Wenu71cVJSUtS5c2fNnj1bXbp0Uffu3XXo0CE99NBDql27ttdh79GjR+vIkSOqVq2aunfvrkcffVQXXnhhEK/Ut3379qlPnz46cOCAPvroI7Vo0UKS9NVXX6lDhw4VAlJeXp6ee+45ff/99zrvvPMklQZIM/9orFmzpmrWrOn3nK+++kqpqak699xzKzyv6/Zu3boFfK5LLrlER44cUWJiovr166f/+7//q/KwdYcOHSr9D39biXYXpJWZ6eJ2Op1G+/bt3d97Gw6eO3euIcn4+OOP3cf8DQHn5OQEHEr55JNPDEnGSy+95HF80aJFXo+XN3LkSEOS8cgjj7iPHTx40EhJSTEcDocxb9489/H169cbkoxJkya5j40bN86QZHzyySfuY4cPHzZyc3ONZs2aubv7p0+fbkgy/v3vf7vPO3r0qHHWWWd5DAGXlJQYLVu2NPr16+ceUjKM0uuZm5tr9OnTx33MzBCw63nnzJnjPnby5EmjS5cuRlpamlFYWOjz2hw6dMhIT083OnfubBw/ftzjNlfbTp48aWRlZRlt27b1OOett94yJBkPPPCA+5jrWj/44IMej9W+fXujY8eOPtvhkpOTY0gyXnvtNfexgoICo0GDBh7vvRMnTlQY/tyyZYuRlJTk8dyu4a7mzZtXeL8G+xht27Y1Tp486T4+fPhww+FwGAMGDPB4jC5dungM427dutWoVq2a8ac//cnjvP/9739G9erVPY77GgL29zrMTjG44YYbjISEBK+/466ftdlrMnjwYKNNmzZ+n2/kyJFeX8ukSZOM8n/Ovf0t6devn9G8eXOPY+Xf+1u2bDEkGbNmzfLblr///e+GJON///tfhdtUZgj47rvvNhISEozZs2f7fTx/Q8Cu31kzXy579+71+ntjGIbx1FNPGZKM9evX+23Txo0bjQ4dOng8fvPmzSvcb/ny5cYvf/lL4x//+IexYMECY+rUqUadOnWM5ORkY/Xq1X6fw5eynx+7d+822rRpYzRv3tzYunWrx3mpqanGjTfeWOH+b7/9tiHJWLRokfuY629BoK+yf6t9GThwYIX3kmGU/n2WZEyYMMHv/V955RVj1KhRxgsvvGC8/vrrxh//+EejZs2aRt26dY3t27f7vF+gIWDDMIxbbrnFSElJCfga7I4ewChLS0vz+Jdt2WGFEydO6MiRI7roooskSatXr1b37t1D8rzz58+X0+lUnz59tG/fPvfxjh07Ki0tTUuXLjXV6/DrX//a/f+1atXSOeeco02bNmnYsGHu4+ecc45q1arlsfLunXfeUV5ense/ENPS0nTLLbdo4sSJ+u6779S2bVu98847atCggYYOHeo+r2bNmrrlllv0u9/9zn1szZo12rhxo/74xz9WmCR82WWX6cUXX1RJSYnpYYR33nlH2dnZGj58uPtYjRo1NHbsWA0fPlwfffSRLr/8cq/3ff/993X48GFNmDBBycnJHre5hru+/PJL/fTTT5o8ebLHOQMHDlSrVq309ttva8qUKR73/c1vfuPxfffu3fXiiy+aej0NGzZ096pKUkZGhm644QZNmzZN+fn5ys7OVlJSkvv24uJiHTp0SGlpaTrnnHO8rigcOXJkhWGwYB/jhhtu8Ohp7ty5s+bOnVuh16Zz587629/+ptOnT6t69er6z3/+o5KSEg0bNszj/Zudna2WLVtq6dKl+v3vf2/q2nh7HWaUlJTojTfe0KBBg7z28rh+1mavSa1atbRjxw598cUXFRYSVEbZ11RQUKBTp06pZ8+e+u9//6uCggI5nc4qPb7r96x27dpebzcMQ7fffrueffZZzZkzx+N3KVj9+vXT+++/H9R9jh8/Lsnz+ru4fudc5/iSnp6uNm3aqEuXLrrsssuUn5+vP//5zxoyZIg++eQTd2/jxRdfrIsvvth9vyuuuEJDhw7V+eefr4kTJ2rRokVBtb2sHTt26Prrr5ckffzxx2rUqFGF12n2Nb700ksBX7Mk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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = torch.nn.Linear(1, 1) # definizione della rete visualizzata nella figura sopra, con un neurone di input e uno di output\n", "k = get_params(model, 2)\n", "plot(x, y, f'Dati e modello con parametri casuali (k1={k[1]:.2f}, k0={k[0]:.2f})', model)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scegliamo come addestrare la rete specificando:\n", "* l'iperparametro tasso di apprendimento (*learning rate*);\n", "* l'iperparametro numero di epoche;\n", "* il criterio per valutare la qualità delle previsioni, in questo caso l'errore quadratico medio (*mean squared error*, MSE);\n", "* il metodo di ottimizzazione, in questo caso la *back propagation* mediante discesa stocastica lungo il gradiente (*stochastic gradient descent*, SGD)." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "learning_rate = 0.1\n", "num_epochs = 20\n", "criterion = torch.nn.MSELoss()\n", "optimizer = torch.optim.SGD(model.parameters(), lr = learning_rate)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Addestriamo la rete, visualizzando per ogni epoca le stime dei parametri e il valore della funzione di errore, e alla fine il grafico con la retta di regressione risultante. \n", "Per ora operiamo \"a scatola chiusa\", dunque senza interessarci di come l'addestramento si realizza." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "epoca\tparametri\tMSE\n", "1\t[1.58, 1.94]\t116.43\n", "2\t[3.25, 1.23]\t75.13\n", "3\t[4.59, 1.72]\t49.07\n", "4\t[5.66, 1.41]\t32.55\n", "5\t[6.52, 1.62]\t22.05\n", "6\t[7.21, 1.49]\t15.37\n", "7\t[7.75, 1.59]\t11.1\n", "8\t[8.19, 1.53]\t8.38\n", "9\t[8.54, 1.57]\t6.64\n", "10\t[8.83, 1.54]\t5.52\n", "11\t[9.05, 1.56]\t4.81\n", "12\t[9.23, 1.55]\t4.36\n", "13\t[9.37, 1.56]\t4.07\n", "14\t[9.49, 1.56]\t3.88\n", "15\t[9.58, 1.56]\t3.76\n", "16\t[9.65, 1.56]\t3.68\n", "17\t[9.71, 1.56]\t3.64\n", "18\t[9.76, 1.56]\t3.6\n", "19\t[9.8, 1.56]\t3.58\n", "20\t[9.83, 1.56]\t3.57\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c23aa2f50ab24f1aa041956ea57c4509", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAABxN0lEQVR4nO3dd3xTZfvH8U9aSlugLRSBsreyQYss2XuI4gDlcQDOR8GFiOAjo4JWBRUn6PNTQHHiAEUpD0NRFEREVEAQKhvKpoUCHcn5/RETSZu0SZs26/t+vfrSc3Jycp+TtLm47vu+bpNhGAYiIiIiEjLCfN0AERERESldCgBFREREQowCQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAERERkRCjAFBEREQkxCgAFBEREQkxCgBFREREQowCQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAERERkRCjAFBEREQkxCgAFBEREQkxCgBFREREQowCQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAKVX16tVj5MiRvm5GwJg6dSomk8lhn+6ha87uV6Dw9/f1m2++wWQy8c0335To65hMJqZOnVrocYH8Xov4AwWAIWrevHmYTCb7T1RUFDVq1KBfv3689NJLnD59usjn/uGHH5g6dSqnTp3yXoNL2Wuvvca8efPy7d+6dStTp05l9+7dpd4mEX8zcuRIunfv7utmlIinnnqKRYsW+boZpSYY/m6LZxQAhrgnnniCd955h9mzZ3PfffcB8OCDD9KyZUt+++23Ip3zhx9+ICkpyekfku3bt/Pf//63OE0uFQUFgElJST4NAAPlHvrC448/zrlz53zdDAkCoRgAuvq7LcGpjK8bIL41YMAA2rZta9+eOHEiq1at4sorr+Sqq67ijz/+IDo62muvFxkZ6bVzeSIzM5Py5cv75LW9raj3MDc3F4vFQtmyZb3covwMw+D8+fNe/ey4o0yZMpQpoz9rUrqC6e+LhA5lACWfnj17MmnSJPbs2cOCBQvs+3/77TdGjhxJgwYNiIqKIiEhgdtuu43jx4/bj5k6dSqPPPIIAPXr17d3MdsyZu6Oc7JYLMyaNYvmzZsTFRVFtWrVuPvuuzl58mShzx05ciQVKlQgNTWVgQMHEhMTw0033eT2eevVq8eWLVtYvXq1vf3du3dn3rx5DB06FIAePXrYH7ONiVq8eDGDBg2iRo0aREZG0rBhQ6ZNm4bZbC60zQBr1qzh8ssvJyoqioYNG/L66687Pc6de7h7925MJhMzZ85k1qxZNGzYkMjISLZu3QrAtm3buP7664mPjycqKoq2bdvy+eef5zvPb7/9Rrdu3YiOjqZWrVpMnz6duXPnOryntjZdeeWVLFu2jLZt2xIdHW1v/6lTp3jwwQepXbs2kZGRNGrUiGeeeQaLxeLwWh988AGJiYnExMQQGxtLy5YtefHFF+2P5+TkkJSUROPGjYmKiqJy5cp07tyZ5cuX249xNi4sNzeXadOm2e9BvXr1eOyxx8jKysp3X6+88krWrFlDu3btiIqKokGDBrz99tv57ou71+SMYRhMnz6dWrVqUa5cOXr06MGWLVucHvvXX38xdOhQ4uPjKVeuHB06dODLL790OMY2Nu/DDz/kscceIyEhgfLly3PVVVexb9++fOdcuHAhiYmJREdHc9FFF3HzzTdz4MCBQtvtrpkzZ9KpUycqV65MdHQ0iYmJfPzxx/mOy8rK4qGHHqJKlSrExMRw1VVXsX//fqfndPd3A2DBggX264uPj+fGG2/Mdx927NjBddddR0JCAlFRUdSqVYsbb7yR9PR0wDoOMTMzk/nz59t/z22/c7bP2NatW/nXv/5FpUqV6Ny5M+De38gLz/Hnn39y8803ExcXR5UqVZg0aRKGYbBv3z6uvvpqYmNjSUhI4LnnnnN6/6ZMmUKjRo2IjIykdu3ajB8/Pt/n2mQyMWbMGBYtWkSLFi2IjIykefPmpKSkOLSnoL/b7v4OSWDRP5XFqVtuuYXHHnuM//3vf9x5550ALF++nL/++otRo0aRkJDAli1beOONN9iyZQvr1q3DZDJx7bXX8ueff/L+++/zwgsvcNFFFwFQpUoVj17/7rvvZt68eYwaNYr777+fXbt28corr/DLL7/w/fffExERUeDzc3Nz6devH507d2bmzJmUK1fO7fPOmjWL++67jwoVKvCf//wHgGrVqtGwYUPuv/9+XnrpJR577DGaNm0KYP/vvHnzqFChAmPHjqVChQqsWrWKyZMnk5GRwYwZMwps7++//07fvn2pUqUKU6dOJTc3lylTplCtWjWP7ltec+fO5fz589x1111ERkYSHx/Pli1buOKKK6hZsyYTJkygfPnyfPTRRwwZMoRPPvmEa665BoADBw7YA92JEydSvnx5/u///s9lBnL79u0MHz6cu+++mzvvvJNLLrmEs2fP0q1bNw4cOMDdd99NnTp1+OGHH5g4cSKHDh1i1qxZgPWzNXz4cHr16sUzzzwDwB9//MH333/PAw88AFi/pJKTk7njjjto164dGRkZbNiwgY0bN9KnTx+X9+COO+5g/vz5XH/99Tz88MP8+OOPJCcn88cff/DZZ585HLtz506uv/56br/9dkaMGMFbb73FyJEjSUxMpHnz5gBuX5MrkydPZvr06QwcOJCBAweyceNG+vbtS3Z2tsNxhw8fplOnTpw9e5b777+fypUrM3/+fK666io+/vhj+/tk8+STT2IymXj00Uc5cuQIs2bNonfv3mzatMmeibV99i+//HKSk5M5fPgwL774It9//z2//PILFStWLLDt7njxxRe56qqruOmmm8jOzuaDDz5g6NChLFmyhEGDBtmPu+OOO1iwYAH/+te/6NSpE6tWrXJ43MaT340nn3ySSZMmMWzYMO644w6OHj3Kyy+/TNeuXe3Xl52dTb9+/cjKyuK+++4jISGBAwcOsGTJEk6dOkVcXBzvvPOO/XN21113AdCwYUOH1xo6dCiNGzfmqaeewjAMwL2/kRe64YYbaNq0KU8//TRffvkl06dPJz4+ntdff52ePXvyzDPP8O677zJu3Dguv/xyunbtClj/IXvVVVexZs0a7rrrLpo2bcrvv//OCy+8wJ9//pmv63rNmjV8+umn3HvvvcTExPDSSy9x3XXXsXfvXipXrlzo321PfockgBgSkubOnWsAxk8//eTymLi4OOPSSy+1b589ezbfMe+//74BGN9++61934wZMwzA2LVrV77j69ata4wYMaLAtn333XcGYLz77rsO+1NSUpzuz2vEiBEGYEyYMKHI523evLnRrVu3fOdeuHChARhff/11vsec3Z+7777bKFeunHH+/PkC2zxkyBAjKirK2LNnj33f1q1bjfDwcCPvr6k793DXrl0GYMTGxhpHjhxxeKxXr15Gy5YtHdpksViMTp06GY0bN7bvu++++wyTyWT88ssv9n3Hjx834uPj872/devWNQAjJSXF4bWmTZtmlC9f3vjzzz8d9k+YMMEIDw839u7daxiGYTzwwANGbGyskZub6/KaWrdubQwaNKjA654yZYrD/dq0aZMBGHfccYfDcePGjTMAY9WqVfmu4cLP8pEjR4zIyEjj4Ycf9vianDly5IhRtmxZY9CgQYbFYrHvf+yxxwzA4X198MEHDcD47rvv7PtOnz5t1K9f36hXr55hNpsNwzCMr7/+2gCMmjVrGhkZGfZjP/roIwMwXnzxRcMwDCM7O9uoWrWq0aJFC+PcuXP245YsWWIAxuTJk122+8LXcfbZv1De34Ps7GyjRYsWRs+ePe37bO/Lvffe63Dsv/71LwMwpkyZYt/n7u/G7t27jfDwcOPJJ590OOfvv/9ulClTxr7/l19+MQBj4cKFBV5H+fLlnf6e2T5jw4cPL/TaDcP530jbOe666y77vtzcXKNWrVqGyWQynn76afv+kydPGtHR0Q5teeedd4ywsDCHz4ZhGMacOXMMwPj+++/t+wCjbNmyxs6dO+37fv31VwMwXn75Zfs+V3+3PfkdksCiLmBxqUKFCg6zgS8cz3X+/HmOHTtGhw4dANi4caPXXnfhwoXExcXRp08fjh07Zv9JTEykQoUKfP31126d55577imR87py4f05ffo0x44do0uXLpw9e5Zt27a5fJ7ZbGbZsmUMGTKEOnXq2Pc3bdqUfv36FatN1113nUP29cSJE6xatYphw4bZ23js2DGOHz9Ov3792LFjh707MCUlhY4dO9KmTRv78+Pj4+3d6XnVr18/X3sXLlxIly5dqFSpksM97927N2azmW+//RaAihUrkpmZ6dCdm1fFihXZsmULO3bscPv6v/rqKwDGjh3rsP/hhx8GyNed2qxZM7p06WLfrlKlCpdccgl//fWXx9fkzIoVK8jOzua+++5zyAY9+OCDTtverl07e/ciWH8n77rrLnbv3m3vzre59dZbiYmJsW9ff/31VK9e3X4PNmzYwJEjR7j33nuJioqyHzdo0CCaNGmS714U1YW/BydPniQ9PZ0uXbo4/I2wten+++93eG7e++DJ78ann36KxWJh2LBhDu9LQkICjRs3tv9+x8XFAbBs2TLOnj1b5Ov897//nW+fp38j77jjDvv/h4eH07Zt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My1btuTOO++kQYMGHD58mLVr17J//35+/fVXAMaPH8+CBQvo06cP9913n70MTJ06dThx4oRbmYdHHnmEzz//nCuvvNJeTiUzM5Pff/+djz/+mN27d3PRRRdxxx13cOLECXr27EmtWrXYs2cPL7/8Mm3atLFnHZo1a0b37t1JTEwkPj6eDRs28PHHHzNmzBiXr9+6dWtGjBjBG2+8Ye+mX79+PfPnz2fIkCH06NHD4/vn7jU5U6VKFcaNG0dycjJXXnklAwcO5JdffmHp0qX5njNhwgTef/99BgwYwP333098fDzz589n165dfPLJJ/mGOMTHx9O5c2dGjRrF4cOHmTVrFo0aNbKXcYqIiOCZZ55h1KhRdOvWjeHDh9vLwNSrV4+HHnrI43uR16BBg3j++efp378///rXvzhy5AivvvoqjRo1cvgct2nThuHDh/Paa6+Rnp5Op06dWLlypdPssru/Gw0bNmT69OlMnDiR3bt3M2TIEGJiYti1axefffYZd911F+PGjWPVqlWMGTOGoUOHcvHFF5Obm8s777xDeHg41113nf18iYmJrFixgueff54aNWpQv359p2MybTz5G1lct9xyCx999BH//ve/+frrr7niiiswm81s27aNjz76yF6P0xOu/m6XxO+Q+AkfzDwWP2ArA2P7KVu2rJGQkGD06dPHePHFFx3KSdjs37/fuOaaa4yKFSsacXFxxtChQ42DBw/mK9tgGNZSGTVr1jTCwsIcSgu4U8LE5o033jASExON6OhoIyYmxmjZsqUxfvx44+DBgwU+b8SIEUb58uWLdd60tDRj0KBBRkxMjAE4lIT573//azRo0MBehsJWFuP77783OnToYERHRxs1atQwxo8fbyxbtsyt0hmGYRirV682EhMTjbJlyxoNGjQw5syZk6+siWF4VgZmxowZTh9PTU01br31ViMhIcGIiIgwatasaVx55ZXGxx9/7HDcL7/8YnTp0sWIjIw0atWqZSQnJxsvvfSSARhpaWkObXJVouX06dPGxIkTjUaNGhlly5Y1LrroIqNTp07GzJkzjezsbMMwDOPjjz82+vbta1StWtUoW7asUadOHePuu+82Dh06ZD/P9OnTjXbt2hkVK1Y0oqOjjSZNmhhPPvmk/RyGkb8MjGEYRk5OjpGUlGTUr1/fiIiIMGrXrm1MnDgxX2keV9fQrVu3fCWB3LkmV8xms5GUlGRUr17diI6ONrp3725s3rzZ6fuamppqXH/99UbFihWNqKgoo127dsaSJUscjrGVZ3n//feNiRMnGlWrVjWio6ONQYMGOZROsfnwww+NSy+91IiMjDTi4+ONm266ydi/f3+Bbb7wdQr7LL/55ptG48aNjcjISKNJkybG3Llznb4v586dM+6//36jcuXKRvny5Y3Bgwcb+/btc/r3xN3fDcMwjE8++cTo3LmzUb58eaN8+fJGkyZNjNGjRxvbt283DMMw/vrrL+O2224zGjZsaERFRRnx8fFGjx49jBUrVjicZ9u2bUbXrl2N6OhohxI9ttc9evRovtd292+kq3O4+tvVrVs3o3nz5g77srOzjWeeecZo3ry5ERkZaVSqVMlITEw0kpKSjPT0dPtxgDF69Oh853T2eXP1d9vd3yEJLCbD8GAUqIiEvAcffJDXX3+dM2fOuBxcLqXnm2++oUePHixcuLBImXERCU0aAygiLp07d85h+/jx47zzzjt07txZwZ+ISADTGEARcaljx450796dpk2bcvjwYd58800yMjJc1hAUEZHAoABQRFwaOHAgH3/8MW+88QYmk4nLLruMN99806HUjYiIBB6NARQREREJMRoDKCIiIhJiFACKiIiIhBgFgCIiIiIhRpNAisFisXDw4EFiYmK0ULaIiEiAMAyD06dPU6NGjXyr6oQKBYDFcPDgQWrXru3rZoiIiEgR7Nu3j1q1avm6GT6hALAYYmJiAOsHKDY21setEREREXdkZGRQu3Zt+/d4KFIAWAy2bt/Y2FgFgCIiIgEmlIdvhWbHt4iIiEgIUwAoIiIiEmIUAIqIiIiEGAWAIiIiIiFGAaCIiIhIiFEAKCIiIhJiFACKiIiIhBgFgCIiIiIhRoWgRURExCvMFoP1u05w5PR5qsZE0a5+POFhoVts2Z8pABQREZFiS9l8iKQvtnIo/bx9X/W4KKYMbkb/FtV92DJxRl3AIiIiUiwpmw9xz4KNDsEfQFr6ee5ZsJGUzYd81DJxRQGgiIiIFJnZYpD0xVYMJ4/Z9iV9sRWzxdkR4isKAEVERKTI1u86kS/zdyEDOJR+nvW7TpReo6RQAREAJicnc/nllxMTE0PVqlUZMmQI27dvdzjm/PnzjB49msqVK1OhQgWuu+46Dh8+XOB5DcNg8uTJVK9enejoaHr37s2OHTtK8lJERESCypHTroO/ohwnpSMgAsDVq1czevRo1q1bx/Lly8nJyaFv375kZmbaj3nooYf44osvWLhwIatXr+bgwYNce+21BZ732Wef5aWXXmLOnDn8+OOPlC9fnn79+nH+vD6kIiIi7qgaE+XV46R0mAzDCLhO+aNHj1K1alVWr15N165dSU9Pp0qVKrz33ntcf/31AGzbto2mTZuydu1aOnTokO8chmFQo0YNHn74YcaNGwdAeno61apVY968edx4442FtiMjI4O4uDjS09OJjY317kWKiIgEALPFoPMzq0hLP+90HKAJSIiLYs2jPf2mJIy+vwMkA5hXeno6APHx8QD8/PPP5OTk0Lt3b/sxTZo0oU6dOqxdu9bpOXbt2kVaWprDc+Li4mjfvr3L54iIiIij8DATUwY3A6zB3oVs21MGN/Ob4E+sAi4AtFgsPPjgg1xxxRW0aNECgLS0NMqWLUvFihUdjq1WrRppaWlOz2PbX61aNbefk5WVRUZGhsOPiIhIqOvfojqzb76MhDjHbt6EuChm33yZ6gD6oYArBD169Gg2b97MmjVrSv21k5OTSUpKKvXXFRER8Xf9W1SnT7MErQQSIAIqAzhmzBiWLFnC119/Ta1atez7ExISyM7O5tSpUw7HHz58mISEBKfnsu3PO1O4oOdMnDiR9PR0+8++ffuKcTUiIiLBJTzMRMeGlbm6TU06Nqys4M+PBUQAaBgGY8aM4bPPPmPVqlXUr1/f4fHExEQiIiJYuXKlfd/27dvZu3cvHTt2dHrO+vXrk5CQ4PCcjIwMfvzxR5fPiYyMJDY21uFHREREJNAERAA4evRoFixYwHvvvUdMTAxpaWmkpaVx7tw5wDp54/bbb2fs2LF8/fXX/Pzzz4waNYqOHTs6zABu0qQJn332GQAmk4kHH3yQ6dOn8/nnn/P7779z6623UqNGDYYMGeKLyxQREREpFQExBnD27NkAdO/e3WH/3LlzGTlyJAAvvPACYWFhXHfddWRlZdGvXz9ee+01h+O3b99un0EMMH78eDIzM7nrrrs4deoUnTt3JiUlhago1SoSERGR4BWQdQD9heoIiYiIBB59fwdIF7CIiIiIeI8CQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEK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XmDOnDk89thjvm5aUPjwww8ZO3YsU6ZMYePGjbRu3Zp+/fpx5MgRXzctqKxevZrRo0ezbt06li9fTk5ODn379iUzM9PXTQtqP/30E6+//jqtWrXydVPEB1QGRkrM0qVLGTt2LJ988gnNmzfnl19+oU2bNr5uVtCbMWMGs2fP5q+//vJ1UwJe+/btufzyy3nllVcA6/rftWvX5r777mPChAk+bl3wOnr0KFWrVmX16tV07drV180JSmfOnOGyyy7jtddeY/r06bRp04ZZs2b5ullSipQBlBJx+PBh7rzzTt555x3KlSvn6+aElPT0dOLj433djICXnZ3Nzz//TO/eve37wsLC6N27N2vXrvVhy4Jfeno6gD7HJWj06NEMGjTI4fMtoaWMrxsgwccwDEaOHMm///1v2rZty+7du33dpJCxc+dOXn75ZWbOnOnrpgS8Y8eOYTabqVatmsP+atWqsW3bNh+1KvhZLBYefPBBrrjiClq0aOHr5gSlDz74gI0bN/LTTz/5uiniQ8oAitsmTJiAyWQq8Gfbtm28/PLLnD59mokTJ/q6yQHL3Xt9oQMHDtC/f3+GDh3KnXfe6aOWixTP6NGj2bx5Mx988IGvmxKU9u3bxwMPPMC7775LVFSUr5sjPqQxgOK2o0ePcvz48QKPadCgAcOGDeOLL77AZDLZ95vNZsLDw7npppuYP39+STc14Ll7r8uWLQvAwYMH6d69Ox06dGDevHmEhenfdsWVnZ1NuXLl+PjjjxkyZIh9/4gRIzh16hSLFy/2XeOC1JgxY1i8eDHffvst9evX93VzgtKiRYu45pprCA8Pt+8zm82YTCbCwsLIyspyeEyClwJA8bq9e/eSkZFh3z548CD9+vXj448/pn379tSqVcuHrQs+Bw4coEePHiQmJrJgwQL98fai9u3b065dO15++WXA2j1Zp04dxowZo0kgXmQYBvfddx+fffYZ33zzDY0bN/Z1k4LW6dOn2bNnj8O+UaNG0aRJEx599FF1u4cQjQEUr6tTp47DdoUKFQBo2LChgj8vO3DgAN27d6du3brMnDmTo0eP2h9LSEjwYcuCw9ixYxkxYgRt27alXbt2zJo1i8zMTEaNGuXrpgWV0aNH895777F48WJiYmJIS0sDIC4ujujoaB+3LrjExMTkC/LKly9P5cqVFfyFGAWAIgFs+fLl7Ny5k507d+YLrpXcL74bbriBo0ePMnnyZNLS0mjTpg0pKSn5JoZI8cyePRuA7t27O+yfO3cuI0eOLP0GiYQAdQGLiIiIhBiNFBcREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAERERkRCjAFBEREQkxCgAFBEREQkxCgBFREREQowCQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAERERkRCjAFBEREQkxCgAFBEREQkxCgBFREREQowCQBEREZEQowBQREREJMQoABQREREJMQoARUREREKMAkARERGREKMAUERERCTEKAAUERERCTEKAEVERERCjAJAERERkRDz/wYzCkfmgnjNAAAAAElFTkSuQmCC", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train(model, criterion, optimizer, x, y, num_epochs)\n", "plot(x, y, \"Dati e retta di regressione dopo l'addestramento\", model)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Possiamo ora \"aprire la scatola\" per vedere come l'addestramento si realizza, e visualizzando la retta di regressione alla fine di ogni epoca, per mostrare la convergenza progressiva verso la retta che meglio stima quella da cui i dati nel *training set* sono stati generati. \n", "Il codice qui sotto, che tra l'altro contiene vari dettagli concettualmente non così rilevanti, è basato su `PyTorch`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d69a6767320a4d37b1b733b37225d035", "version_major": 2, "version_minor": 0 }, "image/png": "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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model = torch.nn.Linear(1, 1)\n", "learning_rate = 0.05\n", "num_epochs = 50\n", "criterion = torch.nn.MSELoss()\n", "optimizer = torch.optim.SGD(model.parameters(), lr = learning_rate)\n", "\n", "xx, yy = x.numpy(), y.numpy()\n", "plt.close('all')\n", "fig, ax = plt.subplots()\n", "ax.scatter(xx, yy, marker='o')\n", "[k0, k1] = get_params(model)\n", "line, = ax.plot(xx, k0 + k1 * xx, color='blue')\n", "\n", "def update(epoch):\n", " y1 = model(x) # inferenza: calcola i valori y previsti dal modello\n", " loss = criterion(y1, y) # calcola il valore della funzione di errore\n", " optimizer.zero_grad()\n", " loss.backward() # backpropagation: calcola il gradiente della funzione di errore\n", " optimizer.step() # aggiorna i parametri del modello\n", " mse = torch.mean((y1 - y)**2) # calcola il nuovo valore della funzione di errore\n", " line.set_ydata(y1.detach().numpy())\n", " [k0, k1] = get_params(model)\n", " plt.title(f'epoca={epoch+1}, k0={k0:.2f}, k1={k1:.2f}, MSE={mse:.2f}')\n", " return line,\n", "\n", "_ = FuncAnimation(fig, update, frames=num_epochs, interval=100, repeat=False)\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Come ultimo passo, possiamo \"aprire la scatola\" ancora di più, evitare di usare `PyTorch` e scrivendo tutto \"a mano\".\n", "\n", "Ricordiamo che la funzione di errore che abbiamo scelto, lo scarto quadratico medio (*mean square error*, MSE) tra training set e retta / modello, è definita così: \n", "> $\\sum\\limits_{i=1}^n (\\hat y_i - y_i)^2 / n = \\sum\\limits_{i=1}^n (k_0 + k_1 x_i - y_i)^2 / n$\n", "\n", "in cui $\\hat y_i$ è dunque il valore previsto dal modello per $x_i$.\n", "\n", "Per risolvere il problema, consideriamo l'MSE come una funzione dei parametri $k_0$ e $k_1$: \n", "> $g(k_0, k_1) = \\sum\\limits_{i=1}^n (k_0 + k_1 x_i - y_i)^2 / n$.\n", "\n", "Trovando i valori di $k_0$ e $k_1$ che rendono minimo il valore della funzione di errore $g$, avremo risolto il problema. \n", "Per via analitica, questo corrisponderebbe a calcolare il gradiente $\\nabla g(k_0, k_1)$ di $g(k_0, k_1)$ e quindi trovare i valori dei suoi argomenti per cui $\\nabla g(k_0, k_1) = 0$ (per come è definita, è chiaro che la funzione $g$ non ha un massimo, e dunque un suo zero sarebbe un minimo: l'errore minimo, appunto). \n", "A questa idea è anche ispirato l'algoritmo della \"discesa lungo il gradiente\" della funzione $g$.\n", "\n", "Dato il fatto che le componenti di $\\nabla g$, cioè le derivate parziali della funzione $g(k_0, k_1)$, sono \n", "> $\\partial g(k_0, k_1) / \\partial k_0 = 2 \\sum_{i=1}^n (k_0 + k_1 x_i - y_i) / n$ \n", "> $\\partial g(k_0, k_1) / \\partial k_1 = 2 \\sum_{i=1}^n (x_i (k_0 + k_1 x_i - y_i) / n)$ \n", "\n", "e dopo aver assegnato un valore iniziale a $k_0$ e $k_1$ (*passo 0*):\n", "* per ogni $x_i$ nel training set, si calcola $\\hat y_i = k_0 + k_1 x_i$ (*passo 1*);\n", "* si calcolano le derivate parziali $\\partial g / \\partial k_0$ e $\\partial g / \\partial k_1$ (*passo 2*);\n", "* si modificano i valori di $k_0$ e $k_1$ \"verso lo zero\" del gradiente (*passo 3*), dunque \n", " $k_0 = k_0 - z \\partial g / \\partial k_0$ \n", " $k_1 = k_1 - z \\partial g / \\partial k_1$ \n", " dove $z$ determina la rapidità dell'apprendimento (*learning rate*),\n", "\n", "ripetendo il processo per il numero di volte specificato.\n", "\n", "L'animazione mostra come, ripetendo il passo dell'addestramento, il valore dell'MSE si riduce, e i valori dei parametri si avvicinano progressivamente ai valori dei parametri che erano stati usati per generare il training set." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "611c812ebfd34e24b2304fb592cbd815", "version_major": 2, "version_minor": 0 }, "image/png": "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", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from random import random\n", "import numpy as np\n", "\n", "xx, yy = x.numpy(), y.numpy()\n", "plt.close('all')\n", "fig2, ax2 = plt.subplots()\n", "ax2.scatter(xx, yy, marker='o')\n", "k0, k1 = random(), random() # passo 0: inizializzazione casuale dei parametri del modello\n", "line2, = ax2.plot(xx, k0 + k1 * xx, color='blue')\n", "\n", "lr = 0.05\n", "num_epochs = 50\n", "\n", "def update2(epoch):\n", " global k0, k1\n", " y1 = k0 + k1 * xx # passo 1: inferenza: calcola i valori y previsti dal modello\n", " d0 = np.mean(2 * (y1 - yy)) # passo 2: backpropagation: calcola il gradiente della funzione di errore\n", " d1 = np.mean(2 * xx * (y1 - yy))\n", " k0 = k0 - lr * d0 # passo 3: aggiorna i parametri del modello\n", " k1 = k1 - lr * d1\n", " mse = np.mean((y1 - yy)**2) # calcola il nuovo valore della funzione di errore\n", " line2.set_ydata(y1)\n", " plt.title(f'epoca={epoch+1}, k0={k0:.2f}, k1={k1:.2f}, MSE={mse:.2f}')\n", " return line2,\n", "\n", "_ = FuncAnimation(fig2, update2, frames=num_epochs, interval=100, repeat=False)\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.12.3" } }, "nbformat": 4, "nbformat_minor": 2 }