From e6ed842d7b4224ce0d4bf4e9de006c2f4f203277 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Fri, 12 Oct 2018 05:44:26 +0200 Subject: [PATCH] added some discussion to neural nets --- doc/pub/NeuralNet/html/._NeuralNet-bs000.html | 27 +- doc/pub/NeuralNet/html/._NeuralNet-bs001.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs002.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs003.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs004.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs005.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs006.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs007.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs008.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs009.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs010.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs011.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs012.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs013.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs014.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs015.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs016.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs017.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs018.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs019.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs020.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs021.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs022.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs023.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs024.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs025.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs026.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs027.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs028.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs029.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs030.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs031.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs032.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs033.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs034.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs035.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs036.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs037.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs038.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs039.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs040.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs041.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs042.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs043.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs044.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs045.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs046.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs047.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs048.html | 25 +- doc/pub/NeuralNet/html/._NeuralNet-bs049.html | 26 +- doc/pub/NeuralNet/html/._NeuralNet-bs050.html | 27 +- doc/pub/NeuralNet/html/._NeuralNet-bs051.html | 28 +- doc/pub/NeuralNet/html/._NeuralNet-bs052.html | 29 +- doc/pub/NeuralNet/html/._NeuralNet-bs053.html | 30 +- doc/pub/NeuralNet/html/._NeuralNet-bs054.html | 29 +- doc/pub/NeuralNet/html/._NeuralNet-bs055.html | 29 +- doc/pub/NeuralNet/html/._NeuralNet-bs056.html | 378 +++++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs057.html | 398 ++++++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs058.html | 318 ++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs059.html | 318 ++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs060.html | 325 ++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs061.html | 324 ++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs062.html | 334 +++++++++++++++ doc/pub/NeuralNet/html/._NeuralNet-bs063.html | 317 ++++++++++++++ doc/pub/NeuralNet/html/NeuralNet-bs.html | 27 +- doc/pub/NeuralNet/html/NeuralNet-reveal.html | 171 +++++++- .../NeuralNet/html/NeuralNet-solarized.html | 182 +++++++- doc/pub/NeuralNet/html/NeuralNet.html | 182 +++++++- doc/pub/NeuralNet/ipynb/NeuralNet.ipynb | 287 +++++++++++-- .../ipynb/ipynb-NeuralNet-src.tar.gz | Bin 211 -> 210 bytes doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf | Bin 454206 -> 466987 bytes doc/src/NeuralNet/NeuralNet.do.txt | 148 +++++++ 72 files changed, 4975 insertions(+), 159 deletions(-) create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs056.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs057.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs058.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs059.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs060.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs061.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs062.html create mode 100644 doc/pub/NeuralNet/html/._NeuralNet-bs063.html diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html index ee113eab4..e3971cad4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs000.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs000.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -251,7 +272,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 11, 2018

    +

    Oct 12, 2018


    @@ -275,7 +296,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html index 0113fc9ec..54cd21351 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs001.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs001.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -260,7 +281,7 @@ a weight variable.
  • 10
  • 11
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html index 48cf6853c..9bcaea022 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs002.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs002.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -310,7 +331,7 @@ humanities to life science and medicine.
  • 11
  • 12
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html index 8109e9e72..4ed1e3131 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs003.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs003.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -275,7 +296,7 @@ methods we discussed earlier.
  • 12
  • 13
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html index 4275a6c52..f71e20e69 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs004.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs004.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -267,7 +288,7 @@ to all nodes in the subsequent layer, making this a so-called
  • 13
  • 14
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html index ae3f79e75..183d3814f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs005.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs005.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -276,7 +297,7 @@ recognition.
  • 14
  • 15
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html index 618e20d1d..3af21dbc7 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs006.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs006.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -268,7 +289,7 @@ especially well-suited for handwriting and speech recognition.
  • 15
  • 16
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html index ad2c6b0ca..3de076525 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs007.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs007.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -269,7 +290,7 @@ type of NN due the unusual activation functions.
  • 16
  • 17
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html index 152ef665d..67c9494d4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs008.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs008.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -267,7 +288,7 @@ Such networks are often called multilayer perceptrons (MLPs).
  • 17
  • 18
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html index 1723f993d..92c158ee4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs009.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs009.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -272,7 +293,7 @@ as to not restrict the range of output values.
  • 18
  • 19
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html index 007831280..6c356cc44 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs010.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs010.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -273,7 +294,7 @@ of the outputs of all neurons in the previous layer.
  • 19
  • 20
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html index 5007eb5ec..aa1667957 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs011.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs011.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -302,7 +323,7 @@ is obtained.
  • 20
  • 21
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html index 717c271c0..037a4eca5 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs012.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs012.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -284,7 +305,7 @@ $$
  • 21
  • 22
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html index fb155c533..9b6a78abc 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs013.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs013.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -275,7 +296,7 @@ variables are the input values \( x_n \).
  • 22
  • 23
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html index 41cec5323..7be0680d6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs014.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs014.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -284,7 +305,7 @@ flexibility of a neural network.
  • 23
  • 24
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html index 19cca773f..28b61905e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs015.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs015.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -294,7 +315,7 @@ $$
  • 24
  • 25
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html index 9ceff4f24..e01825146 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs016.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs016.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -278,7 +299,7 @@ used as input to the activation functions. For each operation
  • 25
  • 26
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html index 493c28d8e..d0ee040d6 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs017.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs017.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -272,7 +293,7 @@ for a FFNN to fulfill the universal approximation theorem
  • 26
  • 27
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html index 64b87d496..7d73e4600 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs018.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs018.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -280,7 +301,7 @@ $$
  • 27
  • 28
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html index 88e9db33c..0bea91398 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs019.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs019.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -342,7 +363,7 @@ plt.show()
  • 28
  • 29
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html index a5e9499ff..a1714bf72 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs020.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs020.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -293,7 +314,7 @@ like logistic regression or linear regression and their modifications on the oth
  • 29
  • 30
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html index 7e1a07580..0fe5f24de 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs021.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs021.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -283,7 +304,7 @@ the potential of being universal approximators.
  • 30
  • 31
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html index 15f79a975..3d052b9eb 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs022.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs022.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -289,7 +310,7 @@ classes.
  • 31
  • 32
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html index c9ca3292f..d866cefe0 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs023.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs023.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -293,7 +314,7 @@ $$
  • 32
  • 33
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html index fc599a701..345fb6270 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs024.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs024.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -277,7 +298,7 @@ $$
  • 33
  • 34
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html index 13480d22e..e7175d481 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs025.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs025.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -280,7 +301,7 @@ $$
  • 34
  • 35
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html index 02eb0a00e..703180894 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs026.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs026.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -305,7 +326,7 @@ $$
  • 35
  • 36
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html index 53cb30cc4..8c0d23e2d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs027.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs027.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -272,7 +293,7 @@ That is, the error \( \delta_j^L \) is exactly equal to the rate of change of th
  • 36
  • 37
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html index 34d65708c..cb6c8133f 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs028.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs028.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -317,7 +338,7 @@ one \( L-1 \) in terms of the errors in the final output layer.
  • 37
  • 38
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html index f44871b3e..841bd0bd5 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs029.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs029.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -287,7 +308,7 @@ We are now ready to set up the algorithm for back propagation and learning the w
  • 38
  • 39
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html index c09ae7c92..520ffdf16 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs030.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs030.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -331,7 +352,7 @@ Here it is convenient to use stochastic gradient descent (see the examples below
  • 39
  • 40
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html index 5b1d95140..65c9b4686 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs031.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs031.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -293,7 +314,7 @@ of our network.
  • 40
  • 41
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html index 45d219b4b..792c3e430 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs032.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs032.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -316,7 +337,7 @@ We leave it as an exercise in project 2 to derive these equations.
  • 41
  • 42
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html index c9bd334af..a71e6cd84 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs033.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs033.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -271,7 +292,7 @@ One can identify a set of key steps when using neural networks to solve supervis
  • 42
  • 43
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html index 1fdc78a32..37dbc6a56 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs034.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs034.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -350,7 +371,7 @@ plt.show()
  • 43
  • 44
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html index 99e47fef1..58cbb1712 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs035.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs035.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -304,7 +325,7 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 44
  • 45
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html index adc8ff844..3d5fec962 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs036.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs036.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -301,7 +322,7 @@ which is inspired by probability theory (see logistic regression) and was most c
  • 45
  • 46
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html index 56e4c61dd..815f47594 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs037.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs037.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -300,7 +321,7 @@ weights to the output layer.
  • 46
  • 47
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html index 6ef35e922..499facaf5 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs038.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs038.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -291,7 +312,7 @@ output_bias = np47
  • 48
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html index 5b4706819..c5fc1e55a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs039.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs039.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -282,7 +303,7 @@ $$ a_{j}^{L} = \frac{\exp{(z_j^{L})}}
  • 48
  • 49
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html index 254508079..079fbbb01 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs040.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs040.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -330,7 +351,7 @@ predictions = predict(X_train)
  • 49
  • 50
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html index fd147e55d..728bc868a 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs041.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs041.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -286,7 +307,7 @@ you got the correct label. The probability of category \( c \) is given by the s
  • 50
  • 51
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html index bb879f394..c57b99214 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs042.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs042.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -292,7 +313,7 @@ This has two important benefits:
  • 51
  • 52
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html index a8de36e3c..e252abadf 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs043.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs043.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -288,7 +309,7 @@ calculate the gradient efficently.
  • 52
  • 53
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html index 5380c1bef..c9412a9bc 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs044.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs044.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -372,7 +393,7 @@ lmbd = 0.0153
  • 54
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html index 155b38b10..6e6490f28 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs045.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs045.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -275,7 +296,7 @@ Andrew Ng goes through some of these considerations in this 54
  • 55
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html index 87516a8a7..1edef29c4 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs046.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs046.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -368,7 +389,7 @@ being realizations of this object with different hyperparameters. An implementat
  • 55
  • 56
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html index 32e988bf5..d18667bac 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs047.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs047.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -290,7 +311,7 @@ test_predict = dnn56
  • 57
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html index 739836c6f..5f716c042 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs048.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs048.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -287,6 +308,8 @@ DNN_numpy = np.
  • 56
  • 57
  • 58
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html index c0879357d..ad242d3bb 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs049.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs049.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -295,6 +316,9 @@ plt.show()
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html index a5c652ed5..b7c8ff88d 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs050.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs050.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -291,6 +312,10 @@ DNN_scikit = np
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs051.html b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html index 0365dbe77..2cc0b8b79 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs051.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs051.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -293,6 +314,11 @@ plt.show()
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • 61
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs052.html b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html index 9d8522d76..258d88c7e 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs052.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs052.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -265,6 +286,12 @@ NumPy arrays.
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • 61
  • +
  • 62
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs053.html b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html index cad7d9b68..b7a2ad902 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs053.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs053.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -294,6 +315,13 @@ and/or if you use anaconda, just write (or install from the graphical use
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • 61
  • +
  • 62
  • +
  • 63
  • +
  • ...
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs054.html b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html index 0694be594..8eb8c1e41 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs054.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs054.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -314,6 +335,12 @@ X_train, X_test, Y_train, Y_test = train_tes
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • 61
  • +
  • 62
  • +
  • 63
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs055.html b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html index bfbfa9d9a..4433ef781 100644 --- a/doc/pub/NeuralNet/html/._NeuralNet-bs055.html +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs055.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -392,6 +413,12 @@ MathJax.Hub.Config({
  • 56
  • 57
  • 58
  • +
  • 59
  • +
  • 60
  • +
  • 61
  • +
  • 62
  • +
  • 63
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs056.html b/doc/pub/NeuralNet/html/._NeuralNet-bs056.html new file mode 100644 index 000000000..5bd2150b5 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs056.html @@ -0,0 +1,378 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Optimizing and using gradient descent

    + +

    + + +

    epochs = 100
    +batch_size = 100
    +n_neurons_layer1 = 100
    +n_neurons_layer2 = 50
    +n_categories = 10
    +eta_vals = np.logspace(-5, 1, 7)
    +lmbd_vals = np.logspace(-5, 1, 7)
    +
    +

    + + +

    DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = NeuralNetworkTensorflow(X_train, Y_train, X_test, Y_test,
    +                                      n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                      epochs=epochs, batch_size=batch_size, eta=eta, lmbd=lmbd)
    +        DNN.fit()
    +        
    +        DNN_tf[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % DNN.test_accuracy)
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_tf[i][j]
    +
    +        train_accuracy[i][j] = DNN.train_accuracy
    +        test_accuracy[i][j] = DNN.test_accuracy
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    + + +

    # optional
    +# we can use log files to visualize our graph in Tensorboard
    +writer = tf.summary.FileWriter('logs/')
    +writer.add_graph(tf.get_default_graph())
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs057.html b/doc/pub/NeuralNet/html/._NeuralNet-bs057.html new file mode 100644 index 000000000..3eac3d8b1 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs057.html @@ -0,0 +1,398 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Using Keras

    + +

    +Keras is a high level neural network +that supports Tensorflow, CTNK and Theano as backends. +If you have Tensorflow installed Keras is available through the tf.keras module. +If you have Anaconda installed you may run the following command +

    + + +

    conda install keras
    +
    +

    +Alternatively, if you have Tensorflow or one of the other supported backends install you may use the pip package manager: + +

    + + +

    pip3 install keras
    +
    +

    +or look up the instructions here. + +

    + + +

    from keras.models import Sequential
    +from keras.layers import Dense
    +from keras.regularizers import l2
    +from keras.optimizers import SGD
    +
    +def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):
    +    model = Sequential()
    +    model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=l2(lmbd)))
    +    model.add(Dense(n_categories, activation='softmax'))
    +    
    +    sgd = SGD(lr=eta)
    +    model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
    +    
    +    return model
    +
    +

    + + +

    DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)
    +        
    +for i, eta in enumerate(eta_vals):
    +    for j, lmbd in enumerate(lmbd_vals):
    +        DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,
    +                                         eta=eta, lmbd=lmbd)
    +        DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)
    +        scores = DNN.evaluate(X_test, Y_test)
    +        
    +        DNN_keras[i][j] = DNN
    +        
    +        print("Learning rate = ", eta)
    +        print("Lambda = ", lmbd)
    +        print("Test accuracy: %.3f" % scores[1])
    +        print()
    +
    +

    + + +

    # optional
    +# visual representation of grid search
    +# uses seaborn heatmap, could probably do this in matplotlib
    +import seaborn as sns
    +
    +sns.set()
    +
    +train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))
    +
    +for i in range(len(eta_vals)):
    +    for j in range(len(lmbd_vals)):
    +        DNN = DNN_keras[i][j]
    +
    +        train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]
    +        test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]
    +
    +        
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(train_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Training Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +fig, ax = plt.subplots(figsize = (10, 10))
    +sns.heatmap(test_accuracy, annot=True, ax=ax, cmap="viridis")
    +ax.set_title("Test Accuracy")
    +ax.set_ylabel("$\eta$")
    +ax.set_xlabel("$\lambda$")
    +plt.show()
    +
    +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs058.html b/doc/pub/NeuralNet/html/._NeuralNet-bs058.html new file mode 100644 index 000000000..dbe3a0dca --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs058.html @@ -0,0 +1,318 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Which activation function should I use?

    + +

    +Backpropagation algorithm works by going from the output layer to the +input layer, propagating the error gradient on the way. Once the algorithm has computed the gradient of the +cost function with regards to each parameter in the network, it uses these gradients to update each +parameter with a Gradient Descent step. + +

    +Unfortunately, gradients often get smaller and smaller as the algorithm progresses down to the lower +layers. As a result, the Gradient Descent update leaves the lower layer connection weights virtually +unchanged, and training never converges to a good solution. This is called the vanishing gradients +problem. In some cases, the opposite can happen: the gradients can grow bigger and bigger, so many +layers get insanely large weight updates and the algorithm diverges. This is the exploding gradients +problem, which is mostly encountered in recurrent neural networks. More generally, +deep neural networks suffer from unstable gradients, different layers may learn at widely different speeds + +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs059.html b/doc/pub/NeuralNet/html/._NeuralNet-bs059.html new file mode 100644 index 000000000..d6cd63cd1 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs059.html @@ -0,0 +1,318 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Is the Logistic activation function (Sigmoid) our choice?

    + +

    +Although this unfortunate behavior has been empirically observed for quite a while (it was one of the +reasons why deep neural networks were mostly abandoned for a long time), it is only around 2010 that +significant progress was made in understanding it. + +

    +A paper titled Understanding the Difficulty of Training Deep Feedforward Neural Networks by Xavier Glorot and Yoshua Bengio1 found a few suspects, +including the combination of the popular logistic sigmoid activation function and the weight initialization +technique that was most popular at the time, namely random initialization using a normal distribution with +a mean of 0 and a standard deviation of 1. In short, they showed that with this activation function and this +initialization scheme, the variance of the outputs of each layer is much greater than the variance of its +inputs. Going forward in the network, the variance keeps increasing after each layer until the activation +function saturates at the top layers. This is actually made worse by the fact that the logistic function has a +mean of 0.5, not 0 (the hyperbolic tangent function has a mean of 0 and behaves slightly better than the +logistic function in deep networks). + +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs060.html b/doc/pub/NeuralNet/html/._NeuralNet-bs060.html new file mode 100644 index 000000000..5b69507e2 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs060.html @@ -0,0 +1,325 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    The derivative of the Logistic funtion

    + +

    +Looking at the logistic activation function, when inputs become large +(negative or positive), the function saturates at 0 or 1, with a derivative extremely close to 0. Thus when +backpropagation kicks in, it has virtually no gradient to propagate back through the network, and what +little gradient exists keeps getting diluted as backpropagation progresses down through the top layers, so +there is really nothing left for the lower layers. + +

    +In their paper, Glorot and Bengio propose a way to significantly alleviate this problem. We need the +signal to flow properly in both directions: in the forward direction when making predictions, and in the +reverse direction when backpropagating gradients. We don’t want the signal to die out, nor do we want it +to explode and saturate. For the signal to flow properly, the authors argue that we need the variance of the +outputs of each layer to be equal to the variance of its inputs, and we also need the gradients to have +equal variance before and after flowing through a layer in the reverse direction (please check out the +paper if you are interested in the mathematical details). + +

    +One of the insights in the 2010 paper by Glorot and Bengio was that the vanishing/exploding gradients +problems were in part due to a poor choice of activation function. Until then most people had assumed +that if Nature had chosen to use roughly sigmoid activation functions in biological neurons, they +must be an excellent choice. But it turns out that other activation functions behave much better in deep +neural networks, in particular the ReLU activation function, mostly because it does not saturate for +positive values (and also because it is quite fast to compute). + +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs061.html b/doc/pub/NeuralNet/html/._NeuralNet-bs061.html new file mode 100644 index 000000000..612846b95 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs061.html @@ -0,0 +1,324 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    The RELU function family

    + +

    +The ReLU activation function suffers from a problem known as the dying +ReLUs: during training, some neurons effectively die, meaning they stop outputting anything other than 0. + +

    +In some cases, you may find that half of your network’s neurons are dead, especially if you used a large +learning rate. During training, if a neuron’s weights get updated such that the weighted sum of the neuron’s +inputs is negative, it will start outputting 0. When this happen, the neuron is unlikely to come back to life +since the gradient of the ReLU function is 0 when its input is negative. + +

    +To solve this problem, you may want to use a variant of the ReLU function, such as the leaky ReLU discussed before or the so-called exponential linear unit (ELU) function +$$ +ELU(z) = \left\{\begin{array}{cc} \alpha\left( \exp{(z)}-1\right) & z > 0,\\ z & z \le 0.\end{array}\right. +$$ + +

    +So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary, +in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than \( \tanh \) which in turn performs better than the logistic function. If you care a lot about runtime performance, then you +may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default \( \alpha \) of +\( 0.01 \) for the leaky ReLU, and \( 1 \) for ELU. If you have spare time and computing power, you can use +cross-validation or bootstrap to evaluate other activation functions. +huge training set. + +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs062.html b/doc/pub/NeuralNet/html/._NeuralNet-bs062.html new file mode 100644 index 000000000..273c0a6d2 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs062.html @@ -0,0 +1,334 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    A top-down perspective on Neural networks

    + +

    +The first thing we would like to do is divide the data into two or three +parts. A training set, a validation or dev (development) set, and a +test set. The test set is the data on which we want to make +predictions. The dev set is a subset of the training data we use to +check how well we are doing out-of-sample, after training the model on +the training dataset. We use the validation error as a proxy for the +test error in order to make tweaks to our model. It is crucial that we +do not use any of the test data to train the algorithm. This is a +cardinal sin in ML. Then: + +

      +
    • Estimate optimal error rate
    • +
    • Minimize underfitting (bias) on training data set.
    • +
    • Make sure you are not overfitting.
    • +
    + +If the validation and test sets are drawn from the same distributions, +then good performance on the validation set should lead to similarly +good performance on the test set. +However, sometimes +the training data and test data differ in subtle ways because, for +example, they are collected using slightly different methods, or +because it is cheaper to collect data in one way versus another. In +this case, there can be a mismatch between the training and test +data. This can lead to the neural network overfitting these small +differences between the test and training sets, and a poor performance +on the test set despite having a good performance on the validation +set. To rectify this, Andrew Ng suggests making two validation or dev +sets, one constructed from the training data and one constructed from +the test data. The difference between the performance of the algorithm +on these two validation sets quantifies the train-test mismatch. This +can serve as another important diagnostic when using DNNs for +supervised learning. + +

    +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/._NeuralNet-bs063.html b/doc/pub/NeuralNet/html/._NeuralNet-bs063.html new file mode 100644 index 000000000..28faaa4b6 --- /dev/null +++ b/doc/pub/NeuralNet/html/._NeuralNet-bs063.html @@ -0,0 +1,317 @@ + + + + + + + +Data Analysis and Machine Learning: Neural networks, from the simple perceptron to deep learning + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +

     

     

     

    + + + + +

    Limitations of supervised learning with deep networks

    + +

    +Like all statistical methods, supervised learning using neural +networks has important limitations. This is especially important when +one seeks to apply these methods, especially to physics problems. Like +all tools, DNNs are not a universal solution. Often, the same or +better performance on a task can be achieved by using a few +hand-engineered features (or even a collection of random +features). + +

    +Here we list some of the important limitations of supervised neural network based models. + +

      +
    • Need labeled data. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).
    • +
    • Supervised neural networks are extremely data intensive. DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs.
    • +
    • Homogeneous data. Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types.
    • +
    • Many problems are not about prediction. In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a wrong model. The model might or might not be useful for understanding the underlying science.
    • +
    + +Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems. + +

    + +

    + + +
    + + + + + + + +
    + +
    + + + + + + diff --git a/doc/pub/NeuralNet/html/NeuralNet-bs.html b/doc/pub/NeuralNet/html/NeuralNet-bs.html index ee113eab4..e3971cad4 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-bs.html +++ b/doc/pub/NeuralNet/html/NeuralNet-bs.html @@ -122,7 +122,22 @@ Automatically generated HTML file from DocOnce source ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -217,6 +232,12 @@ MathJax.Hub.Config({
  • Using TensorFlow backend
  • Optimizing and using gradient descent
  • Using Keras
  • +
  • Which activation function should I use?
  • +
  • Is the Logistic activation function (Sigmoid) our choice?
  • +
  • The derivative of the Logistic funtion
  • +
  • The RELU function family
  • +
  • A top-down perspective on Neural networks
  • +
  • Limitations of supervised learning with deep networks
  • @@ -251,7 +272,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 11, 2018

    +

    Oct 12, 2018


    @@ -275,7 +296,7 @@ MathJax.Hub.Config({

  • 9
  • 10
  • ...
  • -
  • 58
  • +
  • 64
  • »
  • diff --git a/doc/pub/NeuralNet/html/NeuralNet-reveal.html b/doc/pub/NeuralNet/html/NeuralNet-reveal.html index 27d0198a1..8fc3067d1 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-reveal.html +++ b/doc/pub/NeuralNet/html/NeuralNet-reveal.html @@ -148,7 +148,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

     
    -

    Oct 11, 2018

    +

    Oct 12, 2018


    @@ -2786,6 +2786,175 @@ plt.show() +

    +

    Which activation function should I use?

    + +

    +Backpropagation algorithm works by going from the output layer to the +input layer, propagating the error gradient on the way. Once the algorithm has computed the gradient of the +cost function with regards to each parameter in the network, it uses these gradients to update each +parameter with a Gradient Descent step. + +

    +Unfortunately, gradients often get smaller and smaller as the algorithm progresses down to the lower +layers. As a result, the Gradient Descent update leaves the lower layer connection weights virtually +unchanged, and training never converges to a good solution. This is called the vanishing gradients +problem. In some cases, the opposite can happen: the gradients can grow bigger and bigger, so many +layers get insanely large weight updates and the algorithm diverges. This is the exploding gradients +problem, which is mostly encountered in recurrent neural networks. More generally, +deep neural networks suffer from unstable gradients, different layers may learn at widely different speeds +

    + + +
    +

    Is the Logistic activation function (Sigmoid) our choice?

    + +

    +Although this unfortunate behavior has been empirically observed for quite a while (it was one of the +reasons why deep neural networks were mostly abandoned for a long time), it is only around 2010 that +significant progress was made in understanding it. + +

    +A paper titled Understanding the Difficulty of Training Deep Feedforward Neural Networks by Xavier Glorot and Yoshua Bengio1 found a few suspects, +including the combination of the popular logistic sigmoid activation function and the weight initialization +technique that was most popular at the time, namely random initialization using a normal distribution with +a mean of 0 and a standard deviation of 1. In short, they showed that with this activation function and this +initialization scheme, the variance of the outputs of each layer is much greater than the variance of its +inputs. Going forward in the network, the variance keeps increasing after each layer until the activation +function saturates at the top layers. This is actually made worse by the fact that the logistic function has a +mean of 0.5, not 0 (the hyperbolic tangent function has a mean of 0 and behaves slightly better than the +logistic function in deep networks). +

    + + +
    +

    The derivative of the Logistic funtion

    + +

    +Looking at the logistic activation function, when inputs become large +(negative or positive), the function saturates at 0 or 1, with a derivative extremely close to 0. Thus when +backpropagation kicks in, it has virtually no gradient to propagate back through the network, and what +little gradient exists keeps getting diluted as backpropagation progresses down through the top layers, so +there is really nothing left for the lower layers. + +

    +In their paper, Glorot and Bengio propose a way to significantly alleviate this problem. We need the +signal to flow properly in both directions: in the forward direction when making predictions, and in the +reverse direction when backpropagating gradients. We don’t want the signal to die out, nor do we want it +to explode and saturate. For the signal to flow properly, the authors argue that we need the variance of the +outputs of each layer to be equal to the variance of its inputs, and we also need the gradients to have +equal variance before and after flowing through a layer in the reverse direction (please check out the +paper if you are interested in the mathematical details). + +

    +One of the insights in the 2010 paper by Glorot and Bengio was that the vanishing/exploding gradients +problems were in part due to a poor choice of activation function. Until then most people had assumed +that if Nature had chosen to use roughly sigmoid activation functions in biological neurons, they +must be an excellent choice. But it turns out that other activation functions behave much better in deep +neural networks, in particular the ReLU activation function, mostly because it does not saturate for +positive values (and also because it is quite fast to compute). +

    + + +
    +

    The RELU function family

    + +

    +The ReLU activation function suffers from a problem known as the dying +ReLUs: during training, some neurons effectively die, meaning they stop outputting anything other than 0. + +

    +In some cases, you may find that half of your network’s neurons are dead, especially if you used a large +learning rate. During training, if a neuron’s weights get updated such that the weighted sum of the neuron’s +inputs is negative, it will start outputting 0. When this happen, the neuron is unlikely to come back to life +since the gradient of the ReLU function is 0 when its input is negative. + +

    +To solve this problem, you may want to use a variant of the ReLU function, such as the leaky ReLU discussed before or the so-called exponential linear unit (ELU) function +

     
    +$$ +ELU(z) = \left\{\begin{array}{cc} \alpha\left( \exp{(z)}-1\right) & z > 0,\\ z & z \le 0.\end{array}\right. +$$ +

     
    + +

    +So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary, +in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than \( \tanh \) which in turn performs better than the logistic function. If you care a lot about runtime performance, then you +may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default \( \alpha \) of +\( 0.01 \) for the leaky ReLU, and \( 1 \) for ELU. If you have spare time and computing power, you can use +cross-validation or bootstrap to evaluate other activation functions. +huge training set. +

    + + +
    +

    A top-down perspective on Neural networks

    + +

    +The first thing we would like to do is divide the data into two or three +parts. A training set, a validation or dev (development) set, and a +test set. The test set is the data on which we want to make +predictions. The dev set is a subset of the training data we use to +check how well we are doing out-of-sample, after training the model on +the training dataset. We use the validation error as a proxy for the +test error in order to make tweaks to our model. It is crucial that we +do not use any of the test data to train the algorithm. This is a +cardinal sin in ML. Then: + +

      +

    • Estimate optimal error rate
    • +

    • Minimize underfitting (bias) on training data set.
    • +

    • Make sure you are not overfitting.
    • +
    +

    + +If the validation and test sets are drawn from the same distributions, +then good performance on the validation set should lead to similarly +good performance on the test set. +However, sometimes +the training data and test data differ in subtle ways because, for +example, they are collected using slightly different methods, or +because it is cheaper to collect data in one way versus another. In +this case, there can be a mismatch between the training and test +data. This can lead to the neural network overfitting these small +differences between the test and training sets, and a poor performance +on the test set despite having a good performance on the validation +set. To rectify this, Andrew Ng suggests making two validation or dev +sets, one constructed from the training data and one constructed from +the test data. The difference between the performance of the algorithm +on these two validation sets quantifies the train-test mismatch. This +can serve as another important diagnostic when using DNNs for +supervised learning. +

    + + +
    +

    Limitations of supervised learning with deep networks

    + +

    +Like all statistical methods, supervised learning using neural +networks has important limitations. This is especially important when +one seeks to apply these methods, especially to physics problems. Like +all tools, DNNs are not a universal solution. Often, the same or +better performance on a task can be achieved by using a few +hand-engineered features (or even a collection of random +features). + +

    +Here we list some of the important limitations of supervised neural network based models. + +

      +

    • Need labeled data. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).
    • +

    • Supervised neural networks are extremely data intensive. DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs.
    • +

    • Homogeneous data. Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types.
    • +

    • Many problems are not about prediction. In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a wrong model. The model might or might not be useful for understanding the underlying science.
    • +
    +

    + +Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems. +

    + + diff --git a/doc/pub/NeuralNet/html/NeuralNet-solarized.html b/doc/pub/NeuralNet/html/NeuralNet-solarized.html index 5ea59093e..4fe68b031 100644 --- a/doc/pub/NeuralNet/html/NeuralNet-solarized.html +++ b/doc/pub/NeuralNet/html/NeuralNet-solarized.html @@ -142,7 +142,22 @@ div { text-align: justify; text-justify: inter-word; } ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -184,7 +199,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 11, 2018

    +

    Oct 12, 2018












    @@ -2629,6 +2644,169 @@ ax.set_xlabel("$\lambda$") plt.show()

    + + +

    Which activation function should I use?

    + +

    +Backpropagation algorithm works by going from the output layer to the +input layer, propagating the error gradient on the way. Once the algorithm has computed the gradient of the +cost function with regards to each parameter in the network, it uses these gradients to update each +parameter with a Gradient Descent step. + +

    +Unfortunately, gradients often get smaller and smaller as the algorithm progresses down to the lower +layers. As a result, the Gradient Descent update leaves the lower layer connection weights virtually +unchanged, and training never converges to a good solution. This is called the vanishing gradients +problem. In some cases, the opposite can happen: the gradients can grow bigger and bigger, so many +layers get insanely large weight updates and the algorithm diverges. This is the exploding gradients +problem, which is mostly encountered in recurrent neural networks. More generally, +deep neural networks suffer from unstable gradients, different layers may learn at widely different speeds + +

    + + +

    Is the Logistic activation function (Sigmoid) our choice?

    + +

    +Although this unfortunate behavior has been empirically observed for quite a while (it was one of the +reasons why deep neural networks were mostly abandoned for a long time), it is only around 2010 that +significant progress was made in understanding it. + +

    +A paper titled Understanding the Difficulty of Training Deep Feedforward Neural Networks by Xavier Glorot and Yoshua Bengio1 found a few suspects, +including the combination of the popular logistic sigmoid activation function and the weight initialization +technique that was most popular at the time, namely random initialization using a normal distribution with +a mean of 0 and a standard deviation of 1. In short, they showed that with this activation function and this +initialization scheme, the variance of the outputs of each layer is much greater than the variance of its +inputs. Going forward in the network, the variance keeps increasing after each layer until the activation +function saturates at the top layers. This is actually made worse by the fact that the logistic function has a +mean of 0.5, not 0 (the hyperbolic tangent function has a mean of 0 and behaves slightly better than the +logistic function in deep networks). + +

    +









    + +

    The derivative of the Logistic funtion

    + +

    +Looking at the logistic activation function, when inputs become large +(negative or positive), the function saturates at 0 or 1, with a derivative extremely close to 0. Thus when +backpropagation kicks in, it has virtually no gradient to propagate back through the network, and what +little gradient exists keeps getting diluted as backpropagation progresses down through the top layers, so +there is really nothing left for the lower layers. + +

    +In their paper, Glorot and Bengio propose a way to significantly alleviate this problem. We need the +signal to flow properly in both directions: in the forward direction when making predictions, and in the +reverse direction when backpropagating gradients. We don’t want the signal to die out, nor do we want it +to explode and saturate. For the signal to flow properly, the authors argue that we need the variance of the +outputs of each layer to be equal to the variance of its inputs, and we also need the gradients to have +equal variance before and after flowing through a layer in the reverse direction (please check out the +paper if you are interested in the mathematical details). + +

    +One of the insights in the 2010 paper by Glorot and Bengio was that the vanishing/exploding gradients +problems were in part due to a poor choice of activation function. Until then most people had assumed +that if Nature had chosen to use roughly sigmoid activation functions in biological neurons, they +must be an excellent choice. But it turns out that other activation functions behave much better in deep +neural networks, in particular the ReLU activation function, mostly because it does not saturate for +positive values (and also because it is quite fast to compute). + +

    +









    + +

    The RELU function family

    + +

    +The ReLU activation function suffers from a problem known as the dying +ReLUs: during training, some neurons effectively die, meaning they stop outputting anything other than 0. + +

    +In some cases, you may find that half of your network’s neurons are dead, especially if you used a large +learning rate. During training, if a neuron’s weights get updated such that the weighted sum of the neuron’s +inputs is negative, it will start outputting 0. When this happen, the neuron is unlikely to come back to life +since the gradient of the ReLU function is 0 when its input is negative. + +

    +To solve this problem, you may want to use a variant of the ReLU function, such as the leaky ReLU discussed before or the so-called exponential linear unit (ELU) function +$$ +ELU(z) = \left\{\begin{array}{cc} \alpha\left( \exp{(z)}-1\right) & z > 0,\\ z & z \le 0.\end{array}\right. +$$ + +

    +So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary, +in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than \( \tanh \) which in turn performs better than the logistic function. If you care a lot about runtime performance, then you +may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default \( \alpha \) of +\( 0.01 \) for the leaky ReLU, and \( 1 \) for ELU. If you have spare time and computing power, you can use +cross-validation or bootstrap to evaluate other activation functions. +huge training set. + +

    + + +

    A top-down perspective on Neural networks

    + +

    +The first thing we would like to do is divide the data into two or three +parts. A training set, a validation or dev (development) set, and a +test set. The test set is the data on which we want to make +predictions. The dev set is a subset of the training data we use to +check how well we are doing out-of-sample, after training the model on +the training dataset. We use the validation error as a proxy for the +test error in order to make tweaks to our model. It is crucial that we +do not use any of the test data to train the algorithm. This is a +cardinal sin in ML. Then: + +

      +
    • Estimate optimal error rate
    • +
    • Minimize underfitting (bias) on training data set.
    • +
    • Make sure you are not overfitting.
    • +
    + +If the validation and test sets are drawn from the same distributions, +then good performance on the validation set should lead to similarly +good performance on the test set. +However, sometimes +the training data and test data differ in subtle ways because, for +example, they are collected using slightly different methods, or +because it is cheaper to collect data in one way versus another. In +this case, there can be a mismatch between the training and test +data. This can lead to the neural network overfitting these small +differences between the test and training sets, and a poor performance +on the test set despite having a good performance on the validation +set. To rectify this, Andrew Ng suggests making two validation or dev +sets, one constructed from the training data and one constructed from +the test data. The difference between the performance of the algorithm +on these two validation sets quantifies the train-test mismatch. This +can serve as another important diagnostic when using DNNs for +supervised learning. + +

    +









    + +

    Limitations of supervised learning with deep networks

    + +

    +Like all statistical methods, supervised learning using neural +networks has important limitations. This is especially important when +one seeks to apply these methods, especially to physics problems. Like +all tools, DNNs are not a universal solution. Often, the same or +better performance on a task can be achieved by using a few +hand-engineered features (or even a collection of random +features). + +

    +Here we list some of the important limitations of supervised neural network based models. + +

      +
    • Need labeled data. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).
    • +
    • Supervised neural networks are extremely data intensive. DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs.
    • +
    • Homogeneous data. Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types.
    • +
    • Many problems are not about prediction. In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a wrong model. The model might or might not be useful for understanding the underlying science.
    • +
    + +Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems. diff --git a/doc/pub/NeuralNet/html/NeuralNet.html b/doc/pub/NeuralNet/html/NeuralNet.html index 107fffcef..a7600b8c4 100644 --- a/doc/pub/NeuralNet/html/NeuralNet.html +++ b/doc/pub/NeuralNet/html/NeuralNet.html @@ -147,7 +147,22 @@ div { text-align: justify; text-justify: inter-word; } ('Collect and pre-process data', 2, None, '___sec53'), ('Using TensorFlow backend', 2, None, '___sec54'), ('Optimizing and using gradient descent', 2, None, '___sec55'), - ('Using Keras', 2, None, '___sec56')]} + ('Using Keras', 2, None, '___sec56'), + ('Which activation function should I use?', 2, None, '___sec57'), + ('Is the Logistic activation function (Sigmoid) our choice?', + 2, + None, + '___sec58'), + ('The derivative of the Logistic funtion', 2, None, '___sec59'), + ('The RELU function family', 2, None, '___sec60'), + ('A top-down perspective on Neural networks', + 2, + None, + '___sec61'), + ('Limitations of supervised learning with deep networks', + 2, + None, + '___sec62')]} end of tocinfo --> @@ -189,7 +204,7 @@ MathJax.Hub.Config({
    [2] Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University

    -

    Oct 11, 2018

    +

    Oct 12, 2018












    @@ -2634,6 +2649,169 @@ ax.set_xlabel(& plt.show()

    + + +

    Which activation function should I use?

    + +

    +Backpropagation algorithm works by going from the output layer to the +input layer, propagating the error gradient on the way. Once the algorithm has computed the gradient of the +cost function with regards to each parameter in the network, it uses these gradients to update each +parameter with a Gradient Descent step. + +

    +Unfortunately, gradients often get smaller and smaller as the algorithm progresses down to the lower +layers. As a result, the Gradient Descent update leaves the lower layer connection weights virtually +unchanged, and training never converges to a good solution. This is called the vanishing gradients +problem. In some cases, the opposite can happen: the gradients can grow bigger and bigger, so many +layers get insanely large weight updates and the algorithm diverges. This is the exploding gradients +problem, which is mostly encountered in recurrent neural networks. More generally, +deep neural networks suffer from unstable gradients, different layers may learn at widely different speeds + +

    + + +

    Is the Logistic activation function (Sigmoid) our choice?

    + +

    +Although this unfortunate behavior has been empirically observed for quite a while (it was one of the +reasons why deep neural networks were mostly abandoned for a long time), it is only around 2010 that +significant progress was made in understanding it. + +

    +A paper titled Understanding the Difficulty of Training Deep Feedforward Neural Networks by Xavier Glorot and Yoshua Bengio1 found a few suspects, +including the combination of the popular logistic sigmoid activation function and the weight initialization +technique that was most popular at the time, namely random initialization using a normal distribution with +a mean of 0 and a standard deviation of 1. In short, they showed that with this activation function and this +initialization scheme, the variance of the outputs of each layer is much greater than the variance of its +inputs. Going forward in the network, the variance keeps increasing after each layer until the activation +function saturates at the top layers. This is actually made worse by the fact that the logistic function has a +mean of 0.5, not 0 (the hyperbolic tangent function has a mean of 0 and behaves slightly better than the +logistic function in deep networks). + +

    +









    + +

    The derivative of the Logistic funtion

    + +

    +Looking at the logistic activation function, when inputs become large +(negative or positive), the function saturates at 0 or 1, with a derivative extremely close to 0. Thus when +backpropagation kicks in, it has virtually no gradient to propagate back through the network, and what +little gradient exists keeps getting diluted as backpropagation progresses down through the top layers, so +there is really nothing left for the lower layers. + +

    +In their paper, Glorot and Bengio propose a way to significantly alleviate this problem. We need the +signal to flow properly in both directions: in the forward direction when making predictions, and in the +reverse direction when backpropagating gradients. We don’t want the signal to die out, nor do we want it +to explode and saturate. For the signal to flow properly, the authors argue that we need the variance of the +outputs of each layer to be equal to the variance of its inputs, and we also need the gradients to have +equal variance before and after flowing through a layer in the reverse direction (please check out the +paper if you are interested in the mathematical details). + +

    +One of the insights in the 2010 paper by Glorot and Bengio was that the vanishing/exploding gradients +problems were in part due to a poor choice of activation function. Until then most people had assumed +that if Nature had chosen to use roughly sigmoid activation functions in biological neurons, they +must be an excellent choice. But it turns out that other activation functions behave much better in deep +neural networks, in particular the ReLU activation function, mostly because it does not saturate for +positive values (and also because it is quite fast to compute). + +

    +









    + +

    The RELU function family

    + +

    +The ReLU activation function suffers from a problem known as the dying +ReLUs: during training, some neurons effectively die, meaning they stop outputting anything other than 0. + +

    +In some cases, you may find that half of your network’s neurons are dead, especially if you used a large +learning rate. During training, if a neuron’s weights get updated such that the weighted sum of the neuron’s +inputs is negative, it will start outputting 0. When this happen, the neuron is unlikely to come back to life +since the gradient of the ReLU function is 0 when its input is negative. + +

    +To solve this problem, you may want to use a variant of the ReLU function, such as the leaky ReLU discussed before or the so-called exponential linear unit (ELU) function +$$ +ELU(z) = \left\{\begin{array}{cc} \alpha\left( \exp{(z)}-1\right) & z > 0,\\ z & z \le 0.\end{array}\right. +$$ + +

    +So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary, +in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than \( \tanh \) which in turn performs better than the logistic function. If you care a lot about runtime performance, then you +may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default \( \alpha \) of +\( 0.01 \) for the leaky ReLU, and \( 1 \) for ELU. If you have spare time and computing power, you can use +cross-validation or bootstrap to evaluate other activation functions. +huge training set. + +

    + + +

    A top-down perspective on Neural networks

    + +

    +The first thing we would like to do is divide the data into two or three +parts. A training set, a validation or dev (development) set, and a +test set. The test set is the data on which we want to make +predictions. The dev set is a subset of the training data we use to +check how well we are doing out-of-sample, after training the model on +the training dataset. We use the validation error as a proxy for the +test error in order to make tweaks to our model. It is crucial that we +do not use any of the test data to train the algorithm. This is a +cardinal sin in ML. Then: + +

      +
    • Estimate optimal error rate
    • +
    • Minimize underfitting (bias) on training data set.
    • +
    • Make sure you are not overfitting.
    • +
    + +If the validation and test sets are drawn from the same distributions, +then good performance on the validation set should lead to similarly +good performance on the test set. +However, sometimes +the training data and test data differ in subtle ways because, for +example, they are collected using slightly different methods, or +because it is cheaper to collect data in one way versus another. In +this case, there can be a mismatch between the training and test +data. This can lead to the neural network overfitting these small +differences between the test and training sets, and a poor performance +on the test set despite having a good performance on the validation +set. To rectify this, Andrew Ng suggests making two validation or dev +sets, one constructed from the training data and one constructed from +the test data. The difference between the performance of the algorithm +on these two validation sets quantifies the train-test mismatch. This +can serve as another important diagnostic when using DNNs for +supervised learning. + +

    +









    + +

    Limitations of supervised learning with deep networks

    + +

    +Like all statistical methods, supervised learning using neural +networks has important limitations. This is especially important when +one seeks to apply these methods, especially to physics problems. Like +all tools, DNNs are not a universal solution. Often, the same or +better performance on a task can be achieved by using a few +hand-engineered features (or even a collection of random +features). + +

    +Here we list some of the important limitations of supervised neural network based models. + +

      +
    • Need labeled data. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).
    • +
    • Supervised neural networks are extremely data intensive. DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs.
    • +
    • Homogeneous data. Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types.
    • +
    • Many problems are not about prediction. In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a wrong model. The model might or might not be useful for understanding the underlying science.
    • +
    + +Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems. diff --git a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb index d97039c78..d347caee3 100644 --- a/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb +++ b/doc/pub/NeuralNet/ipynb/NeuralNet.ipynb @@ -10,7 +10,7 @@ " \n", "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", "\n", - "Date: **Oct 11, 2018**\n", + "Date: **Oct 12, 2018**\n", "\n", "Copyright 1999-2018, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", "\n", @@ -597,7 +597,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "%matplotlib inline\n", @@ -1518,7 +1520,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# import necessary packages\n", @@ -1585,7 +1589,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", @@ -1707,7 +1713,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# building our neural network\n", @@ -1784,7 +1792,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# setup the feed-forward pass, subscript h = hidden layer\n", @@ -1947,7 +1957,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# to categorical turns our integer vector into a onehot representation\n", @@ -2049,7 +2061,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "class NeuralNetwork:\n", @@ -2172,7 +2186,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "epochs = 100\n", @@ -2206,7 +2222,9 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "eta_vals = np.logspace(-5, 1, 7)\n", @@ -2241,7 +2259,9 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# visual representation of grid search\n", @@ -2301,7 +2321,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "from sklearn.neural_network import MLPClassifier\n", @@ -2332,7 +2354,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# optional\n", @@ -2415,7 +2439,9 @@ { "cell_type": "code", "execution_count": 13, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "pip3 install tensorflow" @@ -2431,7 +2457,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "conda install tensorflow" @@ -2447,7 +2475,9 @@ { "cell_type": "code", "execution_count": 15, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# import necessary packages\n", @@ -2497,7 +2527,9 @@ { "cell_type": "code", "execution_count": 16, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "from keras.utils import to_categorical\n", @@ -2527,7 +2559,9 @@ { "cell_type": "code", "execution_count": 17, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "import tensorflow as tf\n", @@ -2673,7 +2707,9 @@ { "cell_type": "code", "execution_count": 18, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "epochs = 100\n", @@ -2688,7 +2724,9 @@ { "cell_type": "code", "execution_count": 19, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "DNN_tf = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)\n", @@ -2711,7 +2749,9 @@ { "cell_type": "code", "execution_count": 20, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# optional\n", @@ -2750,7 +2790,9 @@ { "cell_type": "code", "execution_count": 21, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# optional\n", @@ -2774,7 +2816,9 @@ { "cell_type": "code", "execution_count": 22, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "conda install keras" @@ -2790,7 +2834,9 @@ { "cell_type": "code", "execution_count": 23, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "pip3 install keras" @@ -2806,7 +2852,9 @@ { "cell_type": "code", "execution_count": 24, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "from keras.models import Sequential\n", @@ -2829,7 +2877,9 @@ { "cell_type": "code", "execution_count": 25, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)\n", @@ -2852,7 +2902,9 @@ { "cell_type": "code", "execution_count": 26, - "metadata": {}, + "metadata": { + "collapsed": false + }, "outputs": [], "source": [ "# optional\n", @@ -2887,27 +2939,170 @@ "ax.set_xlabel(\"$\\lambda$\")\n", "plt.show()" ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Which activation function should I use?\n", + "\n", + "Backpropagation algorithm works by going from the output layer to the\n", + "input layer, propagating the error gradient on the way. Once the algorithm has computed the gradient of the\n", + "cost function with regards to each parameter in the network, it uses these gradients to update each\n", + "parameter with a Gradient Descent step.\n", + "\n", + "Unfortunately, gradients often get smaller and smaller as the algorithm progresses down to the lower\n", + "layers. As a result, the Gradient Descent update leaves the lower layer connection weights virtually\n", + "unchanged, and training never converges to a good solution. This is called the vanishing gradients\n", + "problem. In some cases, the opposite can happen: the gradients can grow bigger and bigger, so many\n", + "layers get insanely large weight updates and the algorithm diverges. This is the exploding gradients\n", + "problem, which is mostly encountered in recurrent neural networks. More generally,\n", + "deep neural networks suffer from unstable gradients, different layers may learn at widely different speeds\n", + "\n", + "\n", + "## Is the Logistic activation function (Sigmoid) our choice?\n", + "\n", + "Although this unfortunate behavior has been empirically observed for quite a while (it was one of the\n", + "reasons why deep neural networks were mostly abandoned for a long time), it is only around 2010 that\n", + "significant progress was made in understanding it. \n", + "\n", + "A paper titled **Understanding the Difficulty of Training Deep Feedforward Neural Networks** by Xavier Glorot and Yoshua Bengio1 found a few suspects,\n", + "including the combination of the popular logistic sigmoid activation function and the weight initialization\n", + "technique that was most popular at the time, namely random initialization using a normal distribution with\n", + "a mean of 0 and a standard deviation of 1. In short, they showed that with this activation function and this\n", + "initialization scheme, the variance of the outputs of each layer is much greater than the variance of its\n", + "inputs. Going forward in the network, the variance keeps increasing after each layer until the activation\n", + "function saturates at the top layers. This is actually made worse by the fact that the logistic function has a\n", + "mean of 0.5, not 0 (the hyperbolic tangent function has a mean of 0 and behaves slightly better than the\n", + "logistic function in deep networks).\n", + "\n", + "\n", + "## The derivative of the Logistic funtion\n", + "\n", + "Looking at the logistic activation function, when inputs become large\n", + "(negative or positive), the function saturates at 0 or 1, with a derivative extremely close to 0. Thus when\n", + "backpropagation kicks in, it has virtually no gradient to propagate back through the network, and what\n", + "little gradient exists keeps getting diluted as backpropagation progresses down through the top layers, so\n", + "there is really nothing left for the lower layers.\n", + "\n", + "In their paper, Glorot and Bengio propose a way to significantly alleviate this problem. We need the\n", + "signal to flow properly in both directions: in the forward direction when making predictions, and in the\n", + "reverse direction when backpropagating gradients. We don’t want the signal to die out, nor do we want it\n", + "to explode and saturate. For the signal to flow properly, the authors argue that we need the variance of the\n", + "outputs of each layer to be equal to the variance of its inputs, and we also need the gradients to have\n", + "equal variance before and after flowing through a layer in the reverse direction (please check out the\n", + "paper if you are interested in the mathematical details). \n", + "\n", + "\n", + "One of the insights in the 2010 paper by Glorot and Bengio was that the vanishing/exploding gradients\n", + "problems were in part due to a poor choice of activation function. Until then most people had assumed\n", + "that if Nature had chosen to use roughly sigmoid activation functions in biological neurons, they\n", + "must be an excellent choice. But it turns out that other activation functions behave much better in deep\n", + "neural networks, in particular the ReLU activation function, mostly because it does not saturate for\n", + "positive values (and also because it is quite fast to compute).\n", + "\n", + "\n", + "## The RELU function family\n", + "\n", + "The ReLU activation function suffers from a problem known as the dying\n", + "ReLUs: during training, some neurons effectively die, meaning they stop outputting anything other than 0.\n", + "\n", + "In some cases, you may find that half of your network’s neurons are dead, especially if you used a large\n", + "learning rate. During training, if a neuron’s weights get updated such that the weighted sum of the neuron’s\n", + "inputs is negative, it will start outputting 0. When this happen, the neuron is unlikely to come back to life\n", + "since the gradient of the ReLU function is 0 when its input is negative.\n", + "\n", + "To solve this problem, you may want to use a variant of the ReLU function, such as the leaky ReLU discussed before or the so-called exponential linear unit (ELU) function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "ELU(z) = \\left\\{\\begin{array}{cc} \\alpha\\left( \\exp{(z)}-1\\right) & z > 0,\\\\ z & z \\le 0.\\end{array}\\right.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary,\n", + "in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than $\\tanh$ which in turn performs better than the logistic function. If you care a lot about runtime performance, then you\n", + "may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default $\\alpha$ of\n", + "$0.01$ for the leaky ReLU, and $1$ for ELU. If you have spare time and computing power, you can use\n", + "cross-validation or bootstrap to evaluate other activation functions.\n", + "huge training set.\n", + "\n", + "\n", + "\n", + "## A top-down perspective on Neural networks\n", + "\n", + "\n", + "The first thing we would like to do is divide the data into two or three\n", + "parts. A training set, a validation or dev (development) set, and a\n", + "test set. The test set is the data on which we want to make\n", + "predictions. The dev set is a subset of the training data we use to\n", + "check how well we are doing out-of-sample, after training the model on\n", + "the training dataset. We use the validation error as a proxy for the\n", + "test error in order to make tweaks to our model. It is crucial that we\n", + "do not use any of the test data to train the algorithm. This is a\n", + "cardinal sin in ML. Then:\n", + "\n", + "\n", + "* Estimate optimal error rate\n", + "\n", + "* Minimize underfitting (bias) on training data set.\n", + "\n", + "* Make sure you are not overfitting.\n", + "\n", + "If the validation and test sets are drawn from the same distributions,\n", + "then good performance on the validation set should lead to similarly\n", + "good performance on the test set. \n", + "However, sometimes\n", + "the training data and test data differ in subtle ways because, for\n", + "example, they are collected using slightly different methods, or\n", + "because it is cheaper to collect data in one way versus another. In\n", + "this case, there can be a mismatch between the training and test\n", + "data. This can lead to the neural network overfitting these small\n", + "differences between the test and training sets, and a poor performance\n", + "on the test set despite having a good performance on the validation\n", + "set. To rectify this, Andrew Ng suggests making two validation or dev\n", + "sets, one constructed from the training data and one constructed from\n", + "the test data. The difference between the performance of the algorithm\n", + "on these two validation sets quantifies the train-test mismatch. This\n", + "can serve as another important diagnostic when using DNNs for\n", + "supervised learning.\n", + "\n", + "## Limitations of supervised learning with deep networks\n", + "\n", + "Like all statistical methods, supervised learning using neural\n", + "networks has important limitations. This is especially important when\n", + "one seeks to apply these methods, especially to physics problems. Like\n", + "all tools, DNNs are not a universal solution. Often, the same or\n", + "better performance on a task can be achieved by using a few\n", + "hand-engineered features (or even a collection of random\n", + "features). \n", + "\n", + "Here we list some of the important limitations of supervised neural network based models. \n", + "\n", + "\n", + "\n", + "* **Need labeled data**. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).\n", + "\n", + "* **Supervised neural networks are extremely data intensive.** DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs.\n", + "\n", + "* **Homogeneous data.** Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types.\n", + "\n", + "* **Many problems are not about prediction.** In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a *wrong* model. The model might or might not be useful for understanding the underlying science.\n", + "\n", + "Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems." + ] } ], - "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.7.0" - } - }, + "metadata": {}, "nbformat": 4, "nbformat_minor": 2 } diff --git a/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz b/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz index 1c7c69186adc4cb45208dbc828edebc6d90b7a76..b76609507e24034970dab0a0271dbae87336a992 100644 GIT binary patch literal 210 zcmb2|=3vN?I1tUi{Pz68u0sX_#|qEe9kp@v%w7Au_3Hyi!JFb8CV87zcdBXL*nWT2 z0`*FVgYm}dI-#~lC7B|go|1HD31HJ8r`d0f2e;!?ZQ?p~i3t@sr_v)? z=&j)D$w9yV$J(_?w#_{I>fOJ>(5b;Q@ARxP>u&AYnR7<9v~I0_TJhA#*x5@BZ%K&C zc2_A??Vh~v%g!4mc1x>E6?cDld#5sI`|rf_UqyeOv46DlbEMq7wo6A96vejpe)PSz z&cAGb+0swP6?2yM>h;HZzT5l#WG8R)jcs3#9#8mwIk`*!q+F5d-?#M)$l$^L9}I_1 Lb~`a>FfafBR)c7Q diff --git a/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf b/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf index b50fde78bcb6db3a173e129a1d9c670fa7411b6f..1630dbd4cfd444be356136cedcee518e8985569d 100644 GIT binary patch delta 108338 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%0D*G}F?QkVHdtwBgB{|G(;ryM%T4=UG}$#Y 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
      Jqe+;+- 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

      SO3dqA|c`H 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 delta 95543 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\e8*cR5hJtxQLYmq73Z+i)&Qq$0=d)NV#UHUy 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 N+W_&R)KOO^cD=D{s7S)gLIFDd9iFpU{F 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 0,\\ z & z \le 0.\end{array}\right. +\] +!et + +So which activation function should you use for the hidden layers of your deep neural networks? Although your mileage will vary, +in general ELU is better than leaky ReLU (and its variants), which is better than ReLU. ReLU performs better than $\tanh$ which in turn performs better than the logistic function. If you care a lot about runtime performance, then you +may prefer leaky ReLUs over ELUs. If you don’t want to tweak yet another hyperparameter, you may just use the default $\alpha$ of +$0.01$ for the leaky ReLU, and $1$ for ELU. If you have spare time and computing power, you can use +cross-validation or bootstrap to evaluate other activation functions. +huge training set. + + +!split +===== A top-down perspective on Neural networks ===== + + +The first thing we would like to do is divide the data into two or three +parts. A training set, a validation or dev (development) set, and a +test set. The test set is the data on which we want to make +predictions. The dev set is a subset of the training data we use to +check how well we are doing out-of-sample, after training the model on +the training dataset. We use the validation error as a proxy for the +test error in order to make tweaks to our model. It is crucial that we +do not use any of the test data to train the algorithm. This is a +cardinal sin in ML. Then: + + +* Estimate optimal error rate + +* Minimize underfitting (bias) on training data set. + +* Make sure you are not overfitting. + +If the validation and test sets are drawn from the same distributions, +then good performance on the validation set should lead to similarly +good performance on the test set. +However, sometimes +the training data and test data differ in subtle ways because, for +example, they are collected using slightly different methods, or +because it is cheaper to collect data in one way versus another. In +this case, there can be a mismatch between the training and test +data. This can lead to the neural network overfitting these small +differences between the test and training sets, and a poor performance +on the test set despite having a good performance on the validation +set. To rectify this, Andrew Ng suggests making two validation or dev +sets, one constructed from the training data and one constructed from +the test data. The difference between the performance of the algorithm +on these two validation sets quantifies the train-test mismatch. This +can serve as another important diagnostic when using DNNs for +supervised learning. + +!split +===== Limitations of supervised learning with deep networks ===== + +Like all statistical methods, supervised learning using neural +networks has important limitations. This is especially important when +one seeks to apply these methods, especially to physics problems. Like +all tools, DNNs are not a universal solution. Often, the same or +better performance on a task can be achieved by using a few +hand-engineered features (or even a collection of random +features). + +Here we list some of the important limitations of supervised neural network based models. + + + +* _Need labeled data_. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images). +* _Supervised neural networks are extremely data intensive._ DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs. +* _Homogeneous data._ Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e.~some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types. +* _Many problems are not about prediction._ In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a *wrong* model. The model might or might not be useful for understanding the underlying science. + +Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumnavigate these problems.