From 6cd2e8ff48462bef1d80d0f9e657967579b05b91 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Mon, 15 Jan 2024 21:27:12 +0100 Subject: [PATCH] updating slides --- doc/pub/week1/html/week1-bs.html | 187 +++---- doc/pub/week1/html/week1-reveal.html | 148 ++---- doc/pub/week1/html/week1-solarized.html | 168 ++---- doc/pub/week1/html/week1.html | 168 ++---- doc/pub/week1/ipynb/ipynb-week1-src.tar.gz | Bin 2624762 -> 2624762 bytes doc/pub/week1/ipynb/week1.ipynb | 574 ++++++++++----------- doc/pub/week1/pdf/week1.pdf | Bin 3154397 -> 3152919 bytes doc/src/week1/week1.do.txt | 122 ++--- 8 files changed, 516 insertions(+), 851 deletions(-) diff --git a/doc/pub/week1/html/week1-bs.html b/doc/pub/week1/html/week1-bs.html index fb5e53be..b3796b40 100644 --- a/doc/pub/week1/html/week1-bs.html +++ b/doc/pub/week1/html/week1-bs.html @@ -259,6 +259,10 @@ None, 'setting-up-the-equations-for-a-neural-network'), ('Definitions', 2, None, 'definitions'), + ('Inputs to tje activation function', + 2, + None, + 'inputs-to-tje-activation-function'), ('Derivatives and the chain rule', 2, None, @@ -271,6 +275,10 @@ 2, None, 'bringing-it-together-first-back-propagation-equation'), + ('Analyzing the last results', + 2, + None, + 'analyzing-the-last-results'), ('More considerations', 2, None, 'more-considerations'), ('Derivatives in terms of $z_j^L$', 2, @@ -281,11 +289,15 @@ 2, None, 'final-back-propagating-equation'), - ('Setting up the Back propagation algorithm', + ('Using the chain rule and summing over all $k$ entries', + 2, + None, + 'using-the-chain-rule-and-summing-over-all-k-entries'), + ('Setting up the back propagation algorithm', 2, None, 'setting-up-the-back-propagation-algorithm'), - ('Setting up the Back propagation algorithm, part 2', + ('Setting up the back propagation algorithm, part 2', 2, None, 'setting-up-the-back-propagation-algorithm-part-2'), @@ -293,11 +305,6 @@ 2, None, 'setting-up-the-back-propagation-algorithm-part-3'), - ('Setting up the Back propagation algorithm, final ' - 'considerations', - 2, - None, - 'setting-up-the-back-propagation-algorithm-final-considerations'), ('Updating the gradients', 2, None, 'updating-the-gradients')]} end of tocinfo --> @@ -402,17 +409,19 @@
  • Other parameters
  • Setting up the equations for a neural network
  • Definitions
  • +
  • Inputs to tje activation function
  • Derivatives and the chain rule
  • Derivative of the cost function
  • Bringing it together, first back propagation equation
  • +
  • Analyzing the last results
  • More considerations
  • Derivatives in terms of \( z_j^L \)
  • Bringing it together
  • Final back propagating equation
  • -
  • Setting up the Back propagation algorithm
  • -
  • Setting up the Back propagation algorithm, part 2
  • +
  • Using the chain rule and summing over all \( k \) entries
  • +
  • Setting up the back propagation algorithm
  • +
  • Setting up the back propagation algorithm, part 2
  • Setting up the Back propagation algorithm, part 3
  • -
  • Setting up the Back propagation algorithm, final considerations
  • Updating the gradients
  • @@ -1580,22 +1589,19 @@

    Setting up

    $$ -{\cal C}(\hat{W}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2, $$ -

    where the $t_i$s are our \( n \) targets (the values we want to +

    where the $y_i$s are our \( n \) targets (the values we want to reproduce), while the outputs of the network after having propagated -all inputs \( \hat{x} \) are given by \( y_i \). Below we will demonstrate -how the basic equations arising from the back propagation algorithm -can be modified in order to study classification problems with \( K \) -classes. +all inputs \( \boldsymbol{x} \) are given by \( \boldsymbol{\tilde{y}}_i \).

    Definitions

    -

    With our definition of the targets \( \hat{t} \), the outputs of the -network \( \hat{y} \) and the inputs \( \hat{x} \) we +

    With our definition of the targets \( \boldsymbol{y} \), the outputs of the +network \( \boldsymbol{\tilde{y}} \) and the inputs \( \boldsymbol{x} \) we define now the activation \( z_j^l \) of node/neuron/unit \( j \) of the \( l \)-th layer as a function of the bias, the weights which add up from the previous layer \( l-1 \) and the forward passes/outputs @@ -1616,8 +1622,12 @@

    Definitions

    \hat{z}^l = \left(\hat{W}^l\right)^T\hat{a}^{l-1}+\hat{b}^l. $$ -

    With the activation values \( \hat{z}^l \) we can in turn define the -output of layer \( l \) as \( \hat{a}^l = f(\hat{z}^l) \) where \( f \) is our + + +

    Inputs to tje activation function

    + +

    With the activation values \( \boldsymbol{z}^l \) we can in turn define the +output of layer \( l \) as \( \boldsymbol{a}^l = f(\boldsymbol{z}^l) \) where \( f \) is our activation function. In the examples here we will use the sigmoid function discussed in our logistic regression lectures. We will also use the same activation function \( f \) for all layers and their nodes. It means we have @@ -1654,18 +1664,18 @@

    Derivative of the cost f

    Let us specialize to the output layer \( l=L \). Our cost function is

    $$ -{\cal C}(\hat{W^L}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}^L) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - y_i\right)^2, $$

    The derivative of this function with respect to the weights is

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, +\frac{\partial{\cal C}(\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, $$

    The last partial derivative can easily be computed and reads (by applying the chain rule)

    $$ -\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}. $$ @@ -1674,19 +1684,23 @@

    Bri

    We have thus

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial{\cal C}((\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)a_j^L(1-a_j^L)a_k^{L-1}, $$

    Defining

    $$ -\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - t_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, +\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - y_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, $$

    and using the Hadamard product of two vectors we can write this as

    $$ -\hat{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\hat{a}^L)}. +\boldsymbol{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\boldsymbol{a}^L)}. $$ + + +

    Analyzing the last results

    +

    This is an important expression. The second term on the right handside measures how fast the cost function is changing as a function of the $j$th output activation. If, for example, the cost function doesn't depend @@ -1714,7 +1728,7 @@

    More considerations

    With the definition of \( \delta_j^L \) we have a more compact definition of the derivative of the cost function in terms of the weights, namely

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. +\frac{\partial{\cal C}}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. $$ @@ -1739,10 +1753,6 @@

    Bringing it together

    We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are

    -
    -
    - - $$ \begin{equation} \frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}, @@ -1766,8 +1776,6 @@

    Bringing it together

    \label{_auto3} \end{equation} $$ -
    -
    @@ -1778,8 +1786,12 @@

    Final back propagating e \delta_j^l =\frac{\partial {\cal C}}{\partial z_j^l}. $$ -

    We want to express this in terms of the equations for layer \( l+1 \). Using the chain rule and summing over all \( k \) entries we have

    +

    We want to express this in terms of the equations for layer \( l+1 \).

    + + +

    Using the chain rule and summing over all \( k \) entries

    +

    We obtain

    $$ \delta_j^l =\sum_k \frac{\partial {\cal C}}{\partial z_k^{l+1}}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}=\sum_k \delta_k^{l+1}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}, $$ @@ -1799,65 +1811,43 @@

    Final back propagating e

    We are now ready to set up the algorithm for back propagation and learning the weights and biases.

    -

    Setting up the Back propagation algorithm

    +

    Setting up the back propagation algorithm

    The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    -
    -
    - -

    First, we set up the input data \( \hat{x} \) and the activations +

    First, we set up the input data \( \hat{x} \) and the activations \( \hat{z}_1 \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^1 \).

    -
    -
    - -
    -
    - -

    Secondly, we perform then the feed forward till we reach the output +

    Secondly, we perform then the feed forward till we reach the output layer and compute all \( \hat{z}_l \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^l \) for \( l=2,3,\dots,L \).

    -
    -
    - -

    Setting up the Back propagation algorithm, part 2

    +

    Setting up the back propagation algorithm, part 2

    -
    -
    -

    Thereafter we compute the ouput error \( \hat{\delta}^L \) by computing all

    $$ \delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. $$ -
    -
    - -
    -
    -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    $$ \delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). $$ -
    -

    Setting up the Back propagation algorithm, part 3

    -
    -
    - -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    Finally, we update the weights and the biases using gradient descent +for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases +according to the rules +

    + $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1866,71 +1856,18 @@

    Setting $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -

    -
    - - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    - - -

    Setting up the Back propagation algorithm, final considerations

    - -

    The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    - -
    -
    - -

    First, we set up the input data \( \boldsymbol{x} \) and the activations -\( \boldsymbol{z}_1 \) of the input layer and compute the activation function and -the pertinent outputs \( \boldsymbol{a}^1 \). -

    -
    -
    - - -
    -
    - -

    Secondly, we perform then the feed forward till we reach the output -layer and compute all \( \boldsymbol{z}_l \) of the input layer and compute the -activation function and the pertinent outputs \( \boldsymbol{a}^l \) for -\( l=2,3,\dots,L \). -

    -
    -
    - - -
    -
    - -

    Thereafter we compute the ouput error \( \boldsymbol{\delta}^L \) by computing all

    -$$ -\delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. -$$ -
    -
    +

    with \( \eta \) being the learning rate.

    Updating the gradients

    -
    -
    - -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    +

    With the back propagate error for each \( l=L-1,L-2,\dots,1 \) as

    $$ -\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). +\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l), $$ -
    -
    - -
    -
    - -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases according to the rules

    $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1939,13 +1876,7 @@

    Updating the gradients

    $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -
    -
    - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    diff --git a/doc/pub/week1/html/week1-reveal.html b/doc/pub/week1/html/week1-reveal.html index c9df4e9d..bceb433b 100644 --- a/doc/pub/week1/html/week1-reveal.html +++ b/doc/pub/week1/html/week1-reveal.html @@ -1481,24 +1481,21 @@

    Setting up the equations

     
    $$ -{\cal C}(\hat{W}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2, $$

     
    -

    where the $t_i$s are our \( n \) targets (the values we want to +

    where the $y_i$s are our \( n \) targets (the values we want to reproduce), while the outputs of the network after having propagated -all inputs \( \hat{x} \) are given by \( y_i \). Below we will demonstrate -how the basic equations arising from the back propagation algorithm -can be modified in order to study classification problems with \( K \) -classes. +all inputs \( \boldsymbol{x} \) are given by \( \boldsymbol{\tilde{y}}_i \).

    Definitions

    -

    With our definition of the targets \( \hat{t} \), the outputs of the -network \( \hat{y} \) and the inputs \( \hat{x} \) we +

    With our definition of the targets \( \boldsymbol{y} \), the outputs of the +network \( \boldsymbol{\tilde{y}} \) and the inputs \( \boldsymbol{x} \) we define now the activation \( z_j^l \) of node/neuron/unit \( j \) of the \( l \)-th layer as a function of the bias, the weights which add up from the previous layer \( l-1 \) and the forward passes/outputs @@ -1522,9 +1519,13 @@

    Definitions

    \hat{z}^l = \left(\hat{W}^l\right)^T\hat{a}^{l-1}+\hat{b}^l. $$

     
    +

    + +
    +

    Inputs to tje activation function

    -

    With the activation values \( \hat{z}^l \) we can in turn define the -output of layer \( l \) as \( \hat{a}^l = f(\hat{z}^l) \) where \( f \) is our +

    With the activation values \( \boldsymbol{z}^l \) we can in turn define the +output of layer \( l \) as \( \boldsymbol{a}^l = f(\boldsymbol{z}^l) \) where \( f \) is our activation function. In the examples here we will use the sigmoid function discussed in our logistic regression lectures. We will also use the same activation function \( f \) for all layers and their nodes. It means we have @@ -1570,7 +1571,7 @@

    Derivative of the cost function

    Let us specialize to the output layer \( l=L \). Our cost function is

     
    $$ -{\cal C}(\hat{W^L}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}^L) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - y_i\right)^2, $$

     
    @@ -1578,14 +1579,14 @@

    Derivative of the cost function

     
    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, +\frac{\partial{\cal C}(\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, $$

     

    The last partial derivative can easily be computed and reads (by applying the chain rule)

     
    $$ -\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}. $$

     

    @@ -1596,23 +1597,27 @@

    Bringing it togeth

    We have thus

     
    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial{\cal C}((\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)a_j^L(1-a_j^L)a_k^{L-1}, $$

     

    Defining

     
    $$ -\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - t_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, +\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - y_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, $$

     

    and using the Hadamard product of two vectors we can write this as

     
    $$ -\hat{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\hat{a}^L)}. +\boldsymbol{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\boldsymbol{a}^L)}. $$

     
    + + +

    +

    Analyzing the last results

    This is an important expression. The second term on the right handside measures how fast the cost function is changing as a function of the $j$th @@ -1645,7 +1650,7 @@

    More considerations

    With the definition of \( \delta_j^L \) we have a more compact definition of the derivative of the cost function in terms of the weights, namely

     
    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. +\frac{\partial{\cal C}}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. $$

     

    @@ -1676,10 +1681,6 @@

    Bringing it together

    We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are

    -
    -The starting equations -

    -

     
    $$ \begin{equation} @@ -1709,7 +1710,6 @@

    Bringing it together

    \end{equation} $$

     
    -

    @@ -1722,8 +1722,13 @@

    Final back propagating equation

    $$

     
    -

    We want to express this in terms of the equations for layer \( l+1 \). Using the chain rule and summing over all \( k \) entries we have

    +

    We want to express this in terms of the equations for layer \( l+1 \).

    +
    + +
    +

    Using the chain rule and summing over all \( k \) entries

    +

    We obtain

     
    $$ \delta_j^l =\sum_k \frac{\partial {\cal C}}{\partial z_k^{l+1}}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}=\sum_k \delta_k^{l+1}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}, @@ -1750,65 +1755,48 @@

    Final back propagating equation

    -

    Setting up the Back propagation algorithm

    +

    Setting up the back propagation algorithm

    The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    -
    - -

    -

    First, we set up the input data \( \hat{x} \) and the activations +

    First, we set up the input data \( \hat{x} \) and the activations \( \hat{z}_1 \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^1 \).

    -
    - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output +

    Secondly, we perform then the feed forward till we reach the output layer and compute all \( \hat{z}_l \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^l \) for \( l=2,3,\dots,L \).

    -
    -

    Setting up the Back propagation algorithm, part 2

    +

    Setting up the back propagation algorithm, part 2

    -
    - -

    Thereafter we compute the ouput error \( \hat{\delta}^L \) by computing all

     
    $$ \delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. $$

     
    -

    - -
    - -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

     
    $$ \delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). $$

     
    -

    Setting up the Back propagation algorithm, part 3

    -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    Finally, we update the weights and the biases using gradient descent +for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases +according to the rules +

    +

     
    $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, @@ -1820,70 +1808,21 @@

    Setting up the Back pr b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$

     
    -

    - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    -
    -
    -

    Setting up the Back propagation algorithm, final considerations

    - -

    The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    - -
    - -

    -

    First, we set up the input data \( \boldsymbol{x} \) and the activations -\( \boldsymbol{z}_1 \) of the input layer and compute the activation function and -the pertinent outputs \( \boldsymbol{a}^1 \). -

    -
    - - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output -layer and compute all \( \boldsymbol{z}_l \) of the input layer and compute the -activation function and the pertinent outputs \( \boldsymbol{a}^l \) for -\( l=2,3,\dots,L \). -

    -
    - - -
    - -

    -

    Thereafter we compute the ouput error \( \boldsymbol{\delta}^L \) by computing all

    -

     
    -$$ -\delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. -$$ -

     
    -

    +

    with \( \eta \) being the learning rate.

    Updating the gradients

    -
    - -

    -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    +

    With the back propagate error for each \( l=L-1,L-2,\dots,1 \) as

     
    $$ -\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). +\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l), $$

     
    -

    - -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases according to the rules

     
    $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, @@ -1895,11 +1834,6 @@

    Updating the gradients

    b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$

     
    -

    - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    diff --git a/doc/pub/week1/html/week1-solarized.html b/doc/pub/week1/html/week1-solarized.html index 83978612..a4f37c4f 100644 --- a/doc/pub/week1/html/week1-solarized.html +++ b/doc/pub/week1/html/week1-solarized.html @@ -286,6 +286,10 @@ None, 'setting-up-the-equations-for-a-neural-network'), ('Definitions', 2, None, 'definitions'), + ('Inputs to tje activation function', + 2, + None, + 'inputs-to-tje-activation-function'), ('Derivatives and the chain rule', 2, None, @@ -298,6 +302,10 @@ 2, None, 'bringing-it-together-first-back-propagation-equation'), + ('Analyzing the last results', + 2, + None, + 'analyzing-the-last-results'), ('More considerations', 2, None, 'more-considerations'), ('Derivatives in terms of $z_j^L$', 2, @@ -308,11 +316,15 @@ 2, None, 'final-back-propagating-equation'), - ('Setting up the Back propagation algorithm', + ('Using the chain rule and summing over all $k$ entries', + 2, + None, + 'using-the-chain-rule-and-summing-over-all-k-entries'), + ('Setting up the back propagation algorithm', 2, None, 'setting-up-the-back-propagation-algorithm'), - ('Setting up the Back propagation algorithm, part 2', + ('Setting up the back propagation algorithm, part 2', 2, None, 'setting-up-the-back-propagation-algorithm-part-2'), @@ -320,11 +332,6 @@ 2, None, 'setting-up-the-back-propagation-algorithm-part-3'), - ('Setting up the Back propagation algorithm, final ' - 'considerations', - 2, - None, - 'setting-up-the-back-propagation-algorithm-final-considerations'), ('Updating the gradients', 2, None, 'updating-the-gradients')]} end of tocinfo --> @@ -1475,22 +1482,19 @@

    Setting up the equations

    $$ -{\cal C}(\hat{W}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2, $$ -

    where the $t_i$s are our \( n \) targets (the values we want to +

    where the $y_i$s are our \( n \) targets (the values we want to reproduce), while the outputs of the network after having propagated -all inputs \( \hat{x} \) are given by \( y_i \). Below we will demonstrate -how the basic equations arising from the back propagation algorithm -can be modified in order to study classification problems with \( K \) -classes. +all inputs \( \boldsymbol{x} \) are given by \( \boldsymbol{\tilde{y}}_i \).











    Definitions

    -

    With our definition of the targets \( \hat{t} \), the outputs of the -network \( \hat{y} \) and the inputs \( \hat{x} \) we +

    With our definition of the targets \( \boldsymbol{y} \), the outputs of the +network \( \boldsymbol{\tilde{y}} \) and the inputs \( \boldsymbol{x} \) we define now the activation \( z_j^l \) of node/neuron/unit \( j \) of the \( l \)-th layer as a function of the bias, the weights which add up from the previous layer \( l-1 \) and the forward passes/outputs @@ -1511,8 +1515,12 @@

    Definitions

    \hat{z}^l = \left(\hat{W}^l\right)^T\hat{a}^{l-1}+\hat{b}^l. $$ -

    With the activation values \( \hat{z}^l \) we can in turn define the -output of layer \( l \) as \( \hat{a}^l = f(\hat{z}^l) \) where \( f \) is our + +









    +

    Inputs to tje activation function

    + +

    With the activation values \( \boldsymbol{z}^l \) we can in turn define the +output of layer \( l \) as \( \boldsymbol{a}^l = f(\boldsymbol{z}^l) \) where \( f \) is our activation function. In the examples here we will use the sigmoid function discussed in our logistic regression lectures. We will also use the same activation function \( f \) for all layers and their nodes. It means we have @@ -1549,18 +1557,18 @@

    Derivative of the cost function

    Let us specialize to the output layer \( l=L \). Our cost function is

    $$ -{\cal C}(\hat{W^L}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}^L) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - y_i\right)^2, $$

    The derivative of this function with respect to the weights is

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, +\frac{\partial{\cal C}(\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, $$

    The last partial derivative can easily be computed and reads (by applying the chain rule)

    $$ -\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}. $$ @@ -1569,19 +1577,23 @@

    Bringing it togeth

    We have thus

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial{\cal C}((\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)a_j^L(1-a_j^L)a_k^{L-1}, $$

    Defining

    $$ -\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - t_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, +\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - y_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, $$

    and using the Hadamard product of two vectors we can write this as

    $$ -\hat{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\hat{a}^L)}. +\boldsymbol{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\boldsymbol{a}^L)}. $$ + +









    +

    Analyzing the last results

    +

    This is an important expression. The second term on the right handside measures how fast the cost function is changing as a function of the $j$th output activation. If, for example, the cost function doesn't depend @@ -1609,7 +1621,7 @@

    More considerations

    With the definition of \( \delta_j^L \) we have a more compact definition of the derivative of the cost function in terms of the weights, namely

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. +\frac{\partial{\cal C}}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. $$ @@ -1634,10 +1646,6 @@

    Bringing it together

    We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are

    -
    -The starting equations -

    - $$ \begin{equation} \frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}, @@ -1661,7 +1669,6 @@

    Bringing it together

    \label{_auto3} \end{equation} $$ -










    @@ -1672,8 +1679,12 @@

    Final back propagating equation

    \delta_j^l =\frac{\partial {\cal C}}{\partial z_j^l}. $$ -

    We want to express this in terms of the equations for layer \( l+1 \). Using the chain rule and summing over all \( k \) entries we have

    +

    We want to express this in terms of the equations for layer \( l+1 \).

    + +









    +

    Using the chain rule and summing over all \( k \) entries

    +

    We obtain

    $$ \delta_j^l =\sum_k \frac{\partial {\cal C}}{\partial z_k^{l+1}}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}=\sum_k \delta_k^{l+1}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}, $$ @@ -1693,61 +1704,43 @@

    Final back propagating equation

    We are now ready to set up the algorithm for back propagation and learning the weights and biases.











    -

    Setting up the Back propagation algorithm

    +

    Setting up the back propagation algorithm

    The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    -
    - -

    -

    First, we set up the input data \( \hat{x} \) and the activations +

    First, we set up the input data \( \hat{x} \) and the activations \( \hat{z}_1 \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^1 \).

    -
    - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output +

    Secondly, we perform then the feed forward till we reach the output layer and compute all \( \hat{z}_l \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^l \) for \( l=2,3,\dots,L \).

    -
    -









    -

    Setting up the Back propagation algorithm, part 2

    +

    Setting up the back propagation algorithm, part 2

    -
    - -

    Thereafter we compute the ouput error \( \hat{\delta}^L \) by computing all

    $$ \delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. $$ -
    - -
    - -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    $$ \delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). $$ -










    Setting up the Back propagation algorithm, part 3

    -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    Finally, we update the weights and the biases using gradient descent +for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases +according to the rules +

    + $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1756,66 +1749,18 @@

    Setting up the Back pr $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -

    - - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    - -









    -

    Setting up the Back propagation algorithm, final considerations

    - -

    The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    - -
    - -

    -

    First, we set up the input data \( \boldsymbol{x} \) and the activations -\( \boldsymbol{z}_1 \) of the input layer and compute the activation function and -the pertinent outputs \( \boldsymbol{a}^1 \). -

    -
    - - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output -layer and compute all \( \boldsymbol{z}_l \) of the input layer and compute the -activation function and the pertinent outputs \( \boldsymbol{a}^l \) for -\( l=2,3,\dots,L \). -

    -
    - - -
    - -

    -

    Thereafter we compute the ouput error \( \boldsymbol{\delta}^L \) by computing all

    -$$ -\delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. -$$ -
    +

    with \( \eta \) being the learning rate.











    Updating the gradients

    -
    - -

    -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    +

    With the back propagate error for each \( l=L-1,L-2,\dots,1 \) as

    $$ -\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). +\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l), $$ -
    - -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases according to the rules

    $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1824,12 +1769,7 @@

    Updating the gradients

    $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -
    - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    © 1999-2024, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license diff --git a/doc/pub/week1/html/week1.html b/doc/pub/week1/html/week1.html index 7c06db08..41b60bae 100644 --- a/doc/pub/week1/html/week1.html +++ b/doc/pub/week1/html/week1.html @@ -363,6 +363,10 @@ None, 'setting-up-the-equations-for-a-neural-network'), ('Definitions', 2, None, 'definitions'), + ('Inputs to tje activation function', + 2, + None, + 'inputs-to-tje-activation-function'), ('Derivatives and the chain rule', 2, None, @@ -375,6 +379,10 @@ 2, None, 'bringing-it-together-first-back-propagation-equation'), + ('Analyzing the last results', + 2, + None, + 'analyzing-the-last-results'), ('More considerations', 2, None, 'more-considerations'), ('Derivatives in terms of $z_j^L$', 2, @@ -385,11 +393,15 @@ 2, None, 'final-back-propagating-equation'), - ('Setting up the Back propagation algorithm', + ('Using the chain rule and summing over all $k$ entries', + 2, + None, + 'using-the-chain-rule-and-summing-over-all-k-entries'), + ('Setting up the back propagation algorithm', 2, None, 'setting-up-the-back-propagation-algorithm'), - ('Setting up the Back propagation algorithm, part 2', + ('Setting up the back propagation algorithm, part 2', 2, None, 'setting-up-the-back-propagation-algorithm-part-2'), @@ -397,11 +409,6 @@ 2, None, 'setting-up-the-back-propagation-algorithm-part-3'), - ('Setting up the Back propagation algorithm, final ' - 'considerations', - 2, - None, - 'setting-up-the-back-propagation-algorithm-final-considerations'), ('Updating the gradients', 2, None, 'updating-the-gradients')]} end of tocinfo --> @@ -1552,22 +1559,19 @@

    Setting up the equations

    $$ -{\cal C}(\hat{W}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2, $$ -

    where the $t_i$s are our \( n \) targets (the values we want to +

    where the $y_i$s are our \( n \) targets (the values we want to reproduce), while the outputs of the network after having propagated -all inputs \( \hat{x} \) are given by \( y_i \). Below we will demonstrate -how the basic equations arising from the back propagation algorithm -can be modified in order to study classification problems with \( K \) -classes. +all inputs \( \boldsymbol{x} \) are given by \( \boldsymbol{\tilde{y}}_i \).











    Definitions

    -

    With our definition of the targets \( \hat{t} \), the outputs of the -network \( \hat{y} \) and the inputs \( \hat{x} \) we +

    With our definition of the targets \( \boldsymbol{y} \), the outputs of the +network \( \boldsymbol{\tilde{y}} \) and the inputs \( \boldsymbol{x} \) we define now the activation \( z_j^l \) of node/neuron/unit \( j \) of the \( l \)-th layer as a function of the bias, the weights which add up from the previous layer \( l-1 \) and the forward passes/outputs @@ -1588,8 +1592,12 @@

    Definitions

    \hat{z}^l = \left(\hat{W}^l\right)^T\hat{a}^{l-1}+\hat{b}^l. $$ -

    With the activation values \( \hat{z}^l \) we can in turn define the -output of layer \( l \) as \( \hat{a}^l = f(\hat{z}^l) \) where \( f \) is our + +









    +

    Inputs to tje activation function

    + +

    With the activation values \( \boldsymbol{z}^l \) we can in turn define the +output of layer \( l \) as \( \boldsymbol{a}^l = f(\boldsymbol{z}^l) \) where \( f \) is our activation function. In the examples here we will use the sigmoid function discussed in our logistic regression lectures. We will also use the same activation function \( f \) for all layers and their nodes. It means we have @@ -1626,18 +1634,18 @@

    Derivative of the cost function

    Let us specialize to the output layer \( l=L \). Our cost function is

    $$ -{\cal C}(\hat{W^L}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - t_i\right)^2, +{\cal C}(\boldsymbol{\Theta}^L) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - y_i\right)^2, $$

    The derivative of this function with respect to the weights is

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, +\frac{\partial{\cal C}(\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, $$

    The last partial derivative can easily be computed and reads (by applying the chain rule)

    $$ -\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}. $$ @@ -1646,19 +1654,23 @@

    Bringing it togeth

    We have thus

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial{\cal C}((\boldsymbol{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)a_j^L(1-a_j^L)a_k^{L-1}, $$

    Defining

    $$ -\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - t_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, +\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - y_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, $$

    and using the Hadamard product of two vectors we can write this as

    $$ -\hat{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\hat{a}^L)}. +\boldsymbol{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\boldsymbol{a}^L)}. $$ + +









    +

    Analyzing the last results

    +

    This is an important expression. The second term on the right handside measures how fast the cost function is changing as a function of the $j$th output activation. If, for example, the cost function doesn't depend @@ -1686,7 +1698,7 @@

    More considerations

    With the definition of \( \delta_j^L \) we have a more compact definition of the derivative of the cost function in terms of the weights, namely

    $$ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. +\frac{\partial{\cal C}}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. $$ @@ -1711,10 +1723,6 @@

    Bringing it together

    We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are

    -
    -The starting equations -

    - $$ \begin{equation} \frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}, @@ -1738,7 +1746,6 @@

    Bringing it together

    \label{_auto3} \end{equation} $$ -










    @@ -1749,8 +1756,12 @@

    Final back propagating equation

    \delta_j^l =\frac{\partial {\cal C}}{\partial z_j^l}. $$ -

    We want to express this in terms of the equations for layer \( l+1 \). Using the chain rule and summing over all \( k \) entries we have

    +

    We want to express this in terms of the equations for layer \( l+1 \).

    + +









    +

    Using the chain rule and summing over all \( k \) entries

    +

    We obtain

    $$ \delta_j^l =\sum_k \frac{\partial {\cal C}}{\partial z_k^{l+1}}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}=\sum_k \delta_k^{l+1}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}, $$ @@ -1770,61 +1781,43 @@

    Final back propagating equation

    We are now ready to set up the algorithm for back propagation and learning the weights and biases.











    -

    Setting up the Back propagation algorithm

    +

    Setting up the back propagation algorithm

    The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    -
    - -

    -

    First, we set up the input data \( \hat{x} \) and the activations +

    First, we set up the input data \( \hat{x} \) and the activations \( \hat{z}_1 \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^1 \).

    -
    - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output +

    Secondly, we perform then the feed forward till we reach the output layer and compute all \( \hat{z}_l \) of the input layer and compute the activation function and the pertinent outputs \( \hat{a}^l \) for \( l=2,3,\dots,L \).

    -
    -









    -

    Setting up the Back propagation algorithm, part 2

    +

    Setting up the back propagation algorithm, part 2

    -
    - -

    Thereafter we compute the ouput error \( \hat{\delta}^L \) by computing all

    $$ \delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. $$ -
    - -
    - -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    $$ \delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). $$ -










    Setting up the Back propagation algorithm, part 3

    -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    Finally, we update the weights and the biases using gradient descent +for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases +according to the rules +

    + $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1833,66 +1826,18 @@

    Setting up the Back pr $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -

    - - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    - -









    -

    Setting up the Back propagation algorithm, final considerations

    - -

    The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.

    - -
    - -

    -

    First, we set up the input data \( \boldsymbol{x} \) and the activations -\( \boldsymbol{z}_1 \) of the input layer and compute the activation function and -the pertinent outputs \( \boldsymbol{a}^1 \). -

    -
    - - -
    - -

    -

    Secondly, we perform then the feed forward till we reach the output -layer and compute all \( \boldsymbol{z}_l \) of the input layer and compute the -activation function and the pertinent outputs \( \boldsymbol{a}^l \) for -\( l=2,3,\dots,L \). -

    -
    - - -
    - -

    -

    Thereafter we compute the ouput error \( \boldsymbol{\delta}^L \) by computing all

    -$$ -\delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. -$$ -
    +

    with \( \eta \) being the learning rate.











    Updating the gradients

    -
    - -

    -

    Then we compute the back propagate error for each \( l=L-1,L-2,\dots,2 \) as

    +

    With the back propagate error for each \( l=L-1,L-2,\dots,1 \) as

    $$ -\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). +\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l), $$ -
    - -
    - -

    -

    Finally, we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,2 \) and update the weights and biases according to the rules

    +

    we update the weights and the biases using gradient descent for each \( l=L-1,L-2,\dots,1 \) and update the weights and biases according to the rules

    $$ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, $$ @@ -1901,12 +1846,7 @@

    Updating the gradients

    $$ b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, $$ -
    - -

    The parameter \( \eta \) is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. -

    © 1999-2024, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license diff --git a/doc/pub/week1/ipynb/ipynb-week1-src.tar.gz b/doc/pub/week1/ipynb/ipynb-week1-src.tar.gz index 88082c5e85172ab520b000227a432a3e2ef07bfd..6cd7c61433ce12c6a7102d305280df3cf050293d 100644 GIT binary patch delta 139 zcmWN_y8?j#06(Q73slkU+W;N>BRI z&Ojm=%1Fi%%S5J<$V^h1%R(|)%1YL`Q_K*HrweoA{8|06u^?TltK-$ug zuJojtP$KEeK!y^_NX9aeM5Z#6R5F>%LYA_UwQOW7JK4)Yaw+5}Cpk+gm0aZd;r5OH Dq_-hY diff --git a/doc/pub/week1/ipynb/week1.ipynb b/doc/pub/week1/ipynb/week1.ipynb index 81f9445e..74996037 100644 --- a/doc/pub/week1/ipynb/week1.ipynb +++ b/doc/pub/week1/ipynb/week1.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "4320b4a1", + "id": "fcc6f7f7", "metadata": { "editable": true }, @@ -14,7 +14,7 @@ }, { "cell_type": "markdown", - "id": "4e28dae4", + "id": "1e7100ab", "metadata": { "editable": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "markdown", - "id": "3e300193", + "id": "eef90275", "metadata": { "editable": true }, @@ -43,7 +43,7 @@ }, { "cell_type": "markdown", - "id": "66a491f7", + "id": "4b59a81b", "metadata": { "editable": true }, @@ -61,7 +61,7 @@ }, { "cell_type": "markdown", - "id": "d8907311", + "id": "e33689b5", "metadata": { "editable": true }, @@ -97,7 +97,7 @@ }, { "cell_type": "markdown", - "id": "1aa2e78e", + "id": "5da650f6", "metadata": { "editable": true }, @@ -113,7 +113,7 @@ }, { "cell_type": "markdown", - "id": "0e013cd9", + "id": "d30dc02c", "metadata": { "editable": true }, @@ -136,7 +136,7 @@ }, { "cell_type": "markdown", - "id": "6829fcc9", + "id": "5b072b26", "metadata": { "editable": true }, @@ -152,7 +152,7 @@ }, { "cell_type": "markdown", - "id": "722521f9", + "id": "08decd18", "metadata": { "editable": true }, @@ -170,7 +170,7 @@ }, { "cell_type": "markdown", - "id": "eae20b92", + "id": "41440cf8", "metadata": { "editable": true }, @@ -186,7 +186,7 @@ }, { "cell_type": "markdown", - "id": "06cebda5", + "id": "57fa58bc", "metadata": { "editable": true }, @@ -206,7 +206,7 @@ }, { "cell_type": "markdown", - "id": "09675d7a", + "id": "faa8a182", "metadata": { "editable": true }, @@ -225,7 +225,7 @@ }, { "cell_type": "markdown", - "id": "e4b40616", + "id": "458087cf", "metadata": { "editable": true }, @@ -243,7 +243,7 @@ }, { "cell_type": "markdown", - "id": "12913b33", + "id": "c16e338d", "metadata": { "editable": true }, @@ -265,7 +265,7 @@ }, { "cell_type": "markdown", - "id": "df48c2e7", + "id": "599bb230", "metadata": { "editable": true }, @@ -288,7 +288,7 @@ }, { "cell_type": "markdown", - "id": "c5a59f0c", + "id": "0fddab7e", "metadata": { "editable": true }, @@ -304,7 +304,7 @@ }, { "cell_type": "markdown", - "id": "0a8f1137", + "id": "0e6656d4", "metadata": { "editable": true }, @@ -330,7 +330,7 @@ }, { "cell_type": "markdown", - "id": "fd888494", + "id": "4781b12f", "metadata": { "editable": true }, @@ -346,7 +346,7 @@ }, { "cell_type": "markdown", - "id": "25e974bc", + "id": "90177fea", "metadata": { "editable": true }, @@ -362,7 +362,7 @@ }, { "cell_type": "markdown", - "id": "62edc1e1", + "id": "de16686e", "metadata": { "editable": true }, @@ -382,7 +382,7 @@ }, { "cell_type": "markdown", - "id": "6a7ede58", + "id": "4ffb766a", "metadata": { "editable": true }, @@ -398,7 +398,7 @@ }, { "cell_type": "markdown", - "id": "ecaa3c0d", + "id": "f3183d87", "metadata": { "editable": true }, @@ -416,7 +416,7 @@ }, { "cell_type": "markdown", - "id": "66a2360b", + "id": "51f13830", "metadata": { "editable": true }, @@ -432,7 +432,7 @@ }, { "cell_type": "markdown", - "id": "d8f2772d", + "id": "fbfd3a76", "metadata": { "editable": true }, @@ -444,7 +444,7 @@ }, { "cell_type": "markdown", - "id": "c4564c51", + "id": "16865eff", "metadata": { "editable": true }, @@ -462,7 +462,7 @@ }, { "cell_type": "markdown", - "id": "e10b17a7", + "id": "20995064", "metadata": { "editable": true }, @@ -474,7 +474,7 @@ }, { "cell_type": "markdown", - "id": "9dbfd14c", + "id": "2dbc3418", "metadata": { "editable": true }, @@ -486,7 +486,7 @@ }, { "cell_type": "markdown", - "id": "c4c97e30", + "id": "8db378c8", "metadata": { "editable": true }, @@ -498,7 +498,7 @@ }, { "cell_type": "markdown", - "id": "713dc432", + "id": "d629aae3", "metadata": { "editable": true }, @@ -508,7 +508,7 @@ }, { "cell_type": "markdown", - "id": "3581a429", + "id": "8569ed0f", "metadata": { "editable": true }, @@ -520,7 +520,7 @@ }, { "cell_type": "markdown", - "id": "39f963a3", + "id": "d7afc473", "metadata": { "editable": true }, @@ -530,7 +530,7 @@ }, { "cell_type": "markdown", - "id": "6040d9f8", + "id": "25c09815", "metadata": { "editable": true }, @@ -542,7 +542,7 @@ }, { "cell_type": "markdown", - "id": "057958de", + "id": "44a7fd46", "metadata": { "editable": true }, @@ -554,7 +554,7 @@ }, { "cell_type": "markdown", - "id": "839d28b6", + "id": "f86d02ac", "metadata": { "editable": true }, @@ -564,7 +564,7 @@ }, { "cell_type": "markdown", - "id": "f2a17acd", + "id": "37912f62", "metadata": { "editable": true }, @@ -576,7 +576,7 @@ }, { "cell_type": "markdown", - "id": "3d4a645f", + "id": "f761828c", "metadata": { "editable": true }, @@ -586,7 +586,7 @@ }, { "cell_type": "markdown", - "id": "f80b8072", + "id": "d8b42487", "metadata": { "editable": true }, @@ -598,7 +598,7 @@ }, { "cell_type": "markdown", - "id": "e3b48953", + "id": "d21a6415", "metadata": { "editable": true }, @@ -610,7 +610,7 @@ }, { "cell_type": "markdown", - "id": "78067d8b", + "id": "86fbebd4", "metadata": { "editable": true }, @@ -620,7 +620,7 @@ }, { "cell_type": "markdown", - "id": "af1edd1f", + "id": "9dcb1dcb", "metadata": { "editable": true }, @@ -633,7 +633,7 @@ }, { "cell_type": "markdown", - "id": "99d1c97d", + "id": "81a077d7", "metadata": { "editable": true }, @@ -643,7 +643,7 @@ }, { "cell_type": "markdown", - "id": "17c04539", + "id": "9585b276", "metadata": { "editable": true }, @@ -655,7 +655,7 @@ }, { "cell_type": "markdown", - "id": "c831d1a3", + "id": "f7e3f8f7", "metadata": { "editable": true }, @@ -670,7 +670,7 @@ }, { "cell_type": "markdown", - "id": "c2871973", + "id": "4a165419", "metadata": { "editable": true }, @@ -683,7 +683,7 @@ }, { "cell_type": "markdown", - "id": "7f51cbbb", + "id": "b9bd529d", "metadata": { "editable": true }, @@ -695,7 +695,7 @@ }, { "cell_type": "markdown", - "id": "0429287d", + "id": "a85ad75f", "metadata": { "editable": true }, @@ -707,7 +707,7 @@ }, { "cell_type": "markdown", - "id": "f5fd3ebb", + "id": "4ca9ef86", "metadata": { "editable": true }, @@ -719,7 +719,7 @@ }, { "cell_type": "markdown", - "id": "ab377e04", + "id": "9719144a", "metadata": { "editable": true }, @@ -729,7 +729,7 @@ }, { "cell_type": "markdown", - "id": "20effe57", + "id": "c3e13391", "metadata": { "editable": true }, @@ -742,7 +742,7 @@ }, { "cell_type": "markdown", - "id": "09ec86f6", + "id": "62ea75aa", "metadata": { "editable": true }, @@ -753,7 +753,7 @@ }, { "cell_type": "markdown", - "id": "6b302097", + "id": "5a7f8000", "metadata": { "editable": true }, @@ -765,7 +765,7 @@ }, { "cell_type": "markdown", - "id": "3b41c760", + "id": "0317aa3e", "metadata": { "editable": true }, @@ -776,7 +776,7 @@ }, { "cell_type": "markdown", - "id": "b9b21938", + "id": "25ce2c4c", "metadata": { "editable": true }, @@ -790,7 +790,7 @@ }, { "cell_type": "markdown", - "id": "02b7197c", + "id": "0540e4f8", "metadata": { "editable": true }, @@ -800,7 +800,7 @@ }, { "cell_type": "markdown", - "id": "1d3fee6d", + "id": "612e87aa", "metadata": { "editable": true }, @@ -812,7 +812,7 @@ }, { "cell_type": "markdown", - "id": "e6ff02fd", + "id": "867e4f08", "metadata": { "editable": true }, @@ -822,7 +822,7 @@ }, { "cell_type": "markdown", - "id": "7cd823d8", + "id": "f26bcd09", "metadata": { "editable": true }, @@ -836,7 +836,7 @@ }, { "cell_type": "markdown", - "id": "2b40d9fc", + "id": "5b739e65", "metadata": { "editable": true }, @@ -848,7 +848,7 @@ }, { "cell_type": "markdown", - "id": "16c99897", + "id": "d1277c88", "metadata": { "editable": true }, @@ -859,7 +859,7 @@ }, { "cell_type": "markdown", - "id": "7dbe5801", + "id": "2edba55a", "metadata": { "editable": true }, @@ -873,7 +873,7 @@ }, { "cell_type": "markdown", - "id": "2021e74c", + "id": "48ad1100", "metadata": { "editable": true }, @@ -884,7 +884,7 @@ }, { "cell_type": "markdown", - "id": "ba22386d", + "id": "5b2a972a", "metadata": { "editable": true }, @@ -896,7 +896,7 @@ }, { "cell_type": "markdown", - "id": "45b474b6", + "id": "f01c985e", "metadata": { "editable": true }, @@ -906,7 +906,7 @@ }, { "cell_type": "markdown", - "id": "443dea3b", + "id": "9e189ab9", "metadata": { "editable": true }, @@ -918,7 +918,7 @@ }, { "cell_type": "markdown", - "id": "afd29081", + "id": "c0bad804", "metadata": { "editable": true }, @@ -928,7 +928,7 @@ }, { "cell_type": "markdown", - "id": "87a24bf9", + "id": "ba855e4b", "metadata": { "editable": true }, @@ -943,7 +943,7 @@ }, { "cell_type": "markdown", - "id": "91b91975", + "id": "45026dd0", "metadata": { "editable": true }, @@ -955,7 +955,7 @@ }, { "cell_type": "markdown", - "id": "0b975bac", + "id": "041d9a49", "metadata": { "editable": true }, @@ -966,7 +966,7 @@ }, { "cell_type": "markdown", - "id": "d43a8352", + "id": "f26ae58b", "metadata": { "editable": true }, @@ -978,7 +978,7 @@ }, { "cell_type": "markdown", - "id": "5513e434", + "id": "4b045765", "metadata": { "editable": true }, @@ -989,7 +989,7 @@ }, { "cell_type": "markdown", - "id": "54676b42", + "id": "2272c38f", "metadata": { "editable": true }, @@ -1001,7 +1001,7 @@ }, { "cell_type": "markdown", - "id": "ab329304", + "id": "43b8f49b", "metadata": { "editable": true }, @@ -1011,7 +1011,7 @@ }, { "cell_type": "markdown", - "id": "6dade8f1", + "id": "ebbc9e2d", "metadata": { "editable": true }, @@ -1023,7 +1023,7 @@ }, { "cell_type": "markdown", - "id": "dc5cb70d", + "id": "26f242cb", "metadata": { "editable": true }, @@ -1033,7 +1033,7 @@ }, { "cell_type": "markdown", - "id": "2e6c935f", + "id": "8b788b85", "metadata": { "editable": true }, @@ -1045,7 +1045,7 @@ }, { "cell_type": "markdown", - "id": "f4645d72", + "id": "b4729e36", "metadata": { "editable": true }, @@ -1055,7 +1055,7 @@ }, { "cell_type": "markdown", - "id": "b936614e", + "id": "bebfd109", "metadata": { "editable": true }, @@ -1072,7 +1072,7 @@ }, { "cell_type": "markdown", - "id": "927d9ce8", + "id": "ed851734", "metadata": { "editable": true }, @@ -1088,7 +1088,7 @@ }, { "cell_type": "markdown", - "id": "0b83882c", + "id": "4676d2f8", "metadata": { "editable": true }, @@ -1104,7 +1104,7 @@ }, { "cell_type": "markdown", - "id": "4b167325", + "id": "0aa50d69", "metadata": { "editable": true }, @@ -1128,7 +1128,7 @@ }, { "cell_type": "markdown", - "id": "1e5c9c72", + "id": "14fac089", "metadata": { "editable": true }, @@ -1144,7 +1144,7 @@ }, { "cell_type": "markdown", - "id": "174ffd64", + "id": "85066d35", "metadata": { "editable": true }, @@ -1159,7 +1159,7 @@ }, { "cell_type": "markdown", - "id": "a2bffedb", + "id": "1ff54312", "metadata": { "editable": true }, @@ -1183,7 +1183,7 @@ }, { "cell_type": "markdown", - "id": "416e2acf", + "id": "8fcc30c7", "metadata": { "editable": true }, @@ -1194,7 +1194,7 @@ }, { "cell_type": "markdown", - "id": "706e047f", + "id": "f8208016", "metadata": { "editable": true }, @@ -1206,7 +1206,7 @@ }, { "cell_type": "markdown", - "id": "95ebfc88", + "id": "a7333648", "metadata": { "editable": true }, @@ -1216,7 +1216,7 @@ }, { "cell_type": "markdown", - "id": "788f0513", + "id": "04b809f2", "metadata": { "editable": true }, @@ -1228,7 +1228,7 @@ }, { "cell_type": "markdown", - "id": "983ec1b3", + "id": "35c6d449", "metadata": { "editable": true }, @@ -1238,7 +1238,7 @@ }, { "cell_type": "markdown", - "id": "0478cfae", + "id": "02ed1e44", "metadata": { "editable": true }, @@ -1255,7 +1255,7 @@ }, { "cell_type": "markdown", - "id": "2f7a6f35", + "id": "2726c365", "metadata": { "editable": true }, @@ -1271,7 +1271,7 @@ }, { "cell_type": "markdown", - "id": "5e4cd821", + "id": "1a158d2b", "metadata": { "editable": true }, @@ -1283,7 +1283,7 @@ }, { "cell_type": "markdown", - "id": "01e1e34b", + "id": "92e435b2", "metadata": { "editable": true }, @@ -1293,7 +1293,7 @@ }, { "cell_type": "markdown", - "id": "130dc6ae", + "id": "5ca8cb95", "metadata": { "editable": true }, @@ -1307,7 +1307,7 @@ }, { "cell_type": "markdown", - "id": "073f6823", + "id": "f7ccba75", "metadata": { "editable": true }, @@ -1319,7 +1319,7 @@ }, { "cell_type": "markdown", - "id": "f4293d54", + "id": "9e6a39dd", "metadata": { "editable": true }, @@ -1333,7 +1333,7 @@ }, { "cell_type": "markdown", - "id": "73625652", + "id": "8bc5b83b", "metadata": { "editable": true }, @@ -1345,7 +1345,7 @@ }, { "cell_type": "markdown", - "id": "507af02f", + "id": "6cacf1ae", "metadata": { "editable": true }, @@ -1355,7 +1355,7 @@ }, { "cell_type": "markdown", - "id": "ce5a5a85", + "id": "72fa175a", "metadata": { "editable": true }, @@ -1367,7 +1367,7 @@ }, { "cell_type": "markdown", - "id": "ae408292", + "id": "e69baaf2", "metadata": { "editable": true }, @@ -1377,7 +1377,7 @@ }, { "cell_type": "markdown", - "id": "d04eb159", + "id": "2bf65fb9", "metadata": { "editable": true }, @@ -1389,7 +1389,7 @@ }, { "cell_type": "markdown", - "id": "c5cfcaf7", + "id": "167833fc", "metadata": { "editable": true }, @@ -1408,7 +1408,7 @@ }, { "cell_type": "markdown", - "id": "fe04f2ad", + "id": "54a4c7c6", "metadata": { "editable": true }, @@ -1421,7 +1421,7 @@ }, { "cell_type": "markdown", - "id": "1e32111c", + "id": "8ae2f0fc", "metadata": { "editable": true }, @@ -1431,7 +1431,7 @@ }, { "cell_type": "markdown", - "id": "6649f0b8", + "id": "9572a7da", "metadata": { "editable": true }, @@ -1443,7 +1443,7 @@ }, { "cell_type": "markdown", - "id": "ba618c2c", + "id": "7cdbb0a0", "metadata": { "editable": true }, @@ -1462,7 +1462,7 @@ }, { "cell_type": "markdown", - "id": "6dd790c2", + "id": "5ff0320b", "metadata": { "editable": true }, @@ -1484,7 +1484,7 @@ }, { "cell_type": "markdown", - "id": "f706146b", + "id": "2b30a102", "metadata": { "editable": true }, @@ -1496,7 +1496,7 @@ }, { "cell_type": "markdown", - "id": "8ebeabbc", + "id": "9259245f", "metadata": { "editable": true }, @@ -1508,7 +1508,7 @@ }, { "cell_type": "markdown", - "id": "a97aa34b", + "id": "0a01b003", "metadata": { "editable": true }, @@ -1523,7 +1523,7 @@ }, { "cell_type": "markdown", - "id": "048eb9d4", + "id": "59ed49ed", "metadata": { "editable": true }, @@ -1541,7 +1541,7 @@ }, { "cell_type": "markdown", - "id": "121bf07e", + "id": "ad9a1b18", "metadata": { "editable": true }, @@ -1561,7 +1561,7 @@ }, { "cell_type": "markdown", - "id": "5d8e9037", + "id": "0b3cd96e", "metadata": { "editable": true }, @@ -1573,7 +1573,7 @@ }, { "cell_type": "markdown", - "id": "51bc5f5b", + "id": "40fa1452", "metadata": { "editable": true }, @@ -1585,7 +1585,7 @@ }, { "cell_type": "markdown", - "id": "2d5e294d", + "id": "58692225", "metadata": { "editable": true }, @@ -1595,7 +1595,7 @@ }, { "cell_type": "markdown", - "id": "939d0a55", + "id": "fe9f809e", "metadata": { "editable": true }, @@ -1607,7 +1607,7 @@ }, { "cell_type": "markdown", - "id": "f570ac90", + "id": "439867db", "metadata": { "editable": true }, @@ -1617,7 +1617,7 @@ }, { "cell_type": "markdown", - "id": "009f4e96", + "id": "f2cb0e82", "metadata": { "editable": true }, @@ -1629,7 +1629,7 @@ }, { "cell_type": "markdown", - "id": "a8139423", + "id": "2aba0c7e", "metadata": { "editable": true }, @@ -1639,7 +1639,7 @@ }, { "cell_type": "markdown", - "id": "20390079", + "id": "1dfab70b", "metadata": { "editable": true }, @@ -1651,7 +1651,7 @@ }, { "cell_type": "markdown", - "id": "9e8fc2e5", + "id": "0ff4e530", "metadata": { "editable": true }, @@ -1665,7 +1665,7 @@ }, { "cell_type": "markdown", - "id": "7ff12a50", + "id": "4ef9710b", "metadata": { "editable": true }, @@ -1684,7 +1684,7 @@ }, { "cell_type": "markdown", - "id": "6da7044a", + "id": "b37c800f", "metadata": { "editable": true }, @@ -1694,7 +1694,7 @@ }, { "cell_type": "markdown", - "id": "9b65a19d", + "id": "a8bb360d", "metadata": { "editable": true }, @@ -1706,7 +1706,7 @@ }, { "cell_type": "markdown", - "id": "7d5c7ed6", + "id": "8364ba08", "metadata": { "editable": true }, @@ -1725,7 +1725,7 @@ }, { "cell_type": "markdown", - "id": "38810b88", + "id": "3e5040e3", "metadata": { "editable": true }, @@ -1735,7 +1735,7 @@ }, { "cell_type": "markdown", - "id": "a371bcfc", + "id": "b5096aa2", "metadata": { "editable": true }, @@ -1748,7 +1748,7 @@ }, { "cell_type": "markdown", - "id": "9f305f27", + "id": "16fdafee", "metadata": { "editable": true }, @@ -1758,7 +1758,7 @@ }, { "cell_type": "markdown", - "id": "e385a971", + "id": "10e4e6fe", "metadata": { "editable": true }, @@ -1769,7 +1769,7 @@ }, { "cell_type": "markdown", - "id": "9da2f063", + "id": "604468f7", "metadata": { "editable": true }, @@ -1781,7 +1781,7 @@ }, { "cell_type": "markdown", - "id": "073a76c0", + "id": "96f6b399", "metadata": { "editable": true }, @@ -1791,7 +1791,7 @@ }, { "cell_type": "markdown", - "id": "1fbe78bc", + "id": "43608437", "metadata": { "editable": true }, @@ -1816,7 +1816,7 @@ }, { "cell_type": "markdown", - "id": "664e154e", + "id": "40aaa76b", "metadata": { "editable": true }, @@ -1844,7 +1844,7 @@ }, { "cell_type": "markdown", - "id": "517f499c", + "id": "7658ab1c", "metadata": { "editable": true }, @@ -1870,7 +1870,7 @@ }, { "cell_type": "markdown", - "id": "b063094b", + "id": "23bb1a54", "metadata": { "editable": true }, @@ -1882,7 +1882,7 @@ }, { "cell_type": "markdown", - "id": "b009e439", + "id": "597c8f3c", "metadata": { "editable": true }, @@ -1894,7 +1894,7 @@ }, { "cell_type": "markdown", - "id": "a03f04b3", + "id": "99a7a59e", "metadata": { "editable": true }, @@ -1904,7 +1904,7 @@ }, { "cell_type": "markdown", - "id": "983fa2a5", + "id": "251b9027", "metadata": { "editable": true }, @@ -1916,7 +1916,7 @@ }, { "cell_type": "markdown", - "id": "d89f4b01", + "id": "c9b81034", "metadata": { "editable": true }, @@ -1928,7 +1928,7 @@ }, { "cell_type": "markdown", - "id": "f6493197", + "id": "8bfec184", "metadata": { "editable": true }, @@ -1940,7 +1940,7 @@ }, { "cell_type": "markdown", - "id": "7417e746", + "id": "b8d4568b", "metadata": { "editable": true }, @@ -1950,7 +1950,7 @@ }, { "cell_type": "markdown", - "id": "ae684067", + "id": "73970bf7", "metadata": { "editable": true }, @@ -1962,7 +1962,7 @@ }, { "cell_type": "markdown", - "id": "5094a5a8", + "id": "f28dea6e", "metadata": { "editable": true }, @@ -1972,7 +1972,7 @@ }, { "cell_type": "markdown", - "id": "19810edd", + "id": "ca070216", "metadata": { "editable": true }, @@ -1984,7 +1984,7 @@ }, { "cell_type": "markdown", - "id": "649d5c0c", + "id": "4f91c2de", "metadata": { "editable": true }, @@ -1996,7 +1996,7 @@ }, { "cell_type": "markdown", - "id": "1b684c8d", + "id": "8f8f3863", "metadata": { "editable": true }, @@ -2008,7 +2008,7 @@ }, { "cell_type": "markdown", - "id": "628cdc31", + "id": "9fd62926", "metadata": { "editable": true }, @@ -2018,7 +2018,7 @@ }, { "cell_type": "markdown", - "id": "9e9adf2c", + "id": "c4ad376f", "metadata": { "editable": true }, @@ -2030,7 +2030,7 @@ }, { "cell_type": "markdown", - "id": "1474846d", + "id": "4db27b21", "metadata": { "editable": true }, @@ -2041,7 +2041,7 @@ }, { "cell_type": "markdown", - "id": "1eca1e5c", + "id": "55a2b442", "metadata": { "editable": true }, @@ -2053,7 +2053,7 @@ }, { "cell_type": "markdown", - "id": "19147098", + "id": "4abbd2ad", "metadata": { "editable": true }, @@ -2063,7 +2063,7 @@ }, { "cell_type": "markdown", - "id": "67bf9119", + "id": "1ac87f54", "metadata": { "editable": true }, @@ -2075,7 +2075,7 @@ }, { "cell_type": "markdown", - "id": "604ff323", + "id": "141392b6", "metadata": { "editable": true }, @@ -2085,7 +2085,7 @@ }, { "cell_type": "markdown", - "id": "3b6c39c6", + "id": "c9cb1f95", "metadata": { "editable": true }, @@ -2097,7 +2097,7 @@ }, { "cell_type": "markdown", - "id": "077837d9", + "id": "a59c8aaf", "metadata": { "editable": true }, @@ -2118,7 +2118,7 @@ }, { "cell_type": "markdown", - "id": "02639901", + "id": "bf5b964d", "metadata": { "editable": true }, @@ -2140,7 +2140,7 @@ }, { "cell_type": "markdown", - "id": "3898692a", + "id": "d10460e6", "metadata": { "editable": true }, @@ -2167,7 +2167,7 @@ }, { "cell_type": "markdown", - "id": "91b801ce", + "id": "764b98ce", "metadata": { "editable": true }, @@ -2184,7 +2184,7 @@ }, { "cell_type": "markdown", - "id": "fee3f920", + "id": "650b2586", "metadata": { "editable": true }, @@ -2196,7 +2196,7 @@ }, { "cell_type": "markdown", - "id": "2c75a68c", + "id": "1349d83b", "metadata": { "editable": true }, @@ -2216,7 +2216,7 @@ }, { "cell_type": "markdown", - "id": "61fcad7e", + "id": "96406bf0", "metadata": { "editable": true }, @@ -2245,7 +2245,7 @@ }, { "cell_type": "markdown", - "id": "ab4441a1", + "id": "13cc0146", "metadata": { "editable": true }, @@ -2259,7 +2259,7 @@ }, { "cell_type": "markdown", - "id": "b062353c", + "id": "53b94748", "metadata": { "editable": true }, @@ -2276,42 +2276,39 @@ }, { "cell_type": "markdown", - "id": "aaef8a3d", + "id": "41d0322a", "metadata": { "editable": true }, "source": [ "$$\n", - "{\\cal C}(\\hat{W}) = \\frac{1}{2}\\sum_{i=1}^n\\left(y_i - t_i\\right)^2,\n", + "{\\cal C}(\\boldsymbol{\\Theta}) = \\frac{1}{2}\\sum_{i=1}^n\\left(y_i - \\tilde{y}_i\\right)^2,\n", "$$" ] }, { "cell_type": "markdown", - "id": "0522096e", + "id": "f5c84939", "metadata": { "editable": true }, "source": [ - "where the $t_i$s are our $n$ targets (the values we want to\n", + "where the $y_i$s are our $n$ targets (the values we want to\n", "reproduce), while the outputs of the network after having propagated\n", - "all inputs $\\hat{x}$ are given by $y_i$. Below we will demonstrate\n", - "how the basic equations arising from the back propagation algorithm\n", - "can be modified in order to study classification problems with $K$\n", - "classes." + "all inputs $\\boldsymbol{x}$ are given by $\\boldsymbol{\\tilde{y}}_i$." ] }, { "cell_type": "markdown", - "id": "5c26c834", + "id": "6b755763", "metadata": { "editable": true }, "source": [ "## Definitions\n", "\n", - "With our definition of the targets $\\hat{t}$, the outputs of the\n", - "network $\\hat{y}$ and the inputs $\\hat{x}$ we\n", + "With our definition of the targets $\\boldsymbol{y}$, the outputs of the\n", + "network $\\boldsymbol{\\tilde{y}}$ and the inputs $\\boldsymbol{x}$ we\n", "define now the activation $z_j^l$ of node/neuron/unit $j$ of the\n", "$l$-th layer as a function of the bias, the weights which add up from\n", "the previous layer $l-1$ and the forward passes/outputs\n", @@ -2320,7 +2317,7 @@ }, { "cell_type": "markdown", - "id": "5acfb987", + "id": "b7ae4c93", "metadata": { "editable": true }, @@ -2332,7 +2329,7 @@ }, { "cell_type": "markdown", - "id": "a09a55ea", + "id": "95b179ce", "metadata": { "editable": true }, @@ -2345,7 +2342,7 @@ }, { "cell_type": "markdown", - "id": "b2e5b321", + "id": "7020d8b0", "metadata": { "editable": true }, @@ -2357,13 +2354,15 @@ }, { "cell_type": "markdown", - "id": "d72fef8d", + "id": "8366fb38", "metadata": { "editable": true }, "source": [ - "With the activation values $\\hat{z}^l$ we can in turn define the\n", - "output of layer $l$ as $\\hat{a}^l = f(\\hat{z}^l)$ where $f$ is our\n", + "## Inputs to tje activation function\n", + "\n", + "With the activation values $\\boldsymbol{z}^l$ we can in turn define the\n", + "output of layer $l$ as $\\boldsymbol{a}^l = f(\\boldsymbol{z}^l)$ where $f$ is our\n", "activation function. In the examples here we will use the sigmoid\n", "function discussed in our logistic regression lectures. We will also use the same activation function $f$ for all layers\n", "and their nodes. It means we have" @@ -2371,7 +2370,7 @@ }, { "cell_type": "markdown", - "id": "985fa159", + "id": "d740a7bf", "metadata": { "editable": true }, @@ -2383,7 +2382,7 @@ }, { "cell_type": "markdown", - "id": "f604e895", + "id": "1d2ebbd5", "metadata": { "editable": true }, @@ -2395,7 +2394,7 @@ }, { "cell_type": "markdown", - "id": "30552830", + "id": "ec6341d5", "metadata": { "editable": true }, @@ -2407,7 +2406,7 @@ }, { "cell_type": "markdown", - "id": "dedb85bb", + "id": "b6bdbe01", "metadata": { "editable": true }, @@ -2417,7 +2416,7 @@ }, { "cell_type": "markdown", - "id": "e2b0f10a", + "id": "cd92ba61", "metadata": { "editable": true }, @@ -2429,7 +2428,7 @@ }, { "cell_type": "markdown", - "id": "90b643f0", + "id": "0f4860e8", "metadata": { "editable": true }, @@ -2439,7 +2438,7 @@ }, { "cell_type": "markdown", - "id": "4f4b11a3", + "id": "4c3a18b3", "metadata": { "editable": true }, @@ -2451,7 +2450,7 @@ }, { "cell_type": "markdown", - "id": "02ec7cbb", + "id": "4ece12a5", "metadata": { "editable": true }, @@ -2465,19 +2464,19 @@ }, { "cell_type": "markdown", - "id": "2078e934", + "id": "4104e482", "metadata": { "editable": true }, "source": [ "$$\n", - "{\\cal C}(\\hat{W^L}) = \\frac{1}{2}\\sum_{i=1}^n\\left(y_i - t_i\\right)^2=\\frac{1}{2}\\sum_{i=1}^n\\left(a_i^L - t_i\\right)^2,\n", + "{\\cal C}(\\boldsymbol{\\Theta}^L) = \\frac{1}{2}\\sum_{i=1}^n\\left(y_i - \\tilde{y}_i\\right)^2=\\frac{1}{2}\\sum_{i=1}^n\\left(a_i^L - y_i\\right)^2,\n", "$$" ] }, { "cell_type": "markdown", - "id": "5d6fe1a6", + "id": "4fa9192d", "metadata": { "editable": true }, @@ -2487,19 +2486,19 @@ }, { "cell_type": "markdown", - "id": "b1bfd605", + "id": "c3d0038b", "metadata": { "editable": true }, "source": [ "$$\n", - "\\frac{\\partial{\\cal C}(\\hat{W^L})}{\\partial w_{jk}^L} = \\left(a_j^L - t_j\\right)\\frac{\\partial a_j^L}{\\partial w_{jk}^{L}},\n", + "\\frac{\\partial{\\cal C}(\\boldsymbol{\\Theta}^L)}{\\partial w_{jk}^L} = \\left(a_j^L - y_j\\right)\\frac{\\partial a_j^L}{\\partial w_{jk}^{L}},\n", "$$" ] }, { "cell_type": "markdown", - "id": "b03519e9", + "id": "c2f5dcfa", "metadata": { "editable": true }, @@ -2509,19 +2508,19 @@ }, { "cell_type": "markdown", - "id": "5348b212", + "id": "e49090ce", "metadata": { "editable": true }, "source": [ "$$\n", - "\\frac{\\partial a_j^L}{\\partial w_{jk}^{L}} = \\frac{\\partial a_j^L}{\\partial z_{j}^{L}}\\frac{\\partial z_j^L}{\\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1},\n", + "\\frac{\\partial a_j^L}{\\partial w_{jk}^{L}} = \\frac{\\partial a_j^L}{\\partial z_{j}^{L}}\\frac{\\partial z_j^L}{\\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}.\n", "$$" ] }, { "cell_type": "markdown", - "id": "7c3fd36c", + "id": "344365f7", "metadata": { "editable": true }, @@ -2533,19 +2532,19 @@ }, { "cell_type": "markdown", - "id": "a86efd84", + "id": "9145df31", "metadata": { "editable": true }, "source": [ "$$\n", - "\\frac{\\partial{\\cal C}(\\hat{W^L})}{\\partial w_{jk}^L} = \\left(a_j^L - t_j\\right)a_j^L(1-a_j^L)a_k^{L-1},\n", + "\\frac{\\partial{\\cal C}((\\boldsymbol{\\Theta}^L)}{\\partial w_{jk}^L} = \\left(a_j^L - y_j\\right)a_j^L(1-a_j^L)a_k^{L-1},\n", "$$" ] }, { "cell_type": "markdown", - "id": "6039061e", + "id": "7af5f61c", "metadata": { "editable": true }, @@ -2555,19 +2554,19 @@ }, { "cell_type": "markdown", - "id": "3cd929b7", + "id": "908bec69", "metadata": { "editable": true }, "source": [ "$$\n", - "\\delta_j^L = a_j^L(1-a_j^L)\\left(a_j^L - t_j\\right) = f'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)},\n", + "\\delta_j^L = a_j^L(1-a_j^L)\\left(a_j^L - y_j\\right) = f'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)},\n", "$$" ] }, { "cell_type": "markdown", - "id": "19bc6c08", + "id": "0277e537", "metadata": { "editable": true }, @@ -2577,23 +2576,25 @@ }, { "cell_type": "markdown", - "id": "567909ed", + "id": "5f5eb1a8", "metadata": { "editable": true }, "source": [ "$$\n", - "\\hat{\\delta}^L = f'(\\hat{z}^L)\\circ\\frac{\\partial {\\cal C}}{\\partial (\\hat{a}^L)}.\n", + "\\boldsymbol{\\delta}^L = f'(\\hat{z}^L)\\circ\\frac{\\partial {\\cal C}}{\\partial (\\boldsymbol{a}^L)}.\n", "$$" ] }, { "cell_type": "markdown", - "id": "4af79549", + "id": "b3cfe16b", "metadata": { "editable": true }, "source": [ + "## Analyzing the last results\n", + "\n", "This is an important expression. The second term on the right handside\n", "measures how fast the cost function is changing as a function of the $j$th\n", "output activation. If, for example, the cost function doesn't depend\n", @@ -2605,7 +2606,7 @@ }, { "cell_type": "markdown", - "id": "c6cfb413", + "id": "1b750f1d", "metadata": { "editable": true }, @@ -2623,7 +2624,7 @@ }, { "cell_type": "markdown", - "id": "0edb4ed3", + "id": "52df8c1e", "metadata": { "editable": true }, @@ -2635,7 +2636,7 @@ }, { "cell_type": "markdown", - "id": "ff4a9c6e", + "id": "dc70df7c", "metadata": { "editable": true }, @@ -2645,19 +2646,19 @@ }, { "cell_type": "markdown", - "id": "bbf3a975", + "id": "94070518", "metadata": { "editable": true }, "source": [ "$$\n", - "\\frac{\\partial{\\cal C}(\\hat{W^L})}{\\partial w_{jk}^L} = \\delta_j^La_k^{L-1}.\n", + "\\frac{\\partial{\\cal C}}{\\partial w_{jk}^L} = \\delta_j^La_k^{L-1}.\n", "$$" ] }, { "cell_type": "markdown", - "id": "bba3716b", + "id": "a8006c9c", "metadata": { "editable": true }, @@ -2669,7 +2670,7 @@ }, { "cell_type": "markdown", - "id": "b973d14f", + "id": "fb90872d", "metadata": { "editable": true }, @@ -2681,7 +2682,7 @@ }, { "cell_type": "markdown", - "id": "c08afe8e", + "id": "048e84fd", "metadata": { "editable": true }, @@ -2691,7 +2692,7 @@ }, { "cell_type": "markdown", - "id": "198a2d36", + "id": "cdd867fd", "metadata": { "editable": true }, @@ -2703,7 +2704,7 @@ }, { "cell_type": "markdown", - "id": "8d58a7ea", + "id": "88415bff", "metadata": { "editable": true }, @@ -2713,21 +2714,19 @@ }, { "cell_type": "markdown", - "id": "ce9c4ffb", + "id": "e748189f", "metadata": { "editable": true }, "source": [ "## Bringing it together\n", "\n", - "We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are\n", - "\n", - "**The starting equations.**" + "We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are" ] }, { "cell_type": "markdown", - "id": "6633f82a", + "id": "7a40af52", "metadata": { "editable": true }, @@ -2745,7 +2744,7 @@ }, { "cell_type": "markdown", - "id": "ee2956f9", + "id": "8cf04e16", "metadata": { "editable": true }, @@ -2755,7 +2754,7 @@ }, { "cell_type": "markdown", - "id": "888a5c5e", + "id": "e1c592fd", "metadata": { "editable": true }, @@ -2773,7 +2772,7 @@ }, { "cell_type": "markdown", - "id": "770ca792", + "id": "e5f442c2", "metadata": { "editable": true }, @@ -2783,7 +2782,7 @@ }, { "cell_type": "markdown", - "id": "6450f307", + "id": "5c5b0b75", "metadata": { "editable": true }, @@ -2801,7 +2800,7 @@ }, { "cell_type": "markdown", - "id": "0b0a6b2f", + "id": "2a46a89c", "metadata": { "editable": true }, @@ -2813,7 +2812,7 @@ }, { "cell_type": "markdown", - "id": "3c82c708", + "id": "1e8f5355", "metadata": { "editable": true }, @@ -2825,17 +2824,29 @@ }, { "cell_type": "markdown", - "id": "7859a3cf", + "id": "092c449a", + "metadata": { + "editable": true + }, + "source": [ + "We want to express this in terms of the equations for layer $l+1$." + ] + }, + { + "cell_type": "markdown", + "id": "cfc2e20b", "metadata": { "editable": true }, "source": [ - "We want to express this in terms of the equations for layer $l+1$. Using the chain rule and summing over all $k$ entries we have" + "## Using the chain rule and summing over all $k$ entries\n", + "\n", + "We obtain" ] }, { "cell_type": "markdown", - "id": "ce1ecc95", + "id": "6538d6f5", "metadata": { "editable": true }, @@ -2847,7 +2858,7 @@ }, { "cell_type": "markdown", - "id": "08817904", + "id": "e8e0f5dd", "metadata": { "editable": true }, @@ -2857,7 +2868,7 @@ }, { "cell_type": "markdown", - "id": "5a18714a", + "id": "11160d18", "metadata": { "editable": true }, @@ -2869,7 +2880,7 @@ }, { "cell_type": "markdown", - "id": "5bcb264f", + "id": "b30fdbce", "metadata": { "editable": true }, @@ -2879,7 +2890,7 @@ }, { "cell_type": "markdown", - "id": "a1ab6d71", + "id": "1d6a73e3", "metadata": { "editable": true }, @@ -2891,7 +2902,7 @@ }, { "cell_type": "markdown", - "id": "74ac928f", + "id": "ddbfba54", "metadata": { "editable": true }, @@ -2903,20 +2914,20 @@ }, { "cell_type": "markdown", - "id": "c1d9a800", + "id": "40e6bbd9", "metadata": { "editable": true }, "source": [ - "## Setting up the Back propagation algorithm\n", + "## Setting up the back propagation algorithm\n", "\n", "The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.\n", "\n", - "First, we set up the input data $\\hat{x}$ and the activations\n", + "**First**, we set up the input data $\\hat{x}$ and the activations\n", "$\\hat{z}_1$ of the input layer and compute the activation function and\n", "the pertinent outputs $\\hat{a}^1$.\n", "\n", - "Secondly, we perform then the feed forward till we reach the output\n", + "**Secondly**, we perform then the feed forward till we reach the output\n", "layer and compute all $\\hat{z}_l$ of the input layer and compute the\n", "activation function and the pertinent outputs $\\hat{a}^l$ for\n", "$l=2,3,\\dots,L$." @@ -2924,19 +2935,19 @@ }, { "cell_type": "markdown", - "id": "dd14afca", + "id": "c169304e", "metadata": { "editable": true }, "source": [ - "## Setting up the Back propagation algorithm, part 2\n", + "## Setting up the back propagation algorithm, part 2\n", "\n", "Thereafter we compute the ouput error $\\hat{\\delta}^L$ by computing all" ] }, { "cell_type": "markdown", - "id": "f5753db9", + "id": "12ee2fcb", "metadata": { "editable": true }, @@ -2948,7 +2959,7 @@ }, { "cell_type": "markdown", - "id": "ad5f3e2c", + "id": "ca5a7e18", "metadata": { "editable": true }, @@ -2958,7 +2969,7 @@ }, { "cell_type": "markdown", - "id": "dcfa414d", + "id": "47aee3e4", "metadata": { "editable": true }, @@ -2970,19 +2981,21 @@ }, { "cell_type": "markdown", - "id": "a16b5fcf", + "id": "d56cb6ea", "metadata": { "editable": true }, "source": [ "## Setting up the Back propagation algorithm, part 3\n", "\n", - "Finally, we update the weights and the biases using gradient descent for each $l=L-1,L-2,\\dots,2$ and update the weights and biases according to the rules" + "Finally, we update the weights and the biases using gradient descent\n", + "for each $l=L-1,L-2,\\dots,1$ and update the weights and biases\n", + "according to the rules" ] }, { "cell_type": "markdown", - "id": "2ca1a8ee", + "id": "8849613b", "metadata": { "editable": true }, @@ -2994,7 +3007,7 @@ }, { "cell_type": "markdown", - "id": "fe92be6a", + "id": "a1b74037", "metadata": { "editable": true }, @@ -3006,87 +3019,51 @@ }, { "cell_type": "markdown", - "id": "2a6e532a", + "id": "900569e4", "metadata": { "editable": true }, "source": [ - "The parameter $\\eta$ is the learning parameter discussed in connection with the gradient descent methods.\n", - "Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training." + "with $\\eta$ being the learning rate." ] }, { "cell_type": "markdown", - "id": "4fa8cee9", - "metadata": { - "editable": true - }, - "source": [ - "## Setting up the Back propagation algorithm, final considerations\n", - "\n", - "The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm.\n", - "\n", - "First, we set up the input data $\\boldsymbol{x}$ and the activations\n", - "$\\boldsymbol{z}_1$ of the input layer and compute the activation function and\n", - "the pertinent outputs $\\boldsymbol{a}^1$.\n", - "\n", - "Secondly, we perform then the feed forward till we reach the output\n", - "layer and compute all $\\boldsymbol{z}_l$ of the input layer and compute the\n", - "activation function and the pertinent outputs $\\boldsymbol{a}^l$ for\n", - "$l=2,3,\\dots,L$.\n", - "\n", - "Thereafter we compute the ouput error $\\boldsymbol{\\delta}^L$ by computing all" - ] - }, - { - "cell_type": "markdown", - "id": "203c265b", - "metadata": { - "editable": true - }, - "source": [ - "$$\n", - "\\delta_j^L = f'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)}.\n", - "$$" - ] - }, - { - "cell_type": "markdown", - "id": "2fb48f44", + "id": "26dac645", "metadata": { "editable": true }, "source": [ "## Updating the gradients\n", "\n", - "Then we compute the back propagate error for each $l=L-1,L-2,\\dots,2$ as" + "With the back propagate error for each $l=L-1,L-2,\\dots,1$ as" ] }, { "cell_type": "markdown", - "id": "bc3bc72b", + "id": "53c4e37d", "metadata": { "editable": true }, "source": [ "$$\n", - "\\delta_j^l = \\sum_k \\delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l).\n", + "\\delta_j^l = \\sum_k \\delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l),\n", "$$" ] }, { "cell_type": "markdown", - "id": "ea6c8276", + "id": "dce1efb3", "metadata": { "editable": true }, "source": [ - "Finally, we update the weights and the biases using gradient descent for each $l=L-1,L-2,\\dots,2$ and update the weights and biases according to the rules" + "we update the weights and the biases using gradient descent for each $l=L-1,L-2,\\dots,1$ and update the weights and biases according to the rules" ] }, { "cell_type": "markdown", - "id": "65221b07", + "id": "f7fd0c67", "metadata": { "editable": true }, @@ -3098,7 +3075,7 @@ }, { "cell_type": "markdown", - "id": "01434784", + "id": "1ee56f72", "metadata": { "editable": true }, @@ -3107,17 +3084,6 @@ "b_j^l \\leftarrow b_j^l-\\eta \\frac{\\partial {\\cal C}}{\\partial b_j^l}=b_j^l-\\eta \\delta_j^l,\n", "$$" ] - }, - { - "cell_type": "markdown", - "id": "61c6bb9f", - "metadata": { - "editable": true - }, - "source": [ - "The parameter $\\eta$ is the learning parameter discussed in connection with the gradient descent methods.\n", - "Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training." - ] } ], "metadata": {}, diff --git a/doc/pub/week1/pdf/week1.pdf b/doc/pub/week1/pdf/week1.pdf index a1cfaa57ccdb887a723713927acb43cb1b43a839..79d8103e4358964f1a47f8d3c2d24da8cee2116f 100644 GIT binary patch delta 78473 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

    Q;s!#ZAgu}Ev!J@?*-Eh{DJ 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 LDk@1ODdhhJA$-!r delta 80134 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 KS}7H2r2h*e+z=`N diff --git a/doc/src/week1/week1.do.txt b/doc/src/week1/week1.do.txt index e52f6d59..6c26deea 100644 --- a/doc/src/week1/week1.do.txt +++ b/doc/src/week1/week1.do.txt @@ -1092,22 +1092,19 @@ and define our cost function as !bt \[ -{\cal C}(\hat{W}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2, +{\cal C}(\bm{\Theta}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2, \] !et -where the $t_i$s are our $n$ targets (the values we want to +where the $y_i$s are our $n$ targets (the values we want to reproduce), while the outputs of the network after having propagated -all inputs $\hat{x}$ are given by $y_i$. Below we will demonstrate -how the basic equations arising from the back propagation algorithm -can be modified in order to study classification problems with $K$ -classes. +all inputs $\bm{x}$ are given by $\bm{\tilde{y}}_i$. !split ===== Definitions ===== -With our definition of the targets $\hat{t}$, the outputs of the -network $\hat{y}$ and the inputs $\hat{x}$ we +With our definition of the targets $\bm{y}$, the outputs of the +network $\bm{\tilde{y}}$ and the inputs $\bm{x}$ we define now the activation $z_j^l$ of node/neuron/unit $j$ of the $l$-th layer as a function of the bias, the weights which add up from the previous layer $l-1$ and the forward passes/outputs @@ -1131,8 +1128,11 @@ compact form as the matrix-vector products we discussed earlier, \] !et -With the activation values $\hat{z}^l$ we can in turn define the -output of layer $l$ as $\hat{a}^l = f(\hat{z}^l)$ where $f$ is our +!split +===== Inputs to tje activation function ===== + +With the activation values $\bm{z}^l$ we can in turn define the +output of layer $l$ as $\bm{a}^l = f(\bm{z}^l)$ where $f$ is our activation function. In the examples here we will use the sigmoid function discussed in our logistic regression lectures. We will also use the same activation function $f$ for all layers and their nodes. It means we have @@ -1176,20 +1176,20 @@ With these definitions we can now compute the derivative of the cost function in Let us specialize to the output layer $l=L$. Our cost function is !bt \[ -{\cal C}(\hat{W^L}) = \frac{1}{2}\sum_{i=1}^n\left(y_i - t_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - t_i\right)^2, +{\cal C}(\bm{\Theta}^L) = \frac{1}{2}\sum_{i=1}^n\left(y_i - \tilde{y}_i\right)^2=\frac{1}{2}\sum_{i=1}^n\left(a_i^L - y_i\right)^2, \] !et The derivative of this function with respect to the weights is !bt \[ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, +\frac{\partial{\cal C}(\bm{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)\frac{\partial a_j^L}{\partial w_{jk}^{L}}, \] !et The last partial derivative can easily be computed and reads (by applying the chain rule) !bt \[ -\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial a_j^L}{\partial w_{jk}^{L}} = \frac{\partial a_j^L}{\partial z_{j}^{L}}\frac{\partial z_j^L}{\partial w_{jk}^{L}}=a_j^L(1-a_j^L)a_k^{L-1}. \] !et @@ -1201,23 +1201,26 @@ The last partial derivative can easily be computed and reads (by applying the ch We have thus !bt \[ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \left(a_j^L - t_j\right)a_j^L(1-a_j^L)a_k^{L-1}, +\frac{\partial{\cal C}((\bm{\Theta}^L)}{\partial w_{jk}^L} = \left(a_j^L - y_j\right)a_j^L(1-a_j^L)a_k^{L-1}, \] !et Defining !bt \[ -\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - t_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, +\delta_j^L = a_j^L(1-a_j^L)\left(a_j^L - y_j\right) = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}, \] !et and using the Hadamard product of two vectors we can write this as !bt \[ -\hat{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\hat{a}^L)}. +\bm{\delta}^L = f'(\hat{z}^L)\circ\frac{\partial {\cal C}}{\partial (\bm{a}^L)}. \] !et +!split +===== Analyzing the last results ===== + This is an important expression. The second term on the right handside measures how fast the cost function is changing as a function of the $j$th output activation. If, for example, the cost function doesn't depend @@ -1247,7 +1250,7 @@ trouble in calculating With the definition of $\delta_j^L$ we have a more compact definition of the derivative of the cost function in terms of the weights, namely !bt \[ -\frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. +\frac{\partial{\cal C}}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}. \] !et @@ -1274,8 +1277,6 @@ That is, the error $\delta_j^L$ is exactly equal to the rate of change of the co We have now three equations that are essential for the computations of the derivatives of the cost function at the output layer. These equations are needed to start the algorithm and they are -!bblock The starting equations - !bt \begin{equation} \frac{\partial{\cal C}(\hat{W^L})}{\partial w_{jk}^L} = \delta_j^La_k^{L-1}, @@ -1294,8 +1295,6 @@ and \delta_j^L = \frac{\partial {\cal C}}{\partial b_j^L}, \end{equation} !et -!eblock - !split @@ -1307,8 +1306,12 @@ We have that (replacing $L$ with a general layer $l$) \delta_j^l =\frac{\partial {\cal C}}{\partial z_j^l}. \] !et -We want to express this in terms of the equations for layer $l+1$. Using the chain rule and summing over all $k$ entries we have +We want to express this in terms of the equations for layer $l+1$. +!split +===== Using the chain rule and summing over all $k$ entries ===== + +We obtain !bt \[ \delta_j^l =\sum_k \frac{\partial {\cal C}}{\partial z_k^{l+1}}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}=\sum_k \delta_k^{l+1}\frac{\partial z_k^{l+1}}{\partial z_j^{l}}, @@ -1331,53 +1334,46 @@ This is our final equation. We are now ready to set up the algorithm for back propagation and learning the weights and biases. !split -===== Setting up the Back propagation algorithm ===== - - +===== Setting up the back propagation algorithm ===== The four equations provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm. -!bblock -First, we set up the input data $\hat{x}$ and the activations +_First_, we set up the input data $\hat{x}$ and the activations $\hat{z}_1$ of the input layer and compute the activation function and the pertinent outputs $\hat{a}^1$. -!eblock -!bblock -Secondly, we perform then the feed forward till we reach the output +_Secondly_, we perform then the feed forward till we reach the output layer and compute all $\hat{z}_l$ of the input layer and compute the activation function and the pertinent outputs $\hat{a}^l$ for $l=2,3,\dots,L$. -!eblock + !split -===== Setting up the Back propagation algorithm, part 2 ===== +===== Setting up the back propagation algorithm, part 2 ===== -!bblock Thereafter we compute the ouput error $\hat{\delta}^L$ by computing all !bt \[ \delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. \] !et -!eblock -!bblock Then we compute the back propagate error for each $l=L-1,L-2,\dots,2$ as !bt \[ \delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). \] !et -!eblock !split ===== Setting up the Back propagation algorithm, part 3 ===== -!bblock -Finally, we update the weights and the biases using gradient descent for each $l=L-1,L-2,\dots,2$ and update the weights and biases according to the rules +Finally, we update the weights and the biases using gradient descent +for each $l=L-1,L-2,\dots,1$ and update the weights and biases +according to the rules + !bt \[ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, @@ -1389,56 +1385,18 @@ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, \] !et -!eblock - -The parameter $\eta$ is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training. - - -!split -===== Setting up the Back propagation algorithm, final considerations ===== - - - -The four equations above provide us with a way of computing the gradient of the cost function. Let us write this out in the form of an algorithm. - -!bblock -First, we set up the input data $\bm{x}$ and the activations -$\bm{z}_1$ of the input layer and compute the activation function and -the pertinent outputs $\bm{a}^1$. -!eblock - -!bblock -Secondly, we perform then the feed forward till we reach the output -layer and compute all $\bm{z}_l$ of the input layer and compute the -activation function and the pertinent outputs $\bm{a}^l$ for -$l=2,3,\dots,L$. -!eblock - -!bblock -Thereafter we compute the ouput error $\bm{\delta}^L$ by computing all -!bt -\[ -\delta_j^L = f'(z_j^L)\frac{\partial {\cal C}}{\partial (a_j^L)}. -\] -!et -!eblock +with $\eta$ being the learning rate. !split ===== Updating the gradients ===== - -!bblock -Then we compute the back propagate error for each $l=L-1,L-2,\dots,2$ as +With the back propagate error for each $l=L-1,L-2,\dots,1$ as !bt \[ -\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l). +\delta_j^l = \sum_k \delta_k^{l+1}w_{kj}^{l+1}f'(z_j^l), \] !et -!eblock - -!bblock -Finally, we update the weights and the biases using gradient descent for each $l=L-1,L-2,\dots,2$ and update the weights and biases according to the rules +we update the weights and the biases using gradient descent for each $l=L-1,L-2,\dots,1$ and update the weights and biases according to the rules !bt \[ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, @@ -1450,8 +1408,4 @@ w_{jk}^l\leftarrow = w_{jk}^l- \eta \delta_j^la_k^{l-1}, b_j^l \leftarrow b_j^l-\eta \frac{\partial {\cal C}}{\partial b_j^l}=b_j^l-\eta \delta_j^l, \] !et -!eblock - -The parameter $\eta$ is the learning parameter discussed in connection with the gradient descent methods. -Here it is convenient to use stochastic gradient descent (see the examples below) with mini-batches with an outer loop that steps through multiple epochs of training.