{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# `numpy` Neural Networks: Multi-Layer Perceptron"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we've done one layer successfully, let's try more! We begin with adding one hidden layer to our network, and then generalize to include any number of hidden layers."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.facecolor'] = 'white'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The \"hard\" dataset that we couldn't predict with logistic regression:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "def rescale(X):\n",
    "    return (X - X.mean(axis=0)) / (X.var(axis=0))\n",
    "\n",
    "n_samples = 1000\n",
    "X0 = np.random.normal(loc=[0,0], scale=[2,0.5], size=(int(n_samples/2), 2))\n",
    "X11 = np.random.normal(loc=[0,3.5], scale=[0.5,1], size=(int(n_samples/4), 2))\n",
    "X12 = np.random.normal(loc=[0,-3.5], scale=[0.5,1], size=(int(n_samples/4), 2))\n",
    "X1 = np.vstack([X11, X12])\n",
    "X = np.vstack([X0, X1])\n",
    "\n",
    "# X = rescale(X)\n",
    "\n",
    "y0 = np.zeros(shape=(int(n_samples/2), 1))\n",
    "y1 = np.ones(shape=(int(n_samples/2), 1))\n",
    "yhat = np.vstack([y0, y1])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112f2e0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X0 = X[(yhat==0).reshape(-1)]\n",
    "X1 = X[(yhat==1).reshape(-1)]\n",
    "\n",
    "plt.scatter(*X0.T, label='0', alpha=0.4); plt.scatter(*X1.T, label='1', alpha=0.4)\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sigmoid Activation and Cross-Entropy Loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def sig(z):\n",
    "    return 1 / (1 + np.exp(-z))\n",
    "\n",
    "def dsig_dz(z):\n",
    "    return sig(z) * (1 - sig(z))\n",
    "\n",
    "def J(y, yhat):\n",
    "    eps = 1e-8\n",
    "    return -(yhat*np.log(y+eps) + (1-yhat)*np.log(1-y+eps))\n",
    "\n",
    "def dJ_dy(y, yhat):\n",
    "    eps = 1e-8\n",
    "    return (1-yhat)/(1-y+eps) - yhat/(y+eps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For our hidden layer we will use a new type of unit (neuron w/ activation function): The rectified linear unit. \n",
    "$$\\mathrm{ReLU}(z) = \\begin{cases}\n",
    "z & z\\ge0\\\\\n",
    "0 & z<0\n",
    "\\end{cases} $$\n",
    "\n",
    "This activation is nice because it is fast to compute, and it doesn't saturate, by which we mean the derivative doesn't go to zero asymptotically, so terms that depend on the derivative don't die out:\n",
    "\n",
    "$$\\frac{\\mathrm{d}\\,\\mathrm{ReLU}}{\\mathrm{d}z} = \\begin{cases}\n",
    "1 & z\\ge0\\\\\n",
    "0 & z<0\n",
    "\\end{cases} $$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def relu(z):\n",
    "    return np.where(z>0, z, 0)\n",
    "    \n",
    "def drelu_dz(z):\n",
    "    return np.where(z>0, 1, 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x113415630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "z = np.linspace(-5,5)\n",
    "plt.plot(z, relu(z), label='ReLU$(z)$'); plt.plot(z, drelu_dz(z), label='$d$ ReLU / $dz$'); plt.legend();\n",
    "plt.title('The ReLU function');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 1 Hidden Layer\n",
    "\n",
    "To start off, let's consider the case of having a single hidden ReLU layer with 2 hidden units. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_input = 2\n",
    "n_hidden = 10\n",
    "n_output = 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now have two sets of weights, $w^1$ and $w^2$. We must now consider the biases as matrices connecting the units of consecutive layers. Define them to have the same number of rows as units in the previous layer, and the same number of columns as units in the next layer. So $w^1 \\in \\Re^{(2,2)}$ and $w^2 \\in \\Re^{(2,1)}$. We will also explicitly consider bias vectors $b^1$ and $b^2$ which have the size of the next layer (one bias per activation unit).\n",
    "\n",
    "In the previous notebook, we dealt with bias by setting $x_0 = 0$ and then adding an additional weight, but I now find it more clear to just add the bias separately. In any case the effect is the same. The actions of the layers are then:\n",
    "\n",
    "\\begin{align*}\n",
    "z^1 &= x^0 w^{1} + b^{1T} & x^1 &= \\mathrm{ReLU}(z^1) \\\\\n",
    "z^2 &= x^1 w^{2} + b^{2T} & y = x^2 &= \\sigma(z^1)\n",
    "\\end{align*}\n",
    "\n",
    "where the bias vectors are transposed since $x$ and $z$ are rows. Here we denote the sigmoid function as $\\sigma$. \n",
    "\n",
    "Let's initialize some random nonzero weights to demonstrate as we go along:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "w1 = np.random.normal(0,0.1, size=(n_input, n_hidden))\n",
    "w2 = np.random.normal(0,0.1, size=(n_hidden, n_output))\n",
    "\n",
    "b1 = np.random.normal(0,0.1, size=(n_hidden, 1))\n",
    "b2 = np.random.normal(0,0.1, size=(n_output, 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The forward pass is simply the calculation performed above:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "def forward1(x0, w1, b1, w2, b2):\n",
    "    x1 = relu(np.dot(x0, w1) + b1.T)  # output of hidden layer\n",
    "    return sig(np.dot(x1, w2) + b2.T)  # output of output layer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can check the prediction on the first sample:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.49080367]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = forward1(X[0], w1, b1, w2, b2)\n",
    "y"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For the backward pass, we follow the approach detailed in [this video](https://www.youtube.com/watch?v=gl3lfL-g5mA) and define a quantity that will become useful later on: $\\delta^\\ell$, the partial derivative of the cost function with respect to $z^\\ell$:\n",
    "\n",
    "$$ \\delta^\\ell \\equiv \\frac{\\partial J}{\\partial z^\\ell} $$\n",
    "\n",
    "We can begin explicit calculation with the last delta:\n",
    "\n",
    "\\begin{align*}\n",
    "\\delta^2 &= \\frac{\\partial J}{\\partial z^2}\\\\\n",
    "&= \\frac{\\partial J}{\\partial y}\\frac{\\partial y}{\\partial z^2}\\\\\n",
    "&= \\frac{\\partial J}{\\partial y} \\frac{\\partial \\sigma}{\\partial z^2}\\\\\n",
    "\\end{align*}\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Moving on to $\\delta^{1}$, we write out the vector and matrix indices explicitly for initial clarity:\n",
    "\n",
    "\\begin{align*}\n",
    "\\delta^1_i &= \\frac{\\partial J}{\\partial z^1_i}\\\\\n",
    "&= \\sum_j \\frac{\\partial J}{\\partial z^2_j}\\frac{\\partial z^2_j}{\\partial z^1_i}\\\\\n",
    "&= \\sum_{j,k} \\frac{\\partial J}{\\partial z^2_j}\\frac{\\partial z^2_j}{\\partial x^1_k}\\frac{\\partial x^1_k}{\\partial z^1_i}\n",
    "\\end{align*}\n",
    "\n",
    "Now, \n",
    "\n",
    "$$ z^2_j = \\sum_m x^1_m w^2_{mj} + b^2_j, $$\n",
    "so\n",
    "\n",
    "$$\\frac{\\partial z^2_j}{\\partial x^1_k} = w^2_{kj}.$$\n",
    "\n",
    "Furthermore, \n",
    "$$ x^1_k = \\mathrm{ReLU}(z^1_k)\\ \\rightarrow\\  \\frac{\\partial x^1_k}{\\partial z^1_i} = \\mathrm{ReLU}^\\prime(z^1_k)\\delta_{ki}$$\n",
    "where $\\delta_{ki}$ is the Kronecker delta (1 if $k=m$, 0 otherwise). This has the effect of forcing $m=i$ in the whole equation, and we are left with"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\delta^1_i = \\sum_j \\delta^2_j w^2_{ij}\\, \\mathrm{ReLU}^\\prime(z^1_i),$$\n",
    "\n",
    "or, flipping back to matrix notation,\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\\delta^1 = w^2 \\delta^{2} \\odot \\mathrm{ReLU}^\\prime(z^1)^T$$\n",
    "where $\\odot$ is element-wise multiplication. \n",
    "\n",
    "We see that $\\delta^2$ appeared in the definition of $\\delta^1$. It's easy to convince yourself that this generalizes to\n",
    "\n",
    "$$\\delta^\\ell = w^{\\ell+1} \\delta^{\\ell+1} \\odot \\mathrm{ReLU}^\\prime(z^\\ell)^T,$$\n",
    "\n",
    "and the form of the equation makes it easy to substitute other activation functions $\\mathrm{ReLU}$ as well.\n",
    "\n",
    "Furthermore, the update rules for training, $w^\\ell\\ \\rightarrow\\ w^\\ell-\\alpha\\, \\partial J/\\partial w^\\ell$ and $\\beta^\\ell\\ \\rightarrow\\ \\beta^\\ell-\\alpha\\, \\partial J/\\partial \\beta^\\ell$, can be also written in terms of $\\delta$:"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\\begin{align*}\n",
    "\\frac{\\partial J}{\\partial w^\\ell_{ij}} &= \\sum_k \\frac{\\partial J}{\\partial z^\\ell_k} \\frac{\\partial z^\\ell_k}{\\partial w^\\ell_{ij}}\\\\\n",
    "&= \\sum_k \\delta^\\ell_k x^{\\ell-1}_i \\delta_{kj}\\\\\n",
    "&= \\delta^\\ell_j x^{\\ell-1}_i\n",
    "\\end{align*}\n",
    "so\n",
    "$$ \\frac{\\partial J}{\\partial w^\\ell} = (\\delta^\\ell x^{\\ell-1})^T $$\n",
    "and similarly\n",
    "$$\\frac{\\partial J}{\\partial b^\\ell} = \\frac{\\partial J}{\\partial z^\\ell} \\frac{\\partial z^\\ell}{\\partial b^\\ell} = \\delta^{\\ell}$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Armed with these convenient definitions we can implement our backward pass to update our weights, and our training function, which looks much the same as in the previous notebook:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def backward1(x0, w1, b1, w2, b2, y, yhat, alpha):\n",
    "    # quantities\n",
    "    z1 = np.dot(x0, w1) + b1.T\n",
    "    x1 = relu(z1)\n",
    "    z2 = np.dot(x1, w2) + b2.T\n",
    "    #y = sig(z2)\n",
    "\n",
    "    delta2 = dJ_dy(y, yhat) * dsig_dz(z2)\n",
    "    delta1 = np.matmul(w2, delta2) * drelu_dz(z1).T\n",
    "\n",
    "    w2 -= alpha * np.multiply(delta2, x1).T\n",
    "    w1 -= alpha * np.multiply(delta1, x0).T\n",
    "\n",
    "    b2 -= alpha * delta2\n",
    "    b1 -= alpha * delta1\n",
    "    \n",
    "    return w1, b1, w2, b2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.49080367]]\n",
      "[[0.67492159]]\n"
     ]
    }
   ],
   "source": [
    "alpha=0.1\n",
    "\n",
    "y = forward1(X[0], w1, b1, w2, b2)\n",
    "w1, b1, w2, b2 = backward1(X[0], w1, b1, w2, b2, y, yhat[0], alpha)\n",
    "print(y)\n",
    "print(J(y, yhat[0]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train1(X, yhat, n_hidden, alpha, n_epoch):\n",
    "    n_samples = X.shape[0]\n",
    "    n_input = X.shape[1]\n",
    "    n_output = 1\n",
    "    \n",
    "    # keep track of performance during training\n",
    "    costs = np.zeros(shape=(n_epoch,1))\n",
    "\n",
    "    # random nonzero initialization\n",
    "    w1 = np.random.normal(0, 1, size=(n_input, n_hidden))\n",
    "    w2 = np.random.normal(0, 1, size=(n_hidden, n_output))\n",
    "    \n",
    "    b1 = np.random.normal(0, 1, size=(n_hidden, 1))\n",
    "    b2 = np.random.normal(0, 1, size=(n_output, 1))\n",
    "\n",
    "    for epoch in range(n_epoch):\n",
    "        for i in range(n_samples):\n",
    "            x0 = X[i,:]; yh = yhat[i]\n",
    "            y = forward1(x0, w1, b1, w2, b2)  # prediction for one sample\n",
    "            w1, b1, w2, b2 = backward1(x0, w1, b1, w2, b2, y, yh, alpha)  # take step\n",
    "        \n",
    "        # ### Some niceness to see our progress\n",
    "        # Calculate total cost after epoch\n",
    "        predictions = forward1(X, w1, b1, w2, b2)  # predictions for entire set\n",
    "        costs[epoch] = np.mean(J(predictions, yhat))  # mean cost per sample\n",
    "        # report progress\n",
    "        if ((epoch % 10) == 0) or (epoch == (n_epoch - 1)):\n",
    "            #print(predictions.round())\n",
    "            accuracy = np.mean(predictions.round() == yhat)  # current accuracy on entire set\n",
    "            print('Training accuracy after epoch {}: {:.4%}'.format(epoch, accuracy))\n",
    "            \n",
    "    return w1, b1, w2, b2, costs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's give it a try!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training accuracy after epoch 0: 50.0000%\n",
      "Training accuracy after epoch 10: 50.0000%\n",
      "Training accuracy after epoch 20: 50.0000%\n",
      "Training accuracy after epoch 30: 72.0000%\n",
      "Training accuracy after epoch 40: 75.0000%\n",
      "Training accuracy after epoch 50: 78.5000%\n",
      "Training accuracy after epoch 60: 83.0000%\n",
      "Training accuracy after epoch 70: 90.4000%\n",
      "Training accuracy after epoch 80: 96.5000%\n",
      "Training accuracy after epoch 90: 98.6000%\n",
      "Training accuracy after epoch 100: 98.8000%\n",
      "Training accuracy after epoch 110: 99.2000%\n",
      "Training accuracy after epoch 120: 99.2000%\n",
      "Training accuracy after epoch 130: 99.0000%\n",
      "Training accuracy after epoch 140: 99.0000%\n",
      "Training accuracy after epoch 150: 99.0000%\n",
      "Training accuracy after epoch 160: 99.0000%\n",
      "Training accuracy after epoch 170: 99.0000%\n",
      "Training accuracy after epoch 180: 98.9000%\n",
      "Training accuracy after epoch 190: 98.9000%\n",
      "Training accuracy after epoch 199: 98.9000%\n"
     ]
    }
   ],
   "source": [
    "n_epoch = 200\n",
    "n_hidden = 2\n",
    "alpha = 0.001\n",
    "w1, b1, w2, b2, costs = train1(X, yhat, n_hidden, alpha, n_epoch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nkMJdRCQF/X9YXCqN92vexgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1040f42b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(costs); plt.title('Mean cost per sample after each epoch');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1 = np.linspace(-8,8, 250)\n",
    "x2 = np.linspace(-10,10, 250)\n",
    "fun_map = np.empty((x1.size, x2.size))\n",
    "for n,i in enumerate(x1):\n",
    "    for m,j in enumerate(x2):\n",
    "        fun_map[m,n] = forward1([i,-j], w1, b1, w2, b2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1041e1eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X0 = X[(yhat==0).reshape(-1)]\n",
    "X1 = X[(yhat==1).reshape(-1)]\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "plt.imshow(fun_map, extent=[x1.min(), x1.max(), x2.min(), x2.max()], \n",
    "           vmin=0, vmax=1, aspect='auto')\n",
    "plt.colorbar()\n",
    "plt.contour(x1, -x2, fun_map, levels=[0.5], colors=['r'], linewidths=2)\n",
    "plt.scatter(*X0.T, label='0', alpha=0.4); plt.scatter(*X1.T, label='1', alpha=0.4)\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looks pretty good! We added the decision boundary in <span style=\"color:red;\">red</span> so that we can more easily visualize how it changes as we make changes to our network."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# $n$ Hidden Layers\n",
    "\n",
    "Our functions are starting to take a lot of parameters, which is often a sign that you should be generalizing. Since all our definitions are recursive anyway, we can actually handle any number of layers with ease. \n",
    "\n",
    "Instead of specifying `n_hidden`, we will move to specifying the number of units per layer (including the input and output layers), using a tuple which we'll call `shape`. \n",
    "\n",
    "We will store quantities that are matrix-valued, but inconsistent in dimension across different layers, in a dictionary with the layer number $\\ell$ as the key."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def init_model(shape):\n",
    "    w = {}\n",
    "    b = {}\n",
    "    for layer in range(1, len(shape)):  # no weights for input layer\n",
    "        w[layer] = np.random.normal(0,0.1, size=(shape[layer-1], shape[layer]))  # dim: from_units, to_units\n",
    "        b[layer] = np.random.normal(0,0.1, size=(shape[layer], 1))  # dim: to_units, 1\n",
    "    return w,b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "def forwardn(x0, w, b):\n",
    "    n_layers = len(w)\n",
    "    x_prev = x0\n",
    "    for l in range(1, n_layers):\n",
    "        x_l = relu(np.dot(x_prev, w[l]) + b[l].T)  # output of a hidden layer\n",
    "        x_prev = x_l\n",
    "    return sig(np.dot(x_prev, w[n_layers]) + b[n_layers].T)  # output of output layer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's test these out with a bunch of layers!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "t = (2,3,6,8,1,)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "w,b = init_model(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1: array([[ 0.06181095, -0.22796272, -0.13053987],\n",
      "       [-0.10271135, -0.05801015, -0.07595937]]), 2: array([[ 0.08546893,  0.04472243,  0.10677069, -0.27842714, -0.06287323,\n",
      "         0.01765893],\n",
      "       [-0.033705  ,  0.06336374,  0.23601233,  0.07679502,  0.16572488,\n",
      "         0.07469416],\n",
      "       [-0.02062047, -0.04991025,  0.09991342, -0.03286914,  0.05510907,\n",
      "        -0.07973095]]), 3: array([[-0.17834555, -0.01982056,  0.13754984, -0.03927334, -0.02762466,\n",
      "         0.19623374,  0.04666107, -0.17265983],\n",
      "       [-0.11245948,  0.0559374 ,  0.04578567,  0.13311479,  0.11499437,\n",
      "         0.16349449, -0.18871903,  0.00515981],\n",
      "       [ 0.09665122,  0.11057042,  0.03347225, -0.0316614 , -0.06024299,\n",
      "        -0.0876207 ,  0.00674745,  0.0033442 ],\n",
      "       [-0.03706872, -0.04867028, -0.00373517, -0.05504343,  0.12834597,\n",
      "         0.04784655,  0.07212743, -0.10916401],\n",
      "       [-0.04596272,  0.09596565, -0.02752977, -0.04241039,  0.05234288,\n",
      "         0.12034268, -0.10948764, -0.00940387],\n",
      "       [-0.07367622,  0.00860961, -0.00632613,  0.08375661, -0.04271112,\n",
      "        -0.12024093,  0.12569929, -0.01522808]]), 4: array([[-0.03419322],\n",
      "       [-0.0363885 ],\n",
      "       [ 0.16400532],\n",
      "       [-0.03601286],\n",
      "       [-0.0935391 ],\n",
      "       [ 0.04563441],\n",
      "       [ 0.00649827],\n",
      "       [-0.012408  ]])}\n"
     ]
    }
   ],
   "source": [
    "print(w)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.48567418],\n",
       "       [0.48581211],\n",
       "       [0.48548631],\n",
       "       [0.48544916],\n",
       "       [0.48578261],\n",
       "       [0.48582915],\n",
       "       [0.48539676],\n",
       "       [0.48553286],\n",
       "       [0.48581705],\n",
       "       [0.48546157]])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y = forwardn(X[:10], w, b)\n",
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "def backwardn(x0, w, b, y, yhat, alpha):\n",
    "    n_layers = len(w)\n",
    "    z = {}\n",
    "    x = {0:x0}\n",
    "    \n",
    "    # x and z values for calculating derivatives\n",
    "    for l in range(1, n_layers+1):\n",
    "        z[l] = np.dot(x[l-1], w[l]) + b[l].T\n",
    "        x[l] = relu(z[l])\n",
    "        \n",
    "    delta = {}\n",
    "    \n",
    "    # deltas and updates\n",
    "    for l in range(n_layers, 0, -1):  # start with last layer and move backward\n",
    "        if l == n_layers:  # base case\n",
    "            delta[l] = dJ_dy(y, yhat)*dsig_dz(z[n_layers])\n",
    "        else:  # recursive case\n",
    "            delta[l] = np.dot(w[l+1], delta[l+1]) * drelu_dz(z[l]).T\n",
    "\n",
    "        # update weights and biases\n",
    "        w[l] -= alpha * np.multiply(delta[l], x[l-1]).T\n",
    "        b[l] -= alpha * delta[l]\n",
    "    \n",
    "    return w, b"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Does this work for a simple case? If we update a bunch of times using one sample, we should see the prediction move towards $\\hat y$:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.47231947] --> [0.]\n",
      "[0.04555354] --> [0.]\n",
      "[0.0126895] --> [0.]\n",
      "[0.00604703] --> [0.]\n",
      "[0.00364882] --> [0.]\n",
      "[0.00249834] --> [0.]\n",
      "[0.00184846] --> [0.]\n",
      "[0.00144065] --> [0.]\n",
      "[0.00116531] --> [0.]\n",
      "[0.00096917] --> [0.]\n"
     ]
    }
   ],
   "source": [
    "for i in range(1000):\n",
    "    w,b = backwardn(X[0], w, b, y[0], 0, 0.1)\n",
    "    y[0] = forwardn(X[0], w, b)\n",
    "    if i%100 == 0:\n",
    "        print(y[0],'-->',yhat[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Awesome! Confident, we also implement the training function to do this with all the samples:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "def trainn(X, yhat, shape, alpha, n_epoch):\n",
    "    n_samples = X.shape[0]\n",
    "    n_input = X.shape[1]\n",
    "    \n",
    "    # keep track of performance during training\n",
    "    costs = np.zeros(shape=(n_epoch,1))\n",
    "\n",
    "    # random nonzero initialization\n",
    "    w,b = init_model(shape)\n",
    "\n",
    "    for epoch in range(n_epoch):\n",
    "        for i in range(n_samples):\n",
    "            x0 = X[i,:]; yh = yhat[i]\n",
    "            y = forwardn(x0, w, b)  # prediction for one sample\n",
    "            w, b = backwardn(x0, w, b, y, yh, alpha)  # take step\n",
    "        \n",
    "        # ### Some niceness to see our progress\n",
    "        # Calculate total cost after epoch\n",
    "        predictions = forwardn(X, w, b)  # predictions for entire set\n",
    "        costs[epoch] = np.mean(J(predictions, yhat))  # mean cost per sample\n",
    "        # report progress\n",
    "        if ((epoch % 10) == 0) or (epoch == (n_epoch - 1)):\n",
    "            accuracy = np.mean(predictions.round() == yhat)  # current accuracy on entire set\n",
    "            print('Training accuracy after epoch {}: {:.4%}'.format(epoch, accuracy))\n",
    "            \n",
    "    return w, b, costs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training accuracy after epoch 0: 50.0000%\n",
      "Training accuracy after epoch 10: 50.0000%\n",
      "Training accuracy after epoch 20: 50.0000%\n",
      "Training accuracy after epoch 30: 50.0000%\n",
      "Training accuracy after epoch 40: 50.0000%\n",
      "Training accuracy after epoch 50: 50.0000%\n",
      "Training accuracy after epoch 60: 50.0000%\n",
      "Training accuracy after epoch 70: 50.0000%\n",
      "Training accuracy after epoch 80: 50.0000%\n",
      "Training accuracy after epoch 90: 50.0000%\n",
      "Training accuracy after epoch 100: 98.4000%\n",
      "Training accuracy after epoch 110: 98.9000%\n",
      "Training accuracy after epoch 120: 99.4000%\n",
      "Training accuracy after epoch 130: 99.5000%\n",
      "Training accuracy after epoch 140: 99.6000%\n",
      "Training accuracy after epoch 150: 99.6000%\n",
      "Training accuracy after epoch 160: 99.6000%\n",
      "Training accuracy after epoch 170: 99.7000%\n",
      "Training accuracy after epoch 180: 99.7000%\n",
      "Training accuracy after epoch 190: 99.7000%\n",
      "Training accuracy after epoch 199: 99.7000%\n"
     ]
    }
   ],
   "source": [
    "n_epoch = 200\n",
    "shape = (2,5,3,1)\n",
    "alpha = 0.001\n",
    "w, b, costs = trainn(X, yhat, shape, alpha, n_epoch)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x104217080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(costs); plt.title('Mean cost per sample after each epoch');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "x1 = np.linspace(-8,8, 250)\n",
    "x2 = np.linspace(-10,10, 250)\n",
    "fun_map = np.empty((x1.size, x2.size))\n",
    "for n,i in enumerate(x1):\n",
    "    for m,j in enumerate(x2):\n",
    "        fun_map[m,n] = forwardn([i,-j], w, b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1040f43c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "X0 = X[(yhat==0).reshape(-1)]\n",
    "X1 = X[(yhat==1).reshape(-1)]\n",
    "\n",
    "plt.figure(figsize=(10,5))\n",
    "plt.imshow(fun_map, extent=[x1.min(), x1.max(), x2.min(), x2.max()], \n",
    "           vmin=0, vmax=1, aspect='auto')\n",
    "plt.colorbar()\n",
    "plt.scatter(*X0.T, label='0', alpha=0.4); plt.scatter(*X1.T, label='1', alpha=0.4)\n",
    "plt.contour(x1, -x2, fun_map, levels=[0.5], colors=['r'], label='Decision boundary', linewidths=2)\n",
    "plt.legend();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Even more flexibility than before!\n",
    "\n",
    "Of course unlimited flexibility has its own pitfalls, so in the next notebook we'll look into some ways of getting that under control."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}