{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "

Neural Networks Demystified

\n", "

Part 6: Training

\n", "\n", "\n", "

@stephencwelch

" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import YouTubeVideo\n", "YouTubeVideo('9KM9Td6RVgQ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So far we’ve built a neural network in python, computed a cost function to let us know how well our network is performing, computed the gradient of our cost function so we can train our network, and last time we numerically validated our gradient computations. After all that work, it’s finally time to train our neural network. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Back in part 3, we decided to train our network using gradient descent. While gradient descent is conceptually pretty straight forward, its implementation can actually be quite complex- especially as we increase the size and number of layers in our neural network. If we just march downhill with consistent step sizes, we may get stuck in a local minimum or flat spot, we may move too slowly and never reach our minimum, or we may move to quickly and bounce out of our minimum. And remember, all this must happen in high-dimensional space, making things significantly more complex. Gradient descent is a wonderfully clever method, but provides no guarantees that we will converge to a good solution, that we will converge to a solution in a certain amount of time, or that we will converge to a solution at all. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The good and bad news here is that this problem is not unique to Neural Networks - there’s an entire field dedicated to finding the best combination of inputs to minimize the output of an objective function: the field of Mathematical Optimization. The bad news is that optimization can be a bit overwhelming; there are many different techniques we could apply to our problem. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Part of what makes the optimization challenging is the broad range of approaches covered - from very rigorous, theoretical methods to hands-on, more heuristics-driven methods. Yann Lecun’s 1998 publication Efficient BackProp presents an excellent review of various optimization techniques as applied to neural networks. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here, we’re going to use a more sophisticated variant on gradient descent, the popular Broyden-Fletcher-Goldfarb-Shanno numerical optimization algorithm. The BFGS algorithm overcomes some of the limitations of plain gradient descent by estimating the second derivative, or curvature, of the cost function surface, and using this information to make more informed movements downhill. BFGS will allow us to find solutions more often and more quickly. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We’ll use the BFGS implementation built into the scipy optimize package, specifically within the minimize function. To use BFGS, the minimize function requires us to pass in an objective function that accepts a vector of parameters, input data, and output data, and returns both the cost and gradients. Our neural network implementation doesn’t quite follow these semantics, so we’ll use a wrapper function to give it this behavior. We’ll also pass in initial parameters, set the jacobian parameter to true since we’re computing the gradient within our neural network class, set the method to BFGS, pass in our input and output data, and some options. Finally, we’ll implement a callback function that allows us to track the cost function value as we train the network. Once the network is trained, we’ll replace the original, random parameters, with the trained parameters. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "#Import code from previous videos:\n", "from partFive import *" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from scipy import optimize" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [], "source": [ "class trainer(object):\n", " def __init__(self, N):\n", " #Make Local reference to network:\n", " self.N = N\n", " \n", " def callbackF(self, params):\n", " self.N.setParams(params)\n", " self.J.append(self.N.costFunction(self.X, self.y)) \n", " \n", " def costFunctionWrapper(self, params, X, y):\n", " self.N.setParams(params)\n", " cost = self.N.costFunction(X, y)\n", " grad = self.N.computeGradients(X,y)\n", " \n", " return cost, grad\n", " \n", " def train(self, X, y):\n", " #Make an internal variable for the callback function:\n", " self.X = X\n", " self.y = y\n", "\n", " #Make empty list to store costs:\n", " self.J = []\n", " \n", " params0 = self.N.getParams()\n", "\n", " options = {'maxiter': 200, 'disp' : True}\n", " _res = optimize.minimize(self.costFunctionWrapper, params0, jac=True, method='BFGS', \\\n", " args=(X, y), options=options, callback=self.callbackF)\n", "\n", " self.N.setParams(_res.x)\n", " self.optimizationResults = _res\n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we plot the cost against the number of iterations through training, we should see a nice, monotonically decreasing function. Further, we see that the number of function evaluations required to find the solution is less than 100, and far less than the 10^27 function evaluation that would have been required to find a solution by brute force, as shown in part 3. Finally, we can evaluate our gradient at our solution and see very small values – which make sense, as our minimum should be quite flat. " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "NN = Neural_Network()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [], "source": [ "T = trainer(NN)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 0.000000\n", " Iterations: 62\n", " Function evaluations: 75\n", " Gradient evaluations: 75\n" ] } ], "source": [ "T.train(X,y)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(T.J)\n", "grid(1)\n", "xlabel('Iterations')\n", "ylabel('Cost')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array([[ -2.48772788e-09, 1.62507244e-08, -9.32119968e-08],\n", " [ -1.32655986e-09, 3.50716727e-08, -1.65122302e-07]]),\n", " array([[ -2.14796459e-07],\n", " [ -2.05463705e-07],\n", " [ 7.32973302e-08]]))" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NN.costFunctionPrime(X,y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The more exciting thing here is that we finally have a trained network that can predict your score on a test based on how many hours you sleep and how many hours you study the night before. If we run our training data through our forward method now, we see that our predictions are excellent. We can go one step further and explore the input space for various combinations of hours sleeping and hours studying, and maybe we can find an optimal combination of the two for your next test. " ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.75000063],\n", " [ 0.8200034 ],\n", " [ 0.92998755]])" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "NN.forward(X)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.75],\n", " [ 0.82],\n", " [ 0.93]])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#Test network for various combinations of sleep/study:\n", "hoursSleep = linspace(0, 10, 100)\n", "hoursStudy = linspace(0, 5, 100)\n", "\n", "#Normalize data (same way training data way normalized)\n", "hoursSleepNorm = hoursSleep/10.\n", "hoursStudyNorm = hoursStudy/5.\n", "\n", "#Create 2-d versions of input for plotting\n", "a, b = meshgrid(hoursSleepNorm, hoursStudyNorm)\n", "\n", "#Join into a single input matrix:\n", "allInputs = np.zeros((a.size, 2))\n", "allInputs[:, 0] = a.ravel()\n", "allInputs[:, 1] = b.ravel()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "allOutputs = NN.forward(allInputs)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Contour Plot:\n", "yy = np.dot(hoursStudy.reshape(100,1), np.ones((1,100)))\n", "xx = np.dot(hoursSleep.reshape(100,1), np.ones((1,100))).T\n", "\n", "CS = contour(xx,yy,100*allOutputs.reshape(100, 100))\n", "clabel(CS, inline=1, fontsize=10)\n", "xlabel('Hours Sleep')\n", "ylabel('Hours Study')" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nokIHE+gVoR+pMbkAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#3D plot:\n", "\n", "##Uncomment to plot out-of-notebook (you'll be able to rotate)\n", "#%matplotlib qt\n", "\n", "from mpl_toolkits.mplot3d import Axes3D\n", "fig = plt.figure()\n", "ax = fig.gca(projection='3d')\n", "\n", "surf = ax.plot_surface(xx, yy, 100*allOutputs.reshape(100, 100), \\\n", " cmap=cm.jet)\n", "\n", "ax.set_xlabel('Hours Sleep')\n", "ax.set_ylabel('Hours Study')\n", "ax.set_zlabel('Test Score')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our results look pretty reasonable, and we see that for our model, sleep actually has a bigger impact on your grade than studying – something I wish I had realized when I was in school. So we’re done, right? \n", "\tNope. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We’ve made possibly the most dangerous and tempting error in machine learning – overfitting. Although our network is performing incredibly well (maybe too well) on our training data – that doesn’t mean that our model is a good fit for the real world, and that’s what we’ll work on next time. " ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.10" } }, "nbformat": 4, "nbformat_minor": 0 }