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 1c7c69186..b76609507 100644 Binary files a/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz and b/doc/pub/NeuralNet/ipynb/ipynb-NeuralNet-src.tar.gz differ diff --git a/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf b/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf index b50fde78b..1630dbd4c 100644 Binary files a/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf and b/doc/pub/NeuralNet/pdf/NeuralNet-minted.pdf differ diff --git a/doc/src/NeuralNet/NeuralNet.do.txt b/doc/src/NeuralNet/NeuralNet.do.txt index e78845923..750133368 100644 --- a/doc/src/NeuralNet/NeuralNet.do.txt +++ b/doc/src/NeuralNet/NeuralNet.do.txt @@ -2187,3 +2187,151 @@ ax.set_ylabel("$\eta$") ax.set_xlabel("$\lambda$") plt.show() !ec + + +!split +===== 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 + +!split +===== 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). + + +!split +===== 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). + + +!split +===== 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 +!bt +\[ +ELU(z) = \left\{\begin{array}{cc} \alpha\left( \exp{(z)}-1\right) & z > 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.