{"cells":[{"cell_type":"markdown","id":"e02bd2f5-b780-47cf-b231-954a981d6472","metadata":{"id":"e02bd2f5-b780-47cf-b231-954a981d6472"},"source":["\"Open\n","\n","# Neural networks\n","\n","## Basics\n","Let's start by relating neural networks to regression. Consider a simple case where we have two nodes, $1$ and $X$ pointing to an outcome $Y$. What does this mean? Let's first put some context around the problem. Imagine that we want to use a subject's BMI $X$ to predict their blood pressure, $Y$. This diagram represents that."]},{"cell_type":"code","execution_count":null,"id":"bab16458-0143-479f-96bc-e6bd32353392","metadata":{"tags":["hide-input"],"id":"bab16458-0143-479f-96bc-e6bd32353392","outputId":"bd8bc310-6223-45f8-da31-a77cad1213a0"},"outputs":[{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["import networkx as nx\n","import matplotlib.pyplot as plt\n","import numpy as np\n","import sklearn as skl\n","\n","plt.figure(figsize=[2, 2])\n","#G = nx.Graph()\n","G = nx.DiGraph()\n","\n","G.add_node(\"1\", pos = (0, 1) )\n","G.add_node(\"X\", pos = (1, 1) )\n","G.add_node(\"Y\", pos = (.5, 0))\n","G.add_edge(\"1\", \"Y\")\n","G.add_edge(\"X\", \"Y\")\n","nx.draw(G,\n"," nx.get_node_attributes(G, 'pos'),\n"," with_labels=True,\n"," font_weight='bold',\n"," node_size = 2000,\n"," node_color = \"lightblue\",\n"," linewidths = 3)\n","ax= plt.gca()\n","ax.collections[0].set_edgecolor(\"#000000\")\n","ax.set_xlim([-.3, 1.3])\n","ax.set_ylim([-.3, 1.3])\n","plt.show()"]},{"cell_type":"markdown","id":"222d933d-d518-4c63-92fb-4d01ab6dd78e","metadata":{"id":"222d933d-d518-4c63-92fb-4d01ab6dd78e"},"source":["To interpret this diagram as a neural network, consider the following rule:\n","\n",":::{note}\n","Parent nodes that point to a child node are multiplied by weights then added together then operated on by an activation function to form the child node.\n",":::\n","\n","If the parent nodes point to the outcome, then the nodes are combined the operated on by a known function, called the **activation function** to form a prediction. So, in this case, this is saying that the intercept (node labeled $1$)times a weight plus BMI (node labeled $X$) times a different weight get combined to form a prediction for SBP $Y$. Or, in other words\n","\n","$$\n","\\hat Y = g(w_0 \\times 1 + w_1 \\times X)\n","$$\n","\n","where $g$ is a function that we specify. So in this case, if $w_0 = 120$, $w_1 = .1$ and $g$ is an idenity function, $g(a) = a$, and a subject had a BMI of 30, then the prediction would be\n","\n","$$\n","\\hat Y = g(120 + .1 * 30) = 120.3\n","$$\n","\n","Note $g$ is not shown in the diagram (though maybe you could with the shape of the child node) or something like that0. Also not shown in the daigram is:\n","\n","+ The loss function, i.e. how to measure the different between $\\hat Y$ and $Y$.\n","+ The way the loss function combines subjects; we have multiple BMIs and SBPs\n","+ How we obtain the weights, $W_0$ and $W_1$; this is done by minmizing the loss function using an algorithm\n","\n","So, imagine the case where $g$ is an identity function, our loss function for different subjects is squared error and we combine different losses by adding them up. Then, our weights are obtained by minmizing\n","\n","$$\n","\\sum_{i=1}^N (Y_i - \\hat Y_i)^2\n","$$\n","\n","and so, presuming our optimization algorithm works well, it should be idential to linear regression.\n","\n","Consider a different setting. Imagine if our $Y$ is 0 or 1 based on whether or not the subject is taking anti-hypertensive mediations. Further, let $g$ be the sigmoid function, $g(a) = 1 / \\{1 + \\exp(-a)\\}$. Our prediction is\n","\n","$$\n","\\hat Y = \\{1 + \\exp(-W_0 - W_1 X)\\}^{-1}\n","$$\n","\n","which is the logistic regression prediction with intercept $W_0$ and slope $W_1$. Consider a case where\n","$W_0 = -4$, $W_1 = .1$ and $X=30$, then our $\\hat Y = 1 / \\{1 + \\exp[-(-4 + .1\\times 30)\\}]\\approx .27$. Thus, this model estimates a 27% probability that a subject with a BMI of 30 has hypertension.\n","\n","Further, if we specify that the loss function is binary cross entropy\n","\n","$$\n","- \\sum_{i=1}^n \\{ Y_i \\log(\\hat Y_i) + (1 - Y_i) \\log(1 - \\hat Y_i)\\} / N\n","$$\n","\n","then minmizing our loss function is identical to maximizing the likelihood for logistic regression."]},{"cell_type":"code","execution_count":null,"id":"fa2fed7a-baa3-4152-b3ae-e09c1cb7e5c4","metadata":{"id":"fa2fed7a-baa3-4152-b3ae-e09c1cb7e5c4","outputId":"8b172af1-16f0-452c-bda8-9f06ff2b5da6"},"outputs":[{"data":{"text/plain":["0.2689414213699951"]},"execution_count":8,"metadata":{},"output_type":"execute_result"}],"source":["1 / (1 + np.exp(-(-4 + .1 * 30)))"]},{"cell_type":"markdown","id":"d7c4279f-59fc-4b57-b2d4-bd29b3692289","metadata":{"id":"d7c4279f-59fc-4b57-b2d4-bd29b3692289"},"source":["## More layers\n","\n","Of course, there'd be no point in using NNs for problems that we can just solve with generalized linear models. NNs get better when we add more layers, since then they can discover interactions and non-linearities. Consider the following model. Notice we quit explicitly adding the bias (intercept) term / node. In general assume the bias term is included unless otherwise specified."]},{"cell_type":"code","execution_count":null,"id":"77f04c97-3a64-4c1e-98b6-05cdf7ebd9f0","metadata":{"tags":["hide-input"],"id":"77f04c97-3a64-4c1e-98b6-05cdf7ebd9f0","outputId":"20ebeae0-0c41-492d-bc46-b762896eb6fe"},"outputs":[{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["#plt.figure(figsize=[2, 2])\n","G = nx.DiGraph()\n","G.add_node(\"X1\", pos = (0, 3) )\n","G.add_node(\"X2\", pos = (1, 3) )\n","G.add_node(\"H11\", pos = (0, 2) )\n","G.add_node(\"H12\", pos = (1, 2) )\n","G.add_node(\"H21\", pos = (0, 1) )\n","G.add_node(\"H22\", pos = (1, 1) )\n","G.add_node(\"Y\", pos = (.5, 0))\n","G.add_edges_from([ (\"X1\", \"H11\"), (\"X1\", \"H12\"), (\"X2\", \"H11\"), (\"X2\", \"H12\")])\n","G.add_edges_from([(\"H11\", \"H21\"), (\"H11\", \"H22\"), (\"H12\", \"H21\"), (\"H12\", \"H22\")])\n","G.add_edges_from([(\"H21\", \"Y\"), (\"H22\", \"Y\")])\n","nx.draw(G,\n"," nx.get_node_attributes(G, 'pos'),\n"," with_labels=True,\n"," font_weight='bold',\n"," node_size = 2000,\n"," node_color = \"lightblue\",\n"," linewidths = 3)\n","ax= plt.gca()\n","ax.collections[0].set_edgecolor(\"#000000\")\n","ax.set_xlim([-.3, 3.3])\n","ax.set_ylim([-.3, 3.3])\n","plt.show()"]},{"cell_type":"markdown","id":"f6ca8ef1-cb07-442b-b0da-f4480e6d76a4","metadata":{"id":"f6ca8ef1-cb07-442b-b0da-f4480e6d76a4"},"source":["Usually, the nodes are added in so called layers. $(X_1, X_2)$ is the input layer, $(H_{11}, H_{12})$ is the first hidden layer, $(H_{21}, H_{22})$ is the second hidden layer and $Y$ is the output layer. Imagine plugging an $X_1$ and $X_2$ into this network. It would feed forward through the network as\n","\n","$$\n","\\begin{align}\n","H_{11} = & g_1(W_{011} + W_{111} X_1 + W_{211} X_2) \\\\\n","H_{12} = & g_1(W_{012} + W_{112} X_1 + W_{212} X_2) \\\\\n","H_{21} = & g_2(W_{021} + W_{121} H_{11} + W_{221} H_{12}) \\\\\n","H_{22} = & g_2(W_{022} + W_{122} H_{12} + W_{222} H_{12}) \\\\\n","\\hat Y = & g_3(W_{031} + W_{131} H_{21} + W_{231} H_{22})\n","\\end{align}\n","$$\n","\n","where $g_k$ are specified activation functions. Typically, we would have a different activation function for the output layer than the others, and the other would have the same activation function. So, for example, if $Y$ was binary, like hypertension diagnosis, then $g_1=g_2$ and $g_3$ would be a sigmoid."]},{"cell_type":"markdown","id":"8270a6e1-e1f6-411a-b1eb-e81b2134ecc3","metadata":{"id":"8270a6e1-e1f6-411a-b1eb-e81b2134ecc3"},"source":["## Activation functions\n","\n","The output activation function tends to be based on the structure of the outcome. For example, a binary outcome would likely have a sigmoidal, or other function from $\\mathbb{R}$ to $[0, 1]$ so as to model a probability. Historically, the internal activation functions were binary thresholds. This was owning to the fact that neural networks were models of (biological) neurons and the threshold was a model of an action potential being propigated. However, modern neural networks have less of a direct connection to their biological motivation and other activation functions tend to be used. The most popular right now is the rectified linear unit (RELU) function. This is simply:\n","\n","$$\n","RELU(a) = \\left\\{\n","\\begin{array}{ll}\n","a & \\text{if $a>0$} \\\\\n","0 & \\text{otherwise}\n","\\end{array}\n","\\right.\n","= a \\times I(a > 0)\n","$$\n","\n","Plotted, this is:"]},{"cell_type":"code","execution_count":null,"id":"12e4ed97-46d1-4348-b22d-4f0606fa93af","metadata":{"id":"12e4ed97-46d1-4348-b22d-4f0606fa93af","outputId":"ccf607ec-f644-4ce1-fd2a-61350c11c00c"},"outputs":[{"data":{"image/png":"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rHvF36YpKSnRkSNHFBYWJj8/v2p73NzcXEVHRystLc1n/+aNr++R/Xk/X9+jr+9P8v09sr+qM8YoLy9PUVFR8vev+JUhXnFlxN/fXy1btqyxxw8PD/fJH7Bf8vU9sj/v5+t79PX9Sb6/R/ZXNee7IlKKF7ACAAC3IowAAAC3qtVhJCQkRLNmzVJISIi7W6kxvr5H9uf9fH2Pvr4/yff3yP5qnle8gBUAAPiuWn1lBAAAuB9hBAAAuBVhBAAAuBVhBAAAuJXPh5Enn3xS/fv3V926ddWgQYNK3ccYo9mzZysqKkp16tTRlVdeqR07dpQ7Jj8/X3/84x8VERGhevXq6YYbbtChQ4dqYAfnd/z4cY0bN04Oh0MOh0Pjxo3TiRMnznsfPz8/y9uCBQvKjrnyyiud6rfccksN78ZZVfZ3++23O/Xet2/fcsd4yvmTXN9jYWGhHnroIXXr1k316tVTVFSUxo8fryNHjpQ7zl3ncOHChYqNjVVoaKji4+O1fv368x7/xRdfKD4+XqGhoWrTpo1efvllp2NWrFihLl26KCQkRF26dNGqVatqqv1KcWWPK1eu1DXXXKMmTZooPDxc/fr108cff1zumDfeeMPyOXn27Nma3oolV/b3+eefW/a+e/fucsd50jl0ZX9W/574+fmpa9euZcd40vlbt26dhg8frqioKPn5+endd9+94H084jlofNyjjz5qnnvuOTNlyhTjcDgqdZ958+aZsLAws2LFCrNt2zYzduxY07x5c5Obm1t2zKRJk0yLFi1MYmKi+f77782gQYNMjx49TFFRUQ3txNq1115r4uLiTFJSkklKSjJxcXFm2LBh571Penp6udvixYuNn5+f2b9/f9kxV1xxhZk4cWK5406cOFHT23FSlf1NmDDBXHvtteV6z87OLneMp5w/Y1zf44kTJ8zVV19tli5danbv3m02bNhg+vTpY+Lj48sd545z+K9//csEBQWZ1157zezcudPcd999pl69eubgwYOWxx84cMDUrVvX3HfffWbnzp3mtddeM0FBQWb58uVlxyQlJZmAgADz1FNPmV27dpmnnnrKBAYGmq+//rpG91IRV/d43333mfnz55tvv/3W7N2718yYMcMEBQWZ77//vuyYJUuWmPDwcKfnpju4ur+1a9caSWbPnj3lev/lc8mTzqGr+ztx4kS5faWlpZlGjRqZWbNmlR3jSedv9erVZubMmWbFihVGklm1atV5j/eU56DPh5FSS5YsqVQYKSkpMc2aNTPz5s0rWzt79qxxOBzm5ZdfNsac++EMCgoy//rXv8qOOXz4sPH39zdr1qyp9t4rsnPnTiOp3A/Ehg0bjCSze/fuSj/OjTfeaAYPHlxu7YorrjD33XdfdbVaJVXd34QJE8yNN95YYd1Tzp8x1XcOv/32WyOp3D+o7jiHvXv3NpMmTSq31qlTJzN9+nTL4x988EHTqVOncmt33XWX6du3b9nXY8aMMddee225Y4YMGWJuueWWauraNa7u0UqXLl3MnDlzyr6u7L9PdnB1f6Vh5Pjx4xU+piedw4s9f6tWrTJ+fn7mxx9/LFvzpPP3S5UJI57yHPT5MY2rUlJSlJGRoYSEhLK1kJAQXXHFFUpKSpIkbdq0SYWFheWOiYqKUlxcXNkxdtiwYYMcDof69OlTtta3b185HI5K93H06FF99NFHuvPOO51qb731liIiItS1a1dNnTq17K8n2+Vi9vf555+radOm6tChgyZOnKjMzMyymqecP6l6zqEk5eTkyM/Pz2kUaec5LCgo0KZNm8r9/ypJCQkJFe5lw4YNTscPGTJEGzduVGFh4XmPsftcSVXb46+VlJQoLy9PjRo1Krd+8uRJxcTEqGXLlho2bJg2b95cbX1X1sXs79JLL1Xz5s111VVXae3ateVqnnIOq+P8vf7667r66qsVExNTbt0Tzl9VeMpz0Cv+UJ6dMjIyJEmRkZHl1iMjI3Xw4MGyY4KDg9WwYUOnY0rvb4eMjAw1bdrUab1p06aV7uPvf/+7wsLCdPPNN5dbv+222xQbG6tmzZpp+/btmjFjhpKTk5WYmFgtvVdGVfc3dOhQjR49WjExMUpJSdEjjzyiwYMHa9OmTQoJCfGY8ydVzzk8e/aspk+frltvvbXcH7my+xxmZWWpuLjY8rlT0V4yMjIsjy8qKlJWVpaaN29e4TF2nyupanv8tWeffVanTp3SmDFjytY6deqkN954Q926dVNubq7+8pe/aMCAAUpOTlb79u2rdQ/nU5X9NW/eXK+++qri4+OVn5+vf/zjH7rqqqv0+eef6/LLL5dU8Xm2+xxe7PlLT0/Xf/7zH7399tvl1j3l/FWFpzwHvTKMzJ49W3PmzDnvMd9995169epV5e/h5+dX7mtjjNPar1XmmMqo7P4k5z5d7WPx4sW67bbbFBoaWm594sSJZf87Li5O7du3V69evfT999+rZ8+elXrsitT0/saOHVv2v+Pi4tSrVy/FxMToo48+cgpdrjyuK+w6h4WFhbrllltUUlKihQsXlqvV5Dk8H1efO1bH/3q9Ks/HmlTVft555x3Nnj1b7733XrkQ2rdv33Ivsh4wYIB69uypv/71r3rhhReqr/FKcmV/HTt2VMeOHcu+7tevn9LS0vTMM8+UhRFXH7OmVbWXN954Qw0aNNCIESPKrXva+XOVJzwHvTKM3HPPPRd8V0Dr1q2r9NjNmjWTdC4tNm/evGw9MzOzLBk2a9ZMBQUFOn78eLn/us7MzFT//v2r9H1/qbL727p1q44ePepUO3bsmFOKtbJ+/Xrt2bNHS5cuveCxPXv2VFBQkPbt23fRv8js2l+p5s2bKyYmRvv27ZNU8+dPsmePhYWFGjNmjFJSUvTf//73gn/6uzrPoZWIiAgFBAQ4/dfSL587v9asWTPL4wMDA9W4cePzHuPKz0B1qcoeSy1dulR33nmnli1bpquvvvq8x/r7++s3v/lN2c+sXS5mf7/Ut29f/fOf/yz72lPO4cXszxijxYsXa9y4cQoODj7vse46f1XhMc/Banv1iYdz9QWs8+fPL1vLz8+3fAHr0qVLy445cuSI217A+s0335Stff3115V+8eOECROc3oFRkW3bthlJ5osvvqhyv6662P2VysrKMiEhIebvf/+7McZzzp8xVd9jQUGBGTFihOnatavJzMys1Pey4xz27t3b/N///V+5tc6dO5/3BaydO3cutzZp0iSnF88NHTq03DHXXnutW1/A6soejTHm7bffNqGhoRd8MWGpkpIS06tXL3PHHXdcTKtVUpX9/drIkSPNoEGDyr72pHNY1f2VvlB327ZtF/we7jx/v6RKvoDVE56DPh9GDh48aDZv3mzmzJlj6tevbzZv3mw2b95s8vLyyo7p2LGjWblyZdnX8+bNMw6Hw6xcudJs27bN/Pa3v7V8a2/Lli3Np59+ar7//nszePBgt721t3v37mbDhg1mw4YNplu3bk5vC/31/owxJicnx9StW9csWrTI6TF/+OEHM2fOHPPdd9+ZlJQU89FHH5lOnTqZSy+91OP3l5eXZx544AGTlJRkUlJSzNq1a02/fv1MixYtPPL8GeP6HgsLC80NN9xgWrZsabZs2VLurYT5+fnGGPedw9K3Tb7++utm586dZvLkyaZevXpl7zyYPn26GTduXNnxpW8rvP/++83OnTvN66+/7vS2wq+++soEBASYefPmmV27dpl58+Z5xFt7K7vHt99+2wQGBpqXXnqpwrdZz54926xZs8bs37/fbN682dxxxx0mMDCwXEj11P39+c9/NqtWrTJ79+4127dvN9OnTzeSzIoVK8qO8aRz6Or+Sv3P//yP6dOnj+VjetL5y8vLK/s9J8k899xzZvPmzWXvtPPU56DPh5EJEyYYSU63tWvXlh0jySxZsqTs65KSEjNr1izTrFkzExISYi6//HKnNHzmzBlzzz33mEaNGpk6deqYYcOGmdTUVJt29f9lZ2eb2267zYSFhZmwsDBz2223Ob3F7tf7M8aYV155xdSpU8fycydSU1PN5Zdfbho1amSCg4NN27Ztzb333uv0WR12cHV/p0+fNgkJCaZJkyYmKCjItGrVykyYMMHp3HjK+TPG9T2mpKRY/kz/8ufanefwpZdeMjExMSY4ONj07Nmz3JWYCRMmmCuuuKLc8Z9//rm59NJLTXBwsGndurVlQF62bJnp2LGjCQoKMp06dSr3i84dXNnjFVdcYXmuJkyYUHbM5MmTTatWrUxwcLBp0qSJSUhIMElJSTbuqDxX9jd//nzTtm1bExoaaho2bGguu+wy89FHHzk9piedQ1d/Rk+cOGHq1KljXn31VcvH86TzV3oFp6KfN099DvoZ8/MrVQAAANyAzxkBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABuRRgBAABu9f8A1detohu72O4AAAAASUVORK5CYII=","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["plt.plot( [-1, 0, 1], [0, 0, 1], linewidth = 4);"]},{"cell_type":"markdown","id":"c5262d27-0fc2-4906-b6ae-55053980be2d","metadata":{"id":"c5262d27-0fc2-4906-b6ae-55053980be2d"},"source":["If a bias term is included, then the fact that the RELU is centered at zero isn't important, since the intercept term effectively shifts the function around. These kinds of splin terms are incredibly flexible. Just to show you an example, let's fit the sine function using a collection of shifted RELUs. This is just\n","\n","$$\n","Y = \\sin(X) + \\epsilon\n","$$\n","\n","being fit with\n","\n","$$\n","\\sum_{i=1}^N \\left\\{ Y_i - W_{021} - \\sum_{j=1}^{d} W_{j21} g(W_{1j1} X_i- W_{0j1}) \\right\\}^2\n","$$\n","\n","where the $W_{kj}$ are the weights for layer $k$. Below, we're just setting $W_{1j1} = 1$ and specifying the $W_{0j1}$ at a sequence of values."]},{"cell_type":"code","execution_count":null,"id":"2f68ea2c-42ea-450c-b250-d6cc0fb40406","metadata":{"id":"2f68ea2c-42ea-450c-b250-d6cc0fb40406","outputId":"5fe12229-e691-4a9f-8b17-4309c7e63a5a"},"outputs":[{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["## Generate some data, a sine function on 0,4*pi\n","n = 1000\n","x = np.linspace(0, 4 * np.pi, n)\n","y = np.sin(x) + .2 * np.random.normal(size = n)\n","\n","## Generate the spline regressors\n","df = 30\n","knots = np.linspace(x.min(), x.max(), df)\n","xmat = np.zeros((n, df))\n","for i in range(0, df): xmat[:,i] = (x - knots[i]) * (x > knots[i])\n","\n","## Fit them\n","from sklearn.linear_model import LinearRegression\n","yhat = LinearRegression().fit(xmat, y).predict(xmat)\n","\n","## Plot them versus the data\n","plt.plot(x, y);\n","plt.plot(x, yhat);"]},{"cell_type":"markdown","id":"d4ea1f46-23de-41f9-a2fc-dff47152780a","metadata":{"id":"d4ea1f46-23de-41f9-a2fc-dff47152780a"},"source":["This corresponds to a network like depicted below if there were $d=3$ hidden nodes, there was a relu activation function at the first layer, then a identity activation function for the output layer and the weights for the first layer are specified."]},{"cell_type":"code","execution_count":null,"id":"132abd17-02b1-4906-96cf-7d080ee17a10","metadata":{"tags":["hide-input"],"id":"132abd17-02b1-4906-96cf-7d080ee17a10","outputId":"11157e32-94f6-4b4e-abb8-1f9776c0fe1e"},"outputs":[{"data":{"image/png":"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","text/plain":["
"]},"metadata":{},"output_type":"display_data"}],"source":["G = nx.DiGraph()\n","G.add_node(\"X\", pos = (1, 2) )\n","G.add_node(\"H11\", pos = (0, 1) )\n","G.add_node(\"H12\", pos = (1, 1) )\n","G.add_node(\"H13\", pos = (2, 1) )\n","G.add_node(\"Y\", pos = (1, 0))\n","G.add_edges_from([(\"X\", \"H11\"), (\"X\", \"H12\"), (\"X\", \"H13\")])\n","G.add_edges_from([(\"H11\", \"Y\"), (\"H12\", \"Y\"), (\"H13\", \"Y\")])\n","nx.draw(G,\n"," nx.get_node_attributes(G, 'pos'),\n"," with_labels=True,\n"," font_weight='bold',\n"," node_size = 2000,\n"," node_color = \"lightblue\",\n"," linewidths = 3)\n","ax= plt.gca()\n","ax.collections[0].set_edgecolor(\"#000000\")\n","ax.set_xlim([-.3, 3.3])\n","ax.set_ylim([-.3, 3.3])\n","plt.show()"]},{"cell_type":"markdown","id":"2a97c816-5128-4fca-9c56-9275a3d0dd02","metadata":{"id":"2a97c816-5128-4fca-9c56-9275a3d0dd02"},"source":["We can actually fit this function way better using splines and a little bit more care. However, this helps show how even one layer of RELU activated nodes can start to fit complex shapes.\n","\n","## Optimization\n","\n","One of the last bits of the puzzle we have to figure out is how to obtain the weights. A good strategy would be to minimize the loss function. However, it's hard to minmize. If we had a derivative, we could try the following. Let $L(W)$ be the loss function for weights $W$. Note, we're omitting the fact that this is a function of the data (predictors and outcome) as well, since that's a set of fixed numbers. Consider updating parameters as\n","\n","$$\n","W^{(new)} = W^{(old)} - e * L'(W^{(old)})\n","$$\n","\n","What does this do? It moves the parameters by a small amount, $e$, called the **learning rate**, in the direction the opposite of the gradient. Think of a one dimensional convex function. If the derivative at a point is positive, then that point is larger than where the minimum is. Similarily, if the derivative is negative, it's smaller. So, the idea is to head a small amount in the opposite direction of the derivative. How much? How about along the line of the derivative? That's all gradient descent does, just in more than one dimension. "]},{"cell_type":"markdown","id":"c909f7e7-de47-4420-811e-e8bad925dec7","metadata":{"id":"c909f7e7-de47-4420-811e-e8bad925dec7"},"source":["How do we get the gradient? Consider the following. If $X$ is our vector of predictors and $Y$ is our vector of outputs, a neural network with 3 layers, can be thought of as, where $L_k$ is layer $K$ and $W_k$ are the weights for that layer:\n","\n","$$\n","L_3(L_2(L_1(X, W_1), W_2) W_3)\n","$$\n","\n","Or a series of function compositions. Recall from calculus, if we want the derivative of composed functions we have a really simple rule called the chain rule:\n","\n","$$\n","\\frac{d}{dx}f(g(x)) = f'(g(x)) g'(x)\n","$$\n","\n","I.e. if $h=f(u)$ and $u = g(x)$ then $\\frac{dh}{dx} = \\frac{dh}{du}\\frac{du}{dx}$. Thus, characterized this way, the chain rule formally acts like fractions (though this is a symbolic equivalence having entirely different underlying meanings).\n","\n","If we use the chain rule on our composed loss functions, we wind up bookkeeping backwards through our neural network. That is why it's called backwards propagation (backprop).\n","\n","So, our algorithm goes something like this.\n","Given, $W^{(new)}$, network, $\\phi(X, W)$, which depends on the predictors and the weights\n","and loss, $L(Y, \\hat Y)$, which depends on the observed and predicted outputs.\n","\n","0. Set $W^{(old)}=W^{(new)}$\n","1. Calculate $\\hat Y = \\phi(X, W^{(old)})$ and loss $L(Y, \\hat Y)$.\n","1. Use back propagation to get to get a numerical approximation to $\\frac{d}{dW} L\\{Y, \\phi(X, W)\\} |_{W=W^{(old)}} = L'(W^{(old)})$\n","3. Update $W^{(new)} = W^{(old)} - e L'(W^{(old)})$\n","4. Go to step 0."]}],"metadata":{"kernelspec":{"display_name":"Python 3.10.4 ('ds4bio')","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.10.13"},"vscode":{"interpreter":{"hash":"79f87720972903b6188d40b03afb0115543bf63f5f0af29aadb196967754f61a"}},"colab":{"provenance":[]}},"nbformat":4,"nbformat_minor":5}