{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "from matplotlib import pyplot as plt\n", "import numpy as np\n", "import imp\n", "from IPython.display import YouTubeVideo\n", "from IPython.display import HTML" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "slideshow": { "slide_type": "skip" } }, "outputs": [], "source": [ "from PIL import Image, ImageChops\n", "\n", "def trim(im, percent=36):\n", " bg = Image.new(im.mode, im.size, im.getpixel((0,0)))\n", " diff = ImageChops.difference(im, bg)\n", " diff = ImageChops.add(diff, diff, 2.0, -100)\n", " bbox = diff.getbbox()\n", " if bbox:\n", " x = im.crop(bbox)\n", " return x.resize(((x.size[0]*percent)/100, (x.size[1]*percent)/100), Image.ANTIALIAS)\n", "\n", "def resize(filename, percent=36):\n", " trim(Image.open(filename + \".png\"), percent).save(filename + \"_r\" + str(percent) + \".png\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# EECS 545: Machine Learning\n", "## Lecture 22: Neural Networks (Part 1)\n", "* Instructor: **Junhyuk Oh**\n", "* Lecture exposition: **Junhyuk Oh**\n", "* Date: April 6, 2016" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- Basics of Neural Networks\n", " - Forward Propagation\n", " - Backward Propagation\n", "- Deep Neural Networks\n", " - Convolutional Neural Networks\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Limitations of Linear Classifiers\n", "\n", "- Linear classifiers (e.g., logistic regression) classify inputs based on linear combinations of input $x_i$\n", "- Many decisions involve non-linear functions of the input " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Limitations of Linear Classifiers\n", "- Canonical example (XOR function)\n", " - The positive/negative examples are not *linearly separable*.\n", " - Need to map the input ($x_1,x_2$) to a feature space where examples are linearly separable.\n", "\n", "(Figure from Raquel Urtasun & Rich Zemel)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Feature Representation\n", "\n", "(Slide Credit: Honglak Lee)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Feature Representation\n", "\n", "(Slide Credit: Honglak Lee)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Hand-crafted Feature Representation\n", "\n", "(Slide Credit: Honglak Lee)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Drawbacks of Hand-crafted Feature Representation\n", "- Requires expert knowledge\n", "- Requires time-consuming hand-tuning
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "### Q) Can we learn useful features from raw data?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "$\\rightarrow$ Yes. That's what **deep learning** is trying to do.
\n", "$\\rightarrow$ ** Neural network** can implement the idea of deep learning." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- **Basics of Neural Networks**\n", " - Forward Propagation\n", " - Backward Propagation\n", "- Deep Neural Networks\n", " - Convolutional Neural Networks\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Overview of Neural Networks\n", "- Input Layer: provides input\n", "- Hidden Layer: features extracted from input\n", "- Output Layer: output of the network\n", "- Parameters (or weights) for each layer\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Overview of Neural Networks\n", "- A **loss function** is defined over the *output units* and *desired outputs* (i.e., labels)\n", "$$\\mathcal{L}\\left( \\textbf{y}, \\hat{\\textbf{y}} \\right) \\mbox{ where } \\hat{\\textbf{y}}=f(\\textbf{x};\\theta)$$\n", "- The parameter of the network is trained to minimize the loss function based on gradient descent methods\n", "$$\\min_{\\theta} \\mathbb{E}_{(\\textbf{x},\\textbf{y}) \\sim \\mbox{data}} \\left[ \\mathcal{L}\\left( \\textbf{y}, \\hat{\\textbf{y}} \\right) \\right] \\mbox{ where } \\hat{\\textbf{y}}=f(\\textbf{x};\\theta) $$\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Overview of Neural Networks\n", "- Forward Propagation (inference): Compute $\\hat{\\textbf{y}}=f(\\textbf{x};\\theta)$ (output given input) \n", "- Backward Propagation (learning): Compute $\\nabla_{\\theta}\\mathcal{L}$ (gradient of loss w.r.t. parameters) \n", " " ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- Basics of Neural Networks\n", " - **Forward Propagation**\n", " - Backward Propagation\n", "- Deep Neural Networks\n", " - Convolutional Neural Networks\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Forward Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Forward Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Forward Propagation\n", "- The activation of each unit is computed based on **the previous layer** and **parameters (or weights)** associated with edges\n", "$$\\underbrace{\\textbf{h}^{(l)}}_{l\\mbox{-th layer}}=f^{(l)}(\\underbrace{\\textbf{h}^{(l-1)}}_{(l-1)\\mbox{-th layer}}; \\underbrace{\\theta^{(l)}}_{\\mbox{weights}}) \\mbox { where } \\textbf{h}^{(0)} \\equiv \\textbf{x}, \\textbf{h}^{(L)} \\equiv \\hat{\\textbf{y}}$$\n", "$$\\hat{\\textbf{y}}=f(\\textbf{x};\\theta)=f^{(L)} \\circ f^{(L-1)} \\cdots f^{(2)} \\circ f^{(1)}\\left(\\textbf{x} ; \\theta^{(1)} \\right) $$\n", "" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "scrolled": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Types of Layers: Linear\n", "$$ h_i=\\sum_{j}w_{ij}x_j + b_i$$\n", "$$ \\textbf{h} = \\textbf{W}\\textbf{x} + \\textbf{b} $$ \n", "- $\\textbf{x} \\in \\mathbb{R}^m $ : Input, $\\textbf{h} \\in \\mathbb{R}^n $ : Output \n", "- $\\textbf{W} \\in \\mathbb{R}^{n \\times m}$ : Weight, $\\textbf{b} \\in \\mathbb{R}^{n}$ : Bias $\\rightarrow$ parameter\n", "- Often called \"fully-connected layer\"\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Types of Layers: Non-linear Activation Function\n", "- Applies a non-linear function to individual units.\n", "- There is no weight.\n", "- Allows neural networks to learn non-linear features.\n", "- ex) Sigmoid, Hyperbolic Tangent, Rectified Linear Function\n", "" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Non-linear Activation: Sigmoid\n", "$$ h_i=\\sigma (x_i) = \\frac{1}{1+\\exp\\left(-x_i\\right)} $$\n", "$$ \\textbf{h} = \\sigma \\left(\\textbf{x} \\right) $$ " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xx = np.linspace(-5, 5, 100)\n", "plt.plot(xx, 1/(1 + np.exp(-1 * xx)), '-g')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Non-linear Activation: Hyperbolic Tangent (Tanh)\n", "$$ h_i= \\mbox{tanh}(x_i)=\\frac{\\exp(x_i)-\\exp(-x_i)}{\\exp(x_i)+\\exp(-x_i)} $$\n", "$$ \\textbf{h} = \\mbox{tanh} \\left(\\textbf{x} \\right) $$ " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nkOUxD1LVAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xx = np.linspace(-5, 5, 100)\n", "plt.plot(xx, (np.exp(xx) - np.exp(-1 * xx))/(np.exp(xx) + np.exp(-1 * xx)), '-g')" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Non-linear Activation: Rectified Linear (ReLU)\n", "$$ h_i= \\mbox{ReLU}(x_i)=\\max\\left(x_i, 0 \\right) $$\n", "$$ \\textbf{h} = \\mbox{ReLU} \\left(\\textbf{x} \\right) $$ \n", "- Easier to optimize" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n643JJ2kAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xx = np.linspace(-5, 5, 100)\n", "plt.plot(xx, xx * (xx > 0).astype(np.int), '-g')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Types of Layers: Softmax\n", "$$ h_i = \\frac{\\exp(x_i)}{\\sum_{j}\\exp(x_j)} $$\n", "$$ \\textbf{h} = \\mbox{Softmax}(\\textbf{x}) $$\n", "- Note: $h_i \\geq 0$ and $\\sum_{i}h_i=1$\n", "- Useful for generating a multinomial distribution (classification)\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Multi-layer Neural Network\n", "- Consists of multiple (linear + non-linear activation) layers.\n", "- Each layer learns non-linear features from its previous layer.\n", "- Often called Multi-Layer Perceptron (MLP).\n", "- 2-layer MLP with infinite number of hidden units can approximate any functions.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Multi-layer Neural Network\n", "- Simplified illustration that only shows edges with weights.\n", "- We assume that each layer is followed by a non-linear activation function (except for the output layer).\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Multi-layer Neural Network\n", "- More simplified illustration\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Multi-layer Neural Network\n", "- Even more simplified illustration\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- Basics of Neural Networks\n", " - Forward Propagation\n", " - **Backward Propagation**\n", "- Deep Neural Networks\n", " - Convolutional Neural Networks\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Training Neural Networks\n", "- Repeat until convergence\n", " - $(\\textbf{x},\\textbf{y}) \\leftarrow$ Sample an example (or a mini-batch) from data\n", " - $\\hat{\\textbf{y}} \\leftarrow f\\left( \\textbf{x} ; \\theta \\right)$ Forward propagation\n", " - Compute $\\mathcal{L}\\left(\\textbf{y},\\hat{\\textbf{y}}\\right)$\n", " - $\\nabla_{\\theta}\\mathcal{L} \\leftarrow$ Backward propagation\n", " - Update weights using (stochastic) gradient descent\n", " - $\\theta \\leftarrow \\theta - \\alpha \\nabla_{\\theta}\\mathcal{L}$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Types of Losses: Squared Loss\n", "$$ \\mathcal{L}\\left(\\textbf{y},\\hat{\\textbf{y}}\\right) = \\frac{1}{2}\\left\\Vert \\textbf{y}-\\hat{\\textbf{y}}\\right\\Vert^2_2 $$\n", "$$ \\frac{\\partial\\mathcal{L}}{\\partial \\hat{y}_i}=\\hat{y}_i-y_i \\iff \\nabla_{\\hat{\\textbf{y}}}\\mathcal{L}=\\hat{\\textbf{y}}-\\textbf{y} $$\n", "- Used for regression problems" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Types of Losses: Cross Entropy\n", "$$ \\mathcal{L}\\left(\\textbf{y},\\hat{\\textbf{y}}\\right) = -\\sum_{i}y_i\\log\\hat{y}_i $$\n", "$$ \\frac{\\partial\\mathcal{L}}{\\partial \\hat{y}_i}=-\\frac{y_i}{\\hat{y}_i} \\iff \\nabla_{\\hat{\\textbf{y}}}\\mathcal{L}=-\\frac{\\textbf{y}}{\\hat{\\textbf{y}}}$$\n", "\n", "- Measure a distance between two multinomial distributions\n", "- Used for classification problems \n", " - ex) $\\textbf{y}=$[0 0 1], $\\hat{\\textbf{y}}=$[0.3 0.2 0.5], $\\mathcal{L}\\left(\\textbf{y},\\hat{\\textbf{y}}\\right)=-\\log 0.5$\n", "- When cross entropy is used with a softmax output, the last layer is equivalent to softmax regression (multi-class version of logistic regression)." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Training Neural Networks\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "- Denote $x,h,\\theta$ is the input, output, and parameter of a layer.\n", "- It is non-trivial to derive the gradient of loss w.r.t. parameters in intermediate layers\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "- Assuming that $\\frac{\\partial \\mathcal{L}}{\\partial h}$ is given, use the **chain rule** to compute the gradients\n", "$$\\frac{\\partial \\mathcal{L}}{\\partial \\theta}=\\underbrace{\\frac{\\partial \\mathcal{L}}{\\partial h}}_{\\mbox{given}} \\underbrace{\\frac{\\partial h}{\\partial \\theta}}_{\\mbox{easy}} \\mbox{ , } \\frac{\\partial \\mathcal{L}}{\\partial x}=\\underbrace{\\frac{\\partial \\mathcal{L}}{\\partial h}}_{\\mbox{given}} \\underbrace{\\frac{\\partial h}{\\partial x}}_{\\mbox{easy}}$$\n", "- We need only $\\frac{\\partial \\mathcal{L}}{\\partial \\theta}$ for gradient descent. Why compute $\\frac{\\partial \\mathcal{L}}{\\partial x}$? \n", " - The previous layer needs it because $x$ is the output of the previous layer.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Idea of Back-Propagation\n", "" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Back-Propagation Algorithm\n", "- Compute $\\nabla_{\\textbf{y}} \\mathcal{L}=\\left[\\frac{\\partial\\mathcal{L}}{\\partial y_1}, ..., \\frac{\\partial\\mathcal{L}}{\\partial y_n}\\right]$ directly from the loss function.\n", "- For each layer (from top to bottom) with output $\\textbf{h}$, input $\\textbf{x}$, and weights $\\textbf{W}$,\n", " - Assuming that $\\nabla_{\\textbf{h}}\\mathcal{L}$ is given, compute gradients using the **chain rule** as follows: \n", "$$\\nabla_{\\textbf{W}}\\mathcal{L}=\\nabla_{\\textbf{h}}\\mathcal{L}\\nabla_{\\textbf{W}}\\textbf{h}$$\n", "$$\\nabla_{\\textbf{x}}\\mathcal{L}=\\nabla_{\\textbf{h}}\\mathcal{L}\\nabla_{\\textbf{x}}\\textbf{h}$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Practice: Linear\n", "- Forward: $h_i=\\sum_{j}w_{ij}x_j + b_i \\iff \\textbf{h} = \\textbf{W}\\textbf{x} + \\textbf{b}$ \n", "- Gradient w.r.t. parameters\n", "$$ \\frac{\\partial \\mathcal{L}}{\\partial w_{ij}} = \\frac{\\partial \\mathcal{L}}{\\partial h_{i}}\\frac{\\partial h_i}{\\partial w_{ij}}=\\frac{\\partial \\mathcal{L}}{\\partial h_{i}}x_j \\iff \\nabla_{\\textbf{W}} \\mathcal{L} = \\nabla_{\\textbf{h}}\\mathcal{L}\\textbf{x}^{\\top}$$\n", "$$ \\nabla_{\\textbf{b}} \\mathcal{L} = \\nabla_{\\textbf{h}}\\mathcal{L} $$\n", "- Gradient w.r.t. inputs\n", "$$ \\frac{\\partial \\mathcal{L}}{\\partial x_{j}} = \\sum_{i} \\frac{\\partial \\mathcal{L}}{\\partial h_{i}}\\frac{\\partial h_i}{\\partial x_{j}}=\\sum_{i} \\frac{\\partial \\mathcal{L}}{\\partial h_{i}}w_{ij} \\iff \\nabla_{\\textbf{x}} \\mathcal{L} = \\textbf{W}^{\\top}\\nabla_{\\textbf{h}}\\mathcal{L} $$\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Practice: Non-Linear Activation (Sigmoid) \n", "- Forward: $ h_i=\\sigma (x_i) = \\frac{1}{1+\\exp\\left(-x_i\\right)} \\iff \\textbf{h} = \\sigma \\left(\\textbf{x} \\right) $ \n", "- Gradient w.r.t. inputs\n", "$$ \\frac{\\partial \\mathcal{L}}{\\partial x_{i}} = \\frac{\\partial \\mathcal{L}}{\\partial h_{i}}\\frac{\\partial h_i}{\\partial x_{i}}=\\frac{\\partial \\mathcal{L}}{\\partial h_{i}}\\sigma(x_i)(1-\\sigma(x_i))=\\frac{\\partial \\mathcal{L}}{\\partial h_{i}}h_i(1-h_i)$$\n", "$$ \\nabla_{\\textbf{x}} \\mathcal{L} = \\nabla_{\\textbf{h}}\\mathcal{L} \\odot \\textbf{h} \\odot (\\textbf{1} - \\textbf{h}) $$\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Example Code (Torch/Lua)\n", "```lua\n", "require \"torch\"\n", "require \"nn\"\n", "\n", "dataX = torch.Tensor(1000, 3)\n", "dataY = torch.Tensor(1000):random(2)\n", "-- network construction\n", "-- 3 -> 4 -> 3 -> 2\n", "model = nn.Sequential()\n", "model:add(nn.Linear(3,4))\n", "model:add(nn.Sigmoid())\n", "model:add(nn.Linear(4,3))\n", "model:add(nn.Sigmoid())\n", "model:add(nn.Linear(3,2))\n", "model:add(nn.LogSoftMax())\n", "-- loss function (cross entropy)\n", "criterion = nn.ClassNLLCriterion() \n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "```lua\n", "for iter=1,10000 do\n", " -- sample an example from a dataset\n", " idx = torch.random(1000)\n", " x = dataX[idx]\n", " y = dataY[idx]\n", " -- forward propagation\n", " y_pred = model:forward(x)\n", " loss = criterion:forward(y_pred, y)\n", " -- backward propagation\n", " model:zeroGradParameters() -- dL/dW = 0\n", " -- compute dL/dy\n", " dL_dy = criterion:backward(y_pred, y) \n", " -- compute gradient w.r.t. weights\n", " model:backward(x, dL_dy) \n", " -- SGD update with learning rate of 0.001\n", " model:updateParameters(0.001) \n", "end\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### FAQ: Does a neural network have to be always layer-structured?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- No. It can be any directed acyclic graph (DAG).\n", "- Example of a complex neural network\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### FAQ: Can we define any arbitrary layers?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- We can define any layer as long as it is differentiable.\n", "- Example) Addition layer\n", " - Forward: $\\textbf{h} = \\textbf{x}_1 + \\textbf{x}_2$\n", " - Backward\n", " - $\\nabla_{\\textbf{x}_1}\\mathcal{L} = \\nabla_{\\textbf{h}}\\mathcal{L}\\nabla_{\\textbf{x}_1}\\textbf{h}=\\nabla_{\\textbf{h}}\\mathcal{L}$\n", " - $\\nabla_{\\textbf{x}_2}\\mathcal{L} = \\nabla_{\\textbf{h}}\\mathcal{L}\\nabla_{\\textbf{x}_2}\\textbf{h}=\\nabla_{\\textbf{h}}\\mathcal{L}$\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### FAQ: How to handle shared weights?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- To constrain $W_1=W_2=W$, we need $\\Delta W_1 = \\Delta W_2$.\n", "- Compute $\\nabla_{W_1}\\mathcal{L}$ and $\\nabla_{W_2}\\mathcal{L}$ separately.\n", "- Use $\\nabla_{W}\\mathcal{L}=\\nabla_{W_1}\\mathcal{L}+\\nabla_{W_2}\\mathcal{L}$ to update the shared weight.\n", "- In practice, we accumulate gradients to the shared memory space for $\\nabla_{W}\\mathcal{L}$ during back-propagation.\n", "- Weight sharing is used in *convolutional neural networks* and *recurrent neural networks*.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- Basics of Neural Networks\n", " - Forward Propagation\n", " - Backward Propagation\n", "- **Deep Neural Networks**\n", " - Convolutional Neural Networks\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### What is \"deep\" neural network?\n", "- A neural network is considered to be **deep** if it has more than two (non-linear) hidden layers..\n", "- Higher layers extract more abstract and hierarchical features.\n", " - In a classification network, features become more *linearly separable* as layer goes up\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### What is \"deep\" neural network?\n", "- Difficulties in training deep neural networks\n", " - Easily overfit (The number of parameters is large)\n", " - Hard to optimize (highly non-convex optimization)\n", " - Computationally expensive (many matrix multiplications)\n", "- Recent Advances\n", " - Large-scale dataset (e.g., 1M images in ImageNet)\n", " - Better regularization (e.g., Dropout)\n", " - Better optimization (e.g., RMSProp, ReLU) \n", " - Better hardware (GPU for matrix computation)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Popular Deep Architectures\n", "- Convolutional Neural Network (CNN)\n", " - Widely used for image modeling\n", " - ex) object recognition, segmentation, vision-based reinforcement learning problems\n", "- Recurrent Neural Network (RNN)\n", " - Widely used for sequential data modeling\n", " - ex) machine translation, image caption generation" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Outline\n", "\n", "- Motivation\n", "- Basics of Neural Networks\n", " - Forward Propagation\n", " - Backward Propagation\n", "- Deep Neural Networks\n", " - **Convolutional Neural Networks**\n", " - Recurrent Neural Networks\n", "- Applications\n", " - Computer Vision\n", " - Natural Language Processing\n", " - Reinforcement Learning" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Convolutional Neural Network\n", "- A special kind of multi-layer neural network\n", "- Designed to recognize visual patterns directly from raw pixels" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Multi-layer Perceptron (MLP)\n", "- Consider 100x100 input pixels\n", "- 1 hidden layer with 10000 hidden units\n", "- **100M parameters** $\\rightarrow$ infeasible!\n", "$\\rightarrow$ Pixels are locally correlated!\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Locally-connected Neural Network\n", "- Consider 100x100 input pixels\n", "- Each unit is connected to 10x10 pixels.\n", "- Each unit extracts a local pattern from the image.\n", "- 10000 hidden units\n", "- **1M parameters** $\\rightarrow$ still too large\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Convolutional Neural Network (one filter)\n", "- Consider 100x100 input pixels\n", "- Apply the **same filter (weight)** over the entire image.\n", "- Hidden units form a 100x100 **feature map**.\n", "- 10x10 parameters.
\n", "$\\rightarrow$ **only captures a single local pattern.**\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Convolutional Neural Network (multiple filters)\n", "- 100x100 input pixels\n", "- Apply K number of 10x10 filters. \n", "- Hidden units form a Kx100x100 feature map.\n", "- Kx10x10 parameters.
\n", "- Num of filters and size of filters are hyperparameters.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Typical Deep CNN Architecture\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution: Convolutional Filtering\n", "- A filter has $\\textbf{W} \\in \\mathbb{R}^{h \\times w}$ weights (bias is omitted for simplicity).\n", "- Compute inner products between $\\textbf{W}$ and $h \\times w$ input patches by sliding window.\n", " - The same weight is shared across the entire image.\n", "- The following animation shows the simplest case: one-channel input, one filter\n", "\n", "(Figure from Stanford UFLDL Tutorial)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution: Convolutional Filtering\n", "- In general, an input consists of multiple channels.\n", " - Each filter has $\\textbf{W} \\in \\mathbb{R}^{c \\times h \\times w}$ weight ($c$: \\#channels of input).\n", "- Applying $K$ different filters $\\rightarrow$ produces a 3D feature map (stacked through channels).\n", "- Hyperparameters: num of filters, size of filters\n", "- The following figure shows the general case: multi-channel input, mutilple filters\n", "\n", "(Figure from Yann LeCun)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution: Non-linearity\n", "- Method: Just apply non-linear function (e.g., Sigmoid, ReLU)\n", "- ReLU is preferred because it is easier to optimize.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution: Pooling\n", "" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "slideshow": { "slide_type": "subslide" } }, "source": [ "### Details of Convolution: Pooling\n", "- Method: Take average or maximum over HxW region of input feature.\n", "- Outcome\n", " - Shrink the number of hidden units.$\\rightarrow$ reduces the number of parameters at the end.\n", " - Make features robust to small translations of image.\n", "- Hyperparameters: pooling method (avg or max), pooling size\n", "- Often called \"sub-sampling\"\n", "\n", "(Figure from Stanford UFLDL Tutorial)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Illustration of Deep CNN\n", "- Feature maps become smaller in higher layers due to pooling.\n", "- Hidden units in higher layers capture patterns from larger input patches.\n", "\n", "(Figure from Yann LeCun)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Example Code (Torch/Lua)\n", "```lua\n", "require \"torch\"\n", "require \"nn\"\n", "model = nn.Sequential()\n", "-- 1st convolution: 3 -> 64 (5x5 filters)\n", "model:add(nn.SpatialConvolution(3, 64, 5, 5))\n", "model:add(nn.ReLU())\n", "model:add(nn.SpatialMaxPooling(2,2,2,2)) -- 2x2 pooling\n", "-- 2nd convolution: 64 -> 128 (5x5 filters)\n", "model:add(nn.SpatialConvolution(64, 128, 5, 5))\n", "model:add(nn.ReLU())\n", "model:add(nn.SpatialMaxPooling(2,2,2,2))\n", "-- Reshape 3D map (128*5*5) to a long vector\n", "model:add(nn.View(-1):setNumInputDims(3)) \n", "-- 3rd linear: 128*5*5 -> 128 hidden units\n", "model:add(nn.Linear(128*5*5, 128))\n", "model:add(nn.ReLU())\n", "-- 4th linear: 128 -> 10 classes\n", "model:add(nn.Linear(128, 10))\n", "model:add(nn.LogSoftMax()))\n", "```" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### What is learned by CNN? Filter Visualization\n", "- Train a deep CNN on *ImageNet* (1.2M images, 1000 classes)\n", "- Perform forward propagations from many examples\n", "- Find image patches that strongly activate a specific feature map (filter)\n", "- Reconstruct the input patch from the feature map\n", "- Proposed by Zeiler and Fergus (ECCV 2014)\n", "\n", "(Figure from Yann LeCun)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Filter Visualization: 1st and 2nd Layer\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Filter Visualization: 3rd Layer\n", "- Shows more complex patterns\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Filter Visualization: 4th Layer\n", "- More class-specific\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Filter Visualization: 5th Layer\n", "- Shows entire objects with pose variations\n", "- Each filter can be viewed as a part detector. (e.g., dog face, text, animal leg)\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Comparison to Traditional Approach\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### ImageNet Challenge 2012\n", "- AlexNet (7 layers, Krizhevsky et al.) achieved 16.4% error.\n", "- The next best model (non-CNN) achieved 26.2% error.\n", "![](images/imagenet.jpg)\n", "![](images/alexnet.png)\n", "(Figure from Alex Krizhevsky et al.)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### ImageNet Challenge\n", "- ImageNet 2013: Clarifi (7 layers) $\\rightarrow$ 14.8% error" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- ImageNet 2014: GoogLeNet (22 layers) $\\rightarrow$ 4.9% error (Human: 5.1% error)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "- ImageNet 2015: ResNet (152 layers!) $\\rightarrow$ 3.5% error" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "skip" } }, "source": [ "### Feature Generalization: Dataset\n", "- Pre-train a CNN on a large-scale dataset (ImageNet) and **train only the final linear layer** on another dataset.\n", "- Achieves state-of-the-art results on small datasets (e.g., Caltech-101).\n", "- The learned features can generalize to any dataset.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Feature Generalization: Task\n", "- There is a large-scale dataset (ImageNet) for classification, but there are only small-scale datasets for other tasks (e.g., detection, segmentation).\n", "- Pre-train a CNN on a large-scale classification dataset.\n", "- Use the pre-trained CNN as \"feature extraction\" method for other tasks.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Feature Generalization: Task\n", "- Achieves state-of-the-art results on many other vision tasks.\n", " - ex) object detection, segmentation, depth map prediction, image caption generation\n", "- A CNN trained on a large-scale classification dataset learns a generic feature that can be used for many different vision tasks.\n", "" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "subslide" } }, "source": [ "### Summary of Convolutional Neural Network\n", "- Convolutional Neural Network: a special kind of neural network with local connectivity and weight sharing.\n", "- Achieves state-of-the-art performances on many different computer visoin tasks.\n", "- Higher layers extract high-level features (e.g., dog face).\n", "- Learned features can be generally used for other vision tasks." ] } ], "metadata": { "celltoolbar": "Slideshow", "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.11" } }, "nbformat": 4, "nbformat_minor": 0 }