From 144d3d52c9fbb2b3b2005a52a54c43a001b42057 Mon Sep 17 00:00:00 2001
From: Andrew Gibiansky <andrew.gibiansky@gmail.com>
Date: Wed, 22 Jan 2014 21:20:22 -0800
Subject: [PATCH] added gradient descent nb

---
 notebooks/Gradient Descent.ipynb      | 401 ++++++++++++++++++++++++++
 notebooks/Test.ipynb                  | 109 ++-----
 notebooks/imgs/gradient-descent-1.png | Bin 0 -> 32754 bytes
 3 files changed, 430 insertions(+), 80 deletions(-)
 create mode 100644 notebooks/Gradient Descent.ipynb
 create mode 100644 notebooks/imgs/gradient-descent-1.png

diff --git a/notebooks/Gradient Descent.ipynb b/notebooks/Gradient Descent.ipynb
new file mode 100644
index 00000000..9dcd2314
--- /dev/null
+++ b/notebooks/Gradient Descent.ipynb	
@@ -0,0 +1,401 @@
+{
+ "metadata": {
+  "language": "haskell",
+  "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+  {
+   "cells": [
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "In supervised learning algorithms, we generally have some model (such as a neural network) with a set of parameters (the weights), a data set, and an error function which measures how well our parameters and model fit the data. With many models, the way to train the model and fit the parameters is through an iterative minimization procedure which uses the gradient of the error to find the local minimum in parameter space. This notebook will not go into the details of neural networks or how to compute the derivatives of error functions, but instead focuses on some of the simple minimization methods one can employ. The goal of this notebook is to develop a simple yet flexible framework in Haskell in which we can develop gradient descent methods.\n",
+      "\n",
+      "Although you should keep in mind that the goal of these algorithms (for our purposes) is to train neural networks, for now we will just discuss some abstract function $f(\\vec x)$ for which we can compute all partial derivatives.\n",
+      "$\n",
+      "% Latex Setup and definitions\n",
+      "\\newcommand\\vector[1]{\\langle #1 \\rangle}\n",
+      "\\newcommand\\p[2]{\\frac{\\partial #1}{\\partial #2}}\n",
+      "$\n",
+      "\n",
+      "Gradient Descent\n",
+      "---\n",
+      "The simplest algorithm for iterative minimization of differentiable functions is known as just **gradient descent**.\n",
+      "Recall that the gradient of a function is defined as the vector of partial derivatives:\n",
+      "\n",
+      "$$\\nabla f(x) = \\vector{\\p{f}{x_1}, \\p{f}{x_2}, \\ldots, \\p{f}{x_n}}$$\n",
+      "\n",
+      "and that the gradient of a function always points towards the direction of maximal increase at that point.\n",
+      "\n",
+      "Equivalently, it points *away* from the direction of maximum decrease - thus, if we start at any point, and keep moving in the direction of the negative gradient, we will eventually reach a local minimum.\n",
+      "\n",
+      "This simple insight leads to the Gradient Descent algorithm. Outlined algorithmically, it looks like this:\n",
+      "\n",
+      "1. Pick a point $x_0$ as your initial guess.\n",
+      "2. Compute the gradient at your current guess:\n",
+      "$v_i = \\nabla f(x_i)$\n",
+      "3. Move by $\\alpha$ (your step size) in the direction of that gradient:\n",
+      "$x_{i+1} = x_i + \\alpha v_i$\n",
+      "4. Repeat steps 1-3 until your function is close enough to zero (until $f(x_i) < \\varepsilon$ for some small tolerance $\\varepsilon$)\n",
+      "\n",
+      "Note that the step size, $\\alpha$, is simply a parameter of the algorithm and has to be fixed in advance. \n",
+      "\n",
+      "Though this algorithm is simple, it will be a bit of a challenge to formalize it into executable Haskell code that we can later extend to other algorithms. First, note that gradient descent requires two things:\n",
+      "\n",
+      "- Something to optimize (a function)\n",
+      "- What to optimize over (the parameters)\n",
+      "- A way to compute partials of the function\n",
+      "\n",
+      "Note that we don't actually need to *call* the function itself - only the partial derivatives are necessary.\n",
+      "\n",
+      "We're going to define a single class for things on which we can run gradient descent. Although later we may want to modify this class, this serves as a beginning:"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      ":set -XTypeFamilies\n",
+      "class GradientDescent a where\n",
+      "  -- Type to represent the parameter space.\n",
+      "  data Params a :: *\n",
+      "  \n",
+      "  -- Compute the gradient at a location in parameter space.\n",
+      "  grad :: a -> Params a -> Params a\n",
+      "  \n",
+      "  -- Move in parameter space.\n",
+      "  paramMove :: Double    -- Scaling factor.\n",
+      "            -> Params a  -- Direction vector.\n",
+      "            -> Params a  -- Original location.\n",
+      "            -> Params a  -- New location."
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 1
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "In order to use some type `a` with our gradient descent, we require that it is an instance of `GradientDescent`. This class requires a few things.\n",
+      "\n",
+      "First off, we use type families in order to define a representation for the parameter space. We want to be able to operate on points in the parameter space of our function; however, while something like a list of values might be nice and simple in one case, it is inappropriate and inefficient when storing the weights of a neural network. Thus, we let each class instance decide how to store its parameters by defining an associated type instance. (We will see an instance of this later!)\n",
+      "\n",
+      "Next, `GradientDescent` requires a single function called `grad`, which takes the thing of type `a` and the current point in parameter space (via a `Param a`) and outputs a set of partial derivatives. The partial derivatives have the same form and dimension as the point in parameter space, so they are also a `Param a`. \n",
+      "\n",
+      "Finally, we must be able to move around in parameter space, so `GradientDescent` defines a function `paramMove` which does exactly that - it takes a parameter vector and an amount by which to move and uses these to generate a new position from an old one.\n",
+      "\n",
+      "Let's go ahead and create the simplest instantiation of this class and type family: a single-argument function. Note that this is just for demo purposes, and we're going to use numerical differentiation to compute the derivative."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "-- We need flexible instances for declarations like these.\n",
+      ":set -XFlexibleInstances\n",
+      "\n",
+      "instance Floating a => GradientDescent (a -> a) where\n",
+      "  -- The parameter for a function is just its argument.\n",
+      "  data Params (a -> a) = Arg { unArg :: a }\n",
+      "\n",
+      "  -- Use numeric differentiation for taking the gradient.\n",
+      "  grad f (Arg value) = Arg $ (f value - f (value - epsilon)) / epsilon\n",
+      "    where epsilon = 0.0001\n",
+      "    \n",
+      "  paramMove scale (Arg vec) (Arg old) = Arg $ old + fromRational (toRational scale) * vec"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 2
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "We're getting closer to implementing the actual algorithm. However, we have yet to define when the algorithm *stops* - and, in order to give maximum flexibility to the user, we'll let the stopping condition be an argument. This lets the user specify an error tolerance, as well as how they want to derive this error:"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "-- Define a way to decide when to stop.\n",
+      "-- This lets the user specify an error tolerance easily.\n",
+      "-- The function takes the previous two sets of parameters and returns\n",
+      "-- `True` to continue the descent and `False` to stop.\n",
+      "newtype StopCondition a = StopWhen (Params a -> Params a -> Bool)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 3
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "With a single instance of our class, we can now implement our gradient descent algorithm:"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "gradientDescent :: GradientDescent a => a  -- What to optimize.\n",
+      "                -> StopCondition a        -- When to stop.\n",
+      "                -> Double                 -- Step size (alpha).\n",
+      "                -> Params a               -- Initial point (x0).\n",
+      "                -> Params a               -- Return: Location of minimum.\n",
+      "gradientDescent function (StopWhen stop) alpha x0 =\n",
+      "  let iterations = iterate takeStep x0\n",
+      "      iterationPairs = zip iterations $ tail iterations\n",
+      "    in\n",
+      "      -- Drop all elements where the resulting parameters (and previous parameters)\n",
+      "      -- do not meet the stop condition. Then, return just the last parameter set.\n",
+      "      snd . head $ dropWhile (not . uncurry stop) iterationPairs\n",
+      "  where\n",
+      "    -- For each step...\n",
+      "    takeStep params = \n",
+      "      -- Compute the gradient.\n",
+      "      let gradients = grad function params in\n",
+      "        -- And move against the gradient with a step size alpha.\n",
+      "        paramMove (-alpha) gradients params"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 4
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Let's go ahead and try this for some simple functions. First, we need to create a stopping condition. In this case, we're going to stop when successive updates to the parameters do not affect the outcome very much - namely, when the difference between the function value at successive parameters is below some $\\varepsilon$-tolerance. In other scenarios, we may want to use a more complicated stopping criterion."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "-- Create a stop condition that respects a given error tolerance.\n",
+      "stopCondition :: (Double -> Double) -> Double -> StopCondition (Double -> Double)\n",
+      "stopCondition f tolerance = StopWhen stop\n",
+      "  where stop (Arg prev) (Arg cur) =\n",
+      "          abs (f prev - f cur) < tolerance  "
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 5
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Let's finally try to minimize something, such as the relatively trivial function $f(x) = x^2 + 3x$. It's graph looks like this:\n",
+      "\n",
+      "<center>\n",
+      "<img src=\"files/imgs/gradient-descent-1.png\" width=400/>\n",
+      "</center>\n",
+      "\n",
+      "This function has a minimum at $x = -\\frac{3}{2}$."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "-- A demo function with minimum at -3/2\n",
+      "function x = x^2 + 3 * x"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 6
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Finally, let's take the minimum. We're going to use a step size of $\\alpha = 0.1$, start at $x_0 = 12$, and stop with a tolerance of $1\\times 10^{-4}$:"
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "let alpha = 1e-1\n",
+      "let tolerance = 1e-4\n",
+      "let initValue = 12.0\n",
+      "unArg $ gradientDescent function (stopCondition function tolerance) alpha (Arg initValue)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "text": [
+        "-1.4892542376755242"
+       ]
+      }
+     ],
+     "prompt_number": 7
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Monadic Gradient Descent\n",
+      "---\n",
+      "\n",
+      "Although the above implementation of gradient descent works, we're going to run into problems when our functions are more complicated. For instance, suppose that computing the gradient required a lot of computation, and the computation required communicating with a distributed network of processing nodes. Or suppose that there were some regimes in which the function was non-differentiable, and we wanted to use the `Maybe` type to represent this. In order to support this, we can try to rewrite our class with *monadic* variants of its operations."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "import Control.Monad.Identity\n",
+      "\n",
+      ":set -XMultiParamTypeClasses\n",
+      "class Monad m => GradientDescent m a where\n",
+      "  -- Type to represent the parameter space.\n",
+      "  data Params a :: *\n",
+      "  \n",
+      "  -- Compute the gradient at a location in parameter space.\n",
+      "  grad :: a -> Params a -> m (Params a)\n",
+      "  \n",
+      "  -- Move in parameter space.\n",
+      "  paramMove :: Double        -- Scaling factor.\n",
+      "            -> Params a      -- Direction vector.\n",
+      "            -> Params a      -- Original location.\n",
+      "            -> m (Params a)  -- New location.\n",
+      "            \n",
+      "            \n",
+      "-- Since we've redefined GradientDescent, we need to redefine StopCondition.\n",
+      "newtype StopCondition a = StopWhen (Params a -> Params a -> Bool)"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 8
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "In order to utilize this, we're going to have to rewrite our instance to run all computations in a monad. The implementation will look quite familiar, but we won't be able to use as many built-in functions, as they do not have monadic variants in the base packages."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "gradientDescent :: (GradientDescent m a) => \n",
+      "                   a                 -- What to optimize.\n",
+      "                -> StopCondition a   -- When to stop.\n",
+      "                -> Double            -- Step size (alpha).\n",
+      "                -> Params a          -- Initial point (x0).\n",
+      "                -> m (Params a)      -- Return: Location of minimum.\n",
+      "gradientDescent function (StopWhen stop) alpha x0 = do\n",
+      "  -- Take the next step.\n",
+      "  next <- takeStep x0\n",
+      "  \n",
+      "  -- If we stop, do so, otherwise recurse.\n",
+      "  if stop x0 next\n",
+      "     then return next\n",
+      "     else gradientDescent function (StopWhen stop) alpha next\n",
+      "  where\n",
+      "    takeStep params = do\n",
+      "      gradients <- grad function params\n",
+      "      paramMove (-alpha) gradients params"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 9
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Let's try this for something simple. Suppose we're using our old $f(x) = x^2 + 3x$, but for some reason, we are incapable of differentiating if the function value is below zero. We'll use the `Maybe` monad to represent this - if the parameter to a function is negative, we return `Nothing`, otherwise, we return `Just` the derivative."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "instance (Ord a, Floating a) => GradientDescent Maybe (a -> a) where\n",
+      "  -- The parameter for a function is just its argument.\n",
+      "  data Params (a -> a) = Arg { unArg :: a }\n",
+      "\n",
+      "  -- Use numeric differentiation for taking the gradient.\n",
+      "  grad f (Arg value) = \n",
+      "    if value > 0\n",
+      "    then Just $ Arg $ (f value - f (value - epsilon)) / epsilon\n",
+      "    else Nothing\n",
+      "    where epsilon = 0.0001\n",
+      "    \n",
+      "  paramMove scale (Arg vec) (Arg old) = Just $ Arg $ old + fromRational (toRational scale) * vec"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 10
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "Let's go ahead and try this with the same example as before."
+     ]
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "stopCondition f tolerance = StopWhen stop\n",
+      "  where stop (Arg prev) (Arg cur) =\n",
+      "          abs (f prev - f cur) < tolerance  \n",
+      "          \n",
+      "let x0 = Arg initValue\n",
+      "let stopper = stopCondition function tolerance\n",
+      "case gradientDescent function stopper alpha x0 of\n",
+      "  Just x -> print $ unArg x\n",
+      "  Nothing -> putStrLn \"Nothing!\""
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [
+      {
+       "metadata": {},
+       "output_type": "display_data",
+       "text": [
+        "Nothing!"
+       ]
+      }
+     ],
+     "prompt_number": 11
+    },
+    {
+     "cell_type": "markdown",
+     "metadata": {},
+     "source": [
+      "We saw in the original example that the minimum is at $-\\frac{3}{2}$, so this gradient descent tries to go into the $x < 0$ region - at which point the differentiation returns `Nothing`, and the gradient descent implicitly stops! This monadic gradient descent can be used to implement things such as bounded optimization, optimization that keeps track of the states it went through, optimization that uses networked IO to do its computation, and so on.\n",
+      "\n",
+      "That's it for now. In the next notebook, I'm going to try implementing conjugate gradient in this same framework."
+     ]
+    }
+   ],
+   "metadata": {}
+  }
+ ]
+}
\ No newline at end of file
diff --git a/notebooks/Test.ipynb b/notebooks/Test.ipynb
index 9cd1ec67..b4351c9f 100644
--- a/notebooks/Test.ipynb
+++ b/notebooks/Test.ipynb
@@ -12,106 +12,55 @@
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "do\n",
-      "  return 3\n",
-      "  \n",
-      "a <- return 3"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "html": [
-        " <div class=\"suggestion-name\" style=\"clear:both;\"> Redundant do</div>  <div class=\"suggestion-row\" style=\"float: left;\"> <div class=\"suggestion-error\">Found:</div>  <div class=\"highlight-code\" id=\"haskell\">return 3\n",
-        "</div> </div>  <div class=\"suggestion-row\" style=\"float: left;\"> <div class=\"suggestion-error\">Why Not:</div>  <div class=\"highlight-code\" id=\"haskell\">  return 3\n",
-        "</div> </div>  <div class=\"suggestion-name\" style=\"clear:both;\"> Use let</div>  <div class=\"suggestion-row\" style=\"float: left;\"> <div class=\"suggestion-warning\">Found:</div>  <div class=\"highlight-code\" id=\"haskell\">a <- return 3\n",
-        "\n",
-        "</div> </div>  <div class=\"suggestion-row\" style=\"float: left;\"> <div class=\"suggestion-warning\">Why Not:</div>  <div class=\"highlight-code\" id=\"haskell\">let a = 3\n",
-        "\n",
-        "</div> </div> "
-       ],
-       "metadata": {},
-       "output_type": "display_data",
-       "text": [
-        "Line 1:  Redundant do\n",
-        "Found:\n",
-        "return 3\n",
-        "\n",
-        "Why not:\n",
-        "  return 3\n",
-        "Line 4:  Use let\n",
-        "Found:\n",
-        "a <- return 3\n",
-        "\n",
-        "\n",
-        "Why not:\n",
-        "let a = 3"
-       ]
-      },
-      {
-       "metadata": {},
-       "output_type": "display_data",
-       "text": [
-        "3"
-       ]
-      }
-     ],
-     "prompt_number": 8
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "return 3"
-     ],
-     "language": "python",
-     "metadata": {},
-     "outputs": [
-      {
-       "metadata": {},
-       "output_type": "display_data",
-       "text": [
-        "3"
-       ]
-      }
-     ],
-     "prompt_number": 6
-    },
-    {
-     "cell_type": "code",
-     "collapsed": false,
-     "input": [
-      "data X = X"
+      "class A a where\n",
+      " f :: a -> Bool"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [],
-     "prompt_number": 3
+     "prompt_number": 12
     },
     {
      "cell_type": "code",
      "collapsed": false,
      "input": [
-      "f X"
+      "instance A Bool where\n",
+      "  f b = b"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 13
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "import Control.Monad.Identity"
+     ],
+     "language": "python",
+     "metadata": {},
+     "outputs": [],
+     "prompt_number": 14
+    },
+    {
+     "cell_type": "code",
+     "collapsed": false,
+     "input": [
+      "f True"
      ],
      "language": "python",
      "metadata": {},
      "outputs": [
       {
-       "html": [
-        "<span class='err-msg'>Couldn't match expected type `main:X' with actual type `X'<br/>In the first argument of `f', namely `X'<br/>In the expression: f X<br/>In an equation for `it': it = f X</span>"
-       ],
        "metadata": {},
        "output_type": "display_data",
        "text": [
-        "Couldn't match expected type `main:X' with actual type `X'\n",
-        "In the first argument of `f', namely `X'\n",
-        "In the expression: f X\n",
-        "In an equation for `it': it = f X"
+        "True"
        ]
       }
      ],
-     "prompt_number": 4
+     "prompt_number": 15
     },
     {
      "cell_type": "code",
diff --git a/notebooks/imgs/gradient-descent-1.png b/notebooks/imgs/gradient-descent-1.png
new file mode 100644
index 0000000000000000000000000000000000000000..10b8b6f2fb0ea124e39808c6951301ca31e9a200
GIT binary patch
literal 32754
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

literal 0
HcmV?d00001