From a0aa01c2b0d540181f92bef893f4d44b750a39e9 Mon Sep 17 00:00:00 2001 From: Morten Hjorth-Jensen Date: Fri, 2 Feb 2024 05:48:49 +0100 Subject: [PATCH] update --- doc/pub/week3/html/week3-bs.html | 134 +- doc/pub/week3/html/week3-reveal.html | 126 +- doc/pub/week3/html/week3-solarized.html | 126 +- doc/pub/week3/html/week3.html | 126 +- doc/pub/week3/ipynb/ipynb-week3-src.tar.gz | Bin 51145 -> 51145 bytes doc/pub/week3/ipynb/week3.ipynb | 820 +-- doc/pub/week3/pdf/week3.pdf | Bin 529475 -> 535846 bytes .../.ipynb_checkpoints/week3-checkpoint.ipynb | 4405 +++++++++++++++++ doc/src/week3/figures/simple.pdf | Bin 0 -> 1814058 bytes doc/src/week3/week3.do.txt | 47 +- 10 files changed, 5461 insertions(+), 323 deletions(-) create mode 100644 doc/src/week3/.ipynb_checkpoints/week3-checkpoint.ipynb create mode 100644 doc/src/week3/figures/simple.pdf diff --git a/doc/pub/week3/html/week3-bs.html b/doc/pub/week3/html/week3-bs.html index b84230e2..6fc30599 100644 --- a/doc/pub/week3/html/week3-bs.html +++ b/doc/pub/week3/html/week3-bs.html @@ -153,6 +153,10 @@ None, 'new-expression-for-the-derivative'), ('Final derivatives', 2, None, 'final-derivatives'), + ('In general not this simple', + 2, + None, + 'in-general-not-this-simple'), ('Automatic differentiation', 2, None, @@ -170,6 +174,22 @@ ('The derivatives', 2, None, 'the-derivatives'), ('Important observations', 2, None, 'important-observations'), ('The training', 2, None, 'the-training'), + ('Code examples for the simple models', + 2, + None, + 'code-examples-for-the-simple-models'), + ('Simple neural network and the back propagation equations', + 2, + None, + 'simple-neural-network-and-the-back-propagation-equations'), + ('The ouput layer', 2, None, 'the-ouput-layer'), + ('Compact expressions', 2, None, 'compact-expressions'), + ('For the output layer', 2, None, 'for-the-output-layer'), + ('Explicit derivatives', 2, None, 'explicit-derivatives'), + ('Setting up the equations for the optimization', + 2, + None, + 'setting-up-the-equations-for-the-optimization'), ('Getting serious, the back propagation equations for a neural ' 'network', 2, @@ -358,6 +378,7 @@
  • Defining intermediate operations
  • New expression for the derivative
  • Final derivatives
  • +
  • In general not this simple
  • Automatic differentiation
  • Chain rule
  • First network example, simple percepetron with one input
  • @@ -366,6 +387,13 @@
  • The derivatives
  • Important observations
  • The training
  • +
  • Code examples for the simple models
  • +
  • Simple neural network and the back propagation equations
  • +
  • The ouput layer
  • +
  • Compact expressions
  • +
  • For the output layer
  • +
  • Explicit derivatives
  • +
  • Setting up the equations for the optimization
  • Getting serious, the back propagation equations for a neural network
  • Analyzing the last results
  • More considerations
  • @@ -1141,12 +1169,21 @@

    Final derivatives

    and requires only three operations if we can reuse all intermediate variables.

    + +

    In general not this simple

    + +

    In general, see the generalization below, unless we can obtain simple +analytical expressions which we can simplify further, the final +implementation of automatic differentiation involves repeated +calculations (and thereby operations) of derivatives of elementary +functions. +

    +

    Automatic differentiation

    We can make this example more formal. Automatic differentiation is a -formalization of the previous example (see graph from whiteboard -notes). +formalization of the previous example (see graph).

    We define \( \boldsymbol{x}\in x_1,\dots, x_l \) input variables to a given function \( f(\boldsymbol{x}) \) and \( x_{l+1},\dots, x_L \) intermediate variables.

    @@ -1188,7 +1225,12 @@

    Chain rule

    First network example, simple percepetron with one input

    -

    As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable \( x \) and one target value \( y \). We define an activation function \( \sigma_1 \) which takes as input

    +

    As yet another example we define now a simple perceptron model with +all quantities given by scalars. We consider only one input variable +\( x \) and one target value \( y \). We define an activation function +\( \sigma_1 \) which takes as input +

    + $$ z_1 = w_1x+b_1, $$ @@ -1237,7 +1279,7 @@

    Optimizing the parameters

    Adding a hidden layer

    -

    We change our simple model to a (see graph on whiteboard notes) +

    We change our simple model to (see graph) network with just one hidden layer but with scalar variables only.

    @@ -1304,7 +1346,7 @@

    The training

    The training of the parameters is done through various gradient descent approximations with

    $$ -w_{i}\leftarrow = w_{i}- \eta \delta_i a_{i-1}, +w_{i}\leftarrow w_{i}- \eta \delta_i a_{i-1}, $$

    and

    @@ -1318,6 +1360,88 @@

    The training

    For the first hidden layer \( a_{i-1}=a_0=x \) for this simple model.

    + +

    Code examples for the simple models

    + + +

    Simple neural network and the back propagation equations

    + +

    Let us now try to increase our level of ambitions and attempt to set +up the equations for a neural network with two input nodes, one hidden +layer with two hidden nodes and one utput layers. +

    + +

    We need to define the following parameters and variables with the input layer (layer \( (0) \)) +where we label the nodes \( x_0 \) and \( x_1 \) +

    +$$ +x_0 = a_0^{(0)} \wedge x_1 = a_1^{(0)}. +$$ + +

    The hidden layer (layer \( (1) \)) has nodes which yield the outputs \( a_0^{(1)} \) and \( a_1^{(1)} \)) with weight \( \boldsymbol{w} \) and bias \( \boldsymbol{b} \) parameters

    +$$ +w_{ij}^{(1)}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\right\} \wedge b^{(1)}=\left\{b_0^{(1)},b_1^{(1)}\right\}. +$$ + + + +

    The ouput layer

    + +

    Finally, we have the ouput layer given by layer label \( (2) \) with output \( a^{(2)} \) and weights and biases to be determined

    +$$ +w_{i}^{(2)}=\left\{w_{0}^{(2)},w_{1}^{(2)}\right\} \wedge b^{(2)}. +$$ + +

    Our output is \( \tilde{y}=a^{(2)} \) and we define a generic cost function \( C(a^{(2)},y;\boldsymbol{\Theta}) \) where \( y \) is the target value (a scalar here). +The parameters we need to optimize are given by +

    +$$ +\boldsymbol{\Theta}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\right\}. +$$ + + + +

    Compact expressions

    + +

    We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions. +The inputs to the first hidden layer are +

    +$$ +\begin{bmatrix}z_0^{(1)} \\ z_1^{(1)} \end{bmatrix}=\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\ w_{10}^{(1)} &w_{11}^{(1)} \end{bmatrix}\begin{bmatrix}a_0^{(0)} \\ a_1^{(0)} \end{bmatrix}+\begin{bmatrix}b_0^{(1)} \\ b_1^{(1)} \end{bmatrix}, +$$ + +

    with outputs

    +$$ +\begin{bmatrix}a_0^{(1)} \\ a_1^{(1)} \end{bmatrix}=\begin{bmatrix}\sigma^{(1)}(z_0^{(1)}) \\ \sigma^{(1)}(z_1^{(1)}) \end{bmatrix}. +$$ + + + +

    For the output layer

    + +

    For the final output layer we have the inputs to the final activation function

    +$$ +z^{(2)} = w_{0}^{(2)}a_0^{(1)} +w_{1}^{(2)}a_1^{(1)}+b^{(2)}, +$$ + +

    resulting in the output

    +$$ +a^{(2)}=\sigma^{(2)}(z^{(2)}). +$$ + + + +

    Explicit derivatives

    + +

    In total we have nine parameters which we need to train. +Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output layer we have then +

    + + +

    Setting up the equations for the optimization

    + +

    For th

    +

    Getting serious, the back propagation equations for a neural network

    diff --git a/doc/pub/week3/html/week3-reveal.html b/doc/pub/week3/html/week3-reveal.html index f8cd5fc0..5c9865c7 100644 --- a/doc/pub/week3/html/week3-reveal.html +++ b/doc/pub/week3/html/week3-reveal.html @@ -1009,12 +1009,22 @@

    Final derivatives

    and requires only three operations if we can reuse all intermediate variables.

    +
    +

    In general not this simple

    + +

    In general, see the generalization below, unless we can obtain simple +analytical expressions which we can simplify further, the final +implementation of automatic differentiation involves repeated +calculations (and thereby operations) of derivatives of elementary +functions. +

    +
    +

    Automatic differentiation

    We can make this example more formal. Automatic differentiation is a -formalization of the previous example (see graph from whiteboard -notes). +formalization of the previous example (see graph).

    We define \( \boldsymbol{x}\in x_1,\dots, x_l \) input variables to a given function \( f(\boldsymbol{x}) \) and \( x_{l+1},\dots, x_L \) intermediate variables.

    @@ -1064,7 +1074,12 @@

    Chain rule

    First network example, simple percepetron with one input

    -

    As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable \( x \) and one target value \( y \). We define an activation function \( \sigma_1 \) which takes as input

    +

    As yet another example we define now a simple perceptron model with +all quantities given by scalars. We consider only one input variable +\( x \) and one target value \( y \). We define an activation function +\( \sigma_1 \) which takes as input +

    +

     
    $$ z_1 = w_1x+b_1, @@ -1125,7 +1140,7 @@

    Optimizing the parameters

    Adding a hidden layer

    -

    We change our simple model to a (see graph on whiteboard notes) +

    We change our simple model to (see graph) network with just one hidden layer but with scalar variables only.

    @@ -1208,7 +1223,7 @@

    The training

     
    $$ -w_{i}\leftarrow = w_{i}- \eta \delta_i a_{i-1}, +w_{i}\leftarrow w_{i}- \eta \delta_i a_{i-1}, $$

     
    @@ -1226,6 +1241,107 @@

    The training

    For the first hidden layer \( a_{i-1}=a_0=x \) for this simple model.

    +
    +

    Code examples for the simple models

    +
    + +
    +

    Simple neural network and the back propagation equations

    + +

    Let us now try to increase our level of ambitions and attempt to set +up the equations for a neural network with two input nodes, one hidden +layer with two hidden nodes and one utput layers. +

    + +

    We need to define the following parameters and variables with the input layer (layer \( (0) \)) +where we label the nodes \( x_0 \) and \( x_1 \) +

    +

     
    +$$ +x_0 = a_0^{(0)} \wedge x_1 = a_1^{(0)}. +$$ +

     
    + +

    The hidden layer (layer \( (1) \)) has nodes which yield the outputs \( a_0^{(1)} \) and \( a_1^{(1)} \)) with weight \( \boldsymbol{w} \) and bias \( \boldsymbol{b} \) parameters

    +

     
    +$$ +w_{ij}^{(1)}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\right\} \wedge b^{(1)}=\left\{b_0^{(1)},b_1^{(1)}\right\}. +$$ +

     
    +

    + +
    +

    The ouput layer

    + +

    Finally, we have the ouput layer given by layer label \( (2) \) with output \( a^{(2)} \) and weights and biases to be determined

    +

     
    +$$ +w_{i}^{(2)}=\left\{w_{0}^{(2)},w_{1}^{(2)}\right\} \wedge b^{(2)}. +$$ +

     
    + +

    Our output is \( \tilde{y}=a^{(2)} \) and we define a generic cost function \( C(a^{(2)},y;\boldsymbol{\Theta}) \) where \( y \) is the target value (a scalar here). +The parameters we need to optimize are given by +

    +

     
    +$$ +\boldsymbol{\Theta}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\right\}. +$$ +

     
    +

    + +
    +

    Compact expressions

    + +

    We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions. +The inputs to the first hidden layer are +

    +

     
    +$$ +\begin{bmatrix}z_0^{(1)} \\ z_1^{(1)} \end{bmatrix}=\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\ w_{10}^{(1)} &w_{11}^{(1)} \end{bmatrix}\begin{bmatrix}a_0^{(0)} \\ a_1^{(0)} \end{bmatrix}+\begin{bmatrix}b_0^{(1)} \\ b_1^{(1)} \end{bmatrix}, +$$ +

     
    + +

    with outputs

    +

     
    +$$ +\begin{bmatrix}a_0^{(1)} \\ a_1^{(1)} \end{bmatrix}=\begin{bmatrix}\sigma^{(1)}(z_0^{(1)}) \\ \sigma^{(1)}(z_1^{(1)}) \end{bmatrix}. +$$ +

     
    +

    + +
    +

    For the output layer

    + +

    For the final output layer we have the inputs to the final activation function

    +

     
    +$$ +z^{(2)} = w_{0}^{(2)}a_0^{(1)} +w_{1}^{(2)}a_1^{(1)}+b^{(2)}, +$$ +

     
    + +

    resulting in the output

    +

     
    +$$ +a^{(2)}=\sigma^{(2)}(z^{(2)}). +$$ +

     
    +

    + +
    +

    Explicit derivatives

    + +

    In total we have nine parameters which we need to train. +Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output layer we have then +

    +
    + +
    +

    Setting up the equations for the optimization

    + +

    For th

    +
    +

    Getting serious, the back propagation equations for a neural network

    diff --git a/doc/pub/week3/html/week3-solarized.html b/doc/pub/week3/html/week3-solarized.html index b0ba7605..9b99b120 100644 --- a/doc/pub/week3/html/week3-solarized.html +++ b/doc/pub/week3/html/week3-solarized.html @@ -180,6 +180,10 @@ None, 'new-expression-for-the-derivative'), ('Final derivatives', 2, None, 'final-derivatives'), + ('In general not this simple', + 2, + None, + 'in-general-not-this-simple'), ('Automatic differentiation', 2, None, @@ -197,6 +201,22 @@ ('The derivatives', 2, None, 'the-derivatives'), ('Important observations', 2, None, 'important-observations'), ('The training', 2, None, 'the-training'), + ('Code examples for the simple models', + 2, + None, + 'code-examples-for-the-simple-models'), + ('Simple neural network and the back propagation equations', + 2, + None, + 'simple-neural-network-and-the-back-propagation-equations'), + ('The ouput layer', 2, None, 'the-ouput-layer'), + ('Compact expressions', 2, None, 'compact-expressions'), + ('For the output layer', 2, None, 'for-the-output-layer'), + ('Explicit derivatives', 2, None, 'explicit-derivatives'), + ('Setting up the equations for the optimization', + 2, + None, + 'setting-up-the-equations-for-the-optimization'), ('Getting serious, the back propagation equations for a neural ' 'network', 2, @@ -1048,12 +1068,21 @@

    Final derivatives

    and requires only three operations if we can reuse all intermediate variables.

    +









    +

    In general not this simple

    + +

    In general, see the generalization below, unless we can obtain simple +analytical expressions which we can simplify further, the final +implementation of automatic differentiation involves repeated +calculations (and thereby operations) of derivatives of elementary +functions. +

    +









    Automatic differentiation

    We can make this example more formal. Automatic differentiation is a -formalization of the previous example (see graph from whiteboard -notes). +formalization of the previous example (see graph).

    We define \( \boldsymbol{x}\in x_1,\dots, x_l \) input variables to a given function \( f(\boldsymbol{x}) \) and \( x_{l+1},\dots, x_L \) intermediate variables.

    @@ -1095,7 +1124,12 @@

    Chain rule











    First network example, simple percepetron with one input

    -

    As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable \( x \) and one target value \( y \). We define an activation function \( \sigma_1 \) which takes as input

    +

    As yet another example we define now a simple perceptron model with +all quantities given by scalars. We consider only one input variable +\( x \) and one target value \( y \). We define an activation function +\( \sigma_1 \) which takes as input +

    + $$ z_1 = w_1x+b_1, $$ @@ -1144,7 +1178,7 @@

    Optimizing the parameters











    Adding a hidden layer

    -

    We change our simple model to a (see graph on whiteboard notes) +

    We change our simple model to (see graph) network with just one hidden layer but with scalar variables only.

    @@ -1210,7 +1244,7 @@

    The training

    The training of the parameters is done through various gradient descent approximations with

    $$ -w_{i}\leftarrow = w_{i}- \eta \delta_i a_{i-1}, +w_{i}\leftarrow w_{i}- \eta \delta_i a_{i-1}, $$

    and

    @@ -1224,6 +1258,88 @@

    The training

    For the first hidden layer \( a_{i-1}=a_0=x \) for this simple model.

    +









    +

    Code examples for the simple models

    + +









    +

    Simple neural network and the back propagation equations

    + +

    Let us now try to increase our level of ambitions and attempt to set +up the equations for a neural network with two input nodes, one hidden +layer with two hidden nodes and one utput layers. +

    + +

    We need to define the following parameters and variables with the input layer (layer \( (0) \)) +where we label the nodes \( x_0 \) and \( x_1 \) +

    +$$ +x_0 = a_0^{(0)} \wedge x_1 = a_1^{(0)}. +$$ + +

    The hidden layer (layer \( (1) \)) has nodes which yield the outputs \( a_0^{(1)} \) and \( a_1^{(1)} \)) with weight \( \boldsymbol{w} \) and bias \( \boldsymbol{b} \) parameters

    +$$ +w_{ij}^{(1)}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\right\} \wedge b^{(1)}=\left\{b_0^{(1)},b_1^{(1)}\right\}. +$$ + + +









    +

    The ouput layer

    + +

    Finally, we have the ouput layer given by layer label \( (2) \) with output \( a^{(2)} \) and weights and biases to be determined

    +$$ +w_{i}^{(2)}=\left\{w_{0}^{(2)},w_{1}^{(2)}\right\} \wedge b^{(2)}. +$$ + +

    Our output is \( \tilde{y}=a^{(2)} \) and we define a generic cost function \( C(a^{(2)},y;\boldsymbol{\Theta}) \) where \( y \) is the target value (a scalar here). +The parameters we need to optimize are given by +

    +$$ +\boldsymbol{\Theta}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\right\}. +$$ + + +









    +

    Compact expressions

    + +

    We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions. +The inputs to the first hidden layer are +

    +$$ +\begin{bmatrix}z_0^{(1)} \\ z_1^{(1)} \end{bmatrix}=\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\ w_{10}^{(1)} &w_{11}^{(1)} \end{bmatrix}\begin{bmatrix}a_0^{(0)} \\ a_1^{(0)} \end{bmatrix}+\begin{bmatrix}b_0^{(1)} \\ b_1^{(1)} \end{bmatrix}, +$$ + +

    with outputs

    +$$ +\begin{bmatrix}a_0^{(1)} \\ a_1^{(1)} \end{bmatrix}=\begin{bmatrix}\sigma^{(1)}(z_0^{(1)}) \\ \sigma^{(1)}(z_1^{(1)}) \end{bmatrix}. +$$ + + +









    +

    For the output layer

    + +

    For the final output layer we have the inputs to the final activation function

    +$$ +z^{(2)} = w_{0}^{(2)}a_0^{(1)} +w_{1}^{(2)}a_1^{(1)}+b^{(2)}, +$$ + +

    resulting in the output

    +$$ +a^{(2)}=\sigma^{(2)}(z^{(2)}). +$$ + + +









    +

    Explicit derivatives

    + +

    In total we have nine parameters which we need to train. +Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output layer we have then +

    + +









    +

    Setting up the equations for the optimization

    + +

    For th

    +









    Getting serious, the back propagation equations for a neural network

    diff --git a/doc/pub/week3/html/week3.html b/doc/pub/week3/html/week3.html index 9196b6c8..1c251661 100644 --- a/doc/pub/week3/html/week3.html +++ b/doc/pub/week3/html/week3.html @@ -257,6 +257,10 @@ None, 'new-expression-for-the-derivative'), ('Final derivatives', 2, None, 'final-derivatives'), + ('In general not this simple', + 2, + None, + 'in-general-not-this-simple'), ('Automatic differentiation', 2, None, @@ -274,6 +278,22 @@ ('The derivatives', 2, None, 'the-derivatives'), ('Important observations', 2, None, 'important-observations'), ('The training', 2, None, 'the-training'), + ('Code examples for the simple models', + 2, + None, + 'code-examples-for-the-simple-models'), + ('Simple neural network and the back propagation equations', + 2, + None, + 'simple-neural-network-and-the-back-propagation-equations'), + ('The ouput layer', 2, None, 'the-ouput-layer'), + ('Compact expressions', 2, None, 'compact-expressions'), + ('For the output layer', 2, None, 'for-the-output-layer'), + ('Explicit derivatives', 2, None, 'explicit-derivatives'), + ('Setting up the equations for the optimization', + 2, + None, + 'setting-up-the-equations-for-the-optimization'), ('Getting serious, the back propagation equations for a neural ' 'network', 2, @@ -1125,12 +1145,21 @@

    Final derivatives

    and requires only three operations if we can reuse all intermediate variables.

    +









    +

    In general not this simple

    + +

    In general, see the generalization below, unless we can obtain simple +analytical expressions which we can simplify further, the final +implementation of automatic differentiation involves repeated +calculations (and thereby operations) of derivatives of elementary +functions. +

    +









    Automatic differentiation

    We can make this example more formal. Automatic differentiation is a -formalization of the previous example (see graph from whiteboard -notes). +formalization of the previous example (see graph).

    We define \( \boldsymbol{x}\in x_1,\dots, x_l \) input variables to a given function \( f(\boldsymbol{x}) \) and \( x_{l+1},\dots, x_L \) intermediate variables.

    @@ -1172,7 +1201,12 @@

    Chain rule











    First network example, simple percepetron with one input

    -

    As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable \( x \) and one target value \( y \). We define an activation function \( \sigma_1 \) which takes as input

    +

    As yet another example we define now a simple perceptron model with +all quantities given by scalars. We consider only one input variable +\( x \) and one target value \( y \). We define an activation function +\( \sigma_1 \) which takes as input +

    + $$ z_1 = w_1x+b_1, $$ @@ -1221,7 +1255,7 @@

    Optimizing the parameters











    Adding a hidden layer

    -

    We change our simple model to a (see graph on whiteboard notes) +

    We change our simple model to (see graph) network with just one hidden layer but with scalar variables only.

    @@ -1287,7 +1321,7 @@

    The training

    The training of the parameters is done through various gradient descent approximations with

    $$ -w_{i}\leftarrow = w_{i}- \eta \delta_i a_{i-1}, +w_{i}\leftarrow w_{i}- \eta \delta_i a_{i-1}, $$

    and

    @@ -1301,6 +1335,88 @@

    The training

    For the first hidden layer \( a_{i-1}=a_0=x \) for this simple model.

    +









    +

    Code examples for the simple models

    + +









    +

    Simple neural network and the back propagation equations

    + +

    Let us now try to increase our level of ambitions and attempt to set +up the equations for a neural network with two input nodes, one hidden +layer with two hidden nodes and one utput layers. +

    + +

    We need to define the following parameters and variables with the input layer (layer \( (0) \)) +where we label the nodes \( x_0 \) and \( x_1 \) +

    +$$ +x_0 = a_0^{(0)} \wedge x_1 = a_1^{(0)}. +$$ + +

    The hidden layer (layer \( (1) \)) has nodes which yield the outputs \( a_0^{(1)} \) and \( a_1^{(1)} \)) with weight \( \boldsymbol{w} \) and bias \( \boldsymbol{b} \) parameters

    +$$ +w_{ij}^{(1)}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\right\} \wedge b^{(1)}=\left\{b_0^{(1)},b_1^{(1)}\right\}. +$$ + + +









    +

    The ouput layer

    + +

    Finally, we have the ouput layer given by layer label \( (2) \) with output \( a^{(2)} \) and weights and biases to be determined

    +$$ +w_{i}^{(2)}=\left\{w_{0}^{(2)},w_{1}^{(2)}\right\} \wedge b^{(2)}. +$$ + +

    Our output is \( \tilde{y}=a^{(2)} \) and we define a generic cost function \( C(a^{(2)},y;\boldsymbol{\Theta}) \) where \( y \) is the target value (a scalar here). +The parameters we need to optimize are given by +

    +$$ +\boldsymbol{\Theta}=\left\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\right\}. +$$ + + +









    +

    Compact expressions

    + +

    We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions. +The inputs to the first hidden layer are +

    +$$ +\begin{bmatrix}z_0^{(1)} \\ z_1^{(1)} \end{bmatrix}=\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\ w_{10}^{(1)} &w_{11}^{(1)} \end{bmatrix}\begin{bmatrix}a_0^{(0)} \\ a_1^{(0)} \end{bmatrix}+\begin{bmatrix}b_0^{(1)} \\ b_1^{(1)} \end{bmatrix}, +$$ + +

    with outputs

    +$$ +\begin{bmatrix}a_0^{(1)} \\ a_1^{(1)} \end{bmatrix}=\begin{bmatrix}\sigma^{(1)}(z_0^{(1)}) \\ \sigma^{(1)}(z_1^{(1)}) \end{bmatrix}. +$$ + + +









    +

    For the output layer

    + +

    For the final output layer we have the inputs to the final activation function

    +$$ +z^{(2)} = w_{0}^{(2)}a_0^{(1)} +w_{1}^{(2)}a_1^{(1)}+b^{(2)}, +$$ + +

    resulting in the output

    +$$ +a^{(2)}=\sigma^{(2)}(z^{(2)}). +$$ + + +









    +

    Explicit derivatives

    + +

    In total we have nine parameters which we need to train. +Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output layer we have then +

    + +









    +

    Setting up the equations for the optimization

    + +

    For th

    +









    Getting serious, the back propagation equations for a neural network

    diff --git a/doc/pub/week3/ipynb/ipynb-week3-src.tar.gz b/doc/pub/week3/ipynb/ipynb-week3-src.tar.gz index 838b24ec87db52c54155a22fdea67c0a832ff351..079a34a9914d1993e1e742cd4be8650ce5561994 100644 GIT binary patch delta 18 ZcmX@v&wR3S=SKEJ#{oU=2D|_O diff --git a/doc/pub/week3/ipynb/week3.ipynb b/doc/pub/week3/ipynb/week3.ipynb index a9e53d42..45fe2569 100644 --- a/doc/pub/week3/ipynb/week3.ipynb +++ b/doc/pub/week3/ipynb/week3.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "8915be3d", + "id": "0ddf6ac0", "metadata": { "editable": true }, @@ -14,7 +14,7 @@ }, { "cell_type": "markdown", - "id": "fec342db", + "id": "5e1860e3", "metadata": { "editable": true }, @@ -27,7 +27,7 @@ }, { "cell_type": "markdown", - "id": "fe2dcb89", + "id": "ffba166a", "metadata": { "editable": true }, @@ -47,7 +47,7 @@ }, { "cell_type": "markdown", - "id": "111f7b7e", + "id": "e86e3d42", "metadata": { "editable": true }, @@ -63,7 +63,7 @@ }, { "cell_type": "markdown", - "id": "dbdbcb30", + "id": "99ff04b4", "metadata": { "editable": true }, @@ -81,7 +81,7 @@ }, { "cell_type": "markdown", - "id": "319519a5", + "id": "ef9140f7", "metadata": { "editable": true }, @@ -95,7 +95,7 @@ }, { "cell_type": "markdown", - "id": "111dffd6", + "id": "fec74532", "metadata": { "editable": true }, @@ -114,7 +114,7 @@ }, { "cell_type": "markdown", - "id": "625a14dc", + "id": "8afea69d", "metadata": { "editable": true }, @@ -138,7 +138,7 @@ }, { "cell_type": "markdown", - "id": "60a99ac9", + "id": "c5ebf063", "metadata": { "editable": true }, @@ -165,7 +165,7 @@ }, { "cell_type": "markdown", - "id": "056ff7d4", + "id": "bf486cce", "metadata": { "editable": true }, @@ -182,7 +182,7 @@ }, { "cell_type": "markdown", - "id": "963e0389", + "id": "fa50fa29", "metadata": { "editable": true }, @@ -194,7 +194,7 @@ }, { "cell_type": "markdown", - "id": "8961e599", + "id": "f0b49977", "metadata": { "editable": true }, @@ -205,7 +205,7 @@ }, { "cell_type": "markdown", - "id": "8af0c1b7", + "id": "73c3edd2", "metadata": { "editable": true }, @@ -223,7 +223,7 @@ }, { "cell_type": "markdown", - "id": "07484429", + "id": "1bcfbd2f", "metadata": { "editable": true }, @@ -252,7 +252,7 @@ }, { "cell_type": "markdown", - "id": "67fbadbb", + "id": "6d5213b7", "metadata": { "editable": true }, @@ -266,7 +266,7 @@ }, { "cell_type": "markdown", - "id": "9f8733eb", + "id": "9569d8ef", "metadata": { "editable": true }, @@ -282,7 +282,7 @@ }, { "cell_type": "markdown", - "id": "b5ff69af", + "id": "38eef3f2", "metadata": { "editable": true }, @@ -294,7 +294,7 @@ }, { "cell_type": "markdown", - "id": "cd25ca5b", + "id": "fcf0708b", "metadata": { "editable": true }, @@ -308,7 +308,7 @@ }, { "cell_type": "markdown", - "id": "95feb967", + "id": "b07615b3", "metadata": { "editable": true }, @@ -320,7 +320,7 @@ }, { "cell_type": "markdown", - "id": "ad8e3d52", + "id": "82bb7457", "metadata": { "editable": true }, @@ -336,7 +336,7 @@ }, { "cell_type": "markdown", - "id": "9ee4c83f", + "id": "2a2cdf76", "metadata": { "editable": true }, @@ -352,7 +352,7 @@ }, { "cell_type": "markdown", - "id": "245edc97", + "id": "568c1e95", "metadata": { "editable": true }, @@ -364,7 +364,7 @@ }, { "cell_type": "markdown", - "id": "cace207a", + "id": "5339302d", "metadata": { "editable": true }, @@ -374,7 +374,7 @@ }, { "cell_type": "markdown", - "id": "22b74b99", + "id": "bb3341b7", "metadata": { "editable": true }, @@ -386,7 +386,7 @@ }, { "cell_type": "markdown", - "id": "92f6806d", + "id": "21b5f540", "metadata": { "editable": true }, @@ -404,7 +404,7 @@ }, { "cell_type": "markdown", - "id": "cb988299", + "id": "cce1685d", "metadata": { "editable": true }, @@ -417,7 +417,7 @@ }, { "cell_type": "markdown", - "id": "e30501e3", + "id": "65a520f2", "metadata": { "editable": true }, @@ -434,7 +434,7 @@ }, { "cell_type": "markdown", - "id": "20149b42", + "id": "b85ade18", "metadata": { "editable": true }, @@ -446,7 +446,7 @@ }, { "cell_type": "markdown", - "id": "50c4304b", + "id": "df448c2b", "metadata": { "editable": true }, @@ -458,7 +458,7 @@ }, { "cell_type": "markdown", - "id": "25a0e0f1", + "id": "a4af64d8", "metadata": { "editable": true }, @@ -474,7 +474,7 @@ }, { "cell_type": "markdown", - "id": "926fc4a1", + "id": "4529702f", "metadata": { "editable": true }, @@ -491,7 +491,7 @@ }, { "cell_type": "markdown", - "id": "fcb52c3d", + "id": "03bef104", "metadata": { "editable": true }, @@ -503,7 +503,7 @@ }, { "cell_type": "markdown", - "id": "50b2ca44", + "id": "24a26da6", "metadata": { "editable": true }, @@ -516,7 +516,7 @@ }, { "cell_type": "markdown", - "id": "e6639ea0", + "id": "52cfa34a", "metadata": { "editable": true }, @@ -528,7 +528,7 @@ }, { "cell_type": "markdown", - "id": "2190cd62", + "id": "fbced099", "metadata": { "editable": true }, @@ -544,7 +544,7 @@ }, { "cell_type": "markdown", - "id": "e5213195", + "id": "ec346551", "metadata": { "editable": true }, @@ -556,7 +556,7 @@ }, { "cell_type": "markdown", - "id": "09db4516", + "id": "11a7b0a7", "metadata": { "editable": true }, @@ -568,7 +568,7 @@ }, { "cell_type": "markdown", - "id": "8ffa7496", + "id": "45579322", "metadata": { "editable": true }, @@ -580,7 +580,7 @@ }, { "cell_type": "markdown", - "id": "80b73384", + "id": "0edc5d7d", "metadata": { "editable": true }, @@ -590,7 +590,7 @@ }, { "cell_type": "markdown", - "id": "cc9a931b", + "id": "283b302b", "metadata": { "editable": true }, @@ -602,7 +602,7 @@ }, { "cell_type": "markdown", - "id": "8424ea2d", + "id": "b71be914", "metadata": { "editable": true }, @@ -612,7 +612,7 @@ }, { "cell_type": "markdown", - "id": "b0bcbeab", + "id": "98217797", "metadata": { "editable": true }, @@ -624,7 +624,7 @@ }, { "cell_type": "markdown", - "id": "bcd96873", + "id": "b5098f9e", "metadata": { "editable": true }, @@ -638,7 +638,7 @@ }, { "cell_type": "markdown", - "id": "9c9061e5", + "id": "e5c9d090", "metadata": { "editable": true }, @@ -650,7 +650,7 @@ }, { "cell_type": "markdown", - "id": "907c6e9d", + "id": "94c240d5", "metadata": { "editable": true }, @@ -660,7 +660,7 @@ }, { "cell_type": "markdown", - "id": "51f6c41f", + "id": "2d2c2360", "metadata": { "editable": true }, @@ -672,7 +672,7 @@ }, { "cell_type": "markdown", - "id": "998ce6e2", + "id": "d3af7d6b", "metadata": { "editable": true }, @@ -682,7 +682,7 @@ }, { "cell_type": "markdown", - "id": "6ca796fa", + "id": "decd5dfe", "metadata": { "editable": true }, @@ -694,7 +694,7 @@ }, { "cell_type": "markdown", - "id": "7e9722cc", + "id": "0d420b46", "metadata": { "editable": true }, @@ -709,7 +709,7 @@ }, { "cell_type": "markdown", - "id": "a31b27a0", + "id": "904b606b", "metadata": { "editable": true }, @@ -721,7 +721,7 @@ }, { "cell_type": "markdown", - "id": "baa5a5cc", + "id": "3415dc6e", "metadata": { "editable": true }, @@ -733,7 +733,7 @@ }, { "cell_type": "markdown", - "id": "39f05c9a", + "id": "f991c51b", "metadata": { "editable": true }, @@ -745,7 +745,7 @@ }, { "cell_type": "markdown", - "id": "418b57d8", + "id": "c13d5c48", "metadata": { "editable": true }, @@ -757,7 +757,7 @@ }, { "cell_type": "markdown", - "id": "f65b51b1", + "id": "7b96ec04", "metadata": { "editable": true }, @@ -767,7 +767,7 @@ }, { "cell_type": "markdown", - "id": "edb10e24", + "id": "308036c2", "metadata": { "editable": true }, @@ -779,7 +779,7 @@ }, { "cell_type": "markdown", - "id": "fcceac51", + "id": "a3d2d41f", "metadata": { "editable": true }, @@ -789,7 +789,7 @@ }, { "cell_type": "markdown", - "id": "c78ae883", + "id": "c41a3968", "metadata": { "editable": true }, @@ -801,7 +801,7 @@ }, { "cell_type": "markdown", - "id": "53111b97", + "id": "36b1a16c", "metadata": { "editable": true }, @@ -821,7 +821,7 @@ }, { "cell_type": "markdown", - "id": "879b5184", + "id": "305406af", "metadata": { "editable": true }, @@ -833,7 +833,7 @@ }, { "cell_type": "markdown", - "id": "7fc020b2", + "id": "bf161871", "metadata": { "editable": true }, @@ -845,7 +845,7 @@ }, { "cell_type": "markdown", - "id": "06ffaa24", + "id": "89cfb04d", "metadata": { "editable": true }, @@ -855,7 +855,7 @@ }, { "cell_type": "markdown", - "id": "2ce16392", + "id": "ecafb334", "metadata": { "editable": true }, @@ -867,7 +867,7 @@ }, { "cell_type": "markdown", - "id": "94359507", + "id": "4ad5adda", "metadata": { "editable": true }, @@ -878,7 +878,7 @@ { "cell_type": "code", "execution_count": 1, - "id": "8dfcb4c2", + "id": "4e12434c", "metadata": { "collapsed": false, "editable": true @@ -897,7 +897,7 @@ }, { "cell_type": "markdown", - "id": "ff23144d", + "id": "8fd52ae2", "metadata": { "editable": true }, @@ -908,7 +908,7 @@ }, { "cell_type": "markdown", - "id": "2b8120e8", + "id": "1e53cb11", "metadata": { "editable": true }, @@ -920,7 +920,7 @@ }, { "cell_type": "markdown", - "id": "75e8df5c", + "id": "5eab8eaa", "metadata": { "editable": true }, @@ -930,7 +930,7 @@ }, { "cell_type": "markdown", - "id": "b010cede", + "id": "746ca186", "metadata": { "editable": true }, @@ -942,7 +942,7 @@ }, { "cell_type": "markdown", - "id": "bbf51a38", + "id": "65a27079", "metadata": { "editable": true }, @@ -955,7 +955,7 @@ }, { "cell_type": "markdown", - "id": "2bc52086", + "id": "9d1a4553", "metadata": { "editable": true }, @@ -967,7 +967,7 @@ }, { "cell_type": "markdown", - "id": "d153d464", + "id": "8c4bc805", "metadata": { "editable": true }, @@ -979,7 +979,7 @@ }, { "cell_type": "markdown", - "id": "7ef5fde3", + "id": "2dca93e5", "metadata": { "editable": true }, @@ -996,7 +996,7 @@ }, { "cell_type": "markdown", - "id": "76c15f7f", + "id": "5b5f2ad3", "metadata": { "editable": true }, @@ -1008,7 +1008,7 @@ }, { "cell_type": "markdown", - "id": "003060b4", + "id": "4db46996", "metadata": { "editable": true }, @@ -1020,7 +1020,7 @@ }, { "cell_type": "markdown", - "id": "bafaab22", + "id": "8a1e5ed6", "metadata": { "editable": true }, @@ -1030,7 +1030,7 @@ }, { "cell_type": "markdown", - "id": "e1242659", + "id": "be32c63e", "metadata": { "editable": true }, @@ -1042,7 +1042,7 @@ }, { "cell_type": "markdown", - "id": "bc4340c2", + "id": "ab2f3ff4", "metadata": { "editable": true }, @@ -1052,7 +1052,7 @@ }, { "cell_type": "markdown", - "id": "8e0e4969", + "id": "fd6eb999", "metadata": { "editable": true }, @@ -1064,7 +1064,7 @@ }, { "cell_type": "markdown", - "id": "4f94e032", + "id": "f938782d", "metadata": { "editable": true }, @@ -1074,7 +1074,7 @@ }, { "cell_type": "markdown", - "id": "46bf127c", + "id": "db50b6c1", "metadata": { "editable": true }, @@ -1086,7 +1086,7 @@ }, { "cell_type": "markdown", - "id": "a04879ac", + "id": "211687d9", "metadata": { "editable": true }, @@ -1096,7 +1096,7 @@ }, { "cell_type": "markdown", - "id": "7d00bd6e", + "id": "0a3e0dce", "metadata": { "editable": true }, @@ -1108,7 +1108,7 @@ }, { "cell_type": "markdown", - "id": "47264885", + "id": "111fa90c", "metadata": { "editable": true }, @@ -1120,7 +1120,7 @@ }, { "cell_type": "markdown", - "id": "36eda3e9", + "id": "0b27beea", "metadata": { "editable": true }, @@ -1130,7 +1130,7 @@ }, { "cell_type": "markdown", - "id": "9588adaa", + "id": "65aeb9f4", "metadata": { "editable": true }, @@ -1142,7 +1142,7 @@ }, { "cell_type": "markdown", - "id": "577fbe29", + "id": "30efe746", "metadata": { "editable": true }, @@ -1152,7 +1152,7 @@ }, { "cell_type": "markdown", - "id": "4b0989d4", + "id": "c1a84179", "metadata": { "editable": true }, @@ -1164,7 +1164,7 @@ }, { "cell_type": "markdown", - "id": "a8608d86", + "id": "d55f83de", "metadata": { "editable": true }, @@ -1182,7 +1182,7 @@ }, { "cell_type": "markdown", - "id": "3e5481e6", + "id": "5bbf99a9", "metadata": { "editable": true }, @@ -1194,7 +1194,7 @@ }, { "cell_type": "markdown", - "id": "aa76fa19", + "id": "6a4502c1", "metadata": { "editable": true }, @@ -1206,7 +1206,7 @@ }, { "cell_type": "markdown", - "id": "af444f42", + "id": "6c3de3f4", "metadata": { "editable": true }, @@ -1216,7 +1216,7 @@ }, { "cell_type": "markdown", - "id": "9bf7630b", + "id": "7fd5444d", "metadata": { "editable": true }, @@ -1228,7 +1228,7 @@ }, { "cell_type": "markdown", - "id": "81e13615", + "id": "bc122a94", "metadata": { "editable": true }, @@ -1239,7 +1239,7 @@ { "cell_type": "code", "execution_count": 2, - "id": "9f8ac8c9", + "id": "e2ee4896", "metadata": { "collapsed": false, "editable": true @@ -1258,7 +1258,7 @@ }, { "cell_type": "markdown", - "id": "907f83d7", + "id": "e999732a", "metadata": { "editable": true }, @@ -1274,7 +1274,7 @@ }, { "cell_type": "markdown", - "id": "35cb5206", + "id": "7c010c91", "metadata": { "editable": true }, @@ -1287,7 +1287,7 @@ }, { "cell_type": "markdown", - "id": "1f69074a", + "id": "244b1d3f", "metadata": { "editable": true }, @@ -1299,7 +1299,7 @@ }, { "cell_type": "markdown", - "id": "9d249e6f", + "id": "5eb35189", "metadata": { "editable": true }, @@ -1309,7 +1309,7 @@ }, { "cell_type": "markdown", - "id": "4b28a138", + "id": "6886a427", "metadata": { "editable": true }, @@ -1321,7 +1321,7 @@ }, { "cell_type": "markdown", - "id": "8dcd732c", + "id": "54633caa", "metadata": { "editable": true }, @@ -1331,7 +1331,7 @@ }, { "cell_type": "markdown", - "id": "207713bb", + "id": "b0400d4a", "metadata": { "editable": true }, @@ -1343,7 +1343,7 @@ }, { "cell_type": "markdown", - "id": "962b7823", + "id": "cc0dbb76", "metadata": { "editable": true }, @@ -1353,7 +1353,7 @@ }, { "cell_type": "markdown", - "id": "73d61dd0", + "id": "141fe2a0", "metadata": { "editable": true }, @@ -1365,7 +1365,7 @@ }, { "cell_type": "markdown", - "id": "0640c804", + "id": "ea9f1cf9", "metadata": { "editable": true }, @@ -1377,7 +1377,7 @@ }, { "cell_type": "markdown", - "id": "740411b1", + "id": "8901fbc3", "metadata": { "editable": true }, @@ -1389,7 +1389,7 @@ }, { "cell_type": "markdown", - "id": "d82213b4", + "id": "c24313d2", "metadata": { "editable": true }, @@ -1399,7 +1399,7 @@ }, { "cell_type": "markdown", - "id": "41b917d4", + "id": "05ecb8cb", "metadata": { "editable": true }, @@ -1411,7 +1411,7 @@ }, { "cell_type": "markdown", - "id": "ff3d3eaa", + "id": "64f3968f", "metadata": { "editable": true }, @@ -1421,7 +1421,7 @@ }, { "cell_type": "markdown", - "id": "1309968a", + "id": "da00fc99", "metadata": { "editable": true }, @@ -1433,7 +1433,7 @@ }, { "cell_type": "markdown", - "id": "17e7d953", + "id": "8f423494", "metadata": { "editable": true }, @@ -1443,7 +1443,7 @@ }, { "cell_type": "markdown", - "id": "a308a4a7", + "id": "95a5a2f5", "metadata": { "editable": true }, @@ -1455,7 +1455,7 @@ }, { "cell_type": "markdown", - "id": "bb59edfe", + "id": "423ac388", "metadata": { "editable": true }, @@ -1465,7 +1465,7 @@ }, { "cell_type": "markdown", - "id": "f60aad8a", + "id": "445b7109", "metadata": { "editable": true }, @@ -1477,7 +1477,7 @@ }, { "cell_type": "markdown", - "id": "c19a8b42", + "id": "95ab69fd", "metadata": { "editable": true }, @@ -1487,7 +1487,7 @@ }, { "cell_type": "markdown", - "id": "c877e9a6", + "id": "8521a931", "metadata": { "editable": true }, @@ -1499,7 +1499,7 @@ }, { "cell_type": "markdown", - "id": "275d4348", + "id": "e22ec49c", "metadata": { "editable": true }, @@ -1510,7 +1510,7 @@ }, { "cell_type": "markdown", - "id": "872f6952", + "id": "585d5a9b", "metadata": { "editable": true }, @@ -1522,7 +1522,7 @@ }, { "cell_type": "markdown", - "id": "358adf18", + "id": "bb25c720", "metadata": { "editable": true }, @@ -1534,7 +1534,7 @@ }, { "cell_type": "markdown", - "id": "5c965049", + "id": "e734364d", "metadata": { "editable": true }, @@ -1547,7 +1547,7 @@ }, { "cell_type": "markdown", - "id": "a7add5b9", + "id": "961b0305", "metadata": { "editable": true }, @@ -1557,7 +1557,7 @@ }, { "cell_type": "markdown", - "id": "ee38d5eb", + "id": "129c5cae", "metadata": { "editable": true }, @@ -1569,7 +1569,7 @@ }, { "cell_type": "markdown", - "id": "d6a3a38e", + "id": "ba63a379", "metadata": { "editable": true }, @@ -1579,7 +1579,7 @@ }, { "cell_type": "markdown", - "id": "fb991ff8", + "id": "0338d001", "metadata": { "editable": true }, @@ -1591,7 +1591,7 @@ }, { "cell_type": "markdown", - "id": "dfc9aec8", + "id": "cdd78c25", "metadata": { "editable": true }, @@ -1601,7 +1601,23 @@ }, { "cell_type": "markdown", - "id": "c8578162", + "id": "40ce00e1", + "metadata": { + "editable": true + }, + "source": [ + "## In general not this simple\n", + "\n", + "In general, see the generalization below, unless we can obtain simple\n", + "analytical expressions which we can simplify further, the final\n", + "implementation of automatic differentiation involves repeated\n", + "calculations (and thereby operations) of derivatives of elementary\n", + "functions." + ] + }, + { + "cell_type": "markdown", + "id": "b36d8850", "metadata": { "editable": true }, @@ -1609,8 +1625,7 @@ "## Automatic differentiation\n", "\n", "We can make this example more formal. Automatic differentiation is a\n", - "formalization of the previous example (see graph from whiteboard\n", - "notes).\n", + "formalization of the previous example (see graph).\n", "\n", "We define $\\boldsymbol{x}\\in x_1,\\dots, x_l$ input variables to a given function $f(\\boldsymbol{x})$ and $x_{l+1},\\dots, x_L$ intermediate variables.\n", "\n", @@ -1619,7 +1634,7 @@ }, { "cell_type": "markdown", - "id": "95cd9460", + "id": "c481d2fe", "metadata": { "editable": true }, @@ -1631,7 +1646,7 @@ }, { "cell_type": "markdown", - "id": "e701a20c", + "id": "01dd943d", "metadata": { "editable": true }, @@ -1644,7 +1659,7 @@ }, { "cell_type": "markdown", - "id": "04e5ccf2", + "id": "eb2d65d6", "metadata": { "editable": true }, @@ -1657,7 +1672,7 @@ }, { "cell_type": "markdown", - "id": "53a5ded2", + "id": "f94ae276", "metadata": { "editable": true }, @@ -1669,7 +1684,7 @@ }, { "cell_type": "markdown", - "id": "ab36b239", + "id": "da76dfc1", "metadata": { "editable": true }, @@ -1679,7 +1694,7 @@ }, { "cell_type": "markdown", - "id": "e4241af0", + "id": "9d6d85ed", "metadata": { "editable": true }, @@ -1691,7 +1706,7 @@ }, { "cell_type": "markdown", - "id": "4d24fa4e", + "id": "b88aec02", "metadata": { "editable": true }, @@ -1706,19 +1721,22 @@ }, { "cell_type": "markdown", - "id": "a13220a5", + "id": "bc2d6567", "metadata": { "editable": true }, "source": [ "## First network example, simple percepetron with one input\n", "\n", - "As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable $x$ and one target value $y$. We define an activation function $\\sigma_1$ which takes as input" + "As yet another example we define now a simple perceptron model with\n", + "all quantities given by scalars. We consider only one input variable\n", + "$x$ and one target value $y$. We define an activation function\n", + "$\\sigma_1$ which takes as input" ] }, { "cell_type": "markdown", - "id": "dcba4620", + "id": "cb9322f2", "metadata": { "editable": true }, @@ -1730,7 +1748,7 @@ }, { "cell_type": "markdown", - "id": "ca100656", + "id": "80b529af", "metadata": { "editable": true }, @@ -1744,7 +1762,7 @@ }, { "cell_type": "markdown", - "id": "1c1cb6ee", + "id": "96868f06", "metadata": { "editable": true }, @@ -1756,7 +1774,7 @@ }, { "cell_type": "markdown", - "id": "73697ad3", + "id": "a59b3404", "metadata": { "editable": true }, @@ -1772,7 +1790,7 @@ }, { "cell_type": "markdown", - "id": "ba627d2a", + "id": "e9d763fe", "metadata": { "editable": true }, @@ -1784,7 +1802,7 @@ }, { "cell_type": "markdown", - "id": "ef3dd990", + "id": "f5136d8a", "metadata": { "editable": true }, @@ -1794,7 +1812,7 @@ }, { "cell_type": "markdown", - "id": "ceb4f0da", + "id": "28c8e221", "metadata": { "editable": true }, @@ -1806,7 +1824,7 @@ }, { "cell_type": "markdown", - "id": "9950a7e7", + "id": "e3982595", "metadata": { "editable": true }, @@ -1816,7 +1834,7 @@ }, { "cell_type": "markdown", - "id": "39948179", + "id": "0058685c", "metadata": { "editable": true }, @@ -1828,7 +1846,7 @@ }, { "cell_type": "markdown", - "id": "a3f86d2c", + "id": "4e5f7c8d", "metadata": { "editable": true }, @@ -1838,7 +1856,7 @@ }, { "cell_type": "markdown", - "id": "9221e84e", + "id": "e6f7258c", "metadata": { "editable": true }, @@ -1850,14 +1868,14 @@ }, { "cell_type": "markdown", - "id": "b011a759", + "id": "4e967bdf", "metadata": { "editable": true }, "source": [ "## Adding a hidden layer\n", "\n", - "We change our simple model to a (see graph on whiteboard notes)\n", + "We change our simple model to (see graph)\n", "network with just one hidden layer but with scalar variables only.\n", "\n", "Our output variable changes to $a_2$ and $a_1$ is now the output from the hidden node and $a_0=x$.\n", @@ -1866,7 +1884,7 @@ }, { "cell_type": "markdown", - "id": "3fd2991f", + "id": "69ecfcb0", "metadata": { "editable": true }, @@ -1878,7 +1896,7 @@ }, { "cell_type": "markdown", - "id": "2f33d9e7", + "id": "f669e5e3", "metadata": { "editable": true }, @@ -1890,7 +1908,7 @@ }, { "cell_type": "markdown", - "id": "e3fdcc77", + "id": "87b80d8e", "metadata": { "editable": true }, @@ -1900,7 +1918,7 @@ }, { "cell_type": "markdown", - "id": "3ce33278", + "id": "9adf15a8", "metadata": { "editable": true }, @@ -1912,7 +1930,7 @@ }, { "cell_type": "markdown", - "id": "832411d8", + "id": "91bc47a6", "metadata": { "editable": true }, @@ -1922,7 +1940,7 @@ }, { "cell_type": "markdown", - "id": "946f4d4e", + "id": "678a1fac", "metadata": { "editable": true }, @@ -1934,7 +1952,7 @@ }, { "cell_type": "markdown", - "id": "f66f1cdc", + "id": "05b1b5f4", "metadata": { "editable": true }, @@ -1946,7 +1964,7 @@ }, { "cell_type": "markdown", - "id": "3b9d434f", + "id": "7c85574f", "metadata": { "editable": true }, @@ -1958,7 +1976,7 @@ }, { "cell_type": "markdown", - "id": "79e18bd7", + "id": "c30e25b3", "metadata": { "editable": true }, @@ -1970,7 +1988,7 @@ }, { "cell_type": "markdown", - "id": "40c6cf7c", + "id": "ee140437", "metadata": { "editable": true }, @@ -1982,7 +2000,7 @@ }, { "cell_type": "markdown", - "id": "b8069b08", + "id": "3ccd1703", "metadata": { "editable": true }, @@ -1992,7 +2010,7 @@ }, { "cell_type": "markdown", - "id": "8ccd1ed1", + "id": "10db5c89", "metadata": { "editable": true }, @@ -2008,7 +2026,7 @@ }, { "cell_type": "markdown", - "id": "0c41997e", + "id": "673f0a42", "metadata": { "editable": true }, @@ -2020,19 +2038,19 @@ }, { "cell_type": "markdown", - "id": "6bafd3f9", + "id": "6cc366ca", "metadata": { "editable": true }, "source": [ "$$\n", - "w_{i}\\leftarrow = w_{i}- \\eta \\delta_i a_{i-1},\n", + "w_{i}\\leftarrow w_{i}- \\eta \\delta_i a_{i-1},\n", "$$" ] }, { "cell_type": "markdown", - "id": "6df81343", + "id": "69e30bd7", "metadata": { "editable": true }, @@ -2042,7 +2060,7 @@ }, { "cell_type": "markdown", - "id": "6cc519ae", + "id": "2715262b", "metadata": { "editable": true }, @@ -2054,7 +2072,7 @@ }, { "cell_type": "markdown", - "id": "702ee2c8", + "id": "c02b8d51", "metadata": { "editable": true }, @@ -2068,7 +2086,233 @@ }, { "cell_type": "markdown", - "id": "4ef68b5b", + "id": "2e7e59eb", + "metadata": { + "editable": true + }, + "source": [ + "## Code examples for the simple models" + ] + }, + { + "cell_type": "markdown", + "id": "d5c58a0e", + "metadata": { + "editable": true + }, + "source": [ + "## Simple neural network and the back propagation equations\n", + "\n", + "Let us now try to increase our level of ambitions and attempt to set\n", + "up the equations for a neural network with two input nodes, one hidden\n", + "layer with two hidden nodes and one utput layers.\n", + "\n", + "We need to define the following parameters and variables with the input layer (layer $(0)$) \n", + "where we label the nodes $x_0$ and $x_1$" + ] + }, + { + "cell_type": "markdown", + "id": "1cf327e4", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "x_0 = a_0^{(0)} \\wedge x_1 = a_1^{(0)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e0e224f9", + "metadata": { + "editable": true + }, + "source": [ + "The hidden layer (layer $(1)$) has nodes which yield the outputs $a_0^{(1)}$ and $a_1^{(1)}$) with weight $\\boldsymbol{w}$ and bias $\\boldsymbol{b}$ parameters" + ] + }, + { + "cell_type": "markdown", + "id": "9ceeb0da", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "w_{ij}^{(1)}=\\left\\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\\right\\} \\wedge b^{(1)}=\\left\\{b_0^{(1)},b_1^{(1)}\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2c258e69", + "metadata": { + "editable": true + }, + "source": [ + "## The ouput layer\n", + "\n", + "Finally, we have the ouput layer given by layer label $(2)$ with output $a^{(2)}$ and weights and biases to be determined" + ] + }, + { + "cell_type": "markdown", + "id": "5f634655", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "w_{i}^{(2)}=\\left\\{w_{0}^{(2)},w_{1}^{(2)}\\right\\} \\wedge b^{(2)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "69e8fdf0", + "metadata": { + "editable": true + }, + "source": [ + "Our output is $\\tilde{y}=a^{(2)}$ and we define a generic cost function $C(a^{(2)},y;\\boldsymbol{\\Theta})$ where $y$ is the target value (a scalar here).\n", + "The parameters we need to optimize are given by" + ] + }, + { + "cell_type": "markdown", + "id": "9edff35a", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "\\boldsymbol{\\Theta}=\\left\\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "076735bb", + "metadata": { + "editable": true + }, + "source": [ + "## Compact expressions\n", + "\n", + "We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions.\n", + "The inputs to the first hidden layer are" + ] + }, + { + "cell_type": "markdown", + "id": "2628a490", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "\\begin{bmatrix}z_0^{(1)} \\\\ z_1^{(1)} \\end{bmatrix}=\\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\\\ w_{10}^{(1)} &w_{11}^{(1)} \\end{bmatrix}\\begin{bmatrix}a_0^{(0)} \\\\ a_1^{(0)} \\end{bmatrix}+\\begin{bmatrix}b_0^{(1)} \\\\ b_1^{(1)} \\end{bmatrix},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e9aacc95", + "metadata": { + "editable": true + }, + "source": [ + "with outputs" + ] + }, + { + "cell_type": "markdown", + "id": "e9434bbb", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "\\begin{bmatrix}a_0^{(1)} \\\\ a_1^{(1)} \\end{bmatrix}=\\begin{bmatrix}\\sigma^{(1)}(z_0^{(1)}) \\\\ \\sigma^{(1)}(z_1^{(1)}) \\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5d20d323", + "metadata": { + "editable": true + }, + "source": [ + "## For the output layer\n", + "\n", + "For the final output layer we have the inputs to the final activation function" + ] + }, + { + "cell_type": "markdown", + "id": "8b323c72", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "z^{(2)} = w_{0}^{(2)}a_0^{(1)} +w_{1}^{(2)}a_1^{(1)}+b^{(2)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "c52b2643", + "metadata": { + "editable": true + }, + "source": [ + "resulting in the output" + ] + }, + { + "cell_type": "markdown", + "id": "24591cba", + "metadata": { + "editable": true + }, + "source": [ + "$$\n", + "a^{(2)}=\\sigma^{(2)}(z^{(2)}).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "f7e3831c", + "metadata": { + "editable": true + }, + "source": [ + "## Explicit derivatives\n", + "\n", + "In total we have nine parameters which we need to train.\n", + "Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output layer we have then" + ] + }, + { + "cell_type": "markdown", + "id": "c45b1840", + "metadata": { + "editable": true + }, + "source": [ + "## Setting up the equations for the optimization\n", + "\n", + "For th" + ] + }, + { + "cell_type": "markdown", + "id": "2911a5cb", "metadata": { "editable": true }, @@ -2082,7 +2326,7 @@ }, { "cell_type": "markdown", - "id": "18d15df8", + "id": "c9b03fc9", "metadata": { "editable": true }, @@ -2094,7 +2338,7 @@ }, { "cell_type": "markdown", - "id": "6c88a6c7", + "id": "14554427", "metadata": { "editable": true }, @@ -2104,7 +2348,7 @@ }, { "cell_type": "markdown", - "id": "cfc5fe3f", + "id": "8bec084e", "metadata": { "editable": true }, @@ -2116,7 +2360,7 @@ }, { "cell_type": "markdown", - "id": "685b6c92", + "id": "c9c39755", "metadata": { "editable": true }, @@ -2126,7 +2370,7 @@ }, { "cell_type": "markdown", - "id": "b4d0957b", + "id": "17c76ed4", "metadata": { "editable": true }, @@ -2138,7 +2382,7 @@ }, { "cell_type": "markdown", - "id": "b961fd6a", + "id": "74ddc88b", "metadata": { "editable": true }, @@ -2156,7 +2400,7 @@ }, { "cell_type": "markdown", - "id": "2b71af4f", + "id": "b031c31c", "metadata": { "editable": true }, @@ -2174,7 +2418,7 @@ }, { "cell_type": "markdown", - "id": "6ff8b7a0", + "id": "fd1f83cd", "metadata": { "editable": true }, @@ -2186,7 +2430,7 @@ }, { "cell_type": "markdown", - "id": "d25227bb", + "id": "d31e795c", "metadata": { "editable": true }, @@ -2196,7 +2440,7 @@ }, { "cell_type": "markdown", - "id": "80b44cfa", + "id": "9f190962", "metadata": { "editable": true }, @@ -2208,7 +2452,7 @@ }, { "cell_type": "markdown", - "id": "84e2cc8c", + "id": "36d5d29e", "metadata": { "editable": true }, @@ -2220,7 +2464,7 @@ }, { "cell_type": "markdown", - "id": "4fad9c89", + "id": "919cf9cf", "metadata": { "editable": true }, @@ -2232,7 +2476,7 @@ }, { "cell_type": "markdown", - "id": "dc2c4185", + "id": "f78a863a", "metadata": { "editable": true }, @@ -2242,7 +2486,7 @@ }, { "cell_type": "markdown", - "id": "adb54afb", + "id": "a4ed2ab8", "metadata": { "editable": true }, @@ -2254,7 +2498,7 @@ }, { "cell_type": "markdown", - "id": "e969a773", + "id": "84987650", "metadata": { "editable": true }, @@ -2264,7 +2508,7 @@ }, { "cell_type": "markdown", - "id": "450cd91f", + "id": "cf03afa3", "metadata": { "editable": true }, @@ -2276,7 +2520,7 @@ }, { "cell_type": "markdown", - "id": "bf38b491", + "id": "ec3990d1", "metadata": { "editable": true }, @@ -2294,7 +2538,7 @@ }, { "cell_type": "markdown", - "id": "b068ea9c", + "id": "bf7d7789", "metadata": { "editable": true }, @@ -2304,7 +2548,7 @@ }, { "cell_type": "markdown", - "id": "2e64e05f", + "id": "b665fa01", "metadata": { "editable": true }, @@ -2322,7 +2566,7 @@ }, { "cell_type": "markdown", - "id": "6c0422e8", + "id": "89f2f4a2", "metadata": { "editable": true }, @@ -2332,7 +2576,7 @@ }, { "cell_type": "markdown", - "id": "689123cb", + "id": "1e988025", "metadata": { "editable": true }, @@ -2350,7 +2594,7 @@ }, { "cell_type": "markdown", - "id": "57ee3448", + "id": "3a094edb", "metadata": { "editable": true }, @@ -2362,7 +2606,7 @@ }, { "cell_type": "markdown", - "id": "723ec30a", + "id": "7871f49e", "metadata": { "editable": true }, @@ -2374,7 +2618,7 @@ }, { "cell_type": "markdown", - "id": "04cbecd3", + "id": "c0b3e3b3", "metadata": { "editable": true }, @@ -2384,7 +2628,7 @@ }, { "cell_type": "markdown", - "id": "b135ec11", + "id": "f4f23a2c", "metadata": { "editable": true }, @@ -2396,7 +2640,7 @@ }, { "cell_type": "markdown", - "id": "2cf6dde6", + "id": "fc7f8cd3", "metadata": { "editable": true }, @@ -2408,7 +2652,7 @@ }, { "cell_type": "markdown", - "id": "01776615", + "id": "5c55bec2", "metadata": { "editable": true }, @@ -2418,7 +2662,7 @@ }, { "cell_type": "markdown", - "id": "087c4ece", + "id": "fe082d20", "metadata": { "editable": true }, @@ -2430,7 +2674,7 @@ }, { "cell_type": "markdown", - "id": "bd979998", + "id": "33829c24", "metadata": { "editable": true }, @@ -2440,7 +2684,7 @@ }, { "cell_type": "markdown", - "id": "667761ea", + "id": "f0f86ecf", "metadata": { "editable": true }, @@ -2452,7 +2696,7 @@ }, { "cell_type": "markdown", - "id": "51597515", + "id": "91aae55f", "metadata": { "editable": true }, @@ -2464,7 +2708,7 @@ }, { "cell_type": "markdown", - "id": "95bc8546", + "id": "ff8e481e", "metadata": { "editable": true }, @@ -2487,7 +2731,7 @@ }, { "cell_type": "markdown", - "id": "92aef9b4", + "id": "5c5da9c3", "metadata": { "editable": true }, @@ -2499,7 +2743,7 @@ }, { "cell_type": "markdown", - "id": "d7ec5a5a", + "id": "40911753", "metadata": { "editable": true }, @@ -2511,7 +2755,7 @@ }, { "cell_type": "markdown", - "id": "075dc16d", + "id": "856128ab", "metadata": { "editable": true }, @@ -2521,7 +2765,7 @@ }, { "cell_type": "markdown", - "id": "afc0c6ba", + "id": "34fe5da7", "metadata": { "editable": true }, @@ -2533,7 +2777,7 @@ }, { "cell_type": "markdown", - "id": "90699b64", + "id": "4a9ff0cc", "metadata": { "editable": true }, @@ -2547,7 +2791,7 @@ }, { "cell_type": "markdown", - "id": "7778eda5", + "id": "23497353", "metadata": { "editable": true }, @@ -2559,7 +2803,7 @@ }, { "cell_type": "markdown", - "id": "d4e442e8", + "id": "6ec3c291", "metadata": { "editable": true }, @@ -2571,7 +2815,7 @@ }, { "cell_type": "markdown", - "id": "716705aa", + "id": "06a12980", "metadata": { "editable": true }, @@ -2581,7 +2825,7 @@ }, { "cell_type": "markdown", - "id": "9d45c586", + "id": "2066cd70", "metadata": { "editable": true }, @@ -2593,7 +2837,7 @@ }, { "cell_type": "markdown", - "id": "d97b6df8", + "id": "69e4f843", "metadata": { "editable": true }, @@ -2605,7 +2849,7 @@ }, { "cell_type": "markdown", - "id": "9d5b0c48", + "id": "30681f91", "metadata": { "editable": true }, @@ -2615,7 +2859,7 @@ }, { "cell_type": "markdown", - "id": "f9464957", + "id": "21a50c42", "metadata": { "editable": true }, @@ -2627,7 +2871,7 @@ }, { "cell_type": "markdown", - "id": "78b37719", + "id": "321d5425", "metadata": { "editable": true }, @@ -2639,7 +2883,7 @@ }, { "cell_type": "markdown", - "id": "c992c573", + "id": "05fc3334", "metadata": { "editable": true }, @@ -2668,7 +2912,7 @@ }, { "cell_type": "markdown", - "id": "646a658a", + "id": "cba959a3", "metadata": { "editable": true }, @@ -2694,7 +2938,7 @@ }, { "cell_type": "markdown", - "id": "6c96ca53", + "id": "e71a0657", "metadata": { "editable": true }, @@ -2724,7 +2968,7 @@ }, { "cell_type": "markdown", - "id": "9212cbb9", + "id": "66af926f", "metadata": { "editable": true }, @@ -2756,7 +3000,7 @@ }, { "cell_type": "markdown", - "id": "1c37d150", + "id": "dd0be212", "metadata": { "editable": true }, @@ -2784,7 +3028,7 @@ }, { "cell_type": "markdown", - "id": "2256d8e2", + "id": "728db2cf", "metadata": { "editable": true }, @@ -2804,7 +3048,7 @@ }, { "cell_type": "markdown", - "id": "7d4f20fb", + "id": "b6168ece", "metadata": { "editable": true }, @@ -2829,7 +3073,7 @@ }, { "cell_type": "markdown", - "id": "589ede45", + "id": "c840023c", "metadata": { "editable": true }, @@ -2841,7 +3085,7 @@ }, { "cell_type": "markdown", - "id": "5e373a3c", + "id": "d3db0dad", "metadata": { "editable": true }, @@ -2863,7 +3107,7 @@ }, { "cell_type": "markdown", - "id": "37f7b205", + "id": "17ea53df", "metadata": { "editable": true }, @@ -2885,7 +3129,7 @@ }, { "cell_type": "markdown", - "id": "a8895092", + "id": "316d1b83", "metadata": { "editable": true }, @@ -2911,7 +3155,7 @@ }, { "cell_type": "markdown", - "id": "0cc8ccf8", + "id": "f070429b", "metadata": { "editable": true }, @@ -2931,7 +3175,7 @@ }, { "cell_type": "markdown", - "id": "d3c3d77e", + "id": "220dd249", "metadata": { "editable": true }, @@ -2951,7 +3195,7 @@ }, { "cell_type": "markdown", - "id": "e4ef3c44", + "id": "5ae08182", "metadata": { "editable": true }, @@ -2977,7 +3221,7 @@ }, { "cell_type": "markdown", - "id": "bdcd9c2a", + "id": "697731e3", "metadata": { "editable": true }, @@ -3006,7 +3250,7 @@ }, { "cell_type": "markdown", - "id": "12fc172e", + "id": "80ca5f58", "metadata": { "editable": true }, @@ -3024,7 +3268,7 @@ }, { "cell_type": "markdown", - "id": "e1893183", + "id": "5dc02d47", "metadata": { "editable": true }, @@ -3040,7 +3284,7 @@ }, { "cell_type": "markdown", - "id": "cc9e29cb", + "id": "32bea05f", "metadata": { "editable": true }, @@ -3052,7 +3296,7 @@ }, { "cell_type": "markdown", - "id": "09a008a1", + "id": "832db7ee", "metadata": { "editable": true }, @@ -3066,7 +3310,7 @@ }, { "cell_type": "markdown", - "id": "0763c08d", + "id": "b653322c", "metadata": { "editable": true }, @@ -3086,7 +3330,7 @@ }, { "cell_type": "markdown", - "id": "f88cfdec", + "id": "5da91eaa", "metadata": { "editable": true }, @@ -3107,7 +3351,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "8cfde848", + "id": "e6d07675", "metadata": { "collapsed": false, "editable": true @@ -3248,7 +3492,7 @@ }, { "cell_type": "markdown", - "id": "db428e3c", + "id": "9a2dbfe9", "metadata": { "editable": true }, @@ -3264,7 +3508,7 @@ { "cell_type": "code", "execution_count": 4, - "id": "2fb12f9f", + "id": "9f161a66", "metadata": { "collapsed": false, "editable": true @@ -3277,7 +3521,7 @@ }, { "cell_type": "markdown", - "id": "c546a093", + "id": "e68c9c7d", "metadata": { "editable": true }, @@ -3289,7 +3533,7 @@ { "cell_type": "code", "execution_count": 5, - "id": "176f5b06", + "id": "604c9998", "metadata": { "collapsed": false, "editable": true @@ -3311,7 +3555,7 @@ }, { "cell_type": "markdown", - "id": "f8742c6f", + "id": "c9bfc10d", "metadata": { "editable": true }, @@ -3327,7 +3571,7 @@ { "cell_type": "code", "execution_count": 6, - "id": "c8575866", + "id": "d8f49e20", "metadata": { "collapsed": false, "editable": true @@ -3365,7 +3609,7 @@ }, { "cell_type": "markdown", - "id": "683b630d", + "id": "df48f82a", "metadata": { "editable": true }, @@ -3378,7 +3622,7 @@ { "cell_type": "code", "execution_count": 7, - "id": "31150cfc", + "id": "f403c12a", "metadata": { "collapsed": false, "editable": true @@ -3399,7 +3643,7 @@ }, { "cell_type": "markdown", - "id": "d77dda8d", + "id": "5623d0ea", "metadata": { "editable": true }, @@ -3415,7 +3659,7 @@ { "cell_type": "code", "execution_count": 8, - "id": "050ba6e4", + "id": "3d62db42", "metadata": { "collapsed": false, "editable": true @@ -3473,7 +3717,7 @@ }, { "cell_type": "markdown", - "id": "b119382e", + "id": "88821a06", "metadata": { "editable": true }, @@ -3488,7 +3732,7 @@ { "cell_type": "code", "execution_count": 9, - "id": "5657fb72", + "id": "12cbc833", "metadata": { "collapsed": false, "editable": true @@ -3509,7 +3753,7 @@ }, { "cell_type": "markdown", - "id": "fea8599d", + "id": "319a1a88", "metadata": { "editable": true }, @@ -3533,7 +3777,7 @@ { "cell_type": "code", "execution_count": 10, - "id": "40b99950", + "id": "54868d01", "metadata": { "collapsed": false, "editable": true @@ -4005,7 +4249,7 @@ }, { "cell_type": "markdown", - "id": "0f05b3ba", + "id": "d748d83c", "metadata": { "editable": true }, @@ -4017,7 +4261,7 @@ { "cell_type": "code", "execution_count": 11, - "id": "a506dacc", + "id": "910f47c9", "metadata": { "collapsed": false, "editable": true @@ -4061,7 +4305,7 @@ }, { "cell_type": "markdown", - "id": "3549dc80", + "id": "0c94d0f3", "metadata": { "editable": true }, @@ -4077,7 +4321,7 @@ { "cell_type": "code", "execution_count": 12, - "id": "fefae858", + "id": "56b585f0", "metadata": { "collapsed": false, "editable": true @@ -4092,7 +4336,7 @@ }, { "cell_type": "markdown", - "id": "831120ea", + "id": "9ddb5c57", "metadata": { "editable": true }, @@ -4103,7 +4347,7 @@ { "cell_type": "code", "execution_count": 13, - "id": "e8594b5a", + "id": "ad3e44f8", "metadata": { "collapsed": false, "editable": true @@ -4118,7 +4362,7 @@ }, { "cell_type": "markdown", - "id": "539d39f4", + "id": "dd207f7e", "metadata": { "editable": true }, @@ -4134,7 +4378,7 @@ { "cell_type": "code", "execution_count": 14, - "id": "2004b61b", + "id": "116d71d6", "metadata": { "collapsed": false, "editable": true @@ -4148,7 +4392,7 @@ }, { "cell_type": "markdown", - "id": "a7fe6ddc", + "id": "2d9ecbf1", "metadata": { "editable": true }, @@ -4163,7 +4407,7 @@ { "cell_type": "code", "execution_count": 15, - "id": "0a94909f", + "id": "88bf89ec", "metadata": { "collapsed": false, "editable": true @@ -4189,7 +4433,7 @@ { "cell_type": "code", "execution_count": 16, - "id": "b3e5a3fd", + "id": "e3aadb3f", "metadata": { "collapsed": false, "editable": true @@ -4204,7 +4448,7 @@ }, { "cell_type": "markdown", - "id": "2304d744", + "id": "bf00c4e9", "metadata": { "editable": true }, @@ -4215,7 +4459,7 @@ { "cell_type": "code", "execution_count": 17, - "id": "9df2287c", + "id": "63e8039f", "metadata": { "collapsed": false, "editable": true @@ -4230,7 +4474,7 @@ }, { "cell_type": "markdown", - "id": "66b9b602", + "id": "bfe13e9d", "metadata": { "editable": true }, @@ -4241,7 +4485,7 @@ { "cell_type": "code", "execution_count": 18, - "id": "01cce111", + "id": "4b1bfe90", "metadata": { "collapsed": false, "editable": true @@ -4261,7 +4505,7 @@ { "cell_type": "code", "execution_count": 19, - "id": "3c5abba7", + "id": "5f19bb11", "metadata": { "collapsed": false, "editable": true @@ -4276,7 +4520,7 @@ }, { "cell_type": "markdown", - "id": "240ac236", + "id": "6ea49d0f", "metadata": { "editable": true }, @@ -4291,7 +4535,7 @@ { "cell_type": "code", "execution_count": 20, - "id": "bbd3572a", + "id": "07da3155", "metadata": { "collapsed": false, "editable": true @@ -4328,7 +4572,7 @@ }, { "cell_type": "markdown", - "id": "b142b5d2", + "id": "0961ab9b", "metadata": { "editable": true }, @@ -4341,7 +4585,7 @@ { "cell_type": "code", "execution_count": 21, - "id": "f87f30d1", + "id": "0668907c", "metadata": { "collapsed": false, "editable": true @@ -4364,7 +4608,7 @@ }, { "cell_type": "markdown", - "id": "819b8944", + "id": "71069c49", "metadata": { "editable": true }, @@ -4374,7 +4618,7 @@ }, { "cell_type": "markdown", - "id": "feb82ce5", + "id": "bac25152", "metadata": { "editable": true }, @@ -4392,7 +4636,7 @@ }, { "cell_type": "markdown", - "id": "c01dc408", + "id": "c1d400f8", "metadata": { "editable": true }, @@ -4427,7 +4671,7 @@ { "cell_type": "code", "execution_count": 22, - "id": "69c6af80", + "id": "12fe850e", "metadata": { "collapsed": false, "editable": true @@ -4439,7 +4683,7 @@ }, { "cell_type": "markdown", - "id": "347ae423", + "id": "0a6ab0cc", "metadata": { "editable": true }, @@ -4451,7 +4695,7 @@ { "cell_type": "code", "execution_count": 23, - "id": "440b5c63", + "id": "a0e49457", "metadata": { "collapsed": false, "editable": true @@ -4464,7 +4708,7 @@ }, { "cell_type": "markdown", - "id": "d483bcd1", + "id": "c4ddfcbe", "metadata": { "editable": true }, @@ -4475,7 +4719,7 @@ { "cell_type": "code", "execution_count": 24, - "id": "8e94bd59", + "id": "35b9c060", "metadata": { "collapsed": false, "editable": true @@ -4488,7 +4732,7 @@ }, { "cell_type": "markdown", - "id": "59f15944", + "id": "895ba32c", "metadata": { "editable": true }, @@ -4503,7 +4747,7 @@ { "cell_type": "code", "execution_count": 25, - "id": "22c373db", + "id": "2e995a7a", "metadata": { "collapsed": false, "editable": true @@ -4515,7 +4759,7 @@ }, { "cell_type": "markdown", - "id": "06650c68", + "id": "43bbc8a4", "metadata": { "editable": true }, @@ -4527,7 +4771,7 @@ }, { "cell_type": "markdown", - "id": "078b1574", + "id": "e5685595", "metadata": { "editable": true }, @@ -4540,7 +4784,7 @@ { "cell_type": "code", "execution_count": 26, - "id": "bf578e87", + "id": "c6023e61", "metadata": { "collapsed": false, "editable": true @@ -4597,7 +4841,7 @@ { "cell_type": "code", "execution_count": 27, - "id": "f273ebcf", + "id": "1bae0551", "metadata": { "collapsed": false, "editable": true @@ -4626,7 +4870,7 @@ { "cell_type": "code", "execution_count": 28, - "id": "a8f6408e", + "id": "178dce81", "metadata": { "collapsed": false, "editable": true @@ -4656,7 +4900,7 @@ { "cell_type": "code", "execution_count": 29, - "id": "39d79c3b", + "id": "758127ef", "metadata": { "collapsed": false, "editable": true @@ -4683,7 +4927,7 @@ { "cell_type": "code", "execution_count": 30, - "id": "31679e1b", + "id": "e4567dc2", "metadata": { "collapsed": false, "editable": true @@ -4725,7 +4969,7 @@ }, { "cell_type": "markdown", - "id": "be730222", + "id": "51e311bb", "metadata": { "editable": true }, @@ -4736,7 +4980,7 @@ { "cell_type": "code", "execution_count": 31, - "id": "3d1c921c", + "id": "77d50930", "metadata": { "collapsed": false, "editable": true diff --git a/doc/pub/week3/pdf/week3.pdf b/doc/pub/week3/pdf/week3.pdf index daccb634c00c96d44b204b2cc1e86cb1d6e6a21c..5f5f8e8d06d7ac61f44ff96768bd0ab25d8d3d79 100644 GIT binary patch delta 52498 zcmYKEWmsHI(*+7MGq?`!Fu1$ByE`OUkl^kR7~Fku2`&MGCb&Dn-5mlUIKcy)+|T=c z=Un^8u3cTdt-IFhs;+@bNckG1zPK95%MIJ%V}ZidT-G_!BQGBDh1VoYP6oWweg}WG zbz%GT-bd519eZaq+mT^1=!H>*Y2y#taSSz6DwdgIyePK3Gr?)U`!}*Pvv^KwG^zB7 z7(-hqaZ$GxUP`&7E1rEDQCG30jyAj>&lk_j^T8Fag z$$O+v!_i8Bj1lUPE|EguFPU9lfAx7be1x$_C>Ne-^Ntt_uMs?n=OukHq-&5Wv(#%L z{?-tLA8zcfbQ6u^lXthM-%`=1YooN|cM$*;a!lASVI2ATrTOX@8&XL?pD)KV$>ckE z>`HpXg%B6_;UQ%VJ!;ag(F-oe*V{a5b;<;{h9b&2>WcYTm-LjTZ`Ycq!|Alh0SkQS zT8|a`3vhCexYxe8qJGnm(Lnwij4Cy)Ky*5*b#^R z_78;$&zk*-@<8?TrA^J%?QFlq0Cnf6-_Gvup4%qlzevc^k1a5_bX?e{2K>yB5fBS> z(MZK(ogdu&Y_P+qrUrkZz%5kD<5iJQv9`b?Mk~aLW9?8C#iG&-Gux&Eq{6|Ue0Wa9 zWwMP33|x63pgu;#{_`6_=`-HH%9zWsRaTWpHCs9tb&~yc?RmDTUKlW1sB{dYqlP^Kk1QL1Xi+GO>Q_(ZH)0;1DoIM45~a2(vtwJM z*LAk}**ou`3;3!EcfXd)@o_JGPRBjDRM<4Msw`Xe4qIDchIX+Pto^@HkD6ou|G} z=~7b9*~iX%* zKIPW_>TBRlIz+1BD#Q3^iABAhi6McXA=75jO&~jcn)GdQATXZ?Qzuxkj0>TFX4~fX z=I|JK%(gXY$=ox%-ZB6x8%4j6t`%BT6Cp9C&jlc0)FpDP6f+)kk6=xVLo{rvPwtxj zT*Sz)5v(a~rO#55Rd2`uJ`bn_UaPM|8& z63{-rN5s8mP{rL+(zij&D1HDUlVcf7#=6Z$2?WcC&+y>#jpagX6T}AY+g~AjkLxT^SRP;j@D~>Wy#}WGv9d zFV|@|&!cb#!4t}>)Ol;*mA~y&2xBEj`^p}mjYhPRKQtr{Sd61Zqh)zYh zOnt=$aHzo1o)d4Qp;$J51-)6bmYTQpzBC0e)dY;eN;2%Sn0MC$Fm=`g@>XRf$9~g3 zu$)pQA_bYpoyU(>-d8lR5Lt!dq-%zRz(!VyM@8ah=%6`_cuA7>hPld9e!}XE?giSSTwDm(hjkHL1r z0P@4Atf$Yg*|fp&R??epv#1icZd9prS?vhZ3opz_`-otJ+1n8rLiMM` z-o64Yju14fUa5!}5N;Jt7TEl6*9=$?kDnEOgt%mb6Scm>nzHj5Nw9xZ*Q|rZ2Smw^ z@k#Xc0ucY<4P>KQzWP6CMry`yN@?(chka|u19EX^Hn<=#LCXx(VEgpou4e<+G!_;_ zur%WrvQ%Aqy*BIpDl-0nnUxiK2NhE#ilqDH3T$&4j3#e>29Ui^&#ONMyc1ZeXL9r) zv!5ekd)if6lb$HUDABNw(;E04^{WlE^J!k-%_0W*W4-h4PNU!3cMb`Tk620BvT6JA zXpsaCv~KExPz#|xI=MLfr)1HS=HEwl^48kZcEwLZxMOxxv87zqcd(ao)2f#b6F;lycr=)7No6(Kx8L=Z>)$CZM_Ed|wLZK!n5z9nQgD|A@N@Mp zM`swiN6y86$ng06LxcQy+SZ-_SkFa3Z}ZRl#kGW+eyB4d!=``PD?M@DW-a0}-KQuF z73KhMH{zvXEjtrL8;5{aq&lfx<+FGPIN>tlDG#(sxxSs%v(vqshN^%~hkqzZ`cjiu z#bEh*ddgmHVx8Pf{<$J={-6%-zVVAl*Y!Ey?fI#}5BsjcHPBv}+#h3Nnyyt1rU|O^r7iUW;<(d`=R|yZsFl-mEW#tIC=<3n z=^_O=agm6p&Gb4J*aBXRZ`Uep18Xt|oa=k-Y^lm-@MK5b(j*-|mZ8O>8WRi-j0q}Q zq@b`UT2|6M3~52U)=mzW6prST6%3lvpSunmNT9UJf{6Q?7FlU?RnIsf!)_m*`ia70$Rc`d*yBe;@fZSbkap@{{Z?OIkvdcctXVq)3Q21!zh9Gg z(om0TB5EbB$sRUSm-OrR(VsmR+op^i^^V@V?ZA1Z^XaB(V_HqGv@T<2q*QgC=>1l_ z!u#{E!|hr=zbM!)^vA!hr?T44C+Jj-VYU3Ec(oV@SKAnwm4s}#={YAxKF7}3eg9)S z_qbtZZzzJaP)rM~PwrI!EsLF~0gfoXoDv!-B`&?ll&P!_Hm-N%J>z%sa^-Dt&h1j! z*1tco%gRfb{PW`{5#qO#_zwcx1nFOxOaZ;9qsryr@Bq1X0OP#iKE!)99?+h0E{ zdzwt>U`pW;8oUhp`dszh`1l48J@i`GNBS3hlecNzTI5p6@p3JhQQ1VAe=V@IsqliH zxW)%-ly9_xjOO~%Es$%l;_cr@G4Oja{cH?}&sYw*R>?~@(%R5TsdGky_0#vZS`9Yq zkf)A|L?yJwtq);1+;f+-&dSg@$Y4pCDQbY~oNMXOV}Lf?Gs4ea04x+-N?;P|I~-Qq zm>p#x;m2#e7Ekr!4D2xHn?mE#2(x2 z;sgq|@Jn(?)}HyAo)K9opPpyKQK{vc2~z+5DcWMxjrlHL&YCwVOrjtBL8uAsyf9fQ_-OG>9xlDo0)Lt5R!wz?4^7ATxSR zmXlaZ8E^rmp~ySL;XR)1R6h-lw2-~&>vImBv@)s>)t$*!S5IDYrLsf5RH%TA`s%BO zIt~Vu!3*sfPypLyQF|&;fcA9LbW%j#nKR^;@l%R^$RX7*PW^!_<$gijR;dr7?J}Gn zLM_aw;cIKPScn;aGuDKXhUXCE+gv~d)3H

    lvZZY4rptkj8%haiFItwNhyW2I3-$ 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

    4u=z!UNkMBe^7Vnx6q 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 Vvmzj)aPjkS@*&aE%BsmB{V$a*k&*xa diff --git a/doc/src/week3/.ipynb_checkpoints/week3-checkpoint.ipynb b/doc/src/week3/.ipynb_checkpoints/week3-checkpoint.ipynb new file mode 100644 index 00000000..d3b1c6e1 --- /dev/null +++ b/doc/src/week3/.ipynb_checkpoints/week3-checkpoint.ipynb @@ -0,0 +1,4405 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "aab2170a", + "metadata": {}, + "source": [ + "\n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "1bd81cd9", + "metadata": {}, + "source": [ + "# January 29-February 2 : Advanced machine learning and data analysis for the physical sciences\n", + "**Morten Hjorth-Jensen**, Department of Physics and Center for Computing in Science Education, University of Oslo, Norway and Department of Physics and Astronomy and Facility for Rare Isotope Beams, Michigan State University, East Lansing, Michigan, USA\n", + "\n", + "Date: **January 30**" + ] + }, + { + "cell_type": "markdown", + "id": "29ea92e5", + "metadata": {}, + "source": [ + "## Overview of third week\n", + "\n", + "1. Discussion of possible projects\n", + "\n", + "2. Review of neural networks and automatic differentiation\n", + "\n", + "3. Discussion of codes\n", + "\n", + "4. [Video of lecture](https://youtu.be/OUTFo0oJadU)\n", + "\n", + "5. [Link to material for project suggestions](https://github.com/CompPhysics/AdvancedMachineLearning/tree/main/doc/Projects/2024/ProjectProposals)" + ] + }, + { + "cell_type": "markdown", + "id": "a2cc2fa2", + "metadata": {}, + "source": [ + "## Mathematics of deep learning\n", + "\n", + "**Two recent books online.**\n", + "\n", + "1. [The Modern Mathematics of Deep Learning, by Julius Berner, Philipp Grohs, Gitta Kutyniok, Philipp Petersen](https://arxiv.org/abs/2105.04026), published as [Mathematical Aspects of Deep Learning, pp. 1-111. Cambridge University Press, 2022](https://doi.org/10.1017/9781009025096.002)\n", + "\n", + "2. [Mathematical Introduction to Deep Learning: Methods, Implementations, and Theory, Arnulf Jentzen, Benno Kuckuck, Philippe von Wurstemberger](https://doi.org/10.48550/arXiv.2310.20360)" + ] + }, + { + "cell_type": "markdown", + "id": "cecd85dc", + "metadata": {}, + "source": [ + "## Reminder on books with hands-on material and codes\n", + "* [Sebastian Rashcka et al, Machine learning with Sickit-Learn and PyTorch](https://sebastianraschka.com/blog/2022/ml-pytorch-book.html)\n", + "\n", + "* [David Foster, Generative Deep Learning with TensorFlow](https://www.oreilly.com/library/view/generative-deep-learning/9781098134174/ch01.html)\n", + "\n", + "* [Bali and Gavras, Generative AI with Python and TensorFlow 2](https://github.com/PacktPublishing/Hands-On-Generative-AI-with-Python-and-TensorFlow-2)\n", + "\n", + "All three books have GitHub addresses from where one can download all codes. We will borrow most of the material from these three texts as well as \n", + "from Goodfellow, Bengio and Courville's text [Deep Learning](https://www.deeplearningbook.org/)" + ] + }, + { + "cell_type": "markdown", + "id": "cedb5428", + "metadata": {}, + "source": [ + "## Reading recommendations\n", + "\n", + "1. Rashkca et al., chapter 11, jupyter-notebook sent separately, from [GitHub](https://github.com/rasbt/machine-learning-book)\n", + "\n", + "2. Goodfellow et al, chapter 6 and 7 contain most of the neural network background." + ] + }, + { + "cell_type": "markdown", + "id": "ecd18965", + "metadata": {}, + "source": [ + "## Mathematics of deep learning and neural networks\n", + "\n", + "Neural networks, in its so-called feed-forward form, where each\n", + "iterations contains a feed-forward stage and a back-propgagation\n", + "stage, consist of series of affine matrix-matrix and matrix-vector\n", + "multiplications. The unknown parameters (the so-called biases and\n", + "weights which deternine the architecture of a neural network), are\n", + "uptaded iteratively using the so-called back-propagation algorithm.\n", + "This algorithm corresponds to the so-called reverse mode of \n", + "automatic differentation." + ] + }, + { + "cell_type": "markdown", + "id": "e822b4b7", + "metadata": {}, + "source": [ + "## Basics of an NN\n", + "\n", + "A neural network consists of a series of hidden layers, in addition to\n", + "the input and output layers. Each layer $l$ has a set of parameters\n", + "$\\boldsymbol{\\Theta}^{(l)}=(\\boldsymbol{W}^{(l)},\\boldsymbol{b}^{(l)})$ which are related to the\n", + "parameters in other layers through a series of affine transformations,\n", + "for a standard NN these are matrix-matrix and matrix-vector\n", + "multiplications. For all layers we will simply use a collective variable $\\boldsymbol{\\Theta}$.\n", + "\n", + "It consist of two basic steps:\n", + "1. a feed forward stage which takes a given input and produces a final output which is compared with the target values through our cost/loss function.\n", + "\n", + "2. a back-propagation state where the unknown parameters $\\boldsymbol{\\Theta}$ are updated through the optimization of the their gradients. The expressions for the gradients are obtained via the chain rule, starting from the derivative of the cost/function.\n", + "\n", + "These two steps make up one iteration. This iterative process is continued till we reach an eventual stopping criterion." + ] + }, + { + "cell_type": "markdown", + "id": "1753ad30", + "metadata": {}, + "source": [ + "## Overarching view of a neural network\n", + "\n", + "The architecture of a neural network defines our model. This model\n", + "aims at describing some function $f(\\boldsymbol{x}$ which represents\n", + "some final result (outputs or tagrget values) given a specific inpput\n", + "$\\boldsymbol{x}$. Note that here $\\boldsymbol{y}$ and $\\boldsymbol{x}$ are not limited to be\n", + "vectors.\n", + "\n", + "The architecture consists of\n", + "1. An input and an output layer where the input layer is defined by the inputs $\\boldsymbol{x}$. The output layer produces the model ouput $\\boldsymbol{\\tilde{y}}$ which is compared with the target value $\\boldsymbol{y}$\n", + "\n", + "2. A given number of hidden layers and neurons/nodes/units for each layer (this may vary)\n", + "\n", + "3. A given activation function $\\sigma(\\boldsymbol{z})$ with arguments $\\boldsymbol{z}$ to be defined below. The activation functions may differ from layer to layer.\n", + "\n", + "4. The last layer, normally called **output** layer has normally an activation function tailored to the specific problem\n", + "\n", + "5. Finally we define a so-called cost or loss function which is used to gauge the quality of our model." + ] + }, + { + "cell_type": "markdown", + "id": "177dab3c", + "metadata": {}, + "source": [ + "## The optimization problem\n", + "\n", + "The cost function is a function of the unknown parameters\n", + "$\\boldsymbol{\\Theta}$ where the latter is a container for all possible\n", + "parameters needed to define a neural network\n", + "\n", + "If we are dealing with a regression task a typical cost/loss function\n", + "is the mean squared error" + ] + }, + { + "cell_type": "markdown", + "id": "4881c1a1", + "metadata": {}, + "source": [ + "$$\n", + "C(\\boldsymbol{\\Theta})=\\frac{1}{n}\\left\\{\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)^T\\left(\\boldsymbol{y}-\\boldsymbol{X}\\boldsymbol{\\theta}\\right)\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8efe3ea8", + "metadata": {}, + "source": [ + "This function represents one of many possible ways to define\n", + "the so-called cost function. Note that here we have assumed a linear dependence in terms of the paramters $\\boldsymbol{\\Theta}$. This is in general not the case." + ] + }, + { + "cell_type": "markdown", + "id": "7301a507", + "metadata": {}, + "source": [ + "## Parameters of neural networks\n", + "For neural networks the parameters\n", + "$\\boldsymbol{\\Theta}$ are given by the so-called weights and biases (to be\n", + "defined below).\n", + "\n", + "The weights are given by matrix elements $w_{ij}^{(l)}$ where the\n", + "superscript indicates the layer number. The biases are typically given\n", + "by vector elements representing each single node of a given layer,\n", + "that is $b_j^{(l)}$." + ] + }, + { + "cell_type": "markdown", + "id": "f98bf567", + "metadata": {}, + "source": [ + "## Other ingredients of a neural network\n", + "\n", + "Having defined the architecture of a neural network, the optimization\n", + "of the cost function with respect to the parameters $\\boldsymbol{\\Theta}$,\n", + "involves the calculations of gradients and their optimization. The\n", + "gradients represent the derivatives of a multidimensional object and\n", + "are often approximated by various gradient methods, including\n", + "1. various quasi-Newton methods,\n", + "\n", + "2. plain gradient descent (GD) with a constant learning rate $\\eta$,\n", + "\n", + "3. GD with momentum and other approximations to the learning rates such as\n", + "\n", + " * Adapative gradient (ADAgrad)\n", + "\n", + " * Root mean-square propagation (RMSprop)\n", + "\n", + " * Adaptive gradient with momentum (ADAM) and many other\n", + "\n", + "4. Stochastic gradient descent and various families of learning rate approximations" + ] + }, + { + "cell_type": "markdown", + "id": "e85b2410", + "metadata": {}, + "source": [ + "## Other parameters\n", + "\n", + "In addition to the above, there are often additional hyperparamaters\n", + "which are included in the setup of a neural network. These will be\n", + "discussed below." + ] + }, + { + "cell_type": "markdown", + "id": "6f2ca4f7", + "metadata": {}, + "source": [ + "## Universal approximation theorem\n", + "\n", + "The universal approximation theorem plays a central role in deep\n", + "learning. [Cybenko (1989)](https://link.springer.com/article/10.1007/BF02551274) showed\n", + "the following:\n", + "\n", + "Let $\\sigma$ be any continuous sigmoidal function such that" + ] + }, + { + "cell_type": "markdown", + "id": "300fd9e5", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma(z) = \\left\\{\\begin{array}{cc} 1 & z\\rightarrow \\infty\\\\ 0 & z \\rightarrow -\\infty \\end{array}\\right.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "118e03ae", + "metadata": {}, + "source": [ + "Given a continuous and deterministic function $F(\\boldsymbol{x})$ on the unit\n", + "cube in $d$-dimensions $F\\in [0,1]^d$, $x\\in [0,1]^d$ and a parameter\n", + "$\\epsilon >0$, there is a one-layer (hidden) neural network\n", + "$f(\\boldsymbol{x};\\boldsymbol{\\Theta})$ with $\\boldsymbol{\\Theta}=(\\boldsymbol{W},\\boldsymbol{b})$ and $\\boldsymbol{W}\\in\n", + "\\mathbb{R}^{m\\times n}$ and $\\boldsymbol{b}\\in \\mathbb{R}^{n}$, for which" + ] + }, + { + "cell_type": "markdown", + "id": "6428c149", + "metadata": {}, + "source": [ + "$$\n", + "\\vert F(\\boldsymbol{x})-f(\\boldsymbol{x};\\boldsymbol{\\Theta})\\vert < \\epsilon \\hspace{0.1cm} \\forall \\boldsymbol{x}\\in[0,1]^d.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7d83601f", + "metadata": {}, + "source": [ + "## Some parallels from real analysis\n", + "\n", + "For those of you familiar with for example the [Stone-Weierstrass\n", + "theorem](https://en.wikipedia.org/wiki/Stone%E2%80%93Weierstrass_theorem)\n", + "for polynomial approximations or the convergence criterion for Fourier\n", + "series, there are similarities in the derivation of the proof for\n", + "neural networks." + ] + }, + { + "cell_type": "markdown", + "id": "c47e5a62", + "metadata": {}, + "source": [ + "## The approximation theorem in words\n", + "\n", + "**Any continuous function $y=F(\\boldsymbol{x})$ supported on the unit cube in\n", + "$d$-dimensions can be approximated by a one-layer sigmoidal network to\n", + "arbitrary accuracy.**\n", + "\n", + "[Hornik (1991)](https://www.sciencedirect.com/science/article/abs/pii/089360809190009T) extended the theorem by letting any non-constant, bounded activation function to be included using that the expectation value" + ] + }, + { + "cell_type": "markdown", + "id": "1d2f653b", + "metadata": {}, + "source": [ + "$$\n", + "\\mathbb{E}[\\vert F(\\boldsymbol{x})\\vert^2] =\\int_{\\boldsymbol{x}\\in D} \\vert F(\\boldsymbol{x})\\vert^2p(\\boldsymbol{x})d\\boldsymbol{x} < \\infty.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "dc3f8cb4", + "metadata": {}, + "source": [ + "Then we have" + ] + }, + { + "cell_type": "markdown", + "id": "28d329ee", + "metadata": {}, + "source": [ + "$$\n", + "\\mathbb{E}[\\vert F(\\boldsymbol{x})-f(\\boldsymbol{x};\\boldsymbol{\\Theta})\\vert^2] =\\int_{\\boldsymbol{x}\\in D} \\vert F(\\boldsymbol{x})-f(\\boldsymbol{x};\\boldsymbol{\\Theta})\\vert^2p(\\boldsymbol{x})d\\boldsymbol{x} < \\epsilon.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "82b63881", + "metadata": {}, + "source": [ + "## More on the general approximation theorem\n", + "\n", + "None of the proofs give any insight into the relation between the\n", + "number of of hidden layers and nodes and the approximation error\n", + "$\\epsilon$, nor the magnitudes of $\\boldsymbol{W}$ and $\\boldsymbol{b}$.\n", + "\n", + "Neural networks (NNs) have what we may call a kind of universality no matter what function we want to compute.\n", + "\n", + "It does not mean that an NN can be used to exactly compute any function. Rather, we get an approximation that is as good as we want." + ] + }, + { + "cell_type": "markdown", + "id": "d0ee1ac5", + "metadata": {}, + "source": [ + "## Class of functions we can approximate\n", + "\n", + "The class of functions that can be approximated are the continuous ones.\n", + "If the function $F(\\boldsymbol{x})$ is discontinuous, it won't in general be possible to approximate it. However, an NN may still give an approximation even if we fail in some points." + ] + }, + { + "cell_type": "markdown", + "id": "c6a0e720", + "metadata": {}, + "source": [ + "## Setting up the equations for a neural network\n", + "\n", + "The questions we want to ask are how do changes in the biases and the\n", + "weights in our network change the cost function and how can we use the\n", + "final output to modify the weights and biases?\n", + "\n", + "To derive these equations let us start with a plain regression problem\n", + "and define our cost function as" + ] + }, + { + "cell_type": "markdown", + "id": "2b6eecfa", + "metadata": {}, + "source": [ + "$$\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": "b3738b9e", + "metadata": {}, + "source": [ + "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 $\\boldsymbol{x}$ are given by $\\boldsymbol{\\tilde{y}}_i$." + ] + }, + { + "cell_type": "markdown", + "id": "4028a89a", + "metadata": {}, + "source": [ + "## Layout of a neural network with three hidden layers\n", + "\n", + "\n", + "\n", + "\n", + "

    Figure 1:

    \n", + "" + ] + }, + { + "cell_type": "markdown", + "id": "98e7592b", + "metadata": {}, + "source": [ + "## Definitions\n", + "\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", + "$\\hat{a}^{l-1}$ from the previous layer as" + ] + }, + { + "cell_type": "markdown", + "id": "9ad9bc5c", + "metadata": {}, + "source": [ + "$$\n", + "z_j^l = \\sum_{i=1}^{M_{l-1}}w_{ij}^la_i^{l-1}+b_j^l,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "447185c0", + "metadata": {}, + "source": [ + "where $b_k^l$ are the biases from layer $l$. Here $M_{l-1}$\n", + "represents the total number of nodes/neurons/units of layer $l-1$. The\n", + "figure in the whiteboard notes illustrates this equation. We can rewrite this in a more\n", + "compact form as the matrix-vector products we discussed earlier," + ] + }, + { + "cell_type": "markdown", + "id": "1bcbad43", + "metadata": {}, + "source": [ + "$$\n", + "\\hat{z}^l = \\left(\\hat{W}^l\\right)^T\\hat{a}^{l-1}+\\hat{b}^l.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "62050d17", + "metadata": {}, + "source": [ + "## Inputs to the 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" + ] + }, + { + "cell_type": "markdown", + "id": "71278918", + "metadata": {}, + "source": [ + "$$\n", + "a_j^l = \\sigma(z_j^l) = \\frac{1}{1+\\exp{-(z_j^l)}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "1e73edcc", + "metadata": {}, + "source": [ + "## Derivatives and the chain rule\n", + "\n", + "From the definition of the activation $z_j^l$ we have" + ] + }, + { + "cell_type": "markdown", + "id": "ab5df9a5", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial z_j^l}{\\partial w_{ij}^l} = a_i^{l-1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "b4389fd7", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "4a950750", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial z_j^l}{\\partial a_i^{l-1}} = w_{ji}^l.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "868c60ff", + "metadata": {}, + "source": [ + "With our definition of the activation function we have that (note that this function depends only on $z_j^l$)" + ] + }, + { + "cell_type": "markdown", + "id": "ee1e3021", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial a_j^l}{\\partial z_j^{l}} = a_j^l(1-a_j^l)=\\sigma(z_j^l)(1-\\sigma(z_j^l)).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "56ea1322", + "metadata": {}, + "source": [ + "## Derivative of the cost function\n", + "\n", + "With these definitions we can now compute the derivative of the cost function in terms of the weights.\n", + "\n", + "Let us specialize to the output layer $l=L$. Our cost function is" + ] + }, + { + "cell_type": "markdown", + "id": "ae095881", + "metadata": {}, + "source": [ + "$$\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": "8fe5367d", + "metadata": {}, + "source": [ + "The derivative of this function with respect to the weights is" + ] + }, + { + "cell_type": "markdown", + "id": "1374c254", + "metadata": {}, + "source": [ + "$$\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": "03f0501f", + "metadata": {}, + "source": [ + "The last partial derivative can easily be computed and reads (by applying the chain rule)" + ] + }, + { + "cell_type": "markdown", + "id": "2d9c19ee", + "metadata": {}, + "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", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "dc1121f4", + "metadata": {}, + "source": [ + "## Simpler examples first, and automatic differentiation\n", + "\n", + "In order to understand the back propagation algorithm and its\n", + "derivation (an implementation of the chain rule), let us first digress\n", + "with some simple examples. These examples are also meant to motivate\n", + "the link with back propagation and [automatic differentiation](https://en.wikipedia.org/wiki/Automatic_differentiation)." + ] + }, + { + "cell_type": "markdown", + "id": "ac618fa0", + "metadata": {}, + "source": [ + "## Reminder on the chain rule and gradients\n", + "\n", + "If we have a multivariate function $f(x,y)$ where $x=x(t)$ and $y=y(t)$ are functions of a variable $t$, we have that the gradient of $f$ with respect to $t$ (without the explicit unit vector components)" + ] + }, + { + "cell_type": "markdown", + "id": "43405ea8", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dt} = \\begin{bmatrix}\\frac{\\partial f}{\\partial x} & \\frac{\\partial f}{\\partial y} \\end{bmatrix} \\begin{bmatrix}\\frac{\\partial x}{\\partial t} \\\\ \\frac{\\partial y}{\\partial t} \\end{bmatrix}=\\frac{\\partial f}{\\partial x} \\frac{\\partial x}{\\partial t} +\\frac{\\partial f}{\\partial y} \\frac{\\partial y}{\\partial t}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "f5582370", + "metadata": {}, + "source": [ + "## Multivariable functions\n", + "\n", + "If we have a multivariate function $f(x,y)$ where $x=x(t,s)$ and $y=y(t,s)$ are functions of the variables $t$ and $s$, we have that the partial derivatives" + ] + }, + { + "cell_type": "markdown", + "id": "dfd5ae6c", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial s}=\\frac{\\partial f}{\\partial x}\\frac{\\partial x}{\\partial s}+\\frac{\\partial f}{\\partial y}\\frac{\\partial y}{\\partial s},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "4f86cb27", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "e17ccd72", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial t}=\\frac{\\partial f}{\\partial x}\\frac{\\partial x}{\\partial t}+\\frac{\\partial f}{\\partial y}\\frac{\\partial y}{\\partial t}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e963806e", + "metadata": {}, + "source": [ + "the gradient of $f$ with respect to $t$ and $s$ (without the explicit unit vector components)" + ] + }, + { + "cell_type": "markdown", + "id": "a5237a7e", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{d(s,t)} = \\begin{bmatrix}\\frac{\\partial f}{\\partial x} & \\frac{\\partial f}{\\partial y} \\end{bmatrix} \\begin{bmatrix}\\frac{\\partial x}{\\partial s} &\\frac{\\partial x}{\\partial t} \\\\ \\frac{\\partial y}{\\partial s} & \\frac{\\partial y}{\\partial t} \\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "12c58997", + "metadata": {}, + "source": [ + "## Automatic differentiation through examples\n", + "\n", + "A great introduction to automatic differentiation is given by Baydin et al., see .\n", + "\n", + "Automatic differentiation is a represented by a repeated application\n", + "of the chain rule on well-known functions and allows for the\n", + "calculation of derivatives to numerical precision. It is not the same\n", + "as the calculation of symbolic derivatives via for example SymPy, nor\n", + "does it use approximative formulae based on Taylor-expansions of a\n", + "function around a given value. The latter are error prone due to\n", + "truncation errors and values of the step size $\\Delta$." + ] + }, + { + "cell_type": "markdown", + "id": "d0a63af2", + "metadata": {}, + "source": [ + "## Simple example\n", + "\n", + "Our first example is rather simple," + ] + }, + { + "cell_type": "markdown", + "id": "dab248c4", + "metadata": {}, + "source": [ + "$$\n", + "f(x) =\\exp{x^2},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2cb4fb05", + "metadata": {}, + "source": [ + "with derivative" + ] + }, + { + "cell_type": "markdown", + "id": "2a298e4b", + "metadata": {}, + "source": [ + "$$\n", + "f'(x) =2x\\exp{x^2}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6dc4acbf", + "metadata": {}, + "source": [ + "We can use SymPy to extract the pertinent lines of Python code through the following simple example" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cca0b96b", + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import division\n", + "from sympy import *\n", + "x = symbols('x')\n", + "expr = exp(x*x)\n", + "simplify(expr)\n", + "derivative = diff(expr,x)\n", + "print(python(expr))\n", + "print(python(derivative))" + ] + }, + { + "cell_type": "markdown", + "id": "bb9f566d", + "metadata": {}, + "source": [ + "## Smarter way of evaluating the above function\n", + "If we study this function, we note that we can reduce the number of operations by introducing an intermediate variable" + ] + }, + { + "cell_type": "markdown", + "id": "e68602cb", + "metadata": {}, + "source": [ + "$$\n", + "a = x^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "da2ab16d", + "metadata": {}, + "source": [ + "leading to" + ] + }, + { + "cell_type": "markdown", + "id": "5e2a24f9", + "metadata": {}, + "source": [ + "$$\n", + "f(x) = f(a(x)) = b= \\exp{a}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "c931b292", + "metadata": {}, + "source": [ + "We now assume that all operations can be counted in terms of equal\n", + "floating point operations. This means that in order to calculate\n", + "$f(x)$ we need first to square $x$ and then compute the exponential. We\n", + "have thus two floating point operations only." + ] + }, + { + "cell_type": "markdown", + "id": "17b3056b", + "metadata": {}, + "source": [ + "## Reducing the number of operations\n", + "\n", + "With the introduction of a precalculated quantity $a$ and thereby $f(x)$ we have that the derivative can be written as" + ] + }, + { + "cell_type": "markdown", + "id": "ee5a7a9d", + "metadata": {}, + "source": [ + "$$\n", + "f'(x) = 2xb,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6cd2da78", + "metadata": {}, + "source": [ + "which reduces the number of operations from four in the orginal\n", + "expression to two. This means that if we need to compute $f(x)$ and\n", + "its derivative (a common task in optimizations), we have reduced the\n", + "number of operations from six to four in total.\n", + "\n", + "**Note** that the usage of a symbolic software like SymPy does not\n", + "include such simplifications and the calculations of the function and\n", + "the derivatives yield in general more floating point operations." + ] + }, + { + "cell_type": "markdown", + "id": "8e06a657", + "metadata": {}, + "source": [ + "## Chain rule, forward and reverse modes\n", + "\n", + "In the above example we have introduced the variables $a$ and $b$, and our function is" + ] + }, + { + "cell_type": "markdown", + "id": "46b00956", + "metadata": {}, + "source": [ + "$$\n", + "f(x) = f(a(x)) = b= \\exp{a},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "605894c4", + "metadata": {}, + "source": [ + "with $a=x^2$. We can decompose the derivative of $f$ with respect to $x$ as" + ] + }, + { + "cell_type": "markdown", + "id": "a62bf386", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dx}=\\frac{df}{db}\\frac{db}{da}\\frac{da}{dx}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "de356218", + "metadata": {}, + "source": [ + "We note that since $b=f(x)$ that" + ] + }, + { + "cell_type": "markdown", + "id": "d5a1f929", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{db}=1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2249c76d", + "metadata": {}, + "source": [ + "leading to" + ] + }, + { + "cell_type": "markdown", + "id": "973586ae", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dx}=\\frac{db}{da}\\frac{da}{dx}=2x\\exp{x^2},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "d2b9bd9b", + "metadata": {}, + "source": [ + "as before." + ] + }, + { + "cell_type": "markdown", + "id": "4c445e81", + "metadata": {}, + "source": [ + "## Forward and reverse modes\n", + "\n", + "We have that" + ] + }, + { + "cell_type": "markdown", + "id": "9c86d400", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dx}=\\frac{df}{db}\\frac{db}{da}\\frac{da}{dx},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5fc81fb2", + "metadata": {}, + "source": [ + "which we can rewrite either as" + ] + }, + { + "cell_type": "markdown", + "id": "03703809", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dx}=\\left[\\frac{df}{db}\\frac{db}{da}\\right]\\frac{da}{dx},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6c1d033a", + "metadata": {}, + "source": [ + "or" + ] + }, + { + "cell_type": "markdown", + "id": "cf65ac5c", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{df}{dx}=\\frac{df}{db}\\left[\\frac{db}{da}\\frac{da}{dx}\\right].\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "0ad9942c", + "metadata": {}, + "source": [ + "The first expression is called reverse mode (or back propagation)\n", + "since we start by evaluating the derivatives at the end point and then\n", + "propagate backwards. This is the standard way of evaluating\n", + "derivatives (gradients) when optimizing the parameters of a neural\n", + "network. In the context of deep learning this is computationally\n", + "more efficient since the output of a neural network consists of either\n", + "one or some few other output variables.\n", + "\n", + "The second equation defines the so-called **forward mode**." + ] + }, + { + "cell_type": "markdown", + "id": "5b425fad", + "metadata": {}, + "source": [ + "## More complicated function\n", + "\n", + "We increase our ambitions and introduce a slightly more complicated function" + ] + }, + { + "cell_type": "markdown", + "id": "662ed332", + "metadata": {}, + "source": [ + "$$\n", + "f(x) =\\sqrt{x^2+exp{x^2}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "86f3ff9b", + "metadata": {}, + "source": [ + "with derivative" + ] + }, + { + "cell_type": "markdown", + "id": "8fe92564", + "metadata": {}, + "source": [ + "$$\n", + "f'(x) =\\frac{x(1+\\exp{x^2})}{\\sqrt{x^2+exp{x^2}}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5a914c32", + "metadata": {}, + "source": [ + "The corresponding SymPy code reads" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "64ddb47b", + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import division\n", + "from sympy import *\n", + "x = symbols('x')\n", + "expr = sqrt(x*x+exp(x*x))\n", + "simplify(expr)\n", + "derivative = diff(expr,x)\n", + "print(python(expr))\n", + "print(python(derivative))" + ] + }, + { + "cell_type": "markdown", + "id": "66d9c66e", + "metadata": {}, + "source": [ + "## Counting the number of floating point operations\n", + "\n", + "A simple count of operations shows that we need five operations for\n", + "the function itself and ten for the derivative. Fifteen operations in total if we wish to proceed with the above codes.\n", + "\n", + "Can we reduce this to\n", + "say half the number of operations?" + ] + }, + { + "cell_type": "markdown", + "id": "fbc1f092", + "metadata": {}, + "source": [ + "## Defining intermediate operations\n", + "\n", + "We can indeed reduce the number of operation to half of those listed in the brute force approach above.\n", + "We define the following quantities" + ] + }, + { + "cell_type": "markdown", + "id": "621baea0", + "metadata": {}, + "source": [ + "$$\n", + "a = x^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "ebf674b6", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "87c1f6d9", + "metadata": {}, + "source": [ + "$$\n", + "b = \\exp{x^2} = \\exp{a},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5d2b47fe", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "545340e8", + "metadata": {}, + "source": [ + "$$\n", + "c= a+b,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "264638b7", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "f7875bc1", + "metadata": {}, + "source": [ + "$$\n", + "d=f(x)=\\sqrt{c}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "4331cb65", + "metadata": {}, + "source": [ + "## New expression for the derivative\n", + "\n", + "With these definitions we obtain the following partial derivatives" + ] + }, + { + "cell_type": "markdown", + "id": "3cf0da90", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial a}{\\partial x} = 2x,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e8c7a997", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "c13d59ac", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial b}{\\partial a} = \\exp{a},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "c8e3c278", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "8d68820e", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial c}{\\partial a} = 1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "58e8617c", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "9df9f1cd", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial c}{\\partial b} = 1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a5c1e218", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "ff44cfc4", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial d}{\\partial c} = \\frac{1}{2\\sqrt{c}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "4c2a5d35", + "metadata": {}, + "source": [ + "and finally" + ] + }, + { + "cell_type": "markdown", + "id": "17abb6e0", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial d} = 1.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7d2973dc", + "metadata": {}, + "source": [ + "## Final derivatives\n", + "Our final derivatives are thus" + ] + }, + { + "cell_type": "markdown", + "id": "a93bb4b2", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial c} = \\frac{\\partial f}{\\partial d} \\frac{\\partial d}{\\partial c} = \\frac{1}{2\\sqrt{c}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "677f30e9", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial b} = \\frac{\\partial f}{\\partial c} \\frac{\\partial c}{\\partial b} = \\frac{1}{2\\sqrt{c}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "43df8648", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial a} = \\frac{\\partial f}{\\partial c} \\frac{\\partial c}{\\partial a}+\n", + "\\frac{\\partial f}{\\partial b} \\frac{\\partial b}{\\partial a} = \\frac{1+\\exp{a}}{2\\sqrt{c}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "3e630739", + "metadata": {}, + "source": [ + "and finally" + ] + }, + { + "cell_type": "markdown", + "id": "3283b158", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial x} = \\frac{\\partial f}{\\partial a} \\frac{\\partial a}{\\partial x} = \\frac{x(1+\\exp{a})}{\\sqrt{c}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "fff99695", + "metadata": {}, + "source": [ + "which is just" + ] + }, + { + "cell_type": "markdown", + "id": "d1d4beab", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial x} = \\frac{x(1+b)}{d},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "3afd9dc2", + "metadata": {}, + "source": [ + "and requires only three operations if we can reuse all intermediate variables." + ] + }, + { + "cell_type": "markdown", + "id": "c4beed1f", + "metadata": {}, + "source": [ + "## In general not this simple\n", + "\n", + "In general, see the generalization below, unless we can obtain simple\n", + "analytical expressions which we can simplify further, the final\n", + "implementation of automatic differentiation involves repeated\n", + "calculations (and thereby operations) of derivatives of elementary\n", + "functions." + ] + }, + { + "cell_type": "markdown", + "id": "76f39e7a", + "metadata": {}, + "source": [ + "## Automatic differentiation\n", + "\n", + "We can make this example more formal. Automatic differentiation is a\n", + "formalization of the previous example (see graph).\n", + "\n", + "We define $\\boldsymbol{x}\\in x_1,\\dots, x_l$ input variables to a given function $f(\\boldsymbol{x})$ and $x_{l+1},\\dots, x_L$ intermediate variables.\n", + "\n", + "In the above example we have only one input variable, $l=1$ and four intermediate variables, that is" + ] + }, + { + "cell_type": "markdown", + "id": "22cf8332", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{bmatrix} x_1=x & x_2 = x^2=a & x_3 =\\exp{a}= b & x_4=c=a+b & x_5 = \\sqrt{c}=d \\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "3c3a2261", + "metadata": {}, + "source": [ + "Furthemore, for $i=l+1, \\dots, L$ (here $i=2,3,4,5$ and $f=x_L=d$), we\n", + "define the elementary functions $g_i(x_{Pa(x_i)})$ where $x_{Pa(x_i)}$ are the parent nodes of the variable $x_i$.\n", + "\n", + "In our case, we have for example for $x_3=g_3(x_{Pa(x_i)})=\\exp{a}$, that $g_3=\\exp{()}$ and $x_{Pa(x_3)}=a$." + ] + }, + { + "cell_type": "markdown", + "id": "840cbfe7", + "metadata": {}, + "source": [ + "## Chain rule\n", + "\n", + "We can now compute the gradients by back-propagating the derivatives using the chain rule.\n", + "We have defined" + ] + }, + { + "cell_type": "markdown", + "id": "e53e9f3c", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial x_L} = 1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "4e3f9558", + "metadata": {}, + "source": [ + "which allows us to find the derivatives of the various variables $x_i$ as" + ] + }, + { + "cell_type": "markdown", + "id": "5b0958c4", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial f}{\\partial x_i} = \\sum_{x_j:x_i\\in Pa(x_j)}\\frac{\\partial f}{\\partial x_j} \\frac{\\partial x_j}{\\partial x_i}=\\sum_{x_j:x_i\\in Pa(x_j)}\\frac{\\partial f}{\\partial x_j} \\frac{\\partial g_j}{\\partial x_i}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "27c6d568", + "metadata": {}, + "source": [ + "Whenever we have a function which can be expressed as a computation\n", + "graph and the various functions can be expressed in terms of\n", + "elementary functions that are differentiable, then automatic\n", + "differentiation works. The functions may not need to be elementary\n", + "functions, they could also be computer programs, although not all\n", + "programs can be automatically differentiated." + ] + }, + { + "cell_type": "markdown", + "id": "d7eecc2c", + "metadata": {}, + "source": [ + "## First network example, simple percepetron with one input\n", + "\n", + "As yet another example we define now a simple perceptron model with all quantities given by scalars. We consider only one input variable $x$ and one target value $y$. We define an activation function $\\sigma_1$ which takes as input" + ] + }, + { + "cell_type": "markdown", + "id": "0f2ddd67", + "metadata": {}, + "source": [ + "$$\n", + "z_1 = w_1x+b_1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "56f5f523", + "metadata": {}, + "source": [ + "where $w_1$ is the weight and $b_1$ is the bias. These are the\n", + "parameters we want to optimize. The output is $a_1=\\sigma(z_1)$ (see\n", + "graph from whiteboard notes). This output is then fed into the\n", + "**cost/loss** function, which we here for the sake of simplicity just\n", + "define as the squared error" + ] + }, + { + "cell_type": "markdown", + "id": "45472101", + "metadata": {}, + "source": [ + "$$\n", + "C(x;w_1,b_1)=\\frac{1}{2}(a_1-y)^2.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "baf7b0bd", + "metadata": {}, + "source": [ + "## Optimizing the parameters\n", + "\n", + "In setting up the feed forward and back propagation parts of the\n", + "algorithm, we need now the derivative of the various variables we want\n", + "to train.\n", + "\n", + "We need" + ] + }, + { + "cell_type": "markdown", + "id": "ce972a0c", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial w_1} \\hspace{0.1cm}\\mathrm{and}\\hspace{0.1cm}\\frac{\\partial C}{\\partial b_1}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2155ccd9", + "metadata": {}, + "source": [ + "Using the chain rule we find" + ] + }, + { + "cell_type": "markdown", + "id": "c071d63f", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial w_1}=\\frac{\\partial C}{\\partial a_1}\\frac{\\partial a_1}{\\partial z_1}\\frac{\\partial z_1}{\\partial w_1}=(a_1-y)\\sigma_1'x,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "58dc2700", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "804bb5c2", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial b_1}=\\frac{\\partial C}{\\partial a_1}\\frac{\\partial a_1}{\\partial z_1}\\frac{\\partial z_1}{\\partial b_1}=(a_1-y)\\sigma_1',\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "094d7f3f", + "metadata": {}, + "source": [ + "which we later will just define as" + ] + }, + { + "cell_type": "markdown", + "id": "4dc8cbb0", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial a_1}\\frac{\\partial a_1}{\\partial z_1}=\\delta_1.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8d0b215e", + "metadata": {}, + "source": [ + "## Adding a hidden layer\n", + "\n", + "We change our simple model to a (see graph on whiteboard notes)\n", + "network with just one hidden layer but with scalar variables only.\n", + "\n", + "Our output variable changes to $a_2$ and $a_1$ is now the output from the hidden node and $a_0=x$.\n", + "We have then" + ] + }, + { + "cell_type": "markdown", + "id": "11e48362", + "metadata": {}, + "source": [ + "$$\n", + "z_1 = w_1a_0+b_1 \\hspace{0.1cm} \\wedge a_1 = \\sigma_1(z_1),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2e32b0e5", + "metadata": {}, + "source": [ + "$$\n", + "z_2 = w_2a_1+b_2 \\hspace{0.1cm} \\wedge a_2 = \\sigma_2(z_2),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "c46e1b63", + "metadata": {}, + "source": [ + "and the cost function" + ] + }, + { + "cell_type": "markdown", + "id": "020e7033", + "metadata": {}, + "source": [ + "$$\n", + "C(x;\\boldsymbol{\\Theta})=\\frac{1}{2}(a_2-y)^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "52ccc8e3", + "metadata": {}, + "source": [ + "with $\\boldsymbol{\\Theta}=[w_1,w_2,b_1,b_2]$." + ] + }, + { + "cell_type": "markdown", + "id": "428f04f1", + "metadata": {}, + "source": [ + "## The derivatives\n", + "\n", + "The derivatives are now, using the chain rule again" + ] + }, + { + "cell_type": "markdown", + "id": "c68531b0", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial w_2}=\\frac{\\partial C}{\\partial a_2}\\frac{\\partial a_2}{\\partial z_2}\\frac{\\partial z_2}{\\partial w_2}=(a_2-y)\\sigma_2'a_1=\\delta_2a_1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "bbb26b9f", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial b_2}=\\frac{\\partial C}{\\partial a_2}\\frac{\\partial a_2}{\\partial z_2}\\frac{\\partial z_2}{\\partial b_2}=(a_2-y)\\sigma_2'=\\delta_2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "d4320790", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial w_1}=\\frac{\\partial C}{\\partial a_2}\\frac{\\partial a_2}{\\partial z_2}\\frac{\\partial z_2}{\\partial a_1}\\frac{\\partial a_1}{\\partial z_1}\\frac{\\partial z_1}{\\partial w_1}=(a_2-y)\\sigma_2'a_1\\sigma_1'a_0,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "85de71a5", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial C}{\\partial b_1}=\\frac{\\partial C}{\\partial a_2}\\frac{\\partial a_2}{\\partial z_2}\\frac{\\partial z_2}{\\partial a_1}\\frac{\\partial a_1}{\\partial z_1}\\frac{\\partial z_1}{\\partial b_1}=(a_2-y)\\sigma_2'\\sigma_1'=\\delta_1.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "0cff7c34", + "metadata": {}, + "source": [ + "Can you generalize this to more than one hidden layer?" + ] + }, + { + "cell_type": "markdown", + "id": "48280819", + "metadata": {}, + "source": [ + "## Important observations\n", + "\n", + "From the above equations we see that the derivatives of the activation\n", + "functions play a central role. If they vanish, the training may\n", + "stop. This is called the vanishing gradient problem. If they become\n", + "large, the parameters $w_i$ and $b_i$ may simply go to infinity. This\n", + "is, pretty obvious, called the exploding gradient problem." + ] + }, + { + "cell_type": "markdown", + "id": "59662ad7", + "metadata": {}, + "source": [ + "## The training\n", + "\n", + "The training of the parameters is done through various gradient descent approximations with" + ] + }, + { + "cell_type": "markdown", + "id": "7bd57568", + "metadata": {}, + "source": [ + "$$\n", + "w_{i}\\leftarrow w_{i}- \\eta \\delta_i a_{i-1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "d29bd5d8", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "3cac6c38", + "metadata": {}, + "source": [ + "$$\n", + "b_i \\leftarrow b_i-\\eta \\delta_i,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5f9b3a9e", + "metadata": {}, + "source": [ + "with $\\eta$ is the learning rate.\n", + "\n", + "One iteration consists of one feed forward step and one back propagation step. Each back propagation step does one update of the parameters $\\boldsymbol{\\Theta}$.\n", + "\n", + "For the first hidden layer $a_{i-1}=a_0=x$ for this simple model." + ] + }, + { + "cell_type": "markdown", + "id": "79f167df", + "metadata": {}, + "source": [ + "## Code examples for the simple models" + ] + }, + { + "cell_type": "markdown", + "id": "3924f537", + "metadata": {}, + "source": [ + "## Simple neural network and the back propagation equations\n", + "\n", + "Let us now try to increase our level of ambitions and attempt to set up the equations for a neural network with two input nodes, one hidden layer with two hidden nodes and one utput layers.\n", + "\n", + "We need to define the following parameters and variables\n", + "**input layer (layer $(0)$).**\n", + "\n", + "Input nodes $x_0$ and $x_1$)" + ] + }, + { + "cell_type": "markdown", + "id": "1fd3642e", + "metadata": {}, + "source": [ + "$$\n", + "x_0 = a_0^{(0)} \\wedge x_1 = a_1^{(0)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5d4bb336", + "metadata": {}, + "source": [ + "**hidden layer (layer $(1)$).**\n", + "\n", + "with hidden nodes yielding the outputs $a_0^{(1)}$ and $a_1^{(1)}$) and weights $\\boldsymbol{w}$ and biases $\\boldsymbol{b}$" + ] + }, + { + "cell_type": "markdown", + "id": "98e1951b", + "metadata": {}, + "source": [ + "$$\n", + "w_{ij}^{(1)}=\\left\\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)}\\right\\} \\wedge b^{(1)}=\\left{ b_0^{(1)},b_1^{(1)}\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7db04ef3", + "metadata": {}, + "source": [ + "## The ouput layer\n", + "\n", + "Finally, we have the ouput layer given by layer label $(2)$ with output $a^{(2)}$ and weights and biases" + ] + }, + { + "cell_type": "markdown", + "id": "19f8654b", + "metadata": {}, + "source": [ + "$$\n", + "w_{i}^{(2)}=\\left\\{w_{0}^{(2)},w_{1}^{(2)}\\right\\} \\wedge b^{(2)}\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a44da164", + "metadata": {}, + "source": [ + "Our output is $\\tilde{y}=a^{(2)}$ and we define a generic cost function $C(a^{(2)},y;\\boldsymbol{\\Theta})$ where $y$ is the target value (a scalar here).\n", + "The parameters we need to optimize are given by" + ] + }, + { + "cell_type": "markdown", + "id": "c3f0e829", + "metadata": {}, + "source": [ + "$$\n", + "\\boldsymbol{\\Theta}=\\left\\{w_{00}^{(1)},w_{01}^{(1)},w_{10}^{(1)},w_{11}^{(1)},w_{0}^{(2)},w_{1}^{(2)},b_0^{(1)},b_1^{(1)},b^{(2)}\\right\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "73c5f94f", + "metadata": {}, + "source": [ + "## Compact expressions\n", + "\n", + "We can define the inputs to the activation functions for the various layers in terms of various matrix-vector multiplications and vector additions.\n", + "The inputs to the first hidden layer are" + ] + }, + { + "cell_type": "markdown", + "id": "f0f9347e", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{bmatrix}z_0^{(1)} \\\\ z_1^{(1)} \\end{bmatrix}=\\begin{bmatrix}w_{00}^{(1)} & w_{01}^{(1)}\\\\ w_{10}^{(1)} &w_{11}^{(1)} \\end{bmatrix}\\begin{bmatrix}a_0^{(0)} \\\\ a_1^{(0)} \\end{bmatrix}+\\begin{bmatrix}b_0^{(1)} \\\\ b_1^{(1)} \\end{bmatrix},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "9e4ca185", + "metadata": {}, + "source": [ + "with outputs" + ] + }, + { + "cell_type": "markdown", + "id": "3d408f6a", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{bmatrix}a_0^{(1)} \\\\ a_1^{(1)} \\end{bmatrix}=\\begin{bmatrix}\\sigma^{(1)}(z_0^{(1)}) \\\\ \\sigma^{(1)}(z_1^{(1)}) \\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "2920f924", + "metadata": {}, + "source": [ + "## For the output layer" + ] + }, + { + "cell_type": "markdown", + "id": "7958efd8", + "metadata": {}, + "source": [ + "## Explicit derivatives\n", + "\n", + "Since we have only nine quantities we want to optimize for this system, we can for pedagogical reasons spell all out all of them.\n", + "Using the chain rule (or just the back propagation algorithm) we can find all derivatives. For the output and hidden layer we have thus" + ] + }, + { + "cell_type": "markdown", + "id": "78b950c8", + "metadata": {}, + "source": [ + "## Setting up the equations for the optimization\n", + "\n", + "For th" + ] + }, + { + "cell_type": "markdown", + "id": "1dbbdee5", + "metadata": {}, + "source": [ + "## Getting serious, the back propagation equations for a neural network\n", + "\n", + "Now it is time to move away from one node in each layer only. Our inputs are also represented either by several inputs.\n", + "\n", + "We have thus" + ] + }, + { + "cell_type": "markdown", + "id": "984b7fd6", + "metadata": {}, + "source": [ + "$$\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": "b09c2e59", + "metadata": {}, + "source": [ + "Defining" + ] + }, + { + "cell_type": "markdown", + "id": "c8d7a4e6", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^L = a_j^L(1-a_j^L)\\left(a_j^L - y_j\\right) = \\sigma'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "4a813cea", + "metadata": {}, + "source": [ + "and using the Hadamard product of two vectors we can write this as" + ] + }, + { + "cell_type": "markdown", + "id": "0e09a1e1", + "metadata": {}, + "source": [ + "$$\n", + "\\boldsymbol{\\delta}^L = \\sigma'(\\hat{z}^L)\\circ\\frac{\\partial {\\cal C}}{\\partial (\\boldsymbol{a}^L)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7ec6af7c", + "metadata": {}, + "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", + "much on a particular output node $j$, then $\\delta_j^L$ will be small,\n", + "which is what we would expect. The first term on the right, measures\n", + "how fast the activation function $f$ is changing at a given activation\n", + "value $z_j^L$." + ] + }, + { + "cell_type": "markdown", + "id": "17b74b7f", + "metadata": {}, + "source": [ + "## More considerations\n", + "\n", + "Notice that everything in the above equations is easily computed. In\n", + "particular, we compute $z_j^L$ while computing the behaviour of the\n", + "network, and it is only a small additional overhead to compute\n", + "$\\sigma'(z^L_j)$. The exact form of the derivative with respect to the\n", + "output depends on the form of the cost function.\n", + "However, provided the cost function is known there should be little\n", + "trouble in calculating" + ] + }, + { + "cell_type": "markdown", + "id": "6a3d1a6c", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial {\\cal C}}{\\partial (a_j^L)}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "5158f4ec", + "metadata": {}, + "source": [ + "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" + ] + }, + { + "cell_type": "markdown", + "id": "c923a350", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial{\\cal C}}{\\partial w_{jk}^L} = \\delta_j^La_k^{L-1}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "74edad6b", + "metadata": {}, + "source": [ + "## Derivatives in terms of $z_j^L$\n", + "\n", + "It is also easy to see that our previous equation can be written as" + ] + }, + { + "cell_type": "markdown", + "id": "75fde721", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^L =\\frac{\\partial {\\cal C}}{\\partial z_j^L}= \\frac{\\partial {\\cal C}}{\\partial a_j^L}\\frac{\\partial a_j^L}{\\partial z_j^L},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "7c5e74c3", + "metadata": {}, + "source": [ + "which can also be interpreted as the partial derivative of the cost function with respect to the biases $b_j^L$, namely" + ] + }, + { + "cell_type": "markdown", + "id": "84c9f004", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^L = \\frac{\\partial {\\cal C}}{\\partial b_j^L}\\frac{\\partial b_j^L}{\\partial z_j^L}=\\frac{\\partial {\\cal C}}{\\partial b_j^L},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "b1b4555c", + "metadata": {}, + "source": [ + "That is, the error $\\delta_j^L$ is exactly equal to the rate of change of the cost function as a function of the bias." + ] + }, + { + "cell_type": "markdown", + "id": "2966fca6", + "metadata": {}, + "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" + ] + }, + { + "cell_type": "markdown", + "id": "7e7314de", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\frac{\\partial{\\cal C}(\\hat{W^L})}{\\partial w_{jk}^L} = \\delta_j^La_k^{L-1},\n", + "\\label{_auto1} \\tag{1}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e39830a4", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "92d3a3e3", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\delta_j^L = \\sigma'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)},\n", + "\\label{_auto2} \\tag{2}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "8838ccc8", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "id": "12eb944c", + "metadata": {}, + "source": [ + "\n", + "
    \n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\delta_j^L = \\frac{\\partial {\\cal C}}{\\partial b_j^L},\n", + "\\label{_auto3} \\tag{3}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6fec0af3", + "metadata": {}, + "source": [ + "## Final back propagating equation\n", + "\n", + "We have that (replacing $L$ with a general layer $l$)" + ] + }, + { + "cell_type": "markdown", + "id": "d04f8f3f", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^l =\\frac{\\partial {\\cal C}}{\\partial z_j^l}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "9d59178e", + "metadata": {}, + "source": [ + "We want to express this in terms of the equations for layer $l+1$." + ] + }, + { + "cell_type": "markdown", + "id": "99774079", + "metadata": {}, + "source": [ + "## Using the chain rule and summing over all $k$ entries\n", + "\n", + "We obtain" + ] + }, + { + "cell_type": "markdown", + "id": "140c731a", + "metadata": {}, + "source": [ + "$$\n", + "\\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}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "6ad40c12", + "metadata": {}, + "source": [ + "and recalling that" + ] + }, + { + "cell_type": "markdown", + "id": "d0b94459", + "metadata": {}, + "source": [ + "$$\n", + "z_j^{l+1} = \\sum_{i=1}^{M_{l}}w_{ij}^{l+1}a_i^{l}+b_j^{l+1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "08e8ea4c", + "metadata": {}, + "source": [ + "with $M_l$ being the number of nodes in layer $l$, we obtain" + ] + }, + { + "cell_type": "markdown", + "id": "9e66e116", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^l =\\sum_k \\delta_k^{l+1}w_{kj}^{l+1}\\sigma'(z_j^l),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "64e1c072", + "metadata": {}, + "source": [ + "This is our final equation.\n", + "\n", + "We are now ready to set up the algorithm for back propagation and learning the weights and biases." + ] + }, + { + "cell_type": "markdown", + "id": "883f67ff", + "metadata": {}, + "source": [ + "## 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", + "$\\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", + "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=1,2,3,\\dots,L$.\n", + "\n", + "**Notation**: The first hidden layer has $l=1$ as label and the final output layer has $l=L$." + ] + }, + { + "cell_type": "markdown", + "id": "ea192358", + "metadata": {}, + "source": [ + "## 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": "c8789d0e", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^L = \\sigma'(z_j^L)\\frac{\\partial {\\cal C}}{\\partial (a_j^L)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "d6332cf3", + "metadata": {}, + "source": [ + "Then we compute the back propagate error for each $l=L-1,L-2,\\dots,1$ as" + ] + }, + { + "cell_type": "markdown", + "id": "9988c609", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^l = \\sum_k \\delta_k^{l+1}w_{kj}^{l+1}\\sigma'(z_j^l).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "3d5d076e", + "metadata": {}, + "source": [ + "## Setting up the Back propagation algorithm, part 3\n", + "\n", + "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": "29cf31df", + "metadata": {}, + "source": [ + "$$\n", + "w_{jk}^l\\leftarrow = w_{jk}^l- \\eta \\delta_j^la_k^{l-1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a4eb8d03", + "metadata": {}, + "source": [ + "$$\n", + "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": "490f29c9", + "metadata": {}, + "source": [ + "with $\\eta$ being the learning rate." + ] + }, + { + "cell_type": "markdown", + "id": "e37488c0", + "metadata": {}, + "source": [ + "## Updating the gradients\n", + "\n", + "With the back propagate error for each $l=L-1,L-2,\\dots,1$ as" + ] + }, + { + "cell_type": "markdown", + "id": "769b6083", + "metadata": {}, + "source": [ + "$$\n", + "\\delta_j^l = \\sum_k \\delta_k^{l+1}w_{kj}^{l+1}sigma'(z_j^l),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "a802e409", + "metadata": {}, + "source": [ + "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": "03be34ec", + "metadata": {}, + "source": [ + "$$\n", + "w_{jk}^l\\leftarrow = w_{jk}^l- \\eta \\delta_j^la_k^{l-1},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "e6a80871", + "metadata": {}, + "source": [ + "$$\n", + "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": "6e1bf4b6", + "metadata": {}, + "source": [ + "## Fine-tuning neural network hyperparameters\n", + "\n", + "The flexibility of neural networks is also one of their main\n", + "drawbacks: there are many hyperparameters to tweak. Not only can you\n", + "use any imaginable network topology (how neurons/nodes are\n", + "interconnected), but even in a simple FFNN you can change the number\n", + "of layers, the number of neurons per layer, the type of activation\n", + "function to use in each layer, the weight initialization logic, the\n", + "stochastic gradient optmized and much more. How do you know what\n", + "combination of hyperparameters is the best for your task?\n", + "\n", + "* You can use grid search with cross-validation to find the right hyperparameters.\n", + "\n", + "However,since there are many hyperparameters to tune, and since\n", + "training a neural network on a large dataset takes a lot of time, you\n", + "will only be able to explore a tiny part of the hyperparameter space.\n", + "\n", + "* You can use randomized search.\n", + "\n", + "* Or use tools like [Oscar](http://oscar.calldesk.ai/), which implements more complex algorithms to help you find a good set of hyperparameters quickly." + ] + }, + { + "cell_type": "markdown", + "id": "2da8c7a2", + "metadata": {}, + "source": [ + "## Hidden layers\n", + "\n", + "For many problems you can start with just one or two hidden layers and\n", + "it will work just fine. For the MNIST data set you ca easily get a\n", + "high accuracy using just one hidden layer with a few hundred neurons.\n", + "You can reach for this data set above 98% accuracy using two hidden\n", + "layers with the same total amount of neurons, in roughly the same\n", + "amount of training time.\n", + "\n", + "For more complex problems, you can gradually ramp up the number of\n", + "hidden layers, until you start overfitting the training set. Very\n", + "complex tasks, such as large image classification or speech\n", + "recognition, typically require networks with dozens of layers and they\n", + "need a huge amount of training data. However, you will rarely have to\n", + "train such networks from scratch: it is much more common to reuse\n", + "parts of a pretrained state-of-the-art network that performs a similar\n", + "task." + ] + }, + { + "cell_type": "markdown", + "id": "3dc9c620", + "metadata": {}, + "source": [ + "## Which activation function should I use?\n", + "\n", + "The Back propagation algorithm we derived above works by going from\n", + "the output layer to the input layer, propagating the error gradient on\n", + "the way. Once the algorithm has computed the gradient of the cost\n", + "function with regards to each parameter in the network, it uses these\n", + "gradients to update each parameter with a Gradient Descent (GD) step.\n", + "\n", + "Unfortunately for us, the gradients often get smaller and smaller as\n", + "the algorithm progresses down to the first hidden layers. As a result,\n", + "the GD update leaves the lower layer connection weights virtually\n", + "unchanged, and training never converges to a good solution. This is\n", + "known in the literature as **the vanishing gradients problem**.\n", + "\n", + "In other cases, the opposite can happen, namely the the gradients can\n", + "grow bigger and bigger. The result is that many of the layers get\n", + "large updates of the weights the algorithm diverges. This is the\n", + "**exploding gradients problem**, which is mostly encountered in\n", + "recurrent neural networks. More generally, deep neural networks suffer\n", + "from unstable gradients, different layers may learn at widely\n", + "different speeds" + ] + }, + { + "cell_type": "markdown", + "id": "68544785", + "metadata": {}, + "source": [ + "## Is the Logistic activation function (Sigmoid) our choice?\n", + "\n", + "Although this unfortunate behavior has been empirically observed for\n", + "quite a while (it was one of the reasons why deep neural networks were\n", + "mostly abandoned for a long time), it is only around 2010 that\n", + "significant progress was made in understanding it.\n", + "\n", + "A paper titled [Understanding the Difficulty of Training Deep\n", + "Feedforward Neural Networks by Xavier Glorot and Yoshua Bengio](http://proceedings.mlr.press/v9/glorot10a.html) found that\n", + "the problems with the popular logistic\n", + "sigmoid activation function and the weight initialization technique\n", + "that was most popular at the time, namely random initialization using\n", + "a normal distribution with a mean of 0 and a standard deviation of\n", + "1. \n", + "\n", + "They showed that with this activation function and this\n", + "initialization scheme, the variance of the outputs of each layer is\n", + "much greater than the variance of its inputs. Going forward in the\n", + "network, the variance keeps increasing after each layer until the\n", + "activation function saturates at the top layers. This is actually made\n", + "worse by the fact that the logistic function has a mean of 0.5, not 0\n", + "(the hyperbolic tangent function has a mean of 0 and behaves slightly\n", + "better than the logistic function in deep networks)." + ] + }, + { + "cell_type": "markdown", + "id": "4df2cf86", + "metadata": {}, + "source": [ + "## The derivative of the Logistic funtion\n", + "\n", + "Looking at the logistic activation function, when inputs become large\n", + "(negative or positive), the function saturates at 0 or 1, with a\n", + "derivative extremely close to 0. Thus when backpropagation kicks in,\n", + "it has virtually no gradient to propagate back through the network,\n", + "and what little gradient exists keeps getting diluted as\n", + "backpropagation progresses down through the top layers, so there is\n", + "really nothing left for the lower layers.\n", + "\n", + "In their paper, Glorot and Bengio propose a way to significantly\n", + "alleviate this problem. We need the signal to flow properly in both\n", + "directions: in the forward direction when making predictions, and in\n", + "the reverse direction when backpropagating gradients. We don’t want\n", + "the signal to die out, nor do we want it to explode and saturate. For\n", + "the signal to flow properly, the authors argue that we need the\n", + "variance of the outputs of each layer to be equal to the variance of\n", + "its inputs, and we also need the gradients to have equal variance\n", + "before and after flowing through a layer in the reverse direction." + ] + }, + { + "cell_type": "markdown", + "id": "f992cd00", + "metadata": {}, + "source": [ + "## Insights from the paper by Glorot and Bengio\n", + "\n", + "One of the insights in the 2010 paper by Glorot and Bengio was that\n", + "the vanishing/exploding gradients problems were in part due to a poor\n", + "choice of activation function. Until then most people had assumed that\n", + "if Nature had chosen to use roughly sigmoid activation functions in\n", + "biological neurons, they must be an excellent choice. But it turns out\n", + "that other activation functions behave much better in deep neural\n", + "networks, in particular the ReLU activation function, mostly because\n", + "it does not saturate for positive values (and also because it is quite\n", + "fast to compute)." + ] + }, + { + "cell_type": "markdown", + "id": "93a1c57b", + "metadata": {}, + "source": [ + "## The RELU function family\n", + "\n", + "The ReLU activation function suffers from a problem known as the dying\n", + "ReLUs: during training, some neurons effectively die, meaning they\n", + "stop outputting anything other than 0.\n", + "\n", + "In some cases, you may find that half of your network’s neurons are\n", + "dead, especially if you used a large learning rate. During training,\n", + "if a neuron’s weights get updated such that the weighted sum of the\n", + "neuron’s inputs is negative, it will start outputting 0. When this\n", + "happen, the neuron is unlikely to come back to life since the gradient\n", + "of the ReLU function is 0 when its input is negative.\n", + "\n", + "To solve this problem, nowadays practitioners use a variant of the\n", + "ReLU function, such as the leaky ReLU discussed above or the so-called\n", + "exponential linear unit (ELU) function" + ] + }, + { + "cell_type": "markdown", + "id": "1ced80ba", + "metadata": {}, + "source": [ + "$$\n", + "ELU(z) = \\left\\{\\begin{array}{cc} \\alpha\\left( \\exp{(z)}-1\\right) & z < 0,\\\\ z & z \\ge 0.\\end{array}\\right.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "id": "32022612", + "metadata": {}, + "source": [ + "## Which activation function should we use?\n", + "\n", + "In general it seems that the ELU activation function is better than\n", + "the leaky ReLU function (and its variants), which is better than\n", + "ReLU. ReLU performs better than $\\tanh$ which in turn performs better\n", + "than the logistic function.\n", + "\n", + "If runtime performance is an issue, then you may opt for the leaky\n", + "ReLU function over the ELU function If you don’t want to tweak yet\n", + "another hyperparameter, you may just use the default $\\alpha$ of\n", + "$0.01$ for the leaky ReLU, and $1$ for ELU. If you have spare time and\n", + "computing power, you can use cross-validation or bootstrap to evaluate\n", + "other activation functions." + ] + }, + { + "cell_type": "markdown", + "id": "41ef7fa9", + "metadata": {}, + "source": [ + "## More on activation functions, output layers\n", + "\n", + "In most cases you can use the ReLU activation function in the hidden\n", + "layers (or one of its variants).\n", + "\n", + "It is a bit faster to compute than other activation functions, and the\n", + "gradient descent optimization does in general not get stuck.\n", + "\n", + "**For the output layer:**\n", + "\n", + "* For classification the softmax activation function is generally a good choice for classification tasks (when the classes are mutually exclusive).\n", + "\n", + "* For regression tasks, you can simply use no activation function at all." + ] + }, + { + "cell_type": "markdown", + "id": "ac06391c", + "metadata": {}, + "source": [ + "## Batch Normalization\n", + "\n", + "Batch Normalization aims to address the vanishing/exploding gradients\n", + "problems, and more generally the problem that the distribution of each\n", + "layer’s inputs changes during training, as the parameters of the\n", + "previous layers change.\n", + "\n", + "The technique consists of adding an operation in the model just before\n", + "the activation function of each layer, simply zero-centering and\n", + "normalizing the inputs, then scaling and shifting the result using two\n", + "new parameters per layer (one for scaling, the other for shifting). In\n", + "other words, this operation lets the model learn the optimal scale and\n", + "mean of the inputs for each layer. In order to zero-center and\n", + "normalize the inputs, the algorithm needs to estimate the inputs’ mean\n", + "and standard deviation. It does so by evaluating the mean and standard\n", + "deviation of the inputs over the current mini-batch, from this the\n", + "name batch normalization." + ] + }, + { + "cell_type": "markdown", + "id": "c28b92f7", + "metadata": {}, + "source": [ + "## Dropout\n", + "\n", + "It is a fairly simple algorithm: at every training step, every neuron\n", + "(including the input neurons but excluding the output neurons) has a\n", + "probability $p$ of being temporarily dropped out, meaning it will be\n", + "entirely ignored during this training step, but it may be active\n", + "during the next step.\n", + "\n", + "The hyperparameter $p$ is called the dropout rate, and it is typically\n", + "set to 50%. After training, the neurons are not dropped anymore. It\n", + "is viewed as one of the most popular regularization techniques." + ] + }, + { + "cell_type": "markdown", + "id": "9614d3b5", + "metadata": {}, + "source": [ + "## Gradient Clipping\n", + "\n", + "A popular technique to lessen the exploding gradients problem is to\n", + "simply clip the gradients during backpropagation so that they never\n", + "exceed some threshold (this is mostly useful for recurrent neural\n", + "networks).\n", + "\n", + "This technique is called Gradient Clipping.\n", + "\n", + "In general however, Batch\n", + "Normalization is preferred." + ] + }, + { + "cell_type": "markdown", + "id": "5c0cd7be", + "metadata": {}, + "source": [ + "## A top-down perspective on Neural networks\n", + "\n", + "The first thing we would like to do is divide the data into two or\n", + "three parts. A training set, a validation or dev (development) set,\n", + "and a test set. The test set is the data on which we want to make\n", + "predictions. The dev set is a subset of the training data we use to\n", + "check how well we are doing out-of-sample, after training the model on\n", + "the training dataset. We use the validation error as a proxy for the\n", + "test error in order to make tweaks to our model. It is crucial that we\n", + "do not use any of the test data to train the algorithm. This is a\n", + "cardinal sin in ML. Then:\n", + "\n", + "* Estimate optimal error rate\n", + "\n", + "* Minimize underfitting (bias) on training data set.\n", + "\n", + "* Make sure you are not overfitting." + ] + }, + { + "cell_type": "markdown", + "id": "7ece19dd", + "metadata": {}, + "source": [ + "## More top-down perspectives\n", + "\n", + "If the validation and test sets are drawn from the same distributions,\n", + "then a good performance on the validation set should lead to similarly\n", + "good performance on the test set. \n", + "\n", + "However, sometimes\n", + "the training data and test data differ in subtle ways because, for\n", + "example, they are collected using slightly different methods, or\n", + "because it is cheaper to collect data in one way versus another. In\n", + "this case, there can be a mismatch between the training and test\n", + "data. This can lead to the neural network overfitting these small\n", + "differences between the test and training sets, and a poor performance\n", + "on the test set despite having a good performance on the validation\n", + "set. To rectify this, Andrew Ng suggests making two validation or dev\n", + "sets, one constructed from the training data and one constructed from\n", + "the test data. The difference between the performance of the algorithm\n", + "on these two validation sets quantifies the train-test mismatch. This\n", + "can serve as another important diagnostic when using DNNs for\n", + "supervised learning." + ] + }, + { + "cell_type": "markdown", + "id": "67c68979", + "metadata": {}, + "source": [ + "## Limitations of supervised learning with deep networks\n", + "\n", + "Like all statistical methods, supervised learning using neural\n", + "networks has important limitations. This is especially important when\n", + "one seeks to apply these methods, especially to physics problems. Like\n", + "all tools, DNNs are not a universal solution. Often, the same or\n", + "better performance on a task can be achieved by using a few\n", + "hand-engineered features (or even a collection of random\n", + "features)." + ] + }, + { + "cell_type": "markdown", + "id": "1742515c", + "metadata": {}, + "source": [ + "## Limitations of NNs\n", + "\n", + "Here we list some of the important limitations of supervised neural network based models. \n", + "\n", + "* **Need labeled data**. All supervised learning methods, DNNs for supervised learning require labeled data. Often, labeled data is harder to acquire than unlabeled data (e.g. one must pay for human experts to label images).\n", + "\n", + "* **Supervised neural networks are extremely data intensive.** DNNs are data hungry. They perform best when data is plentiful. This is doubly so for supervised methods where the data must also be labeled. The utility of DNNs is extremely limited if data is hard to acquire or the datasets are small (hundreds to a few thousand samples). In this case, the performance of other methods that utilize hand-engineered features can exceed that of DNNs." + ] + }, + { + "cell_type": "markdown", + "id": "79aadc50", + "metadata": {}, + "source": [ + "## Homogeneous data\n", + "\n", + "* **Homogeneous data.** Almost all DNNs deal with homogeneous data of one type. It is very hard to design architectures that mix and match data types (i.e. some continuous variables, some discrete variables, some time series). In applications beyond images, video, and language, this is often what is required. In contrast, ensemble models like random forests or gradient-boosted trees have no difficulty handling mixed data types." + ] + }, + { + "cell_type": "markdown", + "id": "9a4578b9", + "metadata": {}, + "source": [ + "## More limitations\n", + "\n", + "* **Many problems are not about prediction.** In natural science we are often interested in learning something about the underlying distribution that generates the data. In this case, it is often difficult to cast these ideas in a supervised learning setting. While the problems are related, it is possible to make good predictions with a *wrong* model. The model might or might not be useful for understanding the underlying science.\n", + "\n", + "Some of these remarks are particular to DNNs, others are shared by all supervised learning methods. This motivates the use of unsupervised methods which in part circumvent these problems." + ] + }, + { + "cell_type": "markdown", + "id": "151aa1d0", + "metadata": {}, + "source": [ + "## Building a neural network code\n", + "\n", + "Here we present a flexible object oriented codebase\n", + "for a feed forward neural network, along with a demonstration of how\n", + "to use it. Before we get into the details of the neural network, we\n", + "will first present some implementations of various schedulers, cost\n", + "functions and activation functions that can be used together with the\n", + "neural network.\n", + "\n", + "The codes here were developed by Eric Reber and Gregor Kajda during spring 2023.\n", + "After these codes we present the TensorFlow inplementation. Pytorch will be discussed next week." + ] + }, + { + "cell_type": "markdown", + "id": "b4eba603", + "metadata": {}, + "source": [ + "## Learning rate methods\n", + "\n", + "The code below shows object oriented implementations of the Constant,\n", + "Momentum, Adagrad, AdagradMomentum, RMS prop and Adam schedulers. All\n", + "of the classes belong to the shared abstract **Scheduler class**, and\n", + "share the update$\\_$change() and reset() methods allowing for any of the\n", + "schedulers to be seamlessly used during the training stage, as will\n", + "later be shown in the fit() method of the neural\n", + "network. Update$\\_$change() only has one parameter, the gradient, and returns the change which will be subtracted\n", + "from the weights. The reset() function takes no parameters, and resets\n", + "the desired variables. For Constant and Momentum, reset does nothing." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a6928ae9", + "metadata": {}, + "outputs": [], + "source": [ + "import autograd.numpy as np\n", + "\n", + "class Scheduler:\n", + " \"\"\"\n", + " Abstract class for Schedulers\n", + " \"\"\"\n", + "\n", + " def __init__(self, eta):\n", + " self.eta = eta\n", + "\n", + " # should be overwritten\n", + " def update_change(self, gradient):\n", + " raise NotImplementedError\n", + "\n", + " # overwritten if needed\n", + " def reset(self):\n", + " pass\n", + "\n", + "\n", + "class Constant(Scheduler):\n", + " def __init__(self, eta):\n", + " super().__init__(eta)\n", + "\n", + " def update_change(self, gradient):\n", + " return self.eta * gradient\n", + " \n", + " def reset(self):\n", + " pass\n", + "\n", + "\n", + "class Momentum(Scheduler):\n", + " def __init__(self, eta: float, momentum: float):\n", + " super().__init__(eta)\n", + " self.momentum = momentum\n", + " self.change = 0\n", + "\n", + " def update_change(self, gradient):\n", + " self.change = self.momentum * self.change + self.eta * gradient\n", + " return self.change\n", + "\n", + " def reset(self):\n", + " pass\n", + "\n", + "\n", + "class Adagrad(Scheduler):\n", + " def __init__(self, eta):\n", + " super().__init__(eta)\n", + " self.G_t = None\n", + "\n", + " def update_change(self, gradient):\n", + " delta = 1e-8 # avoid division ny zero\n", + "\n", + " if self.G_t is None:\n", + " self.G_t = np.zeros((gradient.shape[0], gradient.shape[0]))\n", + "\n", + " self.G_t += gradient @ gradient.T\n", + "\n", + " G_t_inverse = 1 / (\n", + " delta + np.sqrt(np.reshape(np.diagonal(self.G_t), (self.G_t.shape[0], 1)))\n", + " )\n", + " return self.eta * gradient * G_t_inverse\n", + "\n", + " def reset(self):\n", + " self.G_t = None\n", + "\n", + "\n", + "class AdagradMomentum(Scheduler):\n", + " def __init__(self, eta, momentum):\n", + " super().__init__(eta)\n", + " self.G_t = None\n", + " self.momentum = momentum\n", + " self.change = 0\n", + "\n", + " def update_change(self, gradient):\n", + " delta = 1e-8 # avoid division ny zero\n", + "\n", + " if self.G_t is None:\n", + " self.G_t = np.zeros((gradient.shape[0], gradient.shape[0]))\n", + "\n", + " self.G_t += gradient @ gradient.T\n", + "\n", + " G_t_inverse = 1 / (\n", + " delta + np.sqrt(np.reshape(np.diagonal(self.G_t), (self.G_t.shape[0], 1)))\n", + " )\n", + " self.change = self.change * self.momentum + self.eta * gradient * G_t_inverse\n", + " return self.change\n", + "\n", + " def reset(self):\n", + " self.G_t = None\n", + "\n", + "\n", + "class RMS_prop(Scheduler):\n", + " def __init__(self, eta, rho):\n", + " super().__init__(eta)\n", + " self.rho = rho\n", + " self.second = 0.0\n", + "\n", + " def update_change(self, gradient):\n", + " delta = 1e-8 # avoid division ny zero\n", + " self.second = self.rho * self.second + (1 - self.rho) * gradient * gradient\n", + " return self.eta * gradient / (np.sqrt(self.second + delta))\n", + "\n", + " def reset(self):\n", + " self.second = 0.0\n", + "\n", + "\n", + "class Adam(Scheduler):\n", + " def __init__(self, eta, rho, rho2):\n", + " super().__init__(eta)\n", + " self.rho = rho\n", + " self.rho2 = rho2\n", + " self.moment = 0\n", + " self.second = 0\n", + " self.n_epochs = 1\n", + "\n", + " def update_change(self, gradient):\n", + " delta = 1e-8 # avoid division ny zero\n", + "\n", + " self.moment = self.rho * self.moment + (1 - self.rho) * gradient\n", + " self.second = self.rho2 * self.second + (1 - self.rho2) * gradient * gradient\n", + "\n", + " moment_corrected = self.moment / (1 - self.rho**self.n_epochs)\n", + " second_corrected = self.second / (1 - self.rho2**self.n_epochs)\n", + "\n", + " return self.eta * moment_corrected / (np.sqrt(second_corrected + delta))\n", + "\n", + " def reset(self):\n", + " self.n_epochs += 1\n", + " self.moment = 0\n", + " self.second = 0" + ] + }, + { + "cell_type": "markdown", + "id": "5d4c8f91", + "metadata": {}, + "source": [ + "## Usage of the above learning rate schedulers\n", + "\n", + "To initalize a scheduler, simply create the object and pass in the\n", + "necessary parameters such as the learning rate and the momentum as\n", + "shown below. As the Scheduler class is an abstract class it should not\n", + "called directly, and will raise an error upon usage." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9c3ffda8", + "metadata": {}, + "outputs": [], + "source": [ + "momentum_scheduler = Momentum(eta=1e-3, momentum=0.9)\n", + "adam_scheduler = Adam(eta=1e-3, rho=0.9, rho2=0.999)" + ] + }, + { + "cell_type": "markdown", + "id": "a107dbbd", + "metadata": {}, + "source": [ + "Here is a small example for how a segment of code using schedulers\n", + "could look. Switching out the schedulers is simple." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "281e616b", + "metadata": {}, + "outputs": [], + "source": [ + "weights = np.ones((3,3))\n", + "print(f\"Before scheduler:\\n{weights=}\")\n", + "\n", + "epochs = 10\n", + "for e in range(epochs):\n", + " gradient = np.random.rand(3, 3)\n", + " change = adam_scheduler.update_change(gradient)\n", + " weights = weights - change\n", + " adam_scheduler.reset()\n", + "\n", + "print(f\"\\nAfter scheduler:\\n{weights=}\")" + ] + }, + { + "cell_type": "markdown", + "id": "e39f085c", + "metadata": {}, + "source": [ + "## Cost functions\n", + "\n", + "Here we discuss cost functions that can be used when creating the\n", + "neural network. Every cost function takes the target vector as its\n", + "parameter, and returns a function valued only at $x$ such that it may\n", + "easily be differentiated." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2ee26200", + "metadata": {}, + "outputs": [], + "source": [ + "import autograd.numpy as np\n", + "\n", + "def CostOLS(target):\n", + " \n", + " def func(X):\n", + " return (1.0 / target.shape[0]) * np.sum((target - X) ** 2)\n", + "\n", + " return func\n", + "\n", + "\n", + "def CostLogReg(target):\n", + "\n", + " def func(X):\n", + " \n", + " return -(1.0 / target.shape[0]) * np.sum(\n", + " (target * np.log(X + 10e-10)) + ((1 - target) * np.log(1 - X + 10e-10))\n", + " )\n", + "\n", + " return func\n", + "\n", + "\n", + "def CostCrossEntropy(target):\n", + " \n", + " def func(X):\n", + " return -(1.0 / target.size) * np.sum(target * np.log(X + 10e-10))\n", + "\n", + " return func" + ] + }, + { + "cell_type": "markdown", + "id": "972d889d", + "metadata": {}, + "source": [ + "Below we give a short example of how these cost function may be used\n", + "to obtain results if you wish to test them out on your own using\n", + "AutoGrad's automatics differentiation." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "8f26e796", + "metadata": {}, + "outputs": [], + "source": [ + "from autograd import grad\n", + "\n", + "target = np.array([[1, 2, 3]]).T\n", + "a = np.array([[4, 5, 6]]).T\n", + "\n", + "cost_func = CostCrossEntropy\n", + "cost_func_derivative = grad(cost_func(target))\n", + "\n", + "valued_at_a = cost_func_derivative(a)\n", + "print(f\"Derivative of cost function {cost_func.__name__} valued at a:\\n{valued_at_a}\")" + ] + }, + { + "cell_type": "markdown", + "id": "d53f05b5", + "metadata": {}, + "source": [ + "## Activation functions\n", + "\n", + "Finally, before we look at the neural network, we will look at the\n", + "activation functions which can be specified between the hidden layers\n", + "and as the output function. Each function can be valued for any given\n", + "vector or matrix X, and can be differentiated via derivate()." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b3fa8e1f", + "metadata": {}, + "outputs": [], + "source": [ + "import autograd.numpy as np\n", + "from autograd import elementwise_grad\n", + "\n", + "def identity(X):\n", + " return X\n", + "\n", + "\n", + "def sigmoid(X):\n", + " try:\n", + " return 1.0 / (1 + np.exp(-X))\n", + " except FloatingPointError:\n", + " return np.where(X > np.zeros(X.shape), np.ones(X.shape), np.zeros(X.shape))\n", + "\n", + "\n", + "def softmax(X):\n", + " X = X - np.max(X, axis=-1, keepdims=True)\n", + " delta = 10e-10\n", + " return np.exp(X) / (np.sum(np.exp(X), axis=-1, keepdims=True) + delta)\n", + "\n", + "\n", + "def RELU(X):\n", + " return np.where(X > np.zeros(X.shape), X, np.zeros(X.shape))\n", + "\n", + "\n", + "def LRELU(X):\n", + " delta = 10e-4\n", + " return np.where(X > np.zeros(X.shape), X, delta * X)\n", + "\n", + "\n", + "def derivate(func):\n", + " if func.__name__ == \"RELU\":\n", + "\n", + " def func(X):\n", + " return np.where(X > 0, 1, 0)\n", + "\n", + " return func\n", + "\n", + " elif func.__name__ == \"LRELU\":\n", + "\n", + " def func(X):\n", + " delta = 10e-4\n", + " return np.where(X > 0, 1, delta)\n", + "\n", + " return func\n", + "\n", + " else:\n", + " return elementwise_grad(func)" + ] + }, + { + "cell_type": "markdown", + "id": "beb758fc", + "metadata": {}, + "source": [ + "Below follows a short demonstration of how to use an activation\n", + "function. The derivative of the activation function will be important\n", + "when calculating the output delta term during backpropagation. Note\n", + "that derivate() can also be used for cost functions for a more\n", + "generalized approach." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "ae884966", + "metadata": {}, + "outputs": [], + "source": [ + "z = np.array([[4, 5, 6]]).T\n", + "print(f\"Input to activation function:\\n{z}\")\n", + "\n", + "act_func = sigmoid\n", + "a = act_func(z)\n", + "print(f\"\\nOutput from {act_func.__name__} activation function:\\n{a}\")\n", + "\n", + "act_func_derivative = derivate(act_func)\n", + "valued_at_z = act_func_derivative(a)\n", + "print(f\"\\nDerivative of {act_func.__name__} activation function valued at z:\\n{valued_at_z}\")" + ] + }, + { + "cell_type": "markdown", + "id": "5e9280ca", + "metadata": {}, + "source": [ + "## The Neural Network\n", + "\n", + "Now that we have gotten a good understanding of the implementation of\n", + "some important components, we can take a look at an object oriented\n", + "implementation of a feed forward neural network. The feed forward\n", + "neural network has been implemented as a class named FFNN, which can\n", + "be initiated as a regressor or classifier dependant on the choice of\n", + "cost function. The FFNN can have any number of input nodes, hidden\n", + "layers with any amount of hidden nodes, and any amount of output nodes\n", + "meaning it can perform multiclass classification as well as binary\n", + "classification and regression problems. Although there is a lot of\n", + "code present, it makes for an easy to use and generalizeable interface\n", + "for creating many types of neural networks as will be demonstrated\n", + "below." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "53e7f332", + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "import autograd.numpy as np\n", + "import sys\n", + "import warnings\n", + "from autograd import grad, elementwise_grad\n", + "from random import random, seed\n", + "from copy import deepcopy, copy\n", + "from typing import Tuple, Callable\n", + "from sklearn.utils import resample\n", + "\n", + "warnings.simplefilter(\"error\")\n", + "\n", + "\n", + "class FFNN:\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Feed Forward Neural Network with interface enabling flexible design of a\n", + " nerual networks architecture and the specification of activation function\n", + " in the hidden layers and output layer respectively. This model can be used\n", + " for both regression and classification problems, depending on the output function.\n", + "\n", + " Attributes:\n", + " ------------\n", + " I dimensions (tuple[int]): A list of positive integers, which specifies the\n", + " number of nodes in each of the networks layers. The first integer in the array\n", + " defines the number of nodes in the input layer, the second integer defines number\n", + " of nodes in the first hidden layer and so on until the last number, which\n", + " specifies the number of nodes in the output layer.\n", + " II hidden_func (Callable): The activation function for the hidden layers\n", + " III output_func (Callable): The activation function for the output layer\n", + " IV cost_func (Callable): Our cost function\n", + " V seed (int): Sets random seed, makes results reproducible\n", + " \"\"\"\n", + "\n", + " def __init__(\n", + " self,\n", + " dimensions: tuple[int],\n", + " hidden_func: Callable = sigmoid,\n", + " output_func: Callable = lambda x: x,\n", + " cost_func: Callable = CostOLS,\n", + " seed: int = None,\n", + " ):\n", + " self.dimensions = dimensions\n", + " self.hidden_func = hidden_func\n", + " self.output_func = output_func\n", + " self.cost_func = cost_func\n", + " self.seed = seed\n", + " self.weights = list()\n", + " self.schedulers_weight = list()\n", + " self.schedulers_bias = list()\n", + " self.a_matrices = list()\n", + " self.z_matrices = list()\n", + " self.classification = None\n", + "\n", + " self.reset_weights()\n", + " self._set_classification()\n", + "\n", + " def fit(\n", + " self,\n", + " X: np.ndarray,\n", + " t: np.ndarray,\n", + " scheduler: Scheduler,\n", + " batches: int = 1,\n", + " epochs: int = 100,\n", + " lam: float = 0,\n", + " X_val: np.ndarray = None,\n", + " t_val: np.ndarray = None,\n", + " ):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " This function performs the training the neural network by performing the feedforward and backpropagation\n", + " algorithm to update the networks weights.\n", + "\n", + " Parameters:\n", + " ------------\n", + " I X (np.ndarray) : training data\n", + " II t (np.ndarray) : target data\n", + " III scheduler (Scheduler) : specified scheduler (algorithm for optimization of gradient descent)\n", + " IV scheduler_args (list[int]) : list of all arguments necessary for scheduler\n", + "\n", + " Optional Parameters:\n", + " ------------\n", + " V batches (int) : number of batches the datasets are split into, default equal to 1\n", + " VI epochs (int) : number of iterations used to train the network, default equal to 100\n", + " VII lam (float) : regularization hyperparameter lambda\n", + " VIII X_val (np.ndarray) : validation set\n", + " IX t_val (np.ndarray) : validation target set\n", + "\n", + " Returns:\n", + " ------------\n", + " I scores (dict) : A dictionary containing the performance metrics of the model.\n", + " The number of the metrics depends on the parameters passed to the fit-function.\n", + "\n", + " \"\"\"\n", + "\n", + " # setup \n", + " if self.seed is not None:\n", + " np.random.seed(self.seed)\n", + "\n", + " val_set = False\n", + " if X_val is not None and t_val is not None:\n", + " val_set = True\n", + "\n", + " # creating arrays for score metrics\n", + " train_errors = np.empty(epochs)\n", + " train_errors.fill(np.nan)\n", + " val_errors = np.empty(epochs)\n", + " val_errors.fill(np.nan)\n", + "\n", + " train_accs = np.empty(epochs)\n", + " train_accs.fill(np.nan)\n", + " val_accs = np.empty(epochs)\n", + " val_accs.fill(np.nan)\n", + "\n", + " self.schedulers_weight = list()\n", + " self.schedulers_bias = list()\n", + "\n", + " batch_size = X.shape[0] // batches\n", + "\n", + " X, t = resample(X, t)\n", + "\n", + " # this function returns a function valued only at X\n", + " cost_function_train = self.cost_func(t)\n", + " if val_set:\n", + " cost_function_val = self.cost_func(t_val)\n", + "\n", + " # create schedulers for each weight matrix\n", + " for i in range(len(self.weights)):\n", + " self.schedulers_weight.append(copy(scheduler))\n", + " self.schedulers_bias.append(copy(scheduler))\n", + "\n", + " print(f\"{scheduler.__class__.__name__}: Eta={scheduler.eta}, Lambda={lam}\")\n", + "\n", + " try:\n", + " for e in range(epochs):\n", + " for i in range(batches):\n", + " # allows for minibatch gradient descent\n", + " if i == batches - 1:\n", + " # If the for loop has reached the last batch, take all thats left\n", + " X_batch = X[i * batch_size :, :]\n", + " t_batch = t[i * batch_size :, :]\n", + " else:\n", + " X_batch = X[i * batch_size : (i + 1) * batch_size, :]\n", + " t_batch = t[i * batch_size : (i + 1) * batch_size, :]\n", + "\n", + " self._feedforward(X_batch)\n", + " self._backpropagate(X_batch, t_batch, lam)\n", + "\n", + " # reset schedulers for each epoch (some schedulers pass in this call)\n", + " for scheduler in self.schedulers_weight:\n", + " scheduler.reset()\n", + "\n", + " for scheduler in self.schedulers_bias:\n", + " scheduler.reset()\n", + "\n", + " # computing performance metrics\n", + " pred_train = self.predict(X)\n", + " train_error = cost_function_train(pred_train)\n", + "\n", + " train_errors[e] = train_error\n", + " if val_set:\n", + " \n", + " pred_val = self.predict(X_val)\n", + " val_error = cost_function_val(pred_val)\n", + " val_errors[e] = val_error\n", + "\n", + " if self.classification:\n", + " train_acc = self._accuracy(self.predict(X), t)\n", + " train_accs[e] = train_acc\n", + " if val_set:\n", + " val_acc = self._accuracy(pred_val, t_val)\n", + " val_accs[e] = val_acc\n", + "\n", + " # printing progress bar\n", + " progression = e / epochs\n", + " print_length = self._progress_bar(\n", + " progression,\n", + " train_error=train_errors[e],\n", + " train_acc=train_accs[e],\n", + " val_error=val_errors[e],\n", + " val_acc=val_accs[e],\n", + " )\n", + " except KeyboardInterrupt:\n", + " # allows for stopping training at any point and seeing the result\n", + " pass\n", + "\n", + " # visualization of training progression (similiar to tensorflow progression bar)\n", + " sys.stdout.write(\"\\r\" + \" \" * print_length)\n", + " sys.stdout.flush()\n", + " self._progress_bar(\n", + " 1,\n", + " train_error=train_errors[e],\n", + " train_acc=train_accs[e],\n", + " val_error=val_errors[e],\n", + " val_acc=val_accs[e],\n", + " )\n", + " sys.stdout.write(\"\")\n", + "\n", + " # return performance metrics for the entire run\n", + " scores = dict()\n", + "\n", + " scores[\"train_errors\"] = train_errors\n", + "\n", + " if val_set:\n", + " scores[\"val_errors\"] = val_errors\n", + "\n", + " if self.classification:\n", + " scores[\"train_accs\"] = train_accs\n", + "\n", + " if val_set:\n", + " scores[\"val_accs\"] = val_accs\n", + "\n", + " return scores\n", + "\n", + " def predict(self, X: np.ndarray, *, threshold=0.5):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Performs prediction after training of the network has been finished.\n", + "\n", + " Parameters:\n", + " ------------\n", + " I X (np.ndarray): The design matrix, with n rows of p features each\n", + "\n", + " Optional Parameters:\n", + " ------------\n", + " II threshold (float) : sets minimal value for a prediction to be predicted as the positive class\n", + " in classification problems\n", + "\n", + " Returns:\n", + " ------------\n", + " I z (np.ndarray): A prediction vector (row) for each row in our design matrix\n", + " This vector is thresholded if regression=False, meaning that classification results\n", + " in a vector of 1s and 0s, while regressions in an array of decimal numbers\n", + "\n", + " \"\"\"\n", + "\n", + " predict = self._feedforward(X)\n", + "\n", + " if self.classification:\n", + " return np.where(predict > threshold, 1, 0)\n", + " else:\n", + " return predict\n", + "\n", + " def reset_weights(self):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Resets/Reinitializes the weights in order to train the network for a new problem.\n", + "\n", + " \"\"\"\n", + " if self.seed is not None:\n", + " np.random.seed(self.seed)\n", + "\n", + " self.weights = list()\n", + " for i in range(len(self.dimensions) - 1):\n", + " weight_array = np.random.randn(\n", + " self.dimensions[i] + 1, self.dimensions[i + 1]\n", + " )\n", + " weight_array[0, :] = np.random.randn(self.dimensions[i + 1]) * 0.01\n", + "\n", + " self.weights.append(weight_array)\n", + "\n", + " def _feedforward(self, X: np.ndarray):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Calculates the activation of each layer starting at the input and ending at the output.\n", + " Each following activation is calculated from a weighted sum of each of the preceeding\n", + " activations (except in the case of the input layer).\n", + "\n", + " Parameters:\n", + " ------------\n", + " I X (np.ndarray): The design matrix, with n rows of p features each\n", + "\n", + " Returns:\n", + " ------------\n", + " I z (np.ndarray): A prediction vector (row) for each row in our design matrix\n", + " \"\"\"\n", + "\n", + " # reset matrices\n", + " self.a_matrices = list()\n", + " self.z_matrices = list()\n", + "\n", + " # if X is just a vector, make it into a matrix\n", + " if len(X.shape) == 1:\n", + " X = X.reshape((1, X.shape[0]))\n", + "\n", + " # Add a coloumn of zeros as the first coloumn of the design matrix, in order\n", + " # to add bias to our data\n", + " bias = np.ones((X.shape[0], 1)) * 0.01\n", + " X = np.hstack([bias, X])\n", + "\n", + " # a^0, the nodes in the input layer (one a^0 for each row in X - where the\n", + " # exponent indicates layer number).\n", + " a = X\n", + " self.a_matrices.append(a)\n", + " self.z_matrices.append(a)\n", + "\n", + " # The feed forward algorithm\n", + " for i in range(len(self.weights)):\n", + " if i < len(self.weights) - 1:\n", + " z = a @ self.weights[i]\n", + " self.z_matrices.append(z)\n", + " a = self.hidden_func(z)\n", + " # bias column again added to the data here\n", + " bias = np.ones((a.shape[0], 1)) * 0.01\n", + " a = np.hstack([bias, a])\n", + " self.a_matrices.append(a)\n", + " else:\n", + " try:\n", + " # a^L, the nodes in our output layers\n", + " z = a @ self.weights[i]\n", + " a = self.output_func(z)\n", + " self.a_matrices.append(a)\n", + " self.z_matrices.append(z)\n", + " except Exception as OverflowError:\n", + " print(\n", + " \"OverflowError in fit() in FFNN\\nHOW TO DEBUG ERROR: Consider lowering your learning rate or scheduler specific parameters such as momentum, or check if your input values need scaling\"\n", + " )\n", + "\n", + " # this will be a^L\n", + " return a\n", + "\n", + " def _backpropagate(self, X, t, lam):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Performs the backpropagation algorithm. In other words, this method\n", + " calculates the gradient of all the layers starting at the\n", + " output layer, and moving from right to left accumulates the gradient until\n", + " the input layer is reached. Each layers respective weights are updated while\n", + " the algorithm propagates backwards from the output layer (auto-differentation in reverse mode).\n", + "\n", + " Parameters:\n", + " ------------\n", + " I X (np.ndarray): The design matrix, with n rows of p features each.\n", + " II t (np.ndarray): The target vector, with n rows of p targets.\n", + " III lam (float32): regularization parameter used to punish the weights in case of overfitting\n", + "\n", + " Returns:\n", + " ------------\n", + " No return value.\n", + "\n", + " \"\"\"\n", + " out_derivative = derivate(self.output_func)\n", + " hidden_derivative = derivate(self.hidden_func)\n", + "\n", + " for i in range(len(self.weights) - 1, -1, -1):\n", + " # delta terms for output\n", + " if i == len(self.weights) - 1:\n", + " # for multi-class classification\n", + " if (\n", + " self.output_func.__name__ == \"softmax\"\n", + " ):\n", + " delta_matrix = self.a_matrices[i + 1] - t\n", + " # for single class classification\n", + " else:\n", + " cost_func_derivative = grad(self.cost_func(t))\n", + " delta_matrix = out_derivative(\n", + " self.z_matrices[i + 1]\n", + " ) * cost_func_derivative(self.a_matrices[i + 1])\n", + "\n", + " # delta terms for hidden layer\n", + " else:\n", + " delta_matrix = (\n", + " self.weights[i + 1][1:, :] @ delta_matrix.T\n", + " ).T * hidden_derivative(self.z_matrices[i + 1])\n", + "\n", + " # calculate gradient\n", + " gradient_weights = self.a_matrices[i][:, 1:].T @ delta_matrix\n", + " gradient_bias = np.sum(delta_matrix, axis=0).reshape(\n", + " 1, delta_matrix.shape[1]\n", + " )\n", + "\n", + " # regularization term\n", + " gradient_weights += self.weights[i][1:, :] * lam\n", + "\n", + " # use scheduler\n", + " update_matrix = np.vstack(\n", + " [\n", + " self.schedulers_bias[i].update_change(gradient_bias),\n", + " self.schedulers_weight[i].update_change(gradient_weights),\n", + " ]\n", + " )\n", + "\n", + " # update weights and bias\n", + " self.weights[i] -= update_matrix\n", + "\n", + " def _accuracy(self, prediction: np.ndarray, target: np.ndarray):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Calculates accuracy of given prediction to target\n", + "\n", + " Parameters:\n", + " ------------\n", + " I prediction (np.ndarray): vector of predicitons output network\n", + " (1s and 0s in case of classification, and real numbers in case of regression)\n", + " II target (np.ndarray): vector of true values (What the network ideally should predict)\n", + "\n", + " Returns:\n", + " ------------\n", + " A floating point number representing the percentage of correctly classified instances.\n", + " \"\"\"\n", + " assert prediction.size == target.size\n", + " return np.average((target == prediction))\n", + " def _set_classification(self):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Decides if FFNN acts as classifier (True) og regressor (False),\n", + " sets self.classification during init()\n", + " \"\"\"\n", + " self.classification = False\n", + " if (\n", + " self.cost_func.__name__ == \"CostLogReg\"\n", + " or self.cost_func.__name__ == \"CostCrossEntropy\"\n", + " ):\n", + " self.classification = True\n", + "\n", + " def _progress_bar(self, progression, **kwargs):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Displays progress of training\n", + " \"\"\"\n", + " print_length = 40\n", + " num_equals = int(progression * print_length)\n", + " num_not = print_length - num_equals\n", + " arrow = \">\" if num_equals > 0 else \"\"\n", + " bar = \"[\" + \"=\" * (num_equals - 1) + arrow + \"-\" * num_not + \"]\"\n", + " perc_print = self._format(progression * 100, decimals=5)\n", + " line = f\" {bar} {perc_print}% \"\n", + "\n", + " for key in kwargs:\n", + " if not np.isnan(kwargs[key]):\n", + " value = self._format(kwargs[key], decimals=4)\n", + " line += f\"| {key}: {value} \"\n", + " sys.stdout.write(\"\\r\" + line)\n", + " sys.stdout.flush()\n", + " return len(line)\n", + "\n", + " def _format(self, value, decimals=4):\n", + " \"\"\"\n", + " Description:\n", + " ------------\n", + " Formats decimal numbers for progress bar\n", + " \"\"\"\n", + " if value > 0:\n", + " v = value\n", + " elif value < 0:\n", + " v = -10 * value\n", + " else:\n", + " v = 1\n", + " n = 1 + math.floor(math.log10(v))\n", + " if n >= decimals - 1:\n", + " return str(round(value))\n", + " return f\"{value:.{decimals-n-1}f}\"" + ] + }, + { + "cell_type": "markdown", + "id": "3d122aa0", + "metadata": {}, + "source": [ + "Before we make a model, we will quickly generate a dataset we can use\n", + "for our linear regression problem as shown below" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f2e26ec9", + "metadata": {}, + "outputs": [], + "source": [ + "import autograd.numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "def SkrankeFunction(x, y):\n", + " return np.ravel(0 + 1*x + 2*y + 3*x**2 + 4*x*y + 5*y**2)\n", + "\n", + "def create_X(x, y, n):\n", + " if len(x.shape) > 1:\n", + " x = np.ravel(x)\n", + " y = np.ravel(y)\n", + "\n", + " N = len(x)\n", + " l = int((n + 1) * (n + 2) / 2) # Number of elements in beta\n", + " X = np.ones((N, l))\n", + "\n", + " for i in range(1, n + 1):\n", + " q = int((i) * (i + 1) / 2)\n", + " for k in range(i + 1):\n", + " X[:, q + k] = (x ** (i - k)) * (y**k)\n", + "\n", + " return X\n", + "\n", + "step=0.5\n", + "x = np.arange(0, 1, step)\n", + "y = np.arange(0, 1, step)\n", + "x, y = np.meshgrid(x, y)\n", + "target = SkrankeFunction(x, y)\n", + "target = target.reshape(target.shape[0], 1)\n", + "\n", + "poly_degree=3\n", + "X = create_X(x, y, poly_degree)\n", + "\n", + "X_train, X_test, t_train, t_test = train_test_split(X, target)" + ] + }, + { + "cell_type": "markdown", + "id": "50193282", + "metadata": {}, + "source": [ + "Now that we have our dataset ready for the regression, we can create\n", + "our regressor. Note that with the seed parameter, we can make sure our\n", + "results stay the same every time we run the neural network. For\n", + "inititialization, we simply specify the dimensions (we wish the amount\n", + "of input nodes to be equal to the datapoints, and the output to\n", + "predict one value)." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "72e089fd", + "metadata": {}, + "outputs": [], + "source": [ + "input_nodes = X_train.shape[1]\n", + "output_nodes = 1\n", + "\n", + "linear_regression = FFNN((input_nodes, output_nodes), output_func=identity, cost_func=CostOLS, seed=2023)" + ] + }, + { + "cell_type": "markdown", + "id": "36d0292f", + "metadata": {}, + "source": [ + "We then fit our model with our training data using the scheduler of our choice." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f57f585c", + "metadata": {}, + "outputs": [], + "source": [ + "linear_regression.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "\n", + "scheduler = Constant(eta=1e-3)\n", + "scores = linear_regression.fit(X_train, t_train, scheduler)" + ] + }, + { + "cell_type": "markdown", + "id": "2cb5c961", + "metadata": {}, + "source": [ + "Due to the progress bar we can see the MSE (train$\\_$error) throughout\n", + "the FFNN's training. Note that the fit() function has some optional\n", + "parameters with defualt arguments. For example, the regularization\n", + "hyperparameter can be left ignored if not needed, and equally the FFNN\n", + "will by default run for 100 epochs. These can easily be changed, such\n", + "as for example:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "2ca466da", + "metadata": {}, + "outputs": [], + "source": [ + "linear_regression.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "\n", + "scores = linear_regression.fit(X_train, t_train, scheduler, lam=1e-4, epochs=1000)" + ] + }, + { + "cell_type": "markdown", + "id": "7aa6b5cf", + "metadata": {}, + "source": [ + "We see that given more epochs to train on, the regressor reaches a lower MSE.\n", + "\n", + "Let us then switch to a binary classification. We use a binary\n", + "classification dataset, and follow a similar setup to the regression\n", + "case." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "14ef27bb", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_breast_cancer\n", + "from sklearn.preprocessing import MinMaxScaler\n", + "\n", + "wisconsin = load_breast_cancer()\n", + "X = wisconsin.data\n", + "target = wisconsin.target\n", + "target = target.reshape(target.shape[0], 1)\n", + "\n", + "X_train, X_val, t_train, t_val = train_test_split(X, target)\n", + "\n", + "scaler = MinMaxScaler()\n", + "scaler.fit(X_train)\n", + "X_train = scaler.transform(X_train)\n", + "X_val = scaler.transform(X_val)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "60ed9af1", + "metadata": {}, + "outputs": [], + "source": [ + "input_nodes = X_train.shape[1]\n", + "output_nodes = 1\n", + "\n", + "logistic_regression = FFNN((input_nodes, output_nodes), output_func=sigmoid, cost_func=CostLogReg, seed=2023)" + ] + }, + { + "cell_type": "markdown", + "id": "7581648e", + "metadata": {}, + "source": [ + "We will now make use of our validation data by passing it into our fit function as a keyword argument" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "5b60e340", + "metadata": {}, + "outputs": [], + "source": [ + "logistic_regression.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "\n", + "scheduler = Adam(eta=1e-3, rho=0.9, rho2=0.999)\n", + "scores = logistic_regression.fit(X_train, t_train, scheduler, epochs=1000, X_val=X_val, t_val=t_val)" + ] + }, + { + "cell_type": "markdown", + "id": "60943cb4", + "metadata": {}, + "source": [ + "Finally, we will create a neural network with 2 hidden layers with activation functions." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "81064b40", + "metadata": {}, + "outputs": [], + "source": [ + "input_nodes = X_train.shape[1]\n", + "hidden_nodes1 = 100\n", + "hidden_nodes2 = 30\n", + "output_nodes = 1\n", + "\n", + "dims = (input_nodes, hidden_nodes1, hidden_nodes2, output_nodes)\n", + "\n", + "neural_network = FFNN(dims, hidden_func=RELU, output_func=sigmoid, cost_func=CostLogReg, seed=2023)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "01255d33", + "metadata": {}, + "outputs": [], + "source": [ + "neural_network.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "\n", + "scheduler = Adam(eta=1e-4, rho=0.9, rho2=0.999)\n", + "scores = neural_network.fit(X_train, t_train, scheduler, epochs=1000, X_val=X_val, t_val=t_val)" + ] + }, + { + "cell_type": "markdown", + "id": "9b945ba1", + "metadata": {}, + "source": [ + "## Multiclass classification\n", + "\n", + "Finally, we will demonstrate the use case of multiclass classification\n", + "using our FFNN with the famous MNIST dataset, which contain images of\n", + "digits between the range of 0 to 9." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "2255dcf3", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.datasets import load_digits\n", + "\n", + "def onehot(target: np.ndarray):\n", + " onehot = np.zeros((target.size, target.max() + 1))\n", + " onehot[np.arange(target.size), target] = 1\n", + " return onehot\n", + "\n", + "digits = load_digits()\n", + "\n", + "X = digits.data\n", + "target = digits.target\n", + "target = onehot(target)\n", + "\n", + "input_nodes = 64\n", + "hidden_nodes1 = 100\n", + "hidden_nodes2 = 30\n", + "output_nodes = 10\n", + "\n", + "dims = (input_nodes, hidden_nodes1, hidden_nodes2, output_nodes)\n", + "\n", + "multiclass = FFNN(dims, hidden_func=LRELU, output_func=softmax, cost_func=CostCrossEntropy)\n", + "\n", + "multiclass.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "\n", + "scheduler = Adam(eta=1e-4, rho=0.9, rho2=0.999)\n", + "scores = multiclass.fit(X, target, scheduler, epochs=1000)" + ] + }, + { + "cell_type": "markdown", + "id": "b67c5d21", + "metadata": {}, + "source": [ + "## Testing the XOR gate and other gates\n", + "\n", + "Let us now use our code to test the XOR gate." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "0a838e23", + "metadata": {}, + "outputs": [], + "source": [ + "X = np.array([ [0, 0], [0, 1], [1, 0],[1, 1]],dtype=np.float64)\n", + "\n", + "# The XOR gate\n", + "yXOR = np.array( [[ 0], [1] ,[1], [0]])\n", + "\n", + "input_nodes = X.shape[1]\n", + "output_nodes = 1\n", + "\n", + "logistic_regression = FFNN((input_nodes, output_nodes), output_func=sigmoid, cost_func=CostLogReg, seed=2023)\n", + "logistic_regression.reset_weights() # reset weights such that previous runs or reruns don't affect the weights\n", + "scheduler = Adam(eta=1e-1, rho=0.9, rho2=0.999)\n", + "scores = logistic_regression.fit(X, yXOR, scheduler, epochs=1000)" + ] + }, + { + "cell_type": "markdown", + "id": "d60f0d48", + "metadata": {}, + "source": [ + "Not bad, but the results depend strongly on the learning reate. Try different learning rates." + ] + }, + { + "cell_type": "markdown", + "id": "0e7733c6", + "metadata": {}, + "source": [ + "## Building neural networks in Tensorflow and Keras\n", + "\n", + "Now we want to build on the experience gained from our neural network implementation in NumPy and scikit-learn\n", + "and use it to construct a neural network in Tensorflow. Once we have constructed a neural network in NumPy\n", + "and Tensorflow, building one in Keras is really quite trivial, though the performance may suffer. \n", + "\n", + "In our previous example we used only one hidden layer, and in this we will use two. From this it should be quite\n", + "clear how to build one using an arbitrary number of hidden layers, using data structures such as Python lists or\n", + "NumPy arrays." + ] + }, + { + "cell_type": "markdown", + "id": "d6235cfb", + "metadata": {}, + "source": [ + "## Tensorflow\n", + "\n", + "Tensorflow is an open source library machine learning library\n", + "developed by the Google Brain team for internal use. It was released\n", + "under the Apache 2.0 open source license in November 9, 2015.\n", + "\n", + "Tensorflow is a computational framework that allows you to construct\n", + "machine learning models at different levels of abstraction, from\n", + "high-level, object-oriented APIs like Keras, down to the C++ kernels\n", + "that Tensorflow is built upon. The higher levels of abstraction are\n", + "simpler to use, but less flexible, and our choice of implementation\n", + "should reflect the problems we are trying to solve.\n", + "\n", + "[Tensorflow uses](https://www.tensorflow.org/guide/graphs) so-called graphs to represent your computation\n", + "in terms of the dependencies between individual operations, such that you first build a Tensorflow *graph*\n", + "to represent your model, and then create a Tensorflow *session* to run the graph.\n", + "\n", + "In this guide we will analyze the same data as we did in our NumPy and\n", + "scikit-learn tutorial, gathered from the MNIST database of images. We\n", + "will give an introduction to the lower level Python Application\n", + "Program Interfaces (APIs), and see how we use them to build our graph.\n", + "Then we will build (effectively) the same graph in Keras, to see just\n", + "how simple solving a machine learning problem can be.\n", + "\n", + "To install tensorflow on Unix/Linux systems, use pip as" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "d9a957fa", + "metadata": {}, + "outputs": [], + "source": [ + "pip3 install tensorflow" + ] + }, + { + "cell_type": "markdown", + "id": "d5816511", + "metadata": {}, + "source": [ + "and/or if you use **anaconda**, just write (or install from the graphical user interface)\n", + "(current release of CPU-only TensorFlow)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "4beaf713", + "metadata": {}, + "outputs": [], + "source": [ + "conda create -n tf tensorflow\n", + "conda activate tf" + ] + }, + { + "cell_type": "markdown", + "id": "5f5c9603", + "metadata": {}, + "source": [ + "To install the current release of GPU TensorFlow" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "1910be62", + "metadata": {}, + "outputs": [], + "source": [ + "conda create -n tf-gpu tensorflow-gpu\n", + "conda activate tf-gpu" + ] + }, + { + "cell_type": "markdown", + "id": "db1c0682", + "metadata": {}, + "source": [ + "## Using Keras\n", + "\n", + "Keras is a high level [neural network](https://en.wikipedia.org/wiki/Application_programming_interface)\n", + "that supports Tensorflow, CTNK and Theano as backends. \n", + "If you have Anaconda installed you may run the following command" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "dd2c291d", + "metadata": {}, + "outputs": [], + "source": [ + "conda install keras" + ] + }, + { + "cell_type": "markdown", + "id": "bcd3aa2d", + "metadata": {}, + "source": [ + "You can look up the [instructions here](https://keras.io/) for more information.\n", + "\n", + "We will to a large extent use **keras** in this course." + ] + }, + { + "cell_type": "markdown", + "id": "bfbd5190", + "metadata": {}, + "source": [ + "## Collect and pre-process data\n", + "\n", + "Let us look again at the MINST data set." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "a1257ae3", + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "# import necessary packages\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import tensorflow as tf\n", + "from sklearn import datasets\n", + "\n", + "\n", + "# ensure the same random numbers appear every time\n", + "np.random.seed(0)\n", + "\n", + "# display images in notebook\n", + "%matplotlib inline\n", + "plt.rcParams['figure.figsize'] = (12,12)\n", + "\n", + "\n", + "# download MNIST dataset\n", + "digits = datasets.load_digits()\n", + "\n", + "# define inputs and labels\n", + "inputs = digits.images\n", + "labels = digits.target\n", + "\n", + "print(\"inputs = (n_inputs, pixel_width, pixel_height) = \" + str(inputs.shape))\n", + "print(\"labels = (n_inputs) = \" + str(labels.shape))\n", + "\n", + "\n", + "# flatten the image\n", + "# the value -1 means dimension is inferred from the remaining dimensions: 8x8 = 64\n", + "n_inputs = len(inputs)\n", + "inputs = inputs.reshape(n_inputs, -1)\n", + "print(\"X = (n_inputs, n_features) = \" + str(inputs.shape))\n", + "\n", + "\n", + "# choose some random images to display\n", + "indices = np.arange(n_inputs)\n", + "random_indices = np.random.choice(indices, size=5)\n", + "\n", + "for i, image in enumerate(digits.images[random_indices]):\n", + " plt.subplot(1, 5, i+1)\n", + " plt.axis('off')\n", + " plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')\n", + " plt.title(\"Label: %d\" % digits.target[random_indices[i]])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "963f6b3c", + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import Input\n", + "from tensorflow.keras.models import Sequential #This allows appending layers to existing models\n", + "from tensorflow.keras.layers import Dense #This allows defining the characteristics of a particular layer\n", + "from tensorflow.keras import optimizers #This allows using whichever optimiser we want (sgd,adam,RMSprop)\n", + "from tensorflow.keras import regularizers #This allows using whichever regularizer we want (l1,l2,l1_l2)\n", + "from tensorflow.keras.utils import to_categorical #This allows using categorical cross entropy as the cost function\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "# one-hot representation of labels\n", + "labels = to_categorical(labels)\n", + "\n", + "# split into train and test data\n", + "train_size = 0.8\n", + "test_size = 1 - train_size\n", + "X_train, X_test, Y_train, Y_test = train_test_split(inputs, labels, train_size=train_size,\n", + " test_size=test_size)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "c16ce821", + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "epochs = 100\n", + "batch_size = 100\n", + "n_neurons_layer1 = 100\n", + "n_neurons_layer2 = 50\n", + "n_categories = 10\n", + "eta_vals = np.logspace(-5, 1, 7)\n", + "lmbd_vals = np.logspace(-5, 1, 7)\n", + "def create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories, eta, lmbd):\n", + " model = Sequential()\n", + " model.add(Dense(n_neurons_layer1, activation='sigmoid', kernel_regularizer=regularizers.l2(lmbd)))\n", + " model.add(Dense(n_neurons_layer2, activation='sigmoid', kernel_regularizer=regularizers.l2(lmbd)))\n", + " model.add(Dense(n_categories, activation='softmax'))\n", + " \n", + " sgd = optimizers.SGD(lr=eta)\n", + " model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])\n", + " \n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "f1505f52", + "metadata": {}, + "outputs": [], + "source": [ + "DNN_keras = np.zeros((len(eta_vals), len(lmbd_vals)), dtype=object)\n", + " \n", + "for i, eta in enumerate(eta_vals):\n", + " for j, lmbd in enumerate(lmbd_vals):\n", + " DNN = create_neural_network_keras(n_neurons_layer1, n_neurons_layer2, n_categories,\n", + " eta=eta, lmbd=lmbd)\n", + " DNN.fit(X_train, Y_train, epochs=epochs, batch_size=batch_size, verbose=0)\n", + " scores = DNN.evaluate(X_test, Y_test)\n", + " \n", + " DNN_keras[i][j] = DNN\n", + " \n", + " print(\"Learning rate = \", eta)\n", + " print(\"Lambda = \", lmbd)\n", + " print(\"Test accuracy: %.3f\" % scores[1])\n", + " print()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "83c3854e", + "metadata": {}, + "outputs": [], + "source": [ + "# optional\n", + "# visual representation of grid search\n", + "# uses seaborn heatmap, could probably do this in matplotlib\n", + "import seaborn as sns\n", + "\n", + "sns.set()\n", + "\n", + "train_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "test_accuracy = np.zeros((len(eta_vals), len(lmbd_vals)))\n", + "\n", + "for i in range(len(eta_vals)):\n", + " for j in range(len(lmbd_vals)):\n", + " DNN = DNN_keras[i][j]\n", + "\n", + " train_accuracy[i][j] = DNN.evaluate(X_train, Y_train)[1]\n", + " test_accuracy[i][j] = DNN.evaluate(X_test, Y_test)[1]\n", + "\n", + " \n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(train_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Training Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()\n", + "\n", + "fig, ax = plt.subplots(figsize = (10, 10))\n", + "sns.heatmap(test_accuracy, annot=True, ax=ax, cmap=\"viridis\")\n", + "ax.set_title(\"Test Accuracy\")\n", + "ax.set_ylabel(\"$\\eta$\")\n", + "ax.set_xlabel(\"$\\lambda$\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "ff59e2bd", + "metadata": {}, + "source": [ + "## And using PyTorch (more discussions to follow)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "df278a5c", + "metadata": {}, + "outputs": [], + "source": [ + "# Simple neural-network (NN) code using pytorch\n", + "import numpy as np\n", + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + " \n", + "# load the dataset, split into input (X) and output (y) variables\n", + "dataset = np.loadtxt('yourdata.csv', delimiter=',')\n", + "X = dataset[:,0:8]\n", + "y = dataset[:,8]\n", + " \n", + "X = torch.tensor(X, dtype=torch.float32)\n", + "y = torch.tensor(y, dtype=torch.float32).reshape(-1, 1)\n", + "\n", + "# define the model\n", + "class NNClassifier(nn.Module):\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.hidden1 = nn.Linear(8, 12)\n", + " self.act1 = nn.ReLU()\n", + " self.hidden2 = nn.Linear(12, 8)\n", + " self.act2 = nn.ReLU()\n", + " self.output = nn.Linear(8, 1)\n", + " self.act_output = nn.Sigmoid()\n", + " \n", + " def forward(self, x):\n", + " x = self.act1(self.hidden1(x))\n", + " x = self.act2(self.hidden2(x))\n", + " x = self.act_output(self.output(x))\n", + " return x\n", + " \n", + "model = NNClassifier()\n", + "print(model)\n", + " \n", + "# train the model\n", + "loss_fn = nn.BCELoss() # binary cross entropy\n", + "optimizer = optim.Adam(model.parameters(), lr=0.001)\n", + "n_epochs = 100\n", + "batch_size = 10\n", + " \n", + "for epoch in range(n_epochs):\n", + " for i in range(0, len(X), batch_size):\n", + " Xbatch = X[i:i+batch_size]\n", + " y_pred = model(Xbatch)\n", + " ybatch = y[i:i+batch_size]\n", + " loss = loss_fn(y_pred, ybatch)\n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + "# compute accuracy\n", + "y_pred = model(X)\n", + "accuracy = (y_pred.round() == y).float().mean()\n", + "print(f\"Accuracy {accuracy}\")\n", + "\n", + "# make class predictions with the model\n", + "predictions = (model(X) > 0.5).int()\n", + "for i in range(5):\n", + " print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/src/week3/figures/simple.pdf b/doc/src/week3/figures/simple.pdf new file mode 100644 index 0000000000000000000000000000000000000000..65610969e6639838d4381e8d1e17974776fc11f2 GIT binary patch literal 1814058 zcmb5Vb97~2vo0Llc6Myrw%M`Mv2EM#q+=T$+fHZ4?%1|*`}dyn-gE9a_ZxS7|E#_D ztXi{XJ@w2QHEXX$p)4-Rz{1D|M=^A8dvI2Emp?N!0>=hm1~`~l!}0S2m?W)iUCo{U ze%czlnv0v8I+&RQnB>jvEnF=DtgLJRK|wedS7&o$J2+2JePtH=L1u)FkLWjHE7d}B z7x$#;pa{V}%PbMAB+ug~F&YI#b-hb*qJ(`+DZPGAW0L^9#ff6+bY`o83-GJw0nauV zgI=GStfX)6=tJWAEc}>vlv-RcKa$Nc$KwkrGDU}4L>ZKCI7w7dXjX;F`?yt6GdDcB z-8yetQQs0bLic`pd~TrNqD$!|I+Jp?D4r>zt5Fx^BN@C(<#u$0uqmR9Aa^Wxxl)a= za@Eary^E$cg*oi(OkOQqu~!R16+sY7X_XYb3KzB;124-hh#xR5=zETDkQnOKe!-dB zoBgM!f4}_$56gdpN!`owFD}Z)7XP|Bo7=krSpSMu0ZgjqE)H(arsggH_Wu|VbFg>) zD|Z3>1M^=61#>eiV^IfBfG+dj0S+DxMrLMa763Ophd$h2bpO-XKR5q7Cd$qZrfTM{ z0NuY9#U%my046a9TL)(~M`KfSz&}9~b728+{cCnXK>(A4r>m5j>)-JGOD6SK#{G{B zj!DXe6~Obq)wGmMtj$eb|D_~p#{%H^x8%PT@z2n|7x8~3#(%)@@0pm?+)P~m1&pMF zv)x|~{k{H6g9X4O`kx*%F#qE&GdmkQ4;MH4KkomB=l=~i&VMb0Ny^#5&GBEWQv)!m zI~&`(I2!*2+SKc>ziI%Mf57{TrVPN<+3jx-@Y6b@>j#gS^}$&~F`PpmdW^&>j#HCjHZ z2zEK|clm>OJ4y=q+DX;P#|y;i=6!al-LJgscMbGxU63g6ZdH}tl=!ISOu_!)uekv zb+(UXhjg9eKQbuy3-Gk3al6=aV>^{MvnY0oVj&9jeo$;%6!}7%cdN@}fgC(h&(A++ z%Y!guWExH#Q5M)nu}WazUPj%5fxx5=@pL&O#k}xX=7M;ZTI@$dM9G+xqAvfiIyfHt z{(94>_F}?9mpZ7h6X_`ryl+B?XT}b!b4Zr}rO>v^v`o6FA-K5EUOKdV>0R9-@>ly1 z81sJ9xS>1;=8DATYH!(|S2J~EfjpAy{3LAbNz(vnvV#&n*r`^!0)X5?f;4Sr-w}n| z8YBX(ck6!G#7a?gZd)QbFVT z=h$Fax*3A_h4Co2$v}@e2!M!@fs@+{d4u_#>7uZ}jrDX{)+E)rB(Qpa9=#I7>qXn| z$cvDw9X=u?m^o7v(&H9wh1&Lmp(R4Q=EJcEF*1YE8zB+|vN?ip0zg6orBT4s!5O8& ztb`$ci3qNMz=^P|fVziRJAy0(dCx#726H+>=|Oz!Lv(~k2$T|r3-6a>2Hgy@f(gDx z!7LQ1OvEZi&Jka8+DC5DnLfrRL) zB9Cmlu$QoxScxiPx&4Ax<&TaW9i?t@KUqH}sT8)1yNtc@nv|*}o3yhG9}1<^fXvdVSGO22own(RlZ-m>l#VPtma8H-AJ}O5hStf2=L2YGWQ{AWo z*aSqdIkco?uj1$&Ev(@lY{jK%aHzpUX9_5o>-ek z8&b=z>9qcJaBV2dM&HzLG~9a6v~jxh&tY>-1;dtm?}Z;>f0g4^_jwOxaeB_B72j;&c%_0`@ib0t1fo ztkX^#fpZe08Dp%Wr(?l_#(LVG&e`jf!gAb^`;gtxpA~`CkG3~DWI5y{shH8!vXmn{ zAiP0jM%}lhZ*{H7PbOE^S7m~{f>DBTg6KW&Jym{8&&D5MAMUSz?v}5QUYFmLAh;o_ zVUOX8AtWI*p#|YtVbLJnAO`zE`#Xb)ndS`1^%k(eMBl~S!}wu25cDx$U2qub*{dnf zz1lQ9{XIP(7)&I@#fCbi6UOGoq+;T*$EAiP7NrylYbARL__Re?V_AVLO^wJy8*PNRVDkg!oiH7~!PP9b$#DrTYUs31- z6$kRQ_lE5r2N26Coe^)zMvy^rK8=YGp8G_P~@xnz!A4 z8Quo%SEMGU7SXU(%vSui3T=9Bnir)oj;^QEXA_|6W*THKVixO|uv)y-Kra-YO_HZ} z(f;1~BmPtVK{}TFCq;-he53WRO$#aWya|;l)WiGztbO}Q!tuNDH-C=r93E~KJ?@|3 z@BJK?Hb^yLOSO9I?TQ}y{T(|GJ!c7a06Xc`>q*JUICK0h`{>ODm3)=@9wW=ftHTk| zc2Sj`ZiZ=HB->$IOxue;-y3VJ*E2{BW* z*CN0$K>R}bCJ87NCRH*zkl?n+x3J7r&XvkJ5SKjCu;(=D@Ui_M=7U~!qRdv*{tUrQ z!gI4b`b>P4i@?9?7427fLiLgN*fOINty8eHu@u!(%xUE#@3VChIG;l}O~@eh^UL=> z_AxW7al%3lm^6)<{gWrp!~a%vBcns9*C1a1zm%)a>iQneOEOZ63fzXsU_lM<&>G@tE6`T@nZlzGo$Kvzy_loZO z^ZaEaU}L03LU@}P(^uL{ozfsAumVUY*(7-?RU-wAeTn_!-EcpAJsF!ZzZcd^^V#y0 zHd~eF@A1}cVKP2+Z8Lk8DI~jD-ox{{^k{cvcDz6DVRcnn7QI>3BlH;bQSfGZKbmxM zuJo*wmKP`F;S2kI>q%+%{c!6k^zQ9{7R~>hU;Zg#{~mH=#Kc66UChk@|0-5h0s8+w z6#cD5|Etpde;2PT%v?PG@8UH~LpKs%1Lre^XB@6`dVXz@p;)Zjm8Mg!1@liyQ*muAg9v6&kj0vyigfv2xZ6Gioe^z?0rV0zkiM^f%nO2*$< zP?xwTwONwQnkE$UX^&`^^5SYM=2C9FTMu#@tDGhraYJbCRiz(-%!M#efsf+ZmI|!n zXbzKy-l|=nCAc;f|ICRy^@Z@{a;!8X%7zXn?$x#`?s(2oOM7qJZVmbx(V8MSIoDUK z!SR;i>))!qZaQ{|lvZWu%lWH&5~w{1E8v_cD?y|Lk^tUoP(z5t(^qz%xtNXKHD+<4 zPC@m`3kDkQZmuII#lTCXja7`JN3@Y1RnaoLmPpGw4QNU@xKSM+)^)c^lL=T>!I{L znrMebiB-UJY44#|qR-R{a4zw-C%*Q|awg;A^YHMEja#t4-d5<>fu*YmH0Lyr?0kK@ zMiwiA%N|%h9hgzR_5j&+;AG?&;U6&T-bg$dQ%2!_ReFFjHcdRxdt>F%$6-Phnpgb`AXI&|WE*V$Cns z)VD7G(Bh$W$RJMNyG43Y@mkWLxsBwfDBIVsxAg%2{^?NC>U@7dUFi1aa-_AZJ*%h0 z4Zij91LSwi3K#g@m{!r=wN>Gk$tD6Xtld@0az$j=3Wl6R=A{+Oo&Hw8I5SafBH9LF zHmo8fGVF$5dPt|y&;G3A--vfRw6C-WoI)f$R2Wr@N?AJXCUianJ5*^ff_{23_^11A zsxxlGEZWiI4ECH}PRT5|dgzp(+dG}lMEbmFT<~Q? zubVrkuPdR?o4+G}f4tv)y(D}Mzb_LXeyt1MHxCQ~BYF)sg$#0u4Xe#dfKR=-g2cI- z{yqFX?+-8UuP=9o{hNllLPAhJUY=fGFE2OCcY|+ldkGn%7H>XYA1^OfTTH|WBm7?v zpZAZC^Ew{&0Z=~vzCK>7ZLQ0rzkPjP-+g&)y7`5;4nKC>41Ik4Uij&{1Niy7@(8=S z?Uv3)NAEzch!ukJS{sKGmX}9~-+b%YXjYcXztBuJM-3$naXkHeK0vQu-@lVFCDa87 z^ggvuJ3NJS4gUG=2hDRfYM6k0Y`K7c-X-t}lY)FjoP)T(x5Kuf^YCFs=jY2`Xj4C0 zc2wH^`S5u2i~(Z51%%2K%ryw+@AmEL7RF=s6XegcQgTSBgQm*6s8qSCW5V9&SlCQ@ zA{P4kI4b*{-&eJ``RVQJ=No_Qfb`*YvHNic`MCM{>g(MySg><}i8pNxooAYECkW*& z#1|6;*!`$mE`x5eZ$$gup zJ0RgoN$G+l*E36!XQ@Pq_?jXEB$?_b?X9$pUaY`-wM zI3i0kZC8(>3!vNk->!w%N*%WU^uH1;xrf)kzg+LS)CKUUZGAnT(cpdTjS`NH7_w|O zLgGE%M%`<{x(qdd01KWW8>F`Z$T(eT2CC6{{i=R>f={A&283)d--ClPdIb}kN(c`K z?Q97MiONa>4QOUTn3%@FKyn28JY?hifdSnDrQdWu9&lp{x8T2fKIQdC&bq(8f}KPx z8f?|?75JD|6aN7c`R;J7%v`@eda8W>mJIL7SRQS?I0v^Mg>M=)z9@@mt@uOjRlLw+ zuuBsA^65Eq{qo5f>R%-0o#FTk61u34IPZJ^;!zpJ;OmiT@LMpSkj%&=+3ydd;R}AP zJEZf79HErMhE=Mluj_6Lbi?Bz#8=Nzd|=Z7Uy}7rLI# z6>|AEGp_X^9+Dn!!Jotj0frZ6@D|uk;QZU+zy_bGKv@t6jAP@3)`+sfF>%_*=dl)F z7V?ig6Qe<*LTvYd03QYUq}@SDCe`=2N9q3X0DpduF(A36ZoqqS&Xj46&=$$=N!>D+ z=HAgHdfq`Mve72t)KZ>N?%Q>dlhS=Z5IEXvz$+$4$oCKlGzdsq8+MfpoIl(x3Oy^i!#62GO=EwCONhM(-o>W|^q38^P>=}idwGw9 z064iBUQr8jb>Jt}dgDm3X|4~uh16h0>buy8hRDtwhUz2AmR0nQ#EXo|j{k(Y&1~f^^_%?8>%hpI)1%_OyYMs%xF{{p_Hc?5oNVBJQxC6kGS&eu5-34$sf`$yEpqDO8X zQ@pQN01ze=k2_%B)Z9C~Q{@BeK#b^!jx*eu_O2mLZA9_wR-9ccn;7XywpUyc-|Oel z*5K#M9a+XP3k%ETK@xQkzhBS3R?`yMdk8<;oY>3}znYJc`m+y_4vheD#LJWI1K=c^a zgNuLDoy+17LNsubht(O~}2 z_(~3pT=q6pf#w>t6M+yDFQCKp`v-W&!?Ax@uwrGQtzmh;K1bdN=dX^myQEI>2o4fq z2K!AXyU7~-(ii0SRh)#9v33}DjU2Tk_^BKFl!b1JtjxWB9&?rVJVj(+h;dQZe#%`rTxUeR0bG+YW``CCKFALHLtRM2f&Sdg_xdO!4M2Tn8(hq(=@J>ssWuW1sH$%CN~z8@ zqBb_@TgURLbjghX_EUk8wp1Z8n-U9BkJ&SQnAN8?s)*G*rG1Rp^%uy=zTkaL2Z~~z zJLV)plp|C+w4O$VIVq_zVjqmO+T0PBbIpRPuV7q zS{DQydFmGM9?S%t<2Wjxliy{W!?^F#a^eWSEW6k~GnIz*cIxc6dYjcM7MqCelHyT$ z%M2qXN$r-@#A4r?wJ1{=>tX$e=U12Zz+DZSdezOEh>2eN9GE??otgwUB!UE?NN7j5 zzM4)!;!!KPsg_kuK!0>fQ{P^N=$%C&L;f%$Z0g;=2+=F1<`Bk4K2y3#`S1+rX(A49 zK&habHJl6OJAV(hqk;BM2;Lpho2?l((2d!Tkq=hJF+UNO{>V`DBClHVCQ%v=BKh3m z$Teo&+Q$f2qQyl5eB8K2 z3hpW>=^h=2L|Gb;7#O+Ne+{L)mdJf}C7q`lLqKETt{y?S8r%}|A3jv+my8lw*&uU4 zR%&@t#M{cF+9?(^$@1v0cI!XaCwRK{#2elYMz-G|@J*{ugEdomij9-C4(LMR9HejWp_Lh)XPAebCX*3xwZ z7l@(;n_MrcFxK`)WsIL+=hyFuGdc{3z{oKL^E~u?x4(A5S-r!Ckmt08V#nXOOI2am z{7iDs#i>V6mAIQ1-?l(XizWmR{X-{zjs1L}CUQyLjTppHQo29H4-3>z!2Mol(&@7z z6wozmnT%+WO<$8)|LlCb?Ani>V>Cq;oN~c4f;7;{?|*j^kJJ@uXvz$b==# zWlO6iSmrs>(9oyW93TIBA1Q~33N&bks(qkiLW<>LPTxaBsTBMoNy@?a{)gT%;haRl zfYnCALMFuj-LXw7Y7-pQtLMviudOH5#0J_kU`(*SvFe{)5y$mL6VmEr84OZK_JWEf z`rO5$1e|<60`P?j%pjR{GU=p^oWzU?_>e+Y!7bG09)KaSYENsqnNh23bg^FrWoJu- z2EFmA_G5xMU+iC+5UVIIfq|}n=uyhpX-{%C9Bc5tex!wWrgyXio~Cz%un=?a>=fyF zu9FTiMX^tE zTzoq6292c8^2XW4|CM67Ae@ER{XeqM;#+O|5 zmp@jKk_)?XTT2j@t6aYmF&R9!%!OU41lfnYjf|(r8cRW*rUgo6($gC>;(hZQ&>YE* z`kJ>ktoL)lAQW;xhtV`oc@Q>r%V$+_lIQVAEW2)FTk|u>X)czCAF-%@`>C&Um`F+s z{=6l8oY2YQ5x5gCnTt$mUsfB?gX&H!Bu~j6)EO+V0m6sD-pg?I0J%O6^;ULkH@+rQ zp+!Un>E)G3MWmQ22L0msZb>tiR(VnHGB+v!Jn*>2Dbn9C!@JWpA=nRBP6FNrhb72U z6fyRrzF5vziN2Yw)5Aq}J%#=xtk`z0abF@{z1a0FuwEU8iy$Tzq9kKcuMXtNz9u*p zAVUyEKiU*Sq9k}xl>OC=(w>#Q7$!A|X}r&xM{;c?@{lMykAQA_uPz@s!i7J~RIi$7 zyCMpo>ipxen!8NO0Xs8c6CJO^2v>i%rt(A@}!IM`-b){|1mjt4313? z;D9VwCy3U)fiq9^ERe$u+_#}=xTB|REn8VevJAFDTA0d~V&J5%&hXpzb2y@CdNaWA z^?jeEriq3iA2ZHWc?r(HwRAAFJ`jHbUB`UN>TUrrvy{4?9ifI z^lX?~h2VTed$mg_c}?8?ewAr?{f+tg62`8YjoP7*a#$d9Ph4XQCzV(_yAz;lu1h@t{HwMH@jR<#CGAs$Ey}$xMq8HnwwyuO6}*FPk#}W&#Tj1oWka@^SFYSMH94%2 z{5>v9Scc3LamQ(xgp!8Tja~voxw8=&kcf!4g3j>_D+}P#vs-_dqa525+S){YpC4+Z zAP^zv8-+_m79XdDdgQE?wNZf+u zz%Et5nX`69Fo^R-Vz7^{!|A{yuoVqd0kKApc8zx#+mu9JRg-9~cSR+8t`r&LW+hMH zh+Ocj#-bZaAc#|X&_kIn+AeICh3~1s8^h`{G3@jX;9>l}6f_Gd0tffup_7=-MRcy| z5e_7-GtV?M#pd&CJ_celGMwQ+pdV6y?jir}DeSeTLqtGt2nQ9lC%EAqO~^F778R?M zIlX$^#C0?IA`J2OlnCw*Xh5#3oBUz7EVDIB5bXr}G$!+^Eo?EeI*Ze(@k_J}kg6RA zg!=LpEne%#$wpeDcV+j$IwdIDU}xo0J_f&i`+lrc<<~zwZ2}{X@WAGaa>M!{l_Rjk zj1H$UpsQz_b^)>t5|_zCLY(m4(-7JJI5eec2fbsv+aZ(^EV4FTq4fH61P@<-iDyau z^KlQ7!hGtDUqQDW2J*^?x{Y-tH3jjh42HFintu@%OjI__A|!tlOSOHkPSTy*S2ped zeX$rL)I|wklx;&8S3};zYqp%ypPak6Q>entk9RLHVS$p$n@ElMk&PUaf*5CWj$!=q zt)8oWlGxhb)@kLs7ePH{=U9j9vuQ;D;UzXh#>&)nClyE3=yVA#;ICZ=?ooWvJ``Dg ziISYGK$G9bF>Zz!*f!DiO*SC(6Uy4*O(YpR! z8~rm(T)ieTkx9Rrus8&j!h7x<{K9QzIXR)ALj!bMp>f~}29yPS?Fjp=?g2e;&Jp)X z!GC6G=jFR7+k?=;{@k((i?*$%ZZLO?03`A>+&=492<0`9tKWTW`Wf+&@{8cULSaq7 zO>QLWjO9LU)}nHEtB2cIvqvyaZ^>0KC`uqMlb~TY;QW{q-j*7t^iep2PGDhUIXU+! z>1h3PE{gCz31gu^2G@HCbRdqFCi)L45J`EPxb#SsPkl5TuYWf0AEgqD@j+EkCQ+vK z;^zCB9GgS6Zw$6YaxK9>PD>Kgs>|T)$Iu(^hAT@YlFL4TXNJ#mJ4Qwr<};!QWzeDJ z-DGml+R@;Dl$Bg+Mu4%;_|0Hd({y$Vj8C-4p^Da`U1%-22B!T+#%zK_WTyh(-EZV} z{auOVm=st%YTyEH;0)e^M9HpoTap;KvsyY?P`k<*AetMTeHh^zRP8Fvsc=P~2-jpl zOlPG9IN71*Pfvfd451yC&K7f!+tvMriC}fTy0J+ZqBt1H6}idNTkz>V^w8Q(I48gI zsu&jr_b@i(Ns9B6hSNng?G)4SuAgk4Q|v>J*y8fj;H+A)&OeAC2fb1qa{@rZdi4Fw z3@ov5%MOAqvJ{2aYig33Zk@V)o{7E8(VqE>>o^|6Fz_k`VxIr! zqkIRfROUWj2`?>TNb2sGBePi<6p$r}I_h-rCBt|{u)De>1Gav6?2#ORUhlyDZPZ07}90VkoxUJF0~k%5In{pAf&RouTXgidPB0CN;J z46RH8^zNG=Jqmaa);Rbbn4a-cTHO8{4^V)WSbVudAIRt?19y<1;85qU9l)2R|&Cry=n54uAp2R;W1eyL^1I5SB5F28EmT;8?@n0GN8B-xerC^M(BLKVE(3k3jedK z8vLg$!qHym_0Q0cB$#^Ym19?R#eqqIDLHs>z3*QtL%u^ypq)Kf)R#Q@NwtN^do&8N z{$;dqU%z-Y2&>q+vrXN(6V3dF$SSqz@>|u&DJgi{gl&f}Nsl~uGu`1|4Z)T5?1S8~ z^|XJI&~*qqGvh+MY2;z90r4WgN9y{(g?PlcEZB1~Cr`daHHb#DwtKlUTF`%N_bw%g zk%`QO{rTJ@#_+uK@T}~s1$ATB`t73kqt1JF+aa{5t-B(3C%1AiRRo1_&AK#4ybl+s zb4_Bx%S1UH*AYRI>lD2hE~8R@^dR6g#fAl*RFTQ(m;UJ10dRm{%0?bnWAC5aB|)## z$xkajfQCKL>`=}{ zpL!Zek$y#-M8iPL1Npy>D~X`E1d zZa)iPsbEQRn}UmSZfpr(*&=gZe12s-YF$hkcXz-@6G}lC34>6Go+v+BX?`2LFIEUb zrJOMcnu#eaOY3s!la=zF(=10ldL4~7wqJf857+qs%>d3c=_1DtuV^WYc$<&uly0AMsAP%ND<7a7wRht!sD3S z4M}I?nXIX8kb`7U&I>v8R1)UuWDi7xYgPs*N=H-{U5=_bPyz?ii7TlwdyEc z>Q#wc7Ol4`6&5xcxCNI`d$lhnhlVK$X`UDoIRMq=Gj2(E*p}t%sNQz$oNqdHuG`1)JhI?J@bgE2b2eE<#?l$(ItZiD&IP; zSI4iNmD&8}s+u~ZL~evV5xDxRG4_PJbfi1(7X%iN&>qIX!_(a2V4a`JyU^tP6^qR@ zq?%Mai5}n~5F#8#ay*jp2)xo>B(Y#XXnmaxrm{o}qp`}PbhL*BLIE5>+A*fOjJ|aT zynKXbi-I-*>;0e(O_T6&#oJD4=Yj*rZ}PaPNQ=nCzA7KP5H^I0+(AelVJ1=NmGit& zAne2_MrpLpzOj&jg4dH**h>}%edKX>0>A*c}axidYx z;(en=Yg;y95oY;ZxySGc6M-rccr8f7mjTM&W{T5<=-))qsR)ZF2@nfaH;D=duK)`v z&w=dgs_Q&<`jlP1JS zCS6<3p1)pcEoKs5saul!j7QOgCaNz3g-||;us{i=(kmb6ex@>(phy1%gY0f#Yk(MClQRMI@3dR9Fw=D-xY>x6S~bEsVxE>#%*)E_%gbWpZk zKx@}Z7$TF_2XLvsCj%)U5=Kn5YHX3cfcrK1D~2;V1RthIeUi)6CGJIU z58k+P#V}l=%~TqY)e(0MhN8tCnoz6`Hjo!LiqP9{yOHE2XeGL0(l?MgBX!I#tqB^c znx|tqD21404C@{GG^|5O`rbKsO?_^Ck-oz}5qc9kH61b~h=8RTe9X`z$>Wvi3j?GD#ezp+5! zN?70l6#!w`U82;xD&EyG(1PROZQOycJUx_cNs1**jf6hn0u4uuQM3WaqaOYipXZ7s z>0_qOm~5+vAD{mCa;ztW0SWF%e*|hgaE>6Z)bwxvwa8#QO}%%}l1Y6p)MJQWVAmcf zJ+pS`l=rUSrhrQ3mdOE+YDkU>0)2gPEt^muY?@jEf{7^$o0B-z zZ&!5Fm92czr$3j1y7+z!S|ZafS~5f&6Cy-Qt1v!51ur3mJmi$@J#>rpkn($=_Q9cE zhpUjp`8bRwKqf3{hTkiRKzP`JTJkiAs9${K^mYhoBLq}s#L<@K`)7qGw&i0&(ek7q zjV`923Kcs3`~Ww65Bi2wWpYzfQoc_UIzy+yix{h0DHmMMJ)N}e=K{_!oOjjnyCom{ zzL^Nw{)nf?gaBX8NK^)vKc{CUL z4Xk^vl>n5G?_z;jgSw`|Y~0Z-p%V^Hgq;vGVi<;q!;)sM@8z7EAk7{pxV+s#txewZ zlZwFuP2l!b#WZ|P;5xWAy4u=x-VQf3Yz(onP4+8xxTDfJH`|lKsmSbf zWI=<6`q1YlGW2gvNES9Ns+H~~2r;kW@_r;9&Z7URWHcWaOP!LzlGGki0C*CI0<(@4 zBlM(7w8l8{DHK)6FazVU%TY~gjSQ4Y=d%h)YqTXHRYj`={~j#Njits-@$3}kg`34Y zhBy3MSQy2A1v_+!xHx+|eCoHWVC$k`nZpviJY)6TkrL|>vU)ExPffzcm3w1SGSm{6Xr<*b|g4S_+=ay>B3Dfm$U* z6j5ItVx#2eCQf4H$B#`N6iJ{Vh;~-{`xv6uo`yU zYHRd14Tm1|P=c^IccRh2T-cNx;Xq1t;nkMPDY4MTMd$G~*R)4PWSPDyeYTWf7Qv`t z;4A4wuk0-mTB9Cu^%x=jtqQR2eoK4PyK}L0@>DvHokEm6q1j65edwVElCu##cA^2= znckOoe<1Pj2GPs~*`{+rNED(f8ik~9!yC4+1k{fK_6c1SHLDMdJV<+sZ zvnLa+6ah?-jM|>d3prOT!;MAROZCG>m%S zfGxGm`>mnY?@zCg(FuYrq2P!ELTX62-O!QbGPQ6G}D+mExsCCAM%b z#rxr&LP&*(*g|kxA-VVf)5cZ>WUaE|3AYGTjQgj=6Vs1o#ua-_I<|d&6k#G>&>=!w zar~q1w>rQ*g&m%Rz6H>_dcO7}-BzT5+4)+d}uF$MyE zkj-jJFx$_Hp~M@Lo+ZVHh?z<7NNNs#q5wWB@A~e1@nS6SEWVy%gEP_R%uuxfgULF+IW-H^X+gqyjR4NDV9*VgZGb! zhiQ8VKb`hEj`rK5Iu^7U@{$v$%Wjd_$P^MzoD9T;+D|1PRkx`5!Zh)i9I0N+ET}u% zLjcvsD)lb+Slq_@oAP^3=ocQ1RvWca`pcovKB9X!e5j`@&5tOjd@C?jx7_Kj2nlcK z;|Wvli|FuX=UP-+9miFEe`|(lItWq+$UNyhlh{2uvKdhTPedj#n1-Y{O?9vVGqTG) z3&6PsPFy1qpC>#dl8^$rbq4l8cyThwhto2Q{0hzJkCPI#AmT24f%Wp7(5|0S=7!+~V;cz58!p0+!Lder zxKeS(0fWxP%sYDqe*S)4a#o;EK6i4Oj7vxsDR}^nsz0n>GXxF;^eUO_T^I3(4`i+i za|CQ4|H2nnC{kAn3(rV2zw*RjoWo`nQZ*Iv97Ib3@TQ{;8r@TnSgJ`%d5w29QoS?? zwhm1X!~Y4f!y|Iz@Cb`qQ#U~deZ(y$E2>M|8aEwbR$`pDU1K;urrR++Q9)Q`$Xc;x z)Qak|DN&m_`3-V(`PSB;ILZCz@h5q~9As~CIF@Hbt4~GLDOc+5m^d_IM8S&Y8B9vo zp!^wxw3(+ujDSSdz6$YmhvN;1a@skfqZqrKYou6<@Ufe(iNdv*p%& zexQUYWL9L@xERU_Bg;DH!Rs3Mh#+n;FC(|VFN>X;0EO;WJvKWRkOUk`i!MWNHc35UG>|UXF;w(nR8~{aERe014};o~ zS2k7Da!KtZu80B&G>}+qQ-$ImTm0uj8v7ZLcF|6-Oip&gb!nA$nSvESB*mLN7=VYO z5FTBZhGB$>O~=ZEAk9L$ajER1qy{U^mX*4a@2Awc&RKX$|-(k1tI9@1%K1zx z!$zRWErsd&d}BQR3N3oCeqpi^s+r__y(PWa{AT~5?TTSPs=AZcF0RZFQ5+#}_eP5q znjQn>{QDEba8bv7E__^0f(i|8-uKf=rHIZnt^pspNcEP^DbZTy32N5>vN5=A!o)Cm z(I}4q$LHz@%KJZks;ism`Hea@m*1$vTJ66rl`n*NE4UaBfP$KJCXfnWUfM1O?fa{q z2AiGn;e;yM5b;!zGW3~Lx%ER3TBv{9`Lchpggg*d=ZvyDmuBW_3!# z_=Mxk#F2E3b&*t$@i=xROe6qhjQedDQFn26UsJ}M6>0R6BLkx=Brep`YcqeSvPrgU zn1q^LZ`shvw91E?3Ge$yJY;Kxy*WbZ#uuzUGZ;h2@q50sX?26t$?`4L1qlTdSJ3wy z@MA)r#EB1lQLmg9v1G^ZPRP1HCHO;5wP`4Dk=+8nLT?YWMhHY{IwF!n{Teuf1cFWkrh;PE)o$ZbkQ^A^zwyR}gfyd-YS!sfO8*Xz!1lHR zmyT88u~at@na}@|gQPkWhk`N4!Ju48tsGZop+P{KSPFaziJ2-M~S2 zrEtYmIrUuSm8l~ne~hWar@T-E8Uyr1?|_N!z?khyS*dtZApD6l_CQXh78>OpdcR>8>d~wWduj%w~Tf z0NYvM-n^tky*-mIXp*bKsPETe8b*$^KfG>i=p%(z12l88&DU}Ek5}C@T3xg}1_~2G z`+#o|Nc8*=az{wXnuLK4J|GfkB8rT>KhD0hqE|n! z62|(0-gP&|P3dT>jKzI_LMezs!4xfh+7Q#m@=K*Zw!;WD@o@PU{78iXTz~oe;y2C8 zGd(}0$K-WJ=#t-e)f8sh-_UUg?Go`MxDGl{i+2fwU&Po~m zbhXfc-1dQJLK?u0cL!#tUZ)@`EqyC$a=xdI8X;M zd3yizlw&txe^=&y(SZQ3C&YO&(9x`Hx`0NoaW2{6mu?m)fHL|QWH^R~rL8SR+l7Dg zDLyKl`_%AM2!Zclc*AHxO0$Y=5wM{B_HwIL1m1j%d}bh%il&A z{)_Sjdolck&q6`-hK)5PRR>l)j84%907+e;;di_TJ_U_OvHHqldDwTUs5)Ouc%QJ_ z#19V?y#uxFhPuE1)U(Mb{e4|5X7MM^;=wDjlvSF*uReP=lC26NThGE>Zov$M5 z(&=1>8Z-kO5$_#apV%M*j-cGZT>OYIEi@_98}r00_0yMld8uoA6a$1Hn0GR7xUBsR znRd>6n5r+ zIu-tyi3ncA{0b+8lU>k`qS96=D%rq`L%Any#e;~mrXnDZIAkWTD?!$rowJ*Qqd0^R7%b z6v`7HX2`h%;eK4~@s03*VusE8ebia$cgPnL6{N;7N;HRWH91FCSfHJUz+E4gAr~r; z+_Mx-*xMNcUCN`|>^;;%FB~0)LA82Hd8+VSC)VD5AWI2Y3SKzcP22VPaglbzL2ywE zLFRnYL#s=Y$oy{nTV3Mp`J!OI-?6E_d{J;$!0fbl2mi3v9q6An75k^wp@qYB)PSNu zoGeW=){Y$0IWTu+){?fz*(|U&GAd|t95O304e&SSjy@yqe}j$&{|#_h_&30DcuKaT z*U;Sy46UrdbdbB}D1yuc?P-}Sc({d)St+mDPz(Rnsluu8CnVX zc#$`t_%-v)w`C3GqvukD*wKc?>7PQUs#NGS2587bhu$)5d0w4V${ZT*T00OeB{8?O zO5NPT?jT#~JB@!u@U=Sbi#;qG<;$Cptzb)Ow3;ib+k_x4`*ZujKW*YrJ~JHJ#aEqL z0%^CjKwvi)A8M22jVX?9sR9w|AwtYM86onSMu|e?Am1smrBv81v{zm}i}NV zmvWd+!C4n+be0`fP&7XQ^}OT+07DiA4WoO!Yx()Ivsn!4$}P#1Gi?(A(@KU9wsJ*~ zlH7wV864yfl;|xVYpqG`Sa^OCF_B;1tNHPs`%%`GO(w#Jg14~i#QlJzvIUw-N_1MZR1hEE zv3;qgucoRDZY`0D6W$UY`ffp;#_`KvM0pNll;C4AFjiu)YPOkFmTwBjGS6R5y-v9( z(RXoOiih(;0>bE$VZ*2-@WH5!A8E#hHa;xRV+zOZ;6RQlLWzUDUzEr{#HzzF2Yvfg zN(wCmDErh|bRpPh3Fft5-GQ7K5_CkvRO$bMy3%NZt5)IX7-z)t2%5 z#tR*YeC)?vWA2g+9Z^0s0Vn)grzhabFBkLmD^8IDZ{o=90Y+16`E>ZOGrF~NQ0kB7 zq3(J3X*k_uHNlYXAimc=HfnX!LyCh^M)edVAwI`+h=<;tkRQ@0X6%#{@Z4@GN-;|o zeqsJQtTQj*F;OPk9Ry23az8T^L~_lh`j0XsTf7`kL=<|}&ecZAAZ2TmX8R+%I%?^! zR{BP+LqwKli*;s>MKom1yIvc%w7H(eik<`1-t)EA;q8&WJ#78oU>%1V?Al}O;5df` z)u)e~bm?)((qa>m8OZ|v)~d_39mMdq7eH*^adHfDHDF5BtIrjXWSA@kR{HM1@*@Tj zay$_;%ydB8Q z^$t(S+%tRa>1M54P}v1r@eoB!Y=JJohXpVCw07xR|7qhIn0cPb`_`8mlE z4;K6Fk+8>0J1ePmG!H&|HvjOCPQnW&P8pZMUEedRaOjU@fbzo!dB3^FcE@**SgD@e z8YigD3K94em8kmMfo;^%XdRi-I%_c+mCmcuo?n_ME-x`WKYH^afG6O)Eb-DI%-&$PA+$@L<$^ zz&;1dvY^{Qtu6=cQbhMiZyKc6K-DOZL4+$sMx6^F@;6l@LW*Fy4Y1S-4e{A6tP|%_ zb$hXKA`@H4*!KYX*6OZ75Q?tVV-Hf^THM30pP}Wk;7}0hin#GBkho|y$ay7^1oHEw z`OmO^AF43k)P8+*1NQ@#TWs-Si}kytYw5_V`yzaMIK1!$%Bgll;(de}Y7S!&siQpH zNl27Rz)yXWyV{5jO0~&fM|6v97+s_mM*S@0mOe;_&?*lXLeFn~1xs#1@v&^7J$bm0 zjyDb=HV@KEB^;y|cESLhhXH!Lx_Nj)+IWL+=;!4&@4&2e!8-A!A%ZP>u763#YZ&Gl z_Ipl2=$gZ4vUB4-fzO;Mng8WU7XBT5t#_fL+z`qJA|JunN&={^wggZ#_c1CD+ic2A$7ux#?taP&5Ef+*!2!P0+mvSnb_)~6i&4d28%C9cbY`qy`yFR=g(k@LJ62ev7SWah>qi9>NbXY~ zWMA~99Su~^Y@hp$P=|I(oX1UJ9h@%e(dm2C8L?jGOt+F+#rrFcEI25iQNM9XY7aX37Vw zyLv-!m$TYHKR9whO2~lRlK{GV52bmjZoA5Z8aoXVCL!rCG}85OR|md@b!1WZSqaHG zW&U=l=%`H&cDz$Z05o@EI{C01Se27tim}m`Hma#0ae)gezpwpHrf4S-D(0F#Zy3cA z@g!sS#CTJCQf!NLyXP#X=K6=l?m!)8Y_Ms+xPahY9JXq1=@kAMzHpj+gzz$6ImW}| zjTg7tsFh%E&Xm*4n1s#aM}P=~Jv(uPBVGkz6wa)bbHYKs`=Rhf1sGq*-@FvL^NYhm z-Bh1nn@r-5QrSA@8?^migxGa(7~k4Ek%3wMAFb%M_cIh( zppPBU`9-)uyS?MEb5+yzbcZTQFDkY)@1!KKX$ml9;K&6>J{tkXs_czKX02ubkbb}` zrYm$IxorudVmg|xB-qGDH0FWi0qV*xZ>G4V-8}Zl;}os639a47bh$AHce%eMbhlXb zEStE4jU9QEJdVc6T<;o!{@E|(9$WE1Fk@1U8}Yl9X6P<_QqE&yao++*^wiSy!vVWu z5*Z*gl{Pf+VPtv=^9FDt zHk%Zc4Z(<}iJvYolcc|7&H}UoSYmB!N3I2M^l8t z_Ruf@(tux4ewVy`Ki#vRb&Yo2LbL-;JmGDc4quFTOJB$R_n-f^^Jp}xQdTkrr;qNo z2j$UpQ&VQ*Z4(wa|A9i<3)qtj?SS^)x4l#07a-5h^PI%kGY${2+>R zt;Mh^=bj3l66hqrGem8HY-KZ}mRwZ@b4%BzW*U~>HF6-KiXV$72Mf?vA(6CgWsFc% zPy1>l9>d(h?7ST$aE8f4Sc(+jlQVHo1a)AtbRZmpDNqP!tAkPG6()?5id_~y<0)kv zQY7I|F>+m4L!SMvHdg{$bk!)?heHOBKHvu5(=qppSa}JIX8Y=Xh%=jzyLv!8hF`Fq z$HOg{IvD+oCt~+?p@ywIQ4nmOaa~y#jI(cJMp24H2SiB=Dd4a4ioeN* zSs_a;CMN{?D3%?^Ve)&kdbu->!@`yV48=+%5%3l!+#z2OSpaDqU&HrGRPZ7|>Htep z$)L9y4n*9N8`3-$_%I0XpR%X{kCHezC>jP)8mlKL>=A&o2Wa$6Xv#st|Xxk3S2Hk)Q9qGtEQnd zU-xj$nxa75tD)SR=O#6dp#Etc+ph_D^y{ulQ* zXo3gg<)MD54uqzjslH$vHJI~qwEQZ}A)qD+1dQeKd8R#R#a5@Id*l^aR9mJ!C`pN> z7-r6rdECJX#2_U$K)M6h7zV3wb6fX_CPylmi?l=wBXHiTtAq4-ND!=XL1K+D417pO zv{S-ZODN&BGe*4C*fvQO0In!Es!hluZd*5eb~f?-0}vsoq2Ss?ZxZ>F;Ians!Oq;S z7?Hzy>MB!)(qy@X2k%9pHc)VObehgwF6bTBZD7I)+2i8uQ5SHz!)=_kWDkJIqkv2 zK{Gcg^o02i=TSnVThCA>Bg`pZPsXM;DAzZG6#~GdZ<3@wNn~p!{L^B0uyojAz_We2 zj^u!>lGqXZd6Xdih+tzNrypj5R7L~|4!e;&!c?c?S2u=Vgx#iY5cnsghOTdD{&5HK zJxAtmTnve9(9Bb(4ch@-nS|=*6IE^uVR)FTxPwJRIFjV=JjzO4r3k{!j3Fep5yiAU z$TFl0%p;-13Xi2(7^+^Wx>5D0w*!#6?e2&*VXCWI63w{w?9$I(v=BPc>T79}>TL^3 zM(YNI$o$PeEp`V(LM@ZhOlR+!eEej5bhE@cU&^6r9?NSC4cBd3=b0xyv0w@GF7!AB zl?%0v`m8Dw_K@Nhwr54{znx))tdbg!WUXi6ehL3rJJ)xs~rq+}eFM?NWp z*%JJL{I(;!WTnq9R3xfUcF~IBX&SLk25Z^w*QWqgn5vlVQ5pQ0=0-WKw_Zjmt6n%# zFRFJJaM2Cn!@>dmT0iicDdhbFNad3 z+j)nI?%_cG!O3-B^$TV#PEL1N_o@t4!+zJ8jcguK5`OG$qaYTy2WyEVTRog(Mtg{5 zUB|H&i`Xv>qfC8{eG$a0TS}RQe)W{bc@X5?sD3ff@{YVCQoA*4SzJGF3fWTH%0T|G z*gec~g!R%`c4hD7VGe*P?aY+?wN$oiSg2jZY1;dqDKTp3*!k4{hbw;P!9u^Cbf)o( zObf}1!UtCS$RH4VFnr+-9nSZ|d16GPNvk)CNS4v=>IlVg4%}}p_0W@y>Q;&a_B&1JmO-dARORG z#XUa@?J;Ou2v)Um^eYe^L>s~dF+2zo!`wyU(Vdqh+tByQQS)r~qL)B58SzCr#NG=< z*H9YYyHWh7#jf?w2Seky7>@Bt-{dFnZ6x{4z6US4cg>tnoytVKY<}jLFK6t@^`^9vb>6{Tq;ZToXkn%gs){)KQE?qQa zearX;k;RV?sv}7?hz5YPItXE#>L3{?fv8~ehIVRKPTHk35DEMCeuMOpf_R$h)Yx7I zDu>cskA-m7o2!~-|JdlWLUxb~HFt~Mf53t8G+Po?D>*nv5EiQ|e2!R=w0SO_v<1j1 zCOb%_*)z?2!rmXX1qGNxRD~<-0S_+Q!Koo#WJs96sQmD-r3RQgJwTGv5NJQV{x>Py z5J;z)CN1yrGiYB)D2NgwW}uG3@y5{71#oWZxk!9T2`;kw+^>-f7nkM$5nJSBz<{86 zr#rAi!ogsQeA?K-l=3yaWJi*?C_^E&DMC8B@awxyuoL^0syrm4n8H!MpZAK_jOw98 zsQXT1n4)~S7C;aIO`sQ6XG3!Id#{Nj9%$o?nndJTI-Cm2`%ng6}c# zu~ab_o9ZA$yWim)r6#uVVwNJ1TK$OUDtu7|2-nrLJ2H)Uw&go#TXIYzUa&nSY^w>x zHX-eCSiv2K!^IM-5dpi@AU76LJ6C!51#=+W?#=%*vzTn#e>~dQ%zm??1Hsl=i}}Bl zS}>Nf{TGaHExcMdx-(H&(X_Vk0jd-O=x}EH2I>0F;cWdMXC;NoFd_Z+wf9Q7f5Oc@ zY^*4N-fz8#({mV&l38K5BO;|gh!nsD@odX{D}vK;Hp=DCF3Yrjc@O*I?A9J<^YV@D zy&#!@1K{Rzqz&ngRyH5LAGA5@Is{;*2 z2etiKi$NAk2Z_uL$%WexS+i@JQVZ-6r#j&pM1LI|7dr#UgcPR3o@~_|%#gmY3~U!$ zjgliRR|leR-)p$ov_U$t9)b*w3z3Y4NiafiusRfb5VS}y|4Wc@KkmMHJHIHd4l!GNo za|*3o#8GJc*ZdlRddUE`5mkZGr?q1?Y4Yg!K{Y`aC<)`QzkI!0^!Vs z2M{eX8JByQ*IyAu6W3X*Ru=$0RbIhtqA<=o(olj)a5jiK|JViE6z}LyvKpsx^c+VomVHHf6dWF^UEcFTJYph; zB*!A!*AKh*kiU{W`8&kPD4F7`gu{*4A-!t2{24_T&+L#lu;E$n+Lej+cH7$z)F_d0 zzPLUW#COr)TAiVskk_7e?i%>lyw0%!&Dw!j$MG70(oQox*HLs>gfD-{v*b|3*W7jL z1k%wXG{!*R=E>$<^Jvq4@Fo}s#kBfW;y<*PCJ9sSsxtM1obI#>7I};cHd1JfmF5ga zPuVEqaG1{rAMjxS?0%SADqxH?V>GVmz!5C(eLum3G$M$-1b#!Ti-b35M?%uaou=86 zy6^|0@Vs20|I*AEA-pnj1d|k}Yk(xr@~7lneR9)KEAf>DTH zuvs7u&gv9SR>u(CicxZYjq(6v0NkF(1F$5Or6~8p`api2?|881{$%_qIcrwWwO^{D z{_Ps-V}l(Yi|-~Lr0L>LLHz{F!+bS*_#ix6JpWanT=`X0XFrG1B}9nVgHcG(P$wO3hgu&B7K44V~kgG}m!^v=!%| zVhvfO9LGuL6$LxhB{>GXk*!hjP~%`w!EG;SSFyy0!#w>06BYfcBA4M+sR4m+?tN4& zibqbExPv(n8i@Gfh+Z^uAdEqHxuXHf&+%iwrMLIa)j z;9(Fx8puU@^Zq9NEv#%=2s(vux~P`rG7 zo2DPOtNwPWjW2s0%(bGk^Rhe#Qmg+)@WGwJ4501A+&}R}@D# zZQ_RAh5VxZ;h7tl6ANPm`Y|m<)2l}~gxgYF5~NTUq>IUkeYKpU#{8S;p)*VSjoU#4 zy481;V$QTXxsf$FXpgWLDUdK^?_u&PWaW1qTX?B4rBwbBwxQH}en_ZvpdmORxM0@$ zf+;$b=91+e45zDw^f*Jsn?_09LMlDRJ&w%QI;H4}9sFG^=!^IiF+jM*t%NN~MKq7B zl=Un-hE46^z|N?_E=Vg~qb>-PenHF=KbR07ke-NgZ}jGnl>d!8)6ag0V4VYzJlc)JhC5ykpZZ zyes?_^XlCKt3eF^bZV_!jiO>c#OE-|eq@XMm+q`~aSwAKcFmhD(FYBBYSfyld@*GZ z^@blHWT($rDxb+x$V+*I_?o$h(Fk5ir%myfPazXkTS)1!l(sj;l}vPVH>y5H@?=eF zIs{?{50@y)9x{I?;VrD17rpMml60+!%86p%EB zN+SrnANKGgUcE>9NO6Z!r0DdMSLaZPdFq5(VzLd+;gXIMI=#Gj_``@LylvvZI^zX% zo;0+0X0RTY_+dNB7ghX?BH+XVbIFHX^9WXJVZrl&PhafS$3bR|+7(09O3XERjD}J< zV~6zCIwtHHJDFD=%$<9qFhN)M+9w(wszyV0?SlPAS9@nIgfX4b8okUIW^fOQ0;zFx zl(yCuuT<4iA+2tTF-_?kM{pT`nxF#cc-CFVbWwGXofjQ=&rJgAIZ6MkWvW;02H|)G zxn=*;2l1T}C^)Q_(}{b!Fa*M}EnkTbYQ+lcx-m))fviQ-*6(1jP-jOy>}6h5upB3@ zg9d9+vpt%bEz>v@-7|13+cO+XUJJd;c**N)g@ezbBM7Ire84?ytt=W_A=EGzOV&zNr&`JD zP)mt15QI1v1jM4bSzuCCS7NS6{q!|$RQoJ}V~j{Q{})8ak~_m?5zjd6m~Wk+SiuWo z7iPBc$ll+-$bQcXV?EQ$W5o*Hc!w!~Tr&_s(Jg^S&`U^F#X`PT#1vH zG3ArsF96L$S!`w!f)CEWgHW&5yIB{bsG7C#2@|h*g0A%=G7-cb^$bmnxK--T`6FPG zg1%p)>wd%lOO->mG6QiD*!4cs>ipZQMTV>k-5xcf<)^`u){wtRKFAlzFE;oa_Rk*> zAk&&JYGzfs&?K+nGeKr2K{U2b^UK?0^vA){u@jNyYW+As-5clOU!33T&LC=<39`ej zHFonVCLNF-ye3op=Wp8pn6!-PFKIzKG$?8`3=ODVl*=iuXdH;R;QIoVISWC=CE>D$ z;%Z5zS$zmEn!!Cl?(VF~mSY<~fpmE;hZw82a^`JJ_XRt$7!1h^sZM#msF?o&Lf?$! zp#Tm+#5qG9^z=liEzoK`u7&TxiVQ&bJ)I>;Pixt^uHI-6fC1mmxjlvD!Af`<~VMrX~k9FAocC$x`@%cX<)3 zv}A)MMN&wte1SEHwEIe<@Ef<|RxmQwJh1)T1V|ax08I9#eJ5}N`)^(Z&{}dhFZW3H z+{L9^7*Y&&ypH$-%MEh47{s>&oE%2>rl8LiqytO64A##o57w`?3|7K)5Sh|JcoQvN zG#(<%D`~K`@;W9+xtGY(C`3q6fuxXw>`k%&nb@{aqtHm!G~1#y1h|PZKn_ZPav_6o zP-2FASUVTfrQDn8Rk_|!VaV#|Zl5X)Zasl;s1Kyxj%zJhwAQaO;RuZqPoxw`fI85% zsqqKTwL_gfT1G&J<}-i z$Oq+qBW6Q{aB0B^qvbOg<()?##DfHFp!AB5Y|QT*WaGW())qDnszhkxD`>7#(_GE@8qVYkE@a4o^K-P^6ds0&Aj>4jOb@17L9469^bFjxE^q>^=b-YiaRV&>nb0aj-@D``h z5dPM8>zm35VGA+8w6Q?8)kyaGW7?N2_;zs%ix!-$Ju})kK902r!+syFGnUQ{B7#2b zjjTs3z!vl|;q{6&$c0U)f#jo#EGSvCoDS1^gu-D@dX?8UffL2#0W|9u^L-=W7xN+N zmWrq|K!|#(PZ9OfhI{KS;_SDHhUAh*BUcYt9Y&S~NXG5YT~|BD?zNdt0J+9o?$LxBV-Me9GYQY7 z0^xth+2bG}4C^_d<{9!lNN!=weLZwPSRN&qXs{1jX^9J@;8K#VKIg*6(0;w}G*G&4 zgTA)eI^O_UpaJGhwh$(R0x+4>lupW&q8x++H7uP5yv8Ie;ry`B85Ik~ur%X-R?Rq7 zkfSP8=u&AD=0va_w^=-&>3QozKaS49`O2`ZRCCoZSJLbds-X10l9@B=H*($qrh6|^ zowXt{s>3jk`HNOex)6%tnPee*kJ#vgjIGZ$Iqs91=dvfuv>GKPZxnlXbU0n!-@3G? z&SqG~=eHoJ1EN2VBcQd5C3%K|E|!KmrS0emasrl+DFTS?pj-p~A?Z9cE9oFPdNBXiqt%9dbL3poEG*8kxL?u=C-1!|As!CK`#}RmSz&cDWlfhSOQy>R* z`+em$9%KfpFj>61b@nq%5VBs76VwSl!38=OD`D$U2R3@h+VigyA z_pn^laaVegGg@7+4I0d0UU)-QRGL`XCV{I6v8wn zLwU`clIVwg1&o7{huDQHHZR@ks)Igvk^PG`4%u&6A%+#QbI7;W66exXS6igRc{0}? zK-{W5#)<1U`UN`*HqIH#$`i3ThoZfYbWf@g@IpGNJcLMHL!NTjL9u?C&_xYhfA5#2 z{I;Acu?JGECG>p<07Jy@l!$z+9pM^Db)<%^j9jwpf9ofC^mBB==X7lT7|jUncQEJiGh`g#Y6SCo z?aPmsao3K95$4%fKLl7eQ|H;w^|V&W!g;q8Uk`a~B@V-|#rZ^weiDycI9%zt8V!Th zARNWOniu3EJxDtMp^eW<^)JUVn77Wa=2hZ6NTB8hsW|>c`UChP{Vh90LRp!fBOTLJ z915aY?kEeoD13sPl0B|HHwXr+WJ1J1mugGQ4x0tS& z2u6)}k)_4l)e{x+Mjllfi8(G{eK4 z(ii9qnx`{J>y#rLf-gw>b~tVL6G}`5=^@}WOCzAhFUSi`-w6K)SOm25(+M5vlXw_d zMIZfin#7AiaxuoRbbUG}Sml$kb@6QrtpjK@h@iKG8u`BCe6K#rJMXQx;k>SXT}*j? zhn}x$e?MfuVeiU)?N`R^;ST0F$|Q34N7q&h9)x3ib}z>8zE{PS(-TY^ToGrmWhR}P zpr3hkb!6r-E^zC6{hH;0p!?a@^uh);%b2O+CPnrD*~c@9l8t^@i1bTz-&67N&$^2M zIDv-ziR`y9=haGfQo2d*Jbw^H(D;lwsj0p(o|rxyyo=&(q15GN7uoUi#afOI=g*P+ zPO2W>U;^)uPW+S%In9^Q^d>#8gJ<+B3tDzS`B{MrY@*F`HK>$`@U`DKsqfYv@}^1KZ(_TiW08LqwDusWoT(AQ&Hm>^5{X?5SrX zP7foKaoSe~T4|C5YKwKemf1@VLtPlS6PkWT>JIBsP#@0%)=l;IwB}LIvQ}_zC%yX= zS@h}90YC0QP6CPa@L?j)-!!jQuxt%yt=w2cB$1EzkQUoYV5<-L3J$e(qex%#s*|Qr z+rW7~0Hj+Ph&R~0(80*|Af#;bD$otGLV7D*GG6g!=m3^R=h-oYJLq_9#d0dbi znQ>(F>xkV}`=SK$LGtO-L!7$G^z+rzv!z_M412P~dqu}A?+b1V7wmXZ!6KlbzjrTN zUB{12fK=aX?-FKYdw_ELHo`-jB^_)%(7BT3U|Oh9J^a-$z8&-k&jGC9eqeL|8dS1j zdzw#rASl|-tI2JlYo6ovFymm0`NDwb7zd%pp))jnqx)fw-$9)hMJ~F_NVEaR^h1mm zGQV`fAYJhY14C z9a_ooM+*r>5A{^&n^rA3lZ*`WlCLf37XO01Y!v_hNS0BLRw}%;lQYlpn&*IBI2!qM zn8KF*Rz4U+Pb|m{+0*g2uraJE#cJha4`hn>dpEeVxRw&<1sLbWuzSH^usXjFTbDM` z811?ZNVr=Vu+M!ZKWuU0cj5hL!f2sd8UFUbP*Y3B=$NW7dkEo1a1c(;Zo3=POEaP2 z2J}zZlHTao1loik;n5&wu$xtF)HQ`DL3^#P>wwA*ZELX8u1*UTE^H;O*~6%Il;`ug z?z4nr3aUJwgb`)j_YSP@<;GouitP?yYH%#rBvEjeX`6&|TUu0q^6Z$SY{H+(epq2^ zd8VyfNU?$@yGy$BKZA&%+7kLP4+ETR?#Nfxa4?p98dXO5^(=JornmoWz<&QGlUe_6 z)D6nf&J)~uYSV(%_JqAPhonk4{4uk{vHbM`Xm;NQZb6O$#Px3DOkEX!Za**RN^*6> z!5EN}Vs^MXUz{bFDE~qyZP-elb_^-f^vWhy!on^d9!S6W&^)l+-)>Y+=z&a~2H}1U z(xd)cN!^eXA)U2KDVwL(+V`r!EPU76Ls=Y}*TfZDqX+rk|T1*^^$JVilnh^0zSPkZviQdEQVEK8W#U0#?mYVn0)K`p@j zEz*x)*nJnZK;#GAd&I6FwIVc&tJAL}1QXFjtfHQ!t7+dF1upWn@e#D(;S094ELGGR zOpD*eFy$@%CiRz+U`KP{g1DsKt{Ap@>{|;=L&U@gJ06DNBpr2w28P`6J~6sO9zs-V z?yA?22gd|FogU9-W9^Qsb}-5OG`V?f9g>rGRz|AOu#@Y9UM$-`0#d zvic`B1ABn-YIQ|;lQ4G6%qeT`@;{Gy7(a))-E!>1uKRbCx3B>#Ah6$ zlSB-?o$sDX`~XG`TPweR>rjP<|Mi&Q$Km|aL-@aa4|J)ViNt~Ab;SIHWK4T2HVAl! z^az+Al1yYnzc9Rx#~}UoZwS^=((-o64Z4v29Txql=<|MO;RXwhA1Y-XiPK&icd$Tf z1A{%?g@+K*Y_&ZNqjm5!%B{DkjFP>t)gF2-VUXTXPXcURe3IlKYEeZHA#FPa8P**+ z!XL;N;csA>CCtzZl1-F+Z0m8yqEMPO-st-72*D*OV}3YDSN745`T_}@QFRK3DORqN z5dQNfV7x!87!^eRz7>du8eP`?JIEg-#%UwpEgd2sHGV46Xpb-{Bu#a6~VYH{9u&I$c|Mp9$Qqq@T|iGH?i3zUk6%j@$uJWZp}EHjkl+j0;}Nm8+*H2t!#z=U};$ZOVNMG&HKGhy&~)lmLRmb^vk$n_$S>eePh& zAsdxnav<^5<{{=FHAtP$?biU#sJReUuWxh^b=9*{4N`-sKVS3U?~Kw$1@BhZHFs8* zHaW+Wl05UccIEjR^$j*uL9yEr*4KHEK?&)qRw1u)P#PNqL${X1#JRu}{dT9KeZfbh zNp)Wv?E%~X);XIJ3{1sE_BxlE*2PB$1j*%mtC*!6(1L$c{744IG1b&cs^9W71)Rq@jbjpL4AR$p@t( z%tL7U=O7-polVuUJgjqo-6pU8?(9vY9$_|+swEK*P#@<|+`YtoEJtdD>Bl+FG)YP; z)g|Jq8?;{>8TFWe1EGByBQ!XCX5S@fHZRlGLH6rIO%r18u-lJGDfh2$on?X?6uEnQ zSjE@R=eu?98F}H}TsA9n82WvT0ze09B}6$t$5j<*K^kIaCfd+Eyv7jN2xkYi7oT~O zMLmEJYvzt^6x}mO-4H>(v&DbKEREc1V&q!no9((~h$-64Zhq71 z%g(|MoKccqhhgZ)^x~fhkFhH}{lZ^b0_007w%fbMRQS1L>y^ z|FLZe#;#HQj9{ZQW!h--`jLY{iqj6{*kuRwFv~T{cq>Ka?1Oo`Hu0a4>pKaL(C^`% zX6iZRpClq#?2haj%@INsmy0^3$&T=PdF^m5SK=@TBs4E=?a|Bj@SR#mcyAFO4Mjvf zgFeIy*$0tQxmHsVv|66=C8${I5V1BoO1OD49AQwBrCe+f8YkZ30-h)9a|G*E|8>o?5EVs>vV{>tx_pg9tD01nI;nf{vwOrqF>k9ye#bHMR ziji_xg6WfUx_V_Ol0m9(4N~=Oki%wNP%Z0&Xz*@BeBipd8zU7O6-v0s&jjJVf2A^1 za^M6^gn!tRg1@+`N6K#b?D!$MtWs>7*KZpi&E$&l*_DkS&7=x-cCL)o>UlW_B{E-! zT~cVcD>Si@$MfQLU$WMN=xyOvN(BRlR58LK-y8#$HhmLpseC`bD*B0ky6vAMDU-0a zjUbC%Q2h?(JaP$gCcQva-6YQnq@;WRrF}b%5LziFT~X2M^p6EwfPZ4pBFNqMQ(4ujtZe1 z_y3GvG$;S!pr}_6qxC+D^5L45yi8fr#l4Uj#6vb0N3SC*5MSd6qx?)vZCcgAiJ5S0 z3{1>^qtk@_4&{VB+*QzW!>&At)#S%q+Bgt*uc-fe%)1GrM^ml`zl6J6SmYZXBYc{( z1IZdddTWWA9e+6j1)uDJlwN0TEvJpzV-F_tnm4Ykoprmib~+`xYZk3Fbl>X&(Se1D zc97g|5J&rLX+cKQ=#Qp#sp<-S1cq&jfhcJd0*gn-8D;Or2*;y{H~t3UgbvIM>)qcl zCt#59h9pD>E`gq>4pQ%CTk`PJ6y+Fb$`c0|ycFwx4>mThm+VVACJC3slnc8>dIVJV z?2WfjER|w4ZQjgYCc#J`YHQ{e5{vdOR z$=iAOaGbMAcsFa-oD-vjnq`h}DKx?Rj(tRqh~07%~@nMStcHg|@hhUMHrW$Oem^SW>pF=tf-`7SuB#5{d>29cbIPO6r#Oic??ORKBmCA2oceMg= zhax8Cy5gJeFz6%Srs(QxnqV5lNmBk7wg-sYOJW_wS?NM%Gzd*T6HE^n#JwMNcv+ z+ZIVB_vXouq#mi39S>v=0tC_FJq`Ba6#H@Lj-1}J^O4u=nqV)|9W4DK-N^YHEFy5T zWU523QgXCI-#L1D8@WONyF4~!QjR0(t!NAz+fsL&gP5PbEU8t-XBeMq4C6{S%^MYB zsKKJ$AZ=ifFF@xHFlB*!7tTQs9V%sq^Bm9NycW`M=SE7&LnVW0Q8*_N<{DG(qO#9ryqI*J%Y|Rv|O0aaxpGXeeEQB?2kC2Pm6LF1gT=9T`Q(U0y$KjVbyh#*hDlG)-khW>GptQcCWWr8GScI2uQl?+){ScG=}DMr`bYjmBtW= z!`N$?yynf>64~Va96rN&;a&7WRa~5QXj8D(w8MR0u(NY+A$*V5>K+&p4jZ9m$(|Ui z8&X>vbF>i4aU7&VtIgsboYFOM$is(ALD!MBy^Gg06*$%D9ap;Z&_y_MB#nz7=fUoc zj7E3H`xO6~X0JmRpd?!b(_xsYKd2Jnw_143gAc*wkV0@*^A7ILt7tsA^4mjs?tYTY z>2cmaWBfZ6BD%#@oQD{eDhA?O^s|ehirCPzHZBvHL#p=ak7J=Ifqv6wyx7f$_Cf%oQ$rETJ!Wr?g%0sVd0r*tj6TUS7B-V4Jx4KyD8V z_LB}~X2PZ#{729HcSO47V40$+42NLQcb4LK9*f}l_L!Cqk2no-z3K28xjpz3a{to) zRel?#a&-8XHa?5%eGw*wcLC|pUWZVh3+)ni?aAPftkk!k908$KB1EOWu~qDpfw0sq z>?mK-)mn~T4}YppuyKgv{fbUpkTR?k#JQx_9x9Qsq!EJG9J4cvLYzT7#Bz4^jac@c zFwx*#1LMkMy1RbNt}y15HkWB=eJ#aC{oB?0<~P`A*oLN%?KU$z206w#l3y0h zZ(R31r|w5H4pw^}5o~Ftq^F2vqhPgE={*JyCcb0(Zqy$z-@MWn^mlvU8FxZP?%a1O z=Tp*@2gXfHc<{JV#xQ>aTc9OeJMWK9$2l`U^y)-HmOA6DWf@q_De3b?IhA)=WJ$e! zo#s1qk*Gap*cHcU5T!)kO+!69{(_|}qUYD&vIMvEJyf?JK6!jr?vXF*6l5^L44G@GDQ=S_}wh$y#-s9F`qQ&T+K4HZ6fILb9nH zr}%-Q*(QG{K}hH@%naml@=kQZG24x9AKPn}Iid0>XG6Qb+r00v6C+1`#i}+gz>ah* zb#~CeBt6@ zhixX0vScAjcz`hGFA$=m+L$KzNQxmjJl9g3$Cjr9!(OsF@t1=-*!&Y6>=%Cd%^oa$81=hk!?xSy>o`Lq5>?$*# zwd8gVI+?)cG1k3n8-i7?DTE8v@XD#;Upt)b| zUTi1~v^vClw;{ybqP=<4T6L*b?_zoR0S;?)z=|h)EYRN@9o(9$?ziASzqk(LU{TNt zz110vV-xKFM?kp03DA(jr=j)zsUe-tgC;!^>oWlJWOk#tf79NU#;uKV%($y9h44X! z@R6asB;OR&v3lY^G7y&YLv(D`O3qfZNbJEyDrb8ZBMp|n7Q2Iu5XE5`e&hD$NT|}@ zeW*M)rFldK@;Y%^GlX&uzWV&d=zJJkI6svY*Je>q>ZCrzVebSH2cxY%jK=N5d&eH6 zaQ{%^3o=7ex7~ikz$h2Ykhz@Wt~JDsz2sJAa<1`?+~<}x{suz7I?v{!g?PGP5P7q9 zz>xMI%WgOi?`yE!&CxH#dm!~tkD_hh zhQ<&~gGv#55H7Tj_q)N74s>TJ0VdBjfxvTiS;fjW}04 zW@&El@(BJszh)YyP$jx=tJGWkBG-!3K*VqWS(sGepU7Z=IxEJW%h1*UTa70OT^Cwt zMo%7shBr0Cb|SDjeDepe&A z%M*n7wN$$Fq9CttoKN{J)war6uT8kQ=i)$|cZ2dn2Lw;d_p)SOe1y1#g;3<=i)=Y> z(VgX(rYKD=j>N-t?T2$(;FUKT&nh4l^ucU=^$L8I^e|BT&1l59I}rR#o^Z)u^odWJwe)F&X-+vkO?}$CmJNu8!?0yL2r{O1>O_)eSdby+Q zfAIzDQd&baLX!-@oTUx*fu(IK!BJsBH0z>pJ^S+D5TP#8s+gk?0+%H5q)#!Q7H@g$^T;w?r>IByw5i9@cO?ms62pHMU3 z{x*_UIZTJ}tu<2CNEvTdN8}r+BliN*FwTMc!IrTTiTBwg{g@riJfhnNjUj`gtR zrG(8HxK=jY=2=ndAIw5^2c33(kD(uAW4$;i`-peHsrD+kMlO|yxa|IZupd7#7MfVK z5+dMsRV%bN2dD-`TB8G*KcvcQNrTH;?`}r-()q@T#YGInS#lKp9VcAibmNg+NXbAR z-L*bzsWMXoIg5Olsue$v%N|Ut2Rjy$?WSe3H@|w$_6R|a6Gu@S?r;bu-PBXo<~J-W zcO>r7YY6Rq^c1$NO~>C|7GeYe3!(v^Zobs8MoN}DWIlNH#X#k^kAvb&%k7O{unjh> z_1KqgF@{U6j}o?Ab!9`UUmho@mSZ!!{Ptx&LA3~K^vECCPW_IgC5eut`AnNT2jb4| zNSbN#V3n#{J4ei>rA))qbHae`M=RZ`T{p^|$*ENG2q}PjouO+)ka1Ts6Y|rMz z>d5DD-QKZgV1-#*wG*$36^PKyWk}^EBGlZ_A!UCx)Ccq;XEE)5vDZ;G67Xs2*es~M zk)&cCgRMh1`54B;<4M)v~xL*jfr;3(wPEsR&TJAm=Er3VjtKSqn&&sMNaqz z-{hmw_7c@z`H5Nx^}d!Ul=5IRZ(B6tt`!2F-nqoR7a1PXbOm_LbA;zce?;`wk~OLY zA#SpOBR<>gBhsCJjEk+Vv{1eVgNfMVj}*lCXR*%O;-ZFwVyIV6shSxzAygEj9X z__mR)^%77_xLLgj{sl~(yt-{l&%}>=mCO1|=bJ2!nYS^kicOte#4&9#i!vgxp!(>< z??!uJx4$FJvrljOq^NxBT0Ki-B4pfrBLt+Q=h-G~we9adDW??%_Pl4T*(*KBcd|c> zU~z4pD`#FW&z0|t@JQo!61N~husY6_7X#n1W8w5&lyM=uT`B1b!?F)VLNjQBS`;L#V zL}uFhA?g$49+m+Tp;f=VMhH2eXHSRx8xhEm3sFenl_@~`7x)&CD^DFI~S0e-Rgr9s(Q$eC9lr|>bpPt(KlPL)5>=sR?IjaVUblV{nf!lJs=eOJv%u=Dz zB-3KZ(%VNjI%r5G$d0LXIV+0<%Bsk!SUSW8MHm3dBjC(h?!wqzRQU))$?z2Xyl#_`I_j=u(0}E%~VLTy`|N* zdyA>iW5_-V+ls0DN77WKA)n|X8Q|n%HPgcl*n)nrE}zF>w2nxpM`5yZdE5SpMxb1Vb4!u z>al*;(URyLOB*EmlPMr6=B?+wQ_z(T>F$uFebkD{*91mx*TRvT{dE1XAP&cZc^lTM(L;6`ezNJsJlC00uA&o`9rG$& zRkF7@_Wk5i9^9sQPo_YB4)#pUQ2R-85FPM8PB{n93E~oyB@^P(+6Kw2p4>q?wp&hG z{iKIyty>c&%mbmDw_mrf-e`WkmH~-U6x?lf;@*!*U0Kk@INlVNrrC3XM@tRW2h|LGEc_7PSXL^;XgJoFs-*nFFqaj%>ABHW~rcS+&j#~9_(397j)^W`$A`p*cW(Qa_pYF zB#!f(XyZomnis>ZHNx(6$M@X?8i{lIW_oGley)cA&wBQZsVS^%M60fT%O<4?&#PZ^ z(k4&Y)32x0(QhdVM~9SI>F#q#e9&Q9_XB$buiOS58IcbslAs%9z|4waCwj{w#T}?mj?u8$vJJoQci0lb@6r2FwqEa z{kvuml)_5^@?MUEN{_dhsKQ<%9tV95r-{PKn~#HXEE@-k%34_aR;*q^HpDJV?bBRIRq_wgL@Az5g@Wrv;`=R~MqWnGbR})!PKyH_7rW2QoAra`tnzQzu}-PGXim;i z&Dbe?DMcaPZiV38EAhLJ!fgh)SAt)y1ZitUY5?Rk!G7VeY@@u*Y-OB5lLW18$P6$ zMym|jpj8S%V==m>fcUYo~ihl+}{wn1rG<2z4g(J z8++gQOU9hLkLfP?I67lihm^GDxA1i_UV-P=gV;?`776D{Y=&rl1v;Cx-B=y zbpeL3lFP@J9^96p_}V}p+vT|TM)6&3QM~M_k&csUV^tj$!pC)94sCigSu%kO-b;ku zu$Kv*6;{-mUcAjG5^5|+MFV4}EZ%FPX65S`WAhhF~*q4fFaW^tIY9_+NB1dAev6bU+Pu8WC;NDOGMd=iZBa)A!r|xC#R8)HX+ZGpRko?mG^)Hr!EQf$%nhh z58hAw-=*O=csUhBmW!z0clbG(CmtnAPw@7Ut8(J_Fs8lfmOit)RvbK9Vb_(RqnoR6 zIOIe2ZzsJm;@L@j=||AMM7zF1=pp=`N}nInbB;pK(jZ^gA#RLc*b`mTv7THhYE}(&?E5X-X_ga?MB!NI$S=5FA)g)G&Zhg? z5tFdMTTG?Pn|k8H>}>8x%a}4&KG|JwZJYa0nZzSIQJbIJ=6Lv>?&oZ`rPVYs8Y$WS zB_hjYtg^B6u=~Mk27B2BW1%Ui4sb`=Fq9ALgL>DhvvkPL^x9;dgz)%mGszTM9y__> zggpV_M~oBl4_@(6SxIq~$o%5{8#bvW4}2-wb!Zdma-{dzfnCc3Tw$+FrF3N-xM(}@c7(WQVY`L04@LIi+^v} zi+`xbH-w<4LKUBoHUcOsu*FaUu`2hj1LU@n+IfxMO4rTxg=*O_J${NWq`0!yg#`9^m~(p?ZA@9 zm|QG28_$g(?qSNQ6V|{9tcMEic>0lUe}tdIB>pkh&)b3hUIuO?Y1?OVzq9I#f!)@H zVf@g)>^6=&-=SlKgqqe}tPTSnJwT58X2o80V}NehS)6Y=ic`4koDUV(_9Q+x z_B#)k#rj~|NqR~n)Q&bxeBy<0*NL_u^xYIGkLEx>rcO=~`N77AF)^$VL01gVNL~`A zk^f`^!2(AM9A~Tp@t}@G_t)TdXhBIDmbB+KT6o#)kMWM};K09Otl=jKqny+6Gr*zkUc? z=v%o{D(aEs!;JM{KU@7oPGSnvv5cL_vsZ~nQOyL6bLdp|o4|Yt+BYG3HsNL*-5Em1 zc;)sQtDDU3uk?-yPtJOe|M0zpo?)*myF7toAcsmT{@7aoTP6M%Cq|fY;&iA@epEN< z<2@I*!T#X{E3sEwwT{V_!=fKHqVS|y1iN{vrKyg1dQu6Yc zQW2Jh4Re!?!gfu^k6|vc;&Xr820WS@>-g~aqjN!xbfquEELZ5ZB=a~i389ZLp${ol zBe2CB_LncL#pEh9)ZgvgR}?~)ONdt|>>Eu4D0Ur(P{wzj;+5NUja)y{RsONss0L!j z9vhg|sM2S6o>SNW%`)WQ8MO6ss1Y8BkX6n&NY1n&RUU5M2sD?-e|>i>1ewhC{H-)o~rKjj)Cnq&$hak9?)sfm*=W%^y>BRVMdbhc)l2-(_;`H(5E}e<)DiFlFH^F#` z3*p1!vJ0!|f8z3vH8TRq$*dha;M|_Xb`AhZY%&}-F@@pDF@PiHwQ;dMZgC}7M4%-K zNXKOd#CbI6@);Cm=(*8MfgyBd9AsAcxw&h!5?h9}H6ALL0vbSYzj(11*4}KF9dtZo z4`_ulLV7}Ft7D3Dn^XXRSG+y<-Zu#qYd zwoUYXe>{6;-%e_tD?e7NEU1=JS&q8#O+*ud)_3L7IWYep%o*MX<%Z;O>78LUYPjF_o6vY zsggQB2N9;eq1s@XUb>0SCRKSgPJouX9>5dzh*VFJZtFS=`!&YcKAE8vH)w0gDcZzO z%Kj3Nls(yNolI35eCwJT;mNKBP~L{uu*5h`x>MbhKHF=4LA5uP;$4@ID&Lj2N=I zaUuTi#lUy$Hawr9v1Af1fwpCH{3EjDE$Oq3<#hA(A3|^SnC4-H*M-BZ>{P960EVho zl`hk-WAqrm&l6uaZrQ}0N!ZP~M*d@TCutR!`N8=|QM^mT?OiISJ>agG`>~0-y(Tk= zx+*Fb=P$LPCmu{ zj|t!ROpNcK_H$+3e=#D>n{zsk98%FDnI}1?{f*?}tJh-p7YKED2Ul&zR z`H%O_h_1LxQe1jP4!y34A&<#z`|Y9{gb;pjp1B0bIQQNIQi<8-B>D7iN3gOo!>GoG z#e4Z@C5+N%q@PUxE(g;aYaSOenC7C(7|WJLbO+yY)A8DF$A+x<*x*!rxL~>x8Hiu?>QtE@p;`eeI8c92`f5y!|h2;Sa=}FHi4vz6_#aKU0FXVHrxK<)nyebI);?|3U zZoAL;rOq4=`GFGTe7_42b{^CEA*CMOVBd%OL>~5)HWV4$+ip@)z?wqV{gB@{{OanxmQ` z^<#TKZ0bl&hUAM9>3R$ay6Rd@aR|KZ;Sw3P}WAs84!?z<*tCPd#_17+RK~CNM%;%s@<#_ zh*b zWdDP_vB9Szz`nKD`?w;Amv(y4y(9s(m2~cVQ?=qnKJ!ankn|jg!dnR~_YM!sMxviC zibFmMH`K~at!d0zAz`K8yYO|0J8y^*(Wg(Gv>bGMrb436%5j~M@!+`m>uc*Ww&fp% zynH_2ky8PJ4-&jOq} z$_oq;qkEk*4&Nh*Kuj!f{)z%0*)CH5!OPoxs9Vvr2BWo)>F&CH4=~J|^%HbA*&ECQ zmxk}qdr`B~{5H)y7S+peC&i5=b1^A)u)CyfVj{qihT*IJur{U3v5guFRw1)d`Q;!G zU64trm691}ei}()T1Y;pn}a}ann=y8i z@*wg!*fXLHWaJm0-?7^ucF(JwltumrfuvLl}6cbBbA)_BG+Z{UJo3 zfOvn6sU-H3Td#BTo$fE&hngGR^An7s61EQElr~z~GNUNoJaK{?z~vbozmo2G;WsU< zCR)6v9W86(yAkQxPY4-6rPqD63gE>*v2tBT(LL^{ zE05_<>VC-BhurN@!O_!Yu14(n37)H5(n?b9Z|8Sn!HZMcLQ+mouJAL=!>Vjzdv@u0 zkk$44%?5SH8J)hdj->EEbLidp_{&lk(U7kGk^#Ob-aJ1ux*%Cj-AMk4#dEifyqIIU zP^Yo1d0U(0Pn85zf3XG1x83F&_9y^PLgTrCx)zS0mAl=~F;R}8ZKh`m`_e&V-{bTq zm1wQs7qTxhyxP>y0{N02;lQ^M;bC9T#9rca6Al(;zSgpN@sR;iwaMB`F@1FCV2u^%=(tB$1Oew?3vEl+R znYDhb-s^YR#v1mY+PRi0Fm~9|QF~`qI$u4dr?Xo_h|uJWJ1jX1b7DOl^zLDZq8i6R zi8;(T~U8)x^s+&)2=}qAfb|l#t^SU>NIftFqF}PwoL#lD| z?BnbAeH*3gYZcacLR=hRM}^yf)%Pkk_-m66;i;N@K0A5Xb2y_5&qyPct2J4eC-hSk zQR@F#^e3PHKN$O;K&-DD0jFiJ#_YxhvuTN%2Yp^3pQu@C8}%nfWU5~CI*de639VW+ ztkPT1z6lm$uit{i@+N*^syX{bj9vy$&kB$9U7soxWDYzaM`o^s*Bpc=P8?u2)48M? z2|`5c*G=<~ZE##>gFb{;KFp;M5m>V~Qq>_Qd*3AOB%3^b!~Pu)lRgLjBct=1LY`Bl zq7pU8BOU*oTp5o+cJmR~tC02)&x5qE?a39p|H-NG?*}9B5AobS9_`=v1o-)~0B(nK zdzgfhNPh?bjivJo$G}f42DalK6Tr(wdl$l6eLGx8!d?nlvF{|g8jOwAmG~i_I%(I> zhjC+<#jXUL-~0PiFM?d5`KIvq;!8Dx83zzQ4#<5qWa3hjWvjP7lZ<{aP12`*amSzA z$)7BL#Pv-KoDYcx89Sys|I$=d6zZjxwb8z54#=4;Oytas_{YwCsb;o*6u&r4JH}gs zle)JZLv`4G7W2-A*jGZ|Cc$Lvb7C@9C}?(Dqj@CK3dySi7l+7yNfCWwTabzE-B&$J zPegf2d@9@Y@6YNSZGBxE|2KDpCcBN=F?~Ho;+%`mM3`pn{px;;9Xo=PtYf)3Z98f- zZ%7jo)EXNgZN`voy|vk~W^n={%>Y*7t@TTUdIV)@JD)7yY7>m_Vi5Zn!<{b^gJsu1 zge{(3?3%hZLKY!iF?|_4%Gn=yCwA|gI{tm~0slOYrHR3;CJ1J6^Be_9_uRpJOa_Y8ew2^$F}Y_1iTO~!k&=6cu++BEdc z&kZsb{-Ap-%wl;gE4FU?#7%D{&9;#oc!fCB)O?tF1NDBq0O9MSD`}d_ahhf8b@L;ZmIO19PQ3a@ljV2gK{$ zV~$uef1@EMjR;(MVvILU+WOi!&vWvMBD0c=-Bz7n--7oYtdPVxRpF-B4huxz>78LyAoE$U3?PiWBf3Q- zj{Ci%=Ck2w-ydYhdeoA&c)OQZ1+iGr`&?X%*hyynzKC^A+y;(-pI991M;{|ewvwS} zw*9>WI@SOxmN;ePjyhJr&eQ3Kb7wS;)jVflnz$1wL3EVPsv z*R^6k^m{)U|AxedM4`7e^^&35uSp(w?Lgc<#BJsTk4WCU_gJl2#)d-Oll{$`?C(`r z1h1IFc0-ADiC#A4E{|GOocoZ+ez8LYS!?sLXJX$c&0`<^xVk&K$W?2ue4T!&p9Em2 zw3NS}mm!3zFo_=+LX=?AOWW&N_83Ig#<7cGOwtZX6y_eAA|EzYgn_FXx{+!`dM_WT zDQuu2_-Bpgd45z_*>Nr9&aMDn;TPLC&==cJ6n;kx;p5n{*G2m`GNuJAbe9)+OMlHo{JQdJ5u3Zo1o*&a7(ta2H7r8q*k10Qq z7Xy5;ekbP-g2%i(na^%p)%x7j=To9S%kwJZl9hInS4vLD_a~Miz_ljTDVbt_MpwP~h)31fNq%o{ylYc^(Rkj|+Q&lbLDnS0 zo5;G^Miq7>ISA2a*S6oiz;RgVnJQ84p1@ ziyzT{ZH68_H1|Y*!icYX2r=a8_6vC1G2RFK$0$KWEwYr2oF$kz>SQ&;=9wL`=tkKQ z9qKh%4N3sl=n?({8xt{mH)NKAT2seF9k3N5G)I*4p-$04dT07DQGpyMOc(=ND>7Yy z>JUNs`b|sK=H?J3U~XfL-b8&oYe=6BeHIh*9r3*$`&#n#d&d&MOvx^z*+Nvr#uCg; zdk8gn1Emdumw!A2^%{!&U)*GXFu1k6dh_l%o9l)@jK!c z+>&eaom<<8{UZ5XT|voSRcqcX_EBksfc^d1QFE9C@jqXq?4zjVwal&OZ;AxmP|f*S zkm?lIDrVm1w8$pAWDtjAljxb!kUi)MaolYz<-@;-W53mC+Tex~l!&odHbWiZ|JD~b zZ}3il*velwdU2ZEw2HB0$D&t@UZY-O45+x&kO>3X&gJ?rnmN3YmNXNWd&F?8FpukX zeDJVrnzi3gW%;Q=CmmWICfd!g&`3HPB!dZ`Hxfxb#>;Ye4fT%QSaf-35Vu_gm!hT| zjW#ez>xFKJw7)|VlVc2Gq@aj}<5?qH@ZWY48|a?F_)mPMTd%5B*KgRfoUo=qSRDyl zqFD54O-V>6{t_Q<3goP@k||e_lfJfLAucErp_)k}VRy<1CV}Z8>UIT$`|IH;qi!?v z*6YO`Y;ODFSlAIqROr|$a(q2G){f8wv;AZn`ZB$9&NBM+Y;ROQ*?#B5MDnfG59E&W#&0)FDfdb1;~^8P zMY`n8Ct9mQ#+yZ-um0U=Kd^^~7dJ#gY0I}YGO+y3Pk5@x1P<|QbFHU9@+ZbGxr4RB zoYJ}LM>rej_pDHO??_72*y&o8Ej@zv`h38=_MI;kUypnmy zraMoAY1-TgJLE1kZPsQ9*tZ0t9C}4cABBGyYP}>Q%kl*1od@macjTz{&ZpN7boz4^ zyXG=QPyg%NbFHxZ`b(p&N_4Yg349L!+JODQYhJGn$QAww!g!Y|>WY{&?n5ZnyXOQa zpO1Fx=ofQ8X~`NL7qW--+X4Pg@S6avAV9R^aC>@{;l7n{UXKN`z+%eQ`#L?}v16Y7 z&?Cn`d&*6ot$F>4=ETJKKS zjO9H)5BvAkVXW1?oTam+ORnF75+=V0t{E_~zYePI<%4F%tPOtF<~b30-;D07-$0IpfGi;JkW5}avLMIj~~<6ox;BrD}M zGS~jezQ&Wg9Uz(4U1EvByRcj*H=<{nR&!#u(n|Snqu&Pl&L}_T5}R0mLwo2xY&)cl z(KWM1J@NXtyz5I64VekWz5YD0TdOzhQ9*rqbVWNWg`uO<57W6gxpH4jkHjIJ6Rjs_ zMaOqo8E27wUVMP}M5ly`#3=rmYmcFHe1P?9FlXv@`$D>qZJ;7JYtudF=_elaq-vkKgivPfKrVjg#pZx8J|1-#E7nY7 z^h{6*I%P|Z!f(v_r9qRcLJg8jpYzW`B5Jp}+-?!D+(TXh$50NnkZ+VY6ZaFl6^Tk6 z#hf1P+}I=P8@s(hk$=p01Lb9@0d6A@?&WlB45duZpf8pJ%^k zrmMaYB^J!K8Xk-@Yb@*5Jh#R53p3W^$~gJs&T|UG=FT#d^Vi?**A&6l;>mWu#;H_x zX(PGRRXJhU!hLAvtVptWb8k1NF}u=5^{!L(3o8XAESJ@TkcJ`U46n_1ZXFL%v|^am z+!cR09?pzztHhK?Dplr>hXs9h7wZ?_NBj8;$3u5{(j~U(>^L4W9q1m2n@ha#)0w>i zSN1o7t8P^grF3*>nMW-dKqd9pSFfCxhwRrs`1Dwy&=O=OkZy3DT&9qh`+a`yk(B_X_6v{lXrR`fB5)h12ePuLR?@*`0xwQ#ndOtw&tk z9Z_B4&V5fl_N{DZ={|o5N&IH8pV;wT#KKT0!h<`T<3qo1|B`r-3MdLl4v}w+C>&}w;WBlr;IEEN!t13^)Ot2Vf@B09w%ak zES$VIl&94Zr6(*LI!)3QxzQnIARQYR0FjfHa@QNBgb({g=S8Wk(aAd?q94f%Azwcj z*$7+0##-g04e?*D8%ujYoO}e45Vr8oc-NsFYJD@ zUw9a}6m7(zJ~tFovY9f6R?iY0fRMdZtjHl^$Lj807)n-V9ZS4Ss?1y%FfP+Q zYAZfd|L2kc!%Az7EK*lmvAx-s9EL2sAJJRPad2;2$A~2e)~}By582a`Az2C!v%WNT z?=LEfNd)@RVn5(ur`*)36nMIAvs_2BQgGwM;f?W~b)Vxu3}lf;_#U?J`XQwtqn>nJ zHXbrqSA=nt%T0QYO~IqO!MX=UKITsS1WKs0{{F!SG*=2nn}{d-KQ54U-K)5{qI3}P zdjqKNx%%<(?-M)zEhryd`1gw=AVyyR-M7+n8-;lIgOgGP75RQ$T6Q%ZR?I505PA}@ zvZMUFL$c%}d1XtEc8rOK4Q`g##wJ)J*WU+uTEr+Da6|15pb#n_OD`_#x%^I^&Js4S zW1mZCO0J8)9qN9M!gz_nZ9YbG^Yl2YrwK{yY8Xr~y0A`FrmTnb_$6{q%L$YxKAjyS za5G2exp;pN{FrcGYNzs+tD%u#ouk=0xNPWZ$lQvReJz{tdc8r%IWcpG(7uYBsixmb zeN{p7WpRnonqVG~FP+a<5tm@{B1X2Na1CS9$H;jL`gsn87vFdb97$m>n*`F&hdi6- zjYp?BOUdp;m-K15ual35HYU*RRgI4;1SI)2^Xg%Sd<^yjI@ZZJYNT?h=>HuT)s&8! zf3I>vY`U5&A=wJYIu?ZHVHM4ec21y1;zj8TJAcN76=5(-+ zmJ*BPnPZVWKf5U$=0AolQDlf?@fh>8_|B*=_FWm#p2M@R+IYqPn==eMS;l^5g9G~Je)C}a=Jy#R2m7d`%gje{23Rn;2-GE~c+u zx^L!~^~J(`WK~i$g**9-KdYjOu6@vEqxCJJW~F$_??-!n^V=^xJly+gzv@`pP`PrC zqK`3eZ`BKpyCoh)B^y21N&!Xpo?JG2b(WCh;lwJl#)N-L~Jc$}v({c;>FFKq=u zFOLB78(DCP)6Yc7en|>13X{C$h<^cJ3qHrGi&F}gwOsb*qYDeyS6fj|LwB|o(?&v2 z6_Q?L_*3#dzwm6NBPlOEGxT=SzD|tD!lJ3G1ad5VklRWRqrY0c)^h`mFoa{pVkbiN z`qgI8{|tO}y2Xj=W-S_~i+Tj$j)+sGPRw)UcGnqx{ob(?SW!bAR%Gx}n@CgKk1y#9 ztCjVHQxJiMvqW54BW940k$<2(=ZSwfi~Bm~5L`z;jOt!w2DQq{3A*e3fPNk_hFz0y z{C%lUPMn7qjG<%tjE5Y1dy=#%%mgX~Gqcv{SA&m8Rjl@z0`+Gox8hPqH>oKcQx~dk zGMm-c9A2vbyWG9v-wp^2b#C@4ojR@rX~-X|-H3ShLAxE2Co?|K2{W%?=6PGj0cw2^ zZ=g~C&-m9Rd^BEyxmJ6r)nYE_8$yj*9tZT3*&SB&vGRnRkOl~OB^x|W2S}O8TY^LK zk(aQC>adfSN@h$d+_UtXz{6b`vjajd5_cW#)!3l44bTQ2vKwy4gkNB@RdHHL75q1-tqqa1- z(h8a&E5}SBPQBN~OL7Rd>bH_9S;~2^{4HT`_I^Fzh)Qeo& z`!}@v0i8-@Sf&yza*5u!Aa2u;IocXAmOnWt9>KiKJn@9}zUM?~O{FI8<$xhMzkd@98 z+>~9M4opwSUm3R;cVqFxhcqb8-4x!jld!o7mYSP0FzVm)kTSX1S>~1RF_UMx-E5%a z9$!Y|Yc-wO%|43`z{8!+g><(v13`1D1w(@ptYPIJA9C~DbMpr=k=mR+r;*wKS`+ax z1|YrA)<*$x#N+g*T)s={35thkQJ$o}6rzh*w9VbZ^q!<#f-{%Qi*DrclnP^~*P>(H z=@RGnvNk_?$Bems{!a1R=jzYdN(ki@!U=+n8x1N8wG%u`a&&T5FgA9*_`qJ*i>aHk zN4HP&-ZbXYozpupZzFNh$&h=@D^5vbQ=?@~V9WM|EMoma znr2t!Hza@F^*gsj%Uh{Vtrql;1d^<8B!cnD^fxF5l7oDMi8)gt@rnO!Vv^z7ehgIf z>|~`#Npermm(jmQdver%$?toa^z+J~?)!d`OIlAI>q(<0UMwUWmRdsWZKLm)F+W=U z4tY2@`@dXiIk*o8Imr`+iwA!(ITyzl10P{{uw#WQc!HMs*ryM$!WBHEvUTmLB(Fm# zpwcPF3NDbR(ddm8_!dtMl{!V&p#HULUJGAjfG~sR}nv$bzAV* zWwbXIdM}8k=%Pz^P>V6X$)f0_0 zkMAMh#p5LHQ;d#>yTqg5;_qXjx>{((nZDPJc<6_Xsg3WSYzinN7d@GQ721nd;*{}_ z&Rs1zNE_!D)sK4bo2h>P6LRJ?7E86UMCW-m%d)SD@Dy8_EPem;2-vj;NhRk*_(=L2 z0>X}m5%mbc9M(aCmb;x5>DethDofJC0zBNarb8G>Eoe7~hN@M+Y(WG>{|36-Nl2P` zJiL5>wVHt7>zM-Uca5sH^k>p16dCI!GO);=pX*MG2Fh;xhoSdX(Ta(&rF$$ai9E>)tO^%L^K?^4g}7c^AQGRgRRU#6VOM zXe^|j+=X-nPIvH}h!YvhFZcP$6Z2-g{He~t1i$_dt8}|#Z~^H$DuuuMt)C3rV8fbN zaj7^~yFL;bvJ$T$Zja^+;Y>t_5Mp-wC}=}5qPHbAh_0pDZ(1@@w`vc7*GL?%MHBEo5?410`(@6)W2Y7Pcx`XQaaFA+q20$lAop%E za(RtztXZZv7OYxGVU8K(sFj>2BXyZH(GN1eG_;`J7wP*l@_ukexosjf1EWk{)#Ou! zdyO0wR?LB1$&-7@no!g2B`NwR$xd_sFwlsY@GYcjN{U)tpb^&lh^8qI%fxFnYZyYo z{dY3j$*-08Pq$S4s;o5guNxDq{fD1;(IihchfFq43&nTE!^iiY|K2GgpSQkg;8*fx9|7G==ky=fH$EbC z!EGxg2|fy0t6`74w1toutNbHD>vJ+8B3Os`IfD0uYpqbYp)j_=lrdFfYqW8$&-Qp>2~Lde9D!pnbftM!VC5I1{hUURj2q`YuM*cI*LK4N%@6>69>m^b-KjbE{gG zQTV7jfx0Vh%7C;o{UkTPzJ(xV__*j6QEfTV-R-3sFwFg6X7C)^Hd45itleEtDLeP!X)wDu;w9PSDDq+Y%wPWaM18tYn(3G;$|8wp$X?Y&=f zc#vOn80p?x9XtQLUn}f>g2MVWE2i!*#KHU$mK*62mWkAN0g8RN`<&I{ZxNnNvfLbl z)5EC%2;H%vq>fEqhh;1y)m)kzs4qDm@rY7W_}pq&C@^LiZ48^D7e{d8e3XA_)?za5 zG_TRPG^-^zucux-D`VjYlol%Hl~G+QBH+BHlM4! zVb^De7I)vz&nq3txu{}$zyF5)Ir6aK>1S=Lv*d*5&1<#RzXH~c{^xA}64|F!BI~4C z#_IQ;ms-*J42w@&%Gc&cMt2&Yp13cp;^xAt+&* zt-4k(k(qCyk$RSz+17j5{o0k83FyFmW}qO`HR|%QY0km7Rxjka2fq4kdGj7>#jB!> z9uhdlHz}DNFG9V}i)_6JOgBn9u)L(!^(m6e0Bl1*_Ep3(5`1>Y_;90*8l^??YYeU>nZIX7R2v1)VTE{|7A$@6Qh}5|NbU=&02U)&X6wbNXSXwdJ zjFp1Pf@!2Xw>{N!VtfkXjQWS|20tFN>7}D{t##W12@T&=dXXMNy<1g|zijn@r`8wW zmFUrlMo&(1eeVkwYvf4h%yNp&&AxFQu~^K7t$I~I(%9x*+=34`CO{@p+||;|?&m~X zRvzLL>$+EX-qaE2~a#}Cs zzB~wFWNqR>T`mUYVpyX&m}-Pkhh!yOo9owwoB)OiTM;cJ5JY)e^+AjXrOMkOM0ef? zDOU$kj00wS~F#Fdd}&>>MF;iT`Q)vy`UEQT0(BkiC`?$+-VkbWnL6VKyvQVi6w zJ7-)z%Q@Ffsd125|I?Kh#)<=5D=w9gomsnLg3r#52M82E$e7zmq!L-M^ki{vkcdPIWu5LfFCqYPjQ zIrbg4DGZB!`4wlnk_mS45X4SZWxOw`Nt*=<(CW^^x)GeVQqtRH*xk34sjUR#_)V}9cD)J647|qD$kRPqqac?bfG~Zo_D8V6; z2F{M9xbLMF^7(|`U-~_%-uEztHp%d!R)ppDMnmS=%&f599Q1C3LBXa8iOYM*;a;|p zFeJoz*{izDI<4NY*4$VoSi2Q!4eM!g(b zjpPv&TTh$Z+#8yYG1n1j*RV~iaN8lz)Cpxv?pk0QwHQu_dAMM#jHb{_DDTxac%J7- z{7(___503bvvlpy@f%pkF9-(+tG5#j9gYS|R@#BEd#O>_d^DKv-SZAk*jbj*NObQ>ikF9opVG3B9vfaa zzK+HYdb%-oY@m>yH?G?h|Bzk2!f1EaM$0Q9t~oL6`nk?AJ2+&|SctIWe(pNZd3Y1` zl0|E@=k7@Ep`tOnZx+lF7$a! zw#=9=LGEPijlU*_-x<4Ez92Qa<^csMwDyI^^D@GTZHAp%SNyS0K_a4)LTi zW)jyt8BGB-->{>B&<9ha*D$niY;iwI>aw+xy3|M434nK|kkeT!5h86JdTy&kFwjz@`_;#4d5<$5(Qm zHLrdgMD(sri^GdnK(Mp(X*^!ZZkUH+{i5bBWahw&-D{kX_g!_o_@G}O2k;Aun*d881UbsGY< zird2||53i|>GkW}TR#sqZc-k+ZVLLrqH|Y|cyUN{fMm5iNL&q>u@dGqaR%1BB+U?N zCPZAkKwiij@1y%C77t-`ZauwfQ^R9x=6s2snFHe?dGOR_2y<> zzF+JHii?n0fDp=l=f*ph&N?J%t5uSGNP-)}Q{C^epgfF+39zM`hs=OR1->afG*6QC zLu%fz1YWz>)2ANK_cuETEBrBMR?X;wB*P=-BWJauIrOlZp1$X)eP-bexe3X647! z$dSn~ZvDrD$;vODPsTp6cn6Ck$$`)%HHZ4nfp^T~4UKfkv}ygeS0fV(e_Hispu_FWndh?~_sA9)6gcyG-s0u2$z+1Fw8 z`xjP_IXL3l4{Npbyl9>|bx7MbrvDb%bxM$byb?%VI zYO{!0I>R2#fmBhUSI?}zA2Rk5yY_==dLZ_w7pV?IytTR0CfgnxQqQ*W)6c^NtrE6b zvuNCp(bLr^91}bs7;=w$KcSsac3S2j9@xy+O{JMbB#PaHlw|W$+HfzwM4Wri;N0eR zD%%}Rgc>bGtA9EBA^xVB<8Q?kPRMtu3CbUHLePbLNXE${79MXrVsXMk9+s@{2c?kj z)24osal@xvjO5{i z^N->2{tI{XxY=CK%T3U;{Sz7X2CJcHiIZ*D*r{Es#-?_6|8X}I&D#ngJS9iI-?2jV zU9F7HY1iqFwsX&f^o%*g1Wp`1$iBl4bIMPwpE=y46GHI9zuQA?-PrM<<#aQTf1_IAg&!ZI>poNH{{u>rJ6QW(6bG# z>$*LxkH#4p{oLMAKU9DGBEBJ#XpIxGut|OKfdgmAcWymAESj7fQcvf>`L+sY=Z=GU zsd9b$gw2Luq_yF9qJK@|^#d=~6Ni&!kLhkG_uZy%hO2s$l=ci_$SRIPb zue%>=C0H-+lot4t?#By<>S>4SrHm0|$JDV<&g~GP3|boUTsC?t@EnDZV;?`$F>A$N zI2&!H>Du%u7KJDtcUzu!_O3g^hiZ}eH4;~;gZ0~MPJ~+2t{G9VM@;vCI|0Hv_s50O zerol_mZ{J&s+Aq19`<=ELs{$xdtlr}m(92@#+d^e+5>;9+IUg_Y$gULr6hmC;N{P=!4KN*%9!`br=6Nw zdp~jFy3#$k7tNN5>LmQL2nmJF_)Z;D0s zE+I4PV-0_AH1?S2h%VxHWawiMl^8H62A;4}8Am-axqqB_U8VM;h-t2i;;l1TtxL$%&hNAyu*$Y;Vsjr4g)fwt*|em+?~*$e zneI0+K|=ej4OE&#(~^ldDh`Guo{58TuNp);8-(%{M7hak7otCuq*KSf9dfz~E&9S=pGQk1z=B%=On)~jTniSVNr-fn5E8OHNNqHE3G+PRe$a{em)bBzZU!ndpK$+V zMVE%TCD;iOsX57?ZPjeiHg;=~0NADw?qMR2g`Ze6M-bXuJ46sEA3r|48f~8AOl$ez)x$xNkaM## zC28exu&2-^4b5IGPGSxMN^JqbI9L7Oj`rgh#z69rW$avC}2D_zph z9j4WT#X^hDO&G>2)ktBA5y71`yvgGsGdwS|1wtY z$=q<3EIl)Mceg8;d8Fw{<;FsfmLt!9rP7U_X*PsxH>=3^)em;$gT?uXJRk9h+}uCO ze!oZV%_{dsZ}yt!G;xS~%rPQ&#R7R^fp-v55lchouo@N%v1cxCnBq^(!O8y5jV^ST z6;lQ;Dp0N3aGD+qv0@LBVCWvLHkq5%>{CG8+BC8 zyIKR}YD5=JRC(PLmaO;3dE+2AO<#Ps4$^QxF7 z4_?$GgZBQ8p$}|A+g{3$79n$eZK6)&c@c~LX6KAjOTjLRc3)^3(dT`v-_$5JFv#u~ z<&hAp@ygoAtAe-YK8*cv7=3@h)2L#AhjiwR#isOPd}mMd6#w0ILRX8W@L^I7D16A> zj&yZfw{bT7*I-jc?~w5^9yWU|5t287?rhv;)Io6cs6ZvPKD^1yi4&xE`E#)C#SlTJ z=0yCxzctb))t`QIxth6K%PAQ}coNxiRJJLL2BbVhxBDK_!@)P~;ow4on(+cR)Gm+> zCtdo02BRD-H*>a%!`6J4AjBl^w_{k~%^pdX06Jmed% zj)8R9vcFBs!F>-@U_MK=zGq;))gwx^pM=BVkN z`s8PbgReGfvwv-++k#qg2u}Lha?OGFd9J|-{6_TumKEPyHnXv3r$A2P%zN{&t!~|P z=WX(U9I*BO9(bS%vip+Of8?5_+kdkSPyo)i6EAu=P2$3+;-w37@`8u zYdevj+OT~mND-z=T8DM?C&~H#LZq^tY6v|ZyVh;F{en=zi_ET(o5g~g+W3g^rCCZVyBpFc7A0t;^m)lMLF}dF+LBm@Cc0!4-F`-{Jz%d|&@1SMI5=B}-g5>Dw0o8%gcb z+vC>G&-#N`$H5P>9|LW|%QViplfmsB?@?4;DMPIe-IG!LL|1=cG4OE+mR0O--ZiJU zaBP7PHFCxMAdhee8}yL=WPuId56WX4D-xmNts(Lho>Q%Y+>KOi%;!{-<8#=2r!D%g zT{~jEJgg%-UVdl&PjMIv9lizK5(h5!XUk>VP8^nPV|2-W{a%8tadY1tvYDE)Uz~{I z#3>oaLvxSlkJ?#TpO^g8#q}$%<7q|99`XYE&O$A=YXo?I&^-=DcW1=WeYRf?7TY6a zso%RA%Rez1JE3Rq&7ms~-T#HfLvEed2Qw_LX+X*;jTejvG}TY=qOn*LU4m{bUesFU zNz9Us_Z_ey=PQi$%!B|QxEJfiX*!2^#7<;bq?|+hxe|>g$lp2tP+bi0)|WKwX5b=F z`hKgCL(x3(rYKO-K;1W%>rJLj2p7f6CMNcW;Zppv0q(05ZhJkh8`X0u)sHv#IB!?< zKw;QQLX0<~dIU=G4B>5Bo7*|@@RRQGusF;lm&D&wU{+vX6OA<7M2(iE_GjTWn`neAKdg!p%jV`9;>EM_8X3` zO_8}{y|kFl*^0UD1ZdlDLu37}H3;#O_n+9E0j%Oa2vP#(!!ijgZ4_jvzEVV0!J*X< zvSL3{+i2m=hi!AfiEk?9c+Y^PRYn1=vkn)I!eBUDr_dT50 zq(=2Pm_p;pzI`$WRjC6z2rVWJDn{i2=Y44xMIz$VLiYd3vcg;}PjZMBb^>d7CT zEN84f+~SemQ2FQW**GDp*Yxe#EG(n>!F3}FWrl^wCOQt%&b^7KpCbmbx`9mIF}{yb z{Tbumg&_tyb2pBg^r?ykBPV%xJ<%ZV=Qx}b{Uk_iC9?C*I=u{I0v*BQdf9#_{83I5 z-k&Y^xj7v+y%$35AM$O_JjnJ;JMe?%b5loZCQlP%zx9)Dd0k#YM30gWF8yjMZ8=vQ z{s-1+qMcNh8|%D7#cC?X9f{|UT=ZsAoNJk2MhEvGQ3#FvLwpt^+IZ#?A~7_Mw#jCv zmqA1I)vvqErX_f>M@I3z3*Y$OJGGYllkcBcQ_qd=Jen+Y4FIr6j;Zn#JHt`Act}+6 zDEFm@xQkK@s5b|av0nnKwwQ66()4VyUx;awLZ|Dcj7Jo%6)#oekbp$!gI5+D2R}G5 z4x)Ni@3V1{GR^G{&z3^QHNuPdO z@+X9NVn%sl@8^~sMKRex(~Xk#XE0!@>C$daEUVV~@!;>G{?$}`DytqkVUVeIQ0 ztgXAGsDcWcR&P1uuRZ^UB`WRgz8Pt(i)RRbxWYdx%*k1j99!VF9us1FJxoHH@#*;X zP9yOiL@cb38!^NcKGHz)t=$~d6*`T8xi?eE9FHjUHH}8{Ea(}j@&ffsM{I>eFULYu zC`-A)y^slLZ+wW^L7P)`SX!_vN?$74q_}Q};fI9;uN# z;H@r6${YE~s^i}$(PJRVmf$y{%Na75h{d#MY{=@*k$s;|qlh}Ekl+VqH82UMjU&pu8 z59C7rJfb0I_4BlOaMLfcq@QwCKd?AxyWORoxy&bHEYk5Bd{2A><|4q-`*K-rIGb<7 z^JCja5EJP43VU)YxyHzsNadJGQI$9ds{YDh8FWKfC=ZeZ)kgCNnebblJ#*4ewZ-Qm z1&<+7=E4ugKLYb64DCNb8y~pqD6;V0v4wayb!MNJ9}Vt)^!Mpz63`v0soQRMiy{HJ zK11l+ZdztH4*uZPaqyE9aS;8^!bWvORk4Q~OQy?4vlVzqx?Z0vk6m7f*h}>vm?!71 z>Jo91N$nPmfOy*08c9P3e{JN@CX)oQCvA-dJL}fz-X0GjNw*7^6z}Jl+liHY3(qc@ zn@yB0e&o`l9X^NM8X4c;zvJKs)?U(X31s7RcTcxyOWrlZUg+CkLvE+GUuel#v8|JY zP)@2n5m~#+nK#6oPWV2>U!m3`U#G@HQq?M8!o}$j7{UF^$RJVakiDZq827%1#8muI z5A<|%q>!yTa`QKh5++J4ipG<7z_K0yZgy>xnoP7R*2ES`g_yzK26Qj)zS9axo!CG( zZb9O)bdQ3XLf>nfu0@BHV}^)1ol;>Gb5KJxZ!Iwyw{GfQ?A%TD86D%ZLE?mD_r&po z^XvDCwPf2OSLq~VPfy7Q7weq>J{ytn<+6)iVqMkwIw4}LoWAnXkVjXeFP&DndAus< zGOBcEs9Wc$AlHK(P!_}iR=y^A8Xv^3c?|L&$}P~Dg%W(9jxkJrtAxaYpSLEgNB>Ah zeRj=;l>f!}bTD;u^qpNc!FIqW7VBY*06(i8_p6CO&YTX}>t_h(4k_xJz2cr0r0k7L z#q)bTDGKqtsvl%m?5lCQ$z!rch_Bs^5HPI}!UvCOD#bwviqP`_mOW>x#jQL~O_n;= z&wXOe++}}0g4z)RV-=sK!RyI5!@-bUYale_SO}Bi)M^|LOQD1igF_@cG%FJ7q+c8H z`_6!2eW9j)7mTjej?f_q1LTcaNM-l>{xUo8p^Ke0HNCAevp8nyDaA{nKHHF2Kx zq(Pg)I9r^Aqs_pZ$oXjA5BRCy40!G@-wZnGwc3sJ zUkO-5_nq#C=&|sV5&t*HHevI0-`oepSE<$}G%@$Gn}th~;{)Og={E~*O9#=9U;H(T zUo(q^a;M75i4gX9n};y>B0fX_GhR4ias@|I=?2{?!dyHI)wMfCY6`aMsa7!;Q-J(r z1u9PBGqNw~PYqTv=NXB)9)$t2a|2zMs`to69znu~gw`3LFZr1^unU zhC^0r#(zT8+w|Xvx>U->a%eb+{KGlYZbGig5Q?qXaj(TZ2hk6#xx23CL5d82R5xhI zoQe<+(juy{#EG>*zCQF3V>|A1By%kUQ1Jcp@ z0hiJ$S~t8~%l)LHT=XmCbFiP-NtZiM8>)*BXH=Y)mwrfPe{QS^AX}jH!&}e!xthyz zGFoA^9VTvj1QQ*0W%duo2&dkt^^QH1@8_OY5Aq1six*k2H>bU`ZMG60ZOcLm8C3ou z6{{vr?&r%%Kd=_eyr`r|?d}c};_7BB>2_JGwUOHux7dZ9udNs}yPk!)7WIpr>(ju_ zyA{2H#H)?eb@Uj>#+j>~-oT>v5}SJjX20$;ZLQ`XljEE?*%m)XdOBIhoz&GFC3xuHhlpRIl(k+)89CQJ$pU1t%|7mzm38^6OM( zh;u@g@Q<;7{`$!-Lyl*_;#~^b_?gDD2pw-L3<>f6@MOZ5uugWFFYPC>-y$!q-Tmxj znTH~E@jLQoK<&DUva9~GxYntZi{Bi=uH!8ctMAs=kh^3#<=G`4azEgZg@F!-4@2$+>2QvPdg#s~2 ziVdI2wqar1VGi6b*FqQ@P5=1kiae$NIeZNK#7=$%&Krv7gU5WNR|W1N;oeN>Cx^c& zFhgDj8N+Jo6*jm2$kk_bY9*MJQ{aOcsjWEWGrC&kCM6Cb5_v4x%6o0DZmk(`#x#Q|nR$1fiNe`@1>xx`Rt6gyOi-c-MYE+K*r0Ckm5A76q-R5>Fwbf5+(EBR0B< zRoc+3nL9^Q{f>hCtq9NRc)Ti7dyXz|6kV?mD*LrRLwG%o6Hh-k2L~H$S1s{^E>X64 z^jj%mh`Nu>s7uH*%fpQIV6B*)Fz*OOypLM|xc4I`71hdX!dcnRmAmZn)`EExWWgHB z*|!&;5cc@>lU{sF#;ikPmVP}=c??YmQ~&8 zKI>BYCs{2;q`Bi+NjYJjhPMUq>Hgw|@IQ6WLn@ba#-zS<5t8ROL1!Kkm%9_)fvwh*>)cA4*gER9Z+mlDueNpo~?3+$aR^8JHA4B(baN?RHW`CqF5TC+suS*l0M?T@69*Y zJ<0i)#i@e#nO(2|bCxiks>-t5P%!{e*Z{NJSS0A^;0kyG!)9&^=H6^7bz_EL z=_lRmhwdv|j#@-7I#|~3@Mi8%Z7q(eX;dqgn{h_L2R4OB7x#Pqrvtrya!8_7(T>?J zj=+7;3)1;B^P+vqda0E=X`IKny=8>#{cy+?JQ&R_s+kW<*5ZS-lm~fnW={XLc_Dap z93)UZb?jkZX}9BG7u0;ag2IlG+W`OcvJv8X=zkD>pKLTK7tn(Lo9NY;bVPH99zqpt zG2Z*s?WRC99&!1a`nPF4r%8nXYPVeFaXI%xqJ54&Q;-WmlZ`cG;~4nw_Z|-&Ia2(h zAKGNJ%FXbDe@{2Quhc(o?bDsQty1myP%=>cyn<*aWp2<<_jA0{VO>UMziBmsMLFcW zex=-uzE{?8W4&Rw=Y4O*jPZdTb~CSFtT4Q~Ux_|ibS?zkoe~KYC2DL?H5zX-yhhne zsW|oZTgxIG^S+?h9{MH(vphb<;)Eq>E(j{qL-FKFMm4QB>=FJI>8hQtQXUyR8%WHE zfDfE+szQ<|3-L5}Ul}!7(J)dElRsuN-N+=n0K8WqqVxmba-K&ixR2aoTT|swfWXW|5 z{}9n{*o*bTW3_X6jqo;fp}>h>LD#7F&)ow{d`W>F>;J7MaP@n%BSvRw0^~N_>Gr-U zuiHEJlQlmOl6EY7C;PFGt#R~wE?YTW<0UG~BaVI;dLV#GzYv z@F1$2aVzRULkACJPXtzvqtA}FBE~5DZv9xNwdx8u0-A%E^bpCxjnt9jMqR%+m9HKq zYnPIR*l8hnUpmsC@cvC4Vxf7eD5c*f3?RM={7*jAc{^$30zA#~O!!iFOn8Xa=S)mx_E8&ir0LEyfJq&0VhUKBGL6rk?=z)J;Azf5XN^=Ud^k3WrJd zji@=-Iu%3q#1*nDy`e<4#){luk#DKNa)j$8WiK7(7`nsJWxQxci1_QxU|4J&=0EDE zRjeOETOaZQUapQ&w!F?BZgxv|k?Pk7?cPXZ{D;6y7~ZiM-+kc`tU1w>7=s#W0dg%| zJ__{&+$RaP-(5~^?{-a%HCjGu6WG(6XV)a@P4fG$`G!5M8tG~ELcaHF?|!iAaXQVX z8e^7eF;c1Et-u+c<-W`N=e$5y8OzkhQSTFr47@XzsFl;uKm6@3g8C3XTJpey>$7}@ zgsk2@DTWCI*ALfbqd@MX>IuuJ2HDk+WH^@ZqLeErS9{X3qHTD5R}EZea5eGC0V+%k zZr<f1Cz8F6e>B@51P&VtMI-F4_Wx}neDEMR|RCAgk@JaGJ z1V_B~(L>ObXvFIv8Tq>NLcEo~R>ufr5XsUcyNO0S>b*hOpcSvRWoV`>S=Xjm)J|a+_4I143jL zodUYD%Z)TYRwU20lKu>0_H{Xf@ULmXE@5SpDWr- zH6$;iWe;3JEN8q!-tSPn>k^#Nq1Al`5<&%1hLAlwtxfUgwUINlqZC&9M-%r}rk|sD zR$Ur0+Y+!Z)2u>DHZt`bp_oaDg_?l@YzIK$q$ZyVC^C#;2%j^Q`#Ne5O(LW zswa}8rvtU^pL^Ogj|tv;o|LO;(JmtQ23 z->kK9Q&z!^!#3C_6IyR3m^K0%$4zERJIci;O{0Z;v#($GVs^6XKGyn4%C5s&9ho6- zJbz~Wjx}vNpR3VWUE3B-q%q2(>KEy73)jXh+hmk^pE$Xl@4ggYSYJJGpR^?ZmTN90 zZ;aY?`%|%h+8le^8b1I^^Wi`y&5H#wj=?lC_kPR6QV8>P5uDy{fX(u6(o1tESCFA zTxH2l?k`J9n6j+ph{Q6yQ9Q2x#^2W#`;OhF`-c2RE;?c*AfuG&7sc$}OO}%tnxXPi zVKfqQpfT-wF+(Bjb~JH(7y3nfo<7qq7bR9RA8^t0SCN5I-wCb&Gi__*1E|Jp` zpI8%5!WAoPEG4|t@pjKWjy1Y!)kC-(F9f_q`sQ9lk2JL&X%DS=LH-_Yp#n_+F?KKK zj(9Xl{kEf`OuBEI6p~UoqzIojG0R8~vt}n5pCMCJ(XQ^3AhEEmYoqQrz589?DnhU8 z5+)jq9q|lyX3{~|$o!5BHs?*15^Ljjhg|Z4pPOK#aW-bZ(<5#ko@#?<1H)=?GuYmsn)R_<##`WnE3sm;AQN~ zab@NGobb%0sPL3^^$&AocCMk=Qm`YZ9Gvxg-a&NXeaz5kR$5L>uP&9r1*IAsP}*h4 zyIj1ah1jUa7{R>J`e@l&?cL9BM*H~-M+gC+M{57zf{I**xtTdG6Cvl` z^3~139(&2Z%fLwy6%iq7g>I3Ce;~U$Hc!$mwgN}bzR96kD^hs<*r`WSO=%iV$-y6AW>Cmf27iq3qesGcpdjw|4&17OYzz!HJw= zz_(xwXEY3BO+0)Sf|{Z@?-HWFGwWEGrkqkEJiS|vg`Zdpf-T|8uR8qNa{iH>+dRqv z4p<$`08LMgn{4R=H(9fu;C6V1*f8<*=fr+uN7H{hotad2N+(CRc_JG)ny}b;(oRHWwLz39u>A?DI1^q(v#+)srHL5cqcRR9B(X6 zv;0PDv@JleE`8j-U&fYmr(6`Uj_cmdz9%9KgIuX_CnYt`r6Ij2qnj9RR z7l&;FK)SIFp^Zi=8KqCZcKiJvb#X#U@jOhuH@Ij`VOYzg<3yAynrq+_8>zG_eBUo# z5VTgWKj zf6`dV5tF-QjXK&qvS7O7k9xo+B9LRT`?X|$@g!4C2afU}?-lX9+&dYA`X6aby zM*pm&_f|301?DWL0-24})}5qvcH|nx7d&bP(QSXf^Xa&E6hF;V5%Rc~V{6Gb_1smJ zdttfVse#1G>juH9Qzz*mGkBnl6l5tN?#-uF-&XC_3ThtW`5Hn&Y^__J^ru;YVJbfy zsVZI5Nc-AQ>4^NqmIGnkBn73(IPY%?EVnj9m>s-Ut^r00=|res{{II#?*O-%-8{^B z70r>L%6Bo8r!?f)esdC99ML~TA@=3acx3Ue>4`!QkQ>W0f>;4577}Z`oVhu`t}q7% zUS6@0szZGYEcVhIzHb?GumP2f-&?Y3e1}MX znC^YBjWjGCI)Y!bs0>2D0uL>R(HScsRc#94UYafpvra=r_`P7#e96O*J@9J^7?)0f zh~SKcFdp9**33ipqO(@*z>qy*T0ciitQVGhvED_XRxa&lRHctTdASv31L zVZiPP7Fg}EC<^nfh*4{w)@~s8wKTR%_WZd0+@9Nn^c9}^!Okce*60w|!;Q37LyBl_ zq`Qf=ypnH%BnZSn8u!(REH%&v*z}I;*1cvYG8OzxJbFL4(Y-fsEZ6&@kI}#v zp{iUoEVowtVzfo{nLWp^doS`ZYi*u=6AM3hQNRe+7qqYC;$BGVYV_>6Iffu!kR1cW&BC>#vG_UVEDrO`vR~xix;q=Ael~ey_ldD>-zP=#2eui!wfccXdHp0C zoGM^tr}6W0J{*%Tn&y_K{>aSU0>vE?-^y1`2B$(7f(7sJc*Iy-w7iQ`Yc6?{;C&~N;``#J;QHw1Qve-7Hl7lza9ccgB zbC>64!snH6opyaf~UMsScvX1&xzpfp0F&Rm#plCWb=NLg5&u+78_{H zw!zpS*f-ht$06Pfv~ww@KAg~;lpK5Q8H((%33IJfdAprUU-EXF!#mAioIue8X4IP- zOv|k;tcQ}L`>H{YdKLR?G*^RmciD}1fBJzPCyLP2%uA`;NUlRM!b>88J!(By9v<^5 zHb&7>C z>=L}Ok!tm_LOtPOXY_Me^%DL}7OFQ&ZJs5xxZ$>wP(gx@A3&mg-ZffX5nFap&%|ET zGuWs%`=?glC|do>jrAPiJb#W7jl4=s)GTM8AViqRuzAVun*9^8uKul7b4Z%~O2ur| zc|uQw=42p3<)a@Rh}CAr{rN~A0-+#6cXeZt(C}Y>=QHE19Aw5Llb{v z6k$;aqmGnp%cJYEo?@RKB>;!n4@dL!6Bs?u$;Vi80K5;s`v*w#BoT24IAEA2;LZ=S>+=H#vu+yJ{pvSE}RH@Z+O(JGT$LUz! zF=KV;o&(=6I%)j07ZJ{ln?u!ShWu0Tc5HcP)!jZ=D}+}M_r|PZ*fV_!!R~PBq0ux2fh_lDBAPS!c)^b7-cAmm zlhbYBq3OQ&Ir>dk`i-79y=eN-?_%a_H7hR4m+t*R_q*=6A)K=$kws&svIO}5pRs#M zmMk~2HQnbZID=v&84PB-hEgI|s*%~s`HR%|FWu&G%+6um%Lc=JIRFDx6$*U;+ms?K zasoUqa^&3S+4`}=kPgv%@jC_zWvF`^>BJ^7T_N==Tk;GvbsW8)JfndeAXo(BY&q-9 z(R|`SzC5mk#HS(S({XPpC$10X<`e4Mg@l5!v^8kBcBt#Uu4&1hel9$`&weu%TgTm9-k#_bC05P zxI*$K)@p9WkQdOQiNdSs*5q$_E_*7cNO{v1X$s+vbz3VE(3!XYJ~5}JcCMXXJ5KfW z6fO1#8e2hmsSyy90X4j)I|EW1-Q&1bDdFOviRswsU z$?10ZmfZc8F*&3Q58Ax3>i9>8CEmNkfI{)l5w*;(n+`sG7q^VQ`wH$uprc*%eXMU# zt6^TPZn(JeBp54CX`GL^=E)n-DBZdA7bdTybN^%*yir zy3SNZ4xkLL+RI{L_OPFNu%k#=%ya7WmEhV*M)?*LNi1QRA-N)`-@P?Ues+aaykPGA>j}Ql&%$cznEXSbQ(qSKtQe zNKl(r*f3QAaB{bn4y(?@?qv|!vArX^9ngJ_mDI3vmSqG83J{V>%NIT!^Dt;pAR-+%1!i(2J=GTPlJ6M|Ag2Eje4R?(UY@& z-O#MXL}OS>W}cJ{3FASO)LqAj=bvsfIGDTI6yp8vlh}$vMk+~>OLJlAF4C@5Z@pp6 zJF{La#G8ImK!cHX9Hj5>2ljStUAg3Kn<5hxn%-c^)i{3@1n)m^WiRCtI}o*VuhH+U zXBma$PdH&?@gkc76>vt6RSSV8@7Y1iZ!+m-eyvd?8fCuHuMz@8T9KHa(>(b%<6O8+ zy|20rnF=Uc?+>v;qpuLtGpNL2cPXSF(iCj^-oXf=gc>Ouv`rTBn4Xr`H#-LP!oX<9 zbg?B3bQ6d*Ur62rKA`_C@En`)%d6?Z`dS0}&Ov zePlT;g#}Ywut`zPuj?e3kQBF*J0PvaqbH}TIEF`FF_%}`S){(-L*bpdE$^;~LKwNX z;N6a@jY80u7V19#`mtCi8NBUBIH#AQ)AMU$`LA9lVeu2iZ^hm%xJ^?L*+#m$zvT6* z9%5dS0ER$$zZKF`J+~!qdSR|=nP=kj%)sL_Rr!9%%1eBzM@1Ib!K^?d`=!B2#y&Zn z^xSRC3|ID9(rS}?{Ya}!#I`hqiFF(m={-Wd@$uidJbA!5xphlGh*HkHWmKlf>t`C~uh8_{enmv;5=xHl;}kX89*^ z3t7ReSnf_Q5hZ0AkdMNzPov9YSlm2PnbhC^Juq7X~+^cNaqwV zz54B4Jt_jz&e;FNlIo24@zlclOi;+NO;0Z~AfI`%&DwpnIeCE*CCyrvI}`O!Eil`2juM4cS#*f-OFsv3^=$49jXs|g<^!NHf)P_mV6C|O z^+WXMxKc5G5haZGLdF`2NVXX)Y9du;YrpnVw8l|{cisHsqGn+Q_!10xir7BU@7EHa zJ^&fAJ^Ks0Rcj&3>cOlDi zG!sv4bCHg?4Peuw44~2t248U^a8xX13(7~BKymJxFC zOl$9B(FtT&KOMi&VdsjXo%mH4v(vIUTtpi3Y$ed*AT=soJa2beVMseeH~N$O4-qFy zVEDGXI|jQNTUOqEw_13R`qShmz8_|&q=PKnv9dS0L4BrTWOru88UlJ&dm4Pvy^3-; zD9xZlqsuzcT+<;{`35M{j0^AkL$A)2527!+r~E>Y`NryL()PF0@?qfOHSOw$E%~^S z`~!-6P7g-w<{&P4CWper8%Q~5io*03v$Q;3-KkyJBIB@KLNpL-q)kJA_odkVnz+um z;CZb(G0dRnYS(H{-!`XR$Ex2iWERySn|RrmZtnzLeFW*bIYE5m&d(jwH#8Ui7W|3D zy&^-M#KvOO$36#?2(zAeJdsLRmiC~x|8{3&P^-hwEx_Ns#P)0t=jg=ubHkif@WzIW zg7UPF%JZT{0!!8HUGGH0b%B`)QeP1&wRjsQHSqj?p3eE z)k)G&T2=iUp*-kyXC%v`J&WX=yv^y2Q@8m(h#vcpSgq-LPI9vo=HeKtXQK_3dTnez z&r^x<3AGr;+1fa+ns>>j4(6DdnG0}LE2%eWHzBqV*q%kRTplc;)oK?BBAh5{JAvuF z`|%-iMC*6hq<+}JV%pRHeVqJ9&DFIem4Ja_G& zo}PP2>I(7aTw0BPvYSGd=7;#&;S^_>0Y?~jbNWRDSwcPL?N*lGYjccNw_n#TKuzuq8l7^!e&5ZX}qu8;zN57eV z|DN|+J@ODQSjj38jg=N$P6ek|&}FP0qPbn2ug#K@I$F}(9hTZ`PnH3l7i2kC0h}m;D zM)E6rkqWXb*N+_kl!ByAVsB5L$0zA+LrL+pD;nG7B284j+-rnppjP8#NAc@T+=a%I zuvKD40q-5-Y6RZ{^&_}^b^Tzway%@XEM#v54T%;ZdyI65Q!>rTZ}>ZF#%JFC;t8G- zaaWW>?)os)u%)s7&br^nt+kS~whqX>pbZh|o%`}&8*5mUa3t>)Ywei7?T1vT#WlLP zq&5A6@l@z9WY_tv2_`$MK!gc;(SC@-K)nm(kGbU#7nW7{?BrmkUO#TZ3nM!|_o}@YC0tzPO>am&wLn%pXnoQ3O-H^M2j#R3EZ)o1ol@EPjnV#Cw95=q0YV2TX z_DJ)lK8vh2d%xLYB#(A*!z6W@DZA-EGZP_uNfuoM&~0Tv+|uOX*3Q3AUgSJjkjLGl zR5cGsN zx7uQHt2;XlmCUsIFtM83CgStYR@y_npUm1u{N%+SvCx8cp(>*K!kEz@3-|Xi3m0cw zkUZ~-w;^oO9bKQ;c*rIzl1;zm$mz(GL)-q&&uyQG8!wabsf}q1_d1$s&P8#) z`hD3qEtwtjN%cHHn8JVvCdZWDe$?Lq7+-qa^BR42BX z7%fE@LgX(RsUuLPC}baTZ9NXWjE{y_QWOOpH+co)y!~P%$8#U1j?LcuITj8(*4v;_ zD@1JST8)Q8np6G6=kNEFq1;&a*(&pN-kp|V)IK8fmG>`^`HGE)46dG?PDXl&J5uc} zc7L~m_Jd=#Fj+13SamZ{=OE@3B=*{Z9T&<9$t-OubhB=so8}n!#)$Zb>g5|o(UmDd zq;!qNl-&a(0J)HUPlUUAtm)$mYg2hk%V96< zI;vKG?2#@=Us~t~#SU9wJ|nhmmJ+n%L)eCz#}(Bf`)aLzY?>GH^xF$9_j5h_W2`*9 zlGshE61EUt#>rXLk&yBIl>NIbEWO$SOC8tFR%$G}{cNhM9ye$&5rTyTtWcPuiOC#HJu$-_UK{F{G;j_o`PIuQcywPZYhz0yk2i8&&zv3| zfNwoSy=gMco<2 zo$8@^H| z%fPoMDDQre8DY!mXLAT>3=vRiMG2y%H3!j!lVi)TPGy{Tbf6YLq=d#+xZu^lVc|Pl zn|o}X=@egmt0zRlC7JPuUQcX&s?*ciR8j6jb1wv#Et)*6xCE6&1`gribi#eo{m!#b z3dW5z6~#Mx<&Oq1N-x%MHQ)O}e;CEM#TdB=_!-t93|ub5@h)>8rqQ6a``EShfL zKn!^<-opsQ^;3k>97tzV&q`sg3fLg=Y-B zBh5ONPG>tAmZ&wK-~V$5I+ZcmHRodYdv$7Q-S3Di^x++YWo&*h}4V!_O z`t`d95khAEtW9eP!R%%ZD_6etW#bItSQ?2;B^)<{KgH#>b-#+xq7jXCw{i>bB|^n> zcq0k_rewi#Biju2+nEAcTMpZ8kiK*_#@y}w%I%`3Mo#fErI$;zCVd9wtrhdYBC`z#@K}wW4S*c z3nfn$r9&AXM{5U`PI*{JK1v-7D~HkarH(hyFGc7rsA z$*u%2HM=7EY@DyqNvxbnzh_^r1aC9wXmoLe?4I^=C$TnmWg5Pr2xfJiVf$!7>)lsm z0Rn<2#Au%ENAqO@j}4Jv&=FXpU&s;eja7c_cCKKE9iQqbj!Wi%pj zk-%M&*ku{W3aGmpBTe|S9`BkuH<6b&Jt*)-7F8$XE3-t;>1ib#*GQ?{<*pm}DPU`f0T9*zFwU zx^x%mbN=60qF2qeFyIWq42@zG-K=rAY($dPawd?iPAIrIswFHmbMoVSb>{K-Anyd-{6$fBnVYYJKss0XL%f5ib~dv3QZ0k?2`B)9WUtrXpVWm0ia1b4PcmI#BQUXR#W8Uy@J!n#l<5p zt-o4R!bz)!PyuZ3(e0g457*zA7hB$2eM5+A$F3i2Tl8>vSFz$cl~Dky!axPv{s8d+ zK&?8}7ZLp!{?T9WKiR%5P`k05k$bG$SiII4=p5aPkr2A7-^`s|e;4`A$#x5!DoNa9IBsnfs>YAsvSyyXaG!A6TI>`iNCVePkz^^+V7l zVoD}BP)3zK!PoD7VzJO!wDCvLl%ZcVWekHzaab0FLua17eB3E-EOfXZg6$!IDUiK- zRzD}>Xw?b1eondDy*o9@npWJ{o3OX@M*<`3NhIWD@e zcml2j?6}B4jj#Ic<3!&mf83DXFqWCRBt_k8#b&&@uL=n8dJ&m;+&27xj)i-N2@O;j z_WKy12yyQSJLpWU-=CefXPSA}H}Cs~7Hn(6<~_S2!g9%~G5IUWAJVa^s?K4t|Ilx)eVIwWfndzx%Boi*~w_ec7^{=j1mIKbm`rL2t^x1{Ap zVF`wlWY^{o5h&1sYaCtJ+_Wzj?oSlRl*;f!M1?yW{338dVMl4Iq zGaVz8e$0+}u(cW%2Zghj)sG6&^FzdD8;cjtS05tRYFGUs`1(9tY+52qwc=-~RM)D- zOoaFYihYKN%sy0?2z*%2GjdSIiD@PM9Ow6Y+&9Y#`O2+_hmoe*s6QOY{ z)CwzhGay!Aqmhmk>-U8fkHk1t_w^&K9*N=Ft4A}E0q$Y+7=f4VoOkTE<%N}%?LwwS zJB(u(WQC~^RpZ3T=v?e09?y3}C973Upr=UCiP~?wz7(>kvp z=owqNpC1W%W7Ta!bl4Y0|HvmG4l$5vyh~qxfFsj+Ld#T#)lbT&B}U&z`;MJ5l24C^ zT=*_S>FA6~8U*%=>jBh|w7UvaoM&tXLO}gq9_UU`yK3cm5Qos8oS4w!#0j!U6KiL` zwtJ(9?gWmWc0^Aut>&k9#W$g@bsYn}NRs@UWLOg~NK(iKMtdj4etC~IAp()PDJWiU znuynvCN~yqm)3yo+kPiQ{h-Wxf$Zq(l7jva`{T54S*;R7VY`!7t8`6(3#ccuZ>%~7 z($@X792}iar^G;eVK@5pofF+0R+0>`N!m%Dd~fQX*zu2MXc`v1&%)xDAl@Tt_v%$M zZ8@>{_|We~ZIH(Tj#Mg3uaWH#-#JL{j4&%3eT889$@V2@1qgHF{l3cNLmY4MxS-BR zz7X**q*-$zWDPOFtXIMZ5qL^-aI{t^4#B763-fRxD8IIcd}48s>NyD#nb`dub!qY_x3T0x z+DFCfru&gSKRs6HH!l#W#A2I+(I>9#%E`?q&8K%i`S6`H-;v{>ZQf&eQcQv)zHA!@ zi=0F}Ke?wg0T%rrqyFb4HusN7WW{L5!ApS=hJ_-L9hahDF}&?0j`iwIv6N@JctXr6 zz?{50P_pCgfL$X;c@eV2>XYtAKY5;Gyw|mA)d0mW8i|H65+yP(Eu;^!*Y6W+?%1-N zXYKZM2jm7Kxr(u^LA2?Lyd{i+H%(NLqRAA}S#AjBCI5PWEGlh{0=17v_x@ z9Dse!Jb~DyYJ>4apTYLspBwB!;^8gG5B!O3H{t6U$Sao@^Zq#MGrt6yP= zXE!-Dy~Q*Vu7IX~_C-oGqCRDpD!}VEq8<}bX~C4kI@Tj|;mt$(y-&h7cR#)7@@h5X zAu@0AA-UMpL=NuWDQ&|p3JBr2Cn7XR-z}((K+)94bv)w z@+#wMl`4dA?n&@Qx^B`!MdhnB{lEV2|1q2Y`Rm{Q%A4z+zTNxVU;pR-`K!mqZLq%JN@Bgi{rSI?vSP{5Iqskc3cztyPss5i{K~HN-{&X7@|n;|&cT zLX}8lK!oyAjNdR~5w@3#Yv*2fQ-JJcI2NpQ(eKyKzmV%f!PNk^8c8VGjm+Gt_Cna^ z55T_*py95Ga73rwu+;}ORBu=gVWh90!nGrTQ(L}6n_a`JUq|r>#nbNMbO^@CkC``{ z_Mb+oFaQlhD7At!VTNfAC^bS+Q>!P4zCCMG6Q1VrKshvpu%X_u2<24IrioWRDe(6p zBK3#tGZnS@gYK+}u<#9q3ch~`E86A6X~hy(PdA?Xkay8YAJlFI-mOPk?03rf8#WH6 zQ;BA4jGE)A;;W;BQ0XHKBCAc7T#;YFb+!@J+V6F}B0*ry)d`79P()DH zS>GKClcJ04%+@`-9lP*mZQNErma3A=L~P>!*}F$E^%!B+N%I7#+u0FMa!CbS0~H84 z{)Mg8uw#UGzUx^C2+kxkt|>gCDxzyP8|h-q6D_mPM2*>E-O1 z#4w&}5*0Ss7b?6{<~EWF=bNe#VncRF$x928ApHZvB3qGOOS~uE!?=d8exxTv33C$3 z-RMGDh-mnU_MWFcir$m!Ewb?8T6Jrrse2>zL~SM3Tg(LVM$ZHeW2qhCIVFlTAf8TW z=Hz%^D2OZ-B_1o@v15h%YbWsDJUdqOW{0s@!}5DKt3I|9;y}&jY^FT?!xmc{tyVKv ztL`9$$lb?8y6yETzOgz}P=OVbf_}VB;mcCdE5qAPXnZNI8=rDME`E;o`UU--UpOv` zyWWaulXkgzlEl_g?be-*^v;hR{j5A(KqZReA~?f zVxDeqEIw_>4C!_|)#;xN7UQ$#`^A!;4x_qqfg7D+(bd|Y2K$CFRiC}n@Rr(pU$qjM z4Ix$HE<;>;YNz@c@qiZ@dRQaOrNw{HhbFquT|k_p?SN0JM?Qq?3IBeNDG?zuH6}3# zYOfk8!*O~oV|m`%cdWV3;X67wRMQ~rQBfqLGdX>0)mY_rc3v}yu6iU)+_AaOC_0%@ z_Mfb?UU~{*tNB9qo;Cc$n)?THen5_iIBQ&T7KF)+p8MUQ#s%O(Ss8#`w}@vbbq)NOJ8jyHfpjRXFB%QXnOmDSGskG=IQJ* z5-YLKh#UvK-qYo(LchXOjYit;Cq;0h!}rm?W6_~~p|~|V{2J@`eWMK`8h3NOZ;z2u zB}&J_RKSd&WO-7==cEZ~u`-F%1)p?3UgT-EY<0H@pZ?W<&|#&O;gVv87S^3j< zvR}V9R!m{MAwTxRL^JK}W#dz|?82D%iM5@EwR^O)oo@bj`NFN~YAjn2C%VZ8AmB}` z6!t-iN}9bRBAGN!uPF?f>TU+T@^sxOhj_svDq2%3x#NBx{gm7Ou)-hcFq_zR-4|+b zQQ7PLq8wxs&Fo>%HTqe45U+#Y94x0KaIHK#m9TLIbK*is$Pp57VJH}xGauz;J25{KeOUzmJ`!gekJ(HAKIKAP{ zPDG!y9HHK%rTZ@Wg-u>9_@>3`P4MFuuB;KpBnv2)P^?=uV#mLITF6M^A{k-yb9Xr= zzy%K1Ex#f}ZS}7m^Uu!xiT;dqgI6YSh)YK6_jOl2?E9ekor1`FG-kc`lTn@Mj14pB zmWDWBFHAM{Pb~IT)i_<1AjEa+x--z^#l%dDx-FvGMD3{KAM2;DW<(hm!rOla&*%s# zNeVHiF8_o`>lZEjhW#HQ*YCM5op{)ajU*BCjQ$^~LCA-|{D9rgI^`$3bCCh7Pq`A#|-gB=JaSS;Dy>)v<5I#b_dW zG4-!l#4Guz!g#`v#}LBozrDqGZY(L^yG8D2vcVgRueh3TN=`EOev#s6Rw52XeK&V@ zh&lM-bnDFltxwRHJh5gQ?-(!6bHI3|7whYB8(by6Hcp-sPsc-GD@9>v%b3-#pLPhwR%CU^GH1*Qt{7Mp-DW^W4Q zx@Sy|rEHY#nFSV;AQs&wm2j-hv$@mrpX^Fx95RJW`vtMg$j6v|DKPFzODtu)gWCYr z5k!bjtOb?!oBa%XpOiXFoOQiWY^EKXPJ7QS=saC4Xe4R9keom~*K zJyIGvRv0M=pAMVX8Z!E6mC3L+yBk}-M6X{Xps!iFwElM^71hXZ?tIMxp9p=Cm~|sn zU!m5EO}VczuwwH7+q@%EiCDo4$-5r$Bgj43|OTW zt@?Oco@aNexSfbT4fcuUX~6b1!yHyIm&SthsPuv;Wz#}j@g{v-Q7^45{9cAFr(Em+ zBM}0yFLQ+8NdswJdaZ7A9}!|$!WUL}bVx?qfD%SE*-<(Kx2_xcM^l)h^pjAgX*4L> zzKqIo{)FSj`A=zxhXm94I9kz|f_SbY`c+ACHtvIo3OraW%)}or z9P5=?4x!1#<^+G@jgc0bOZ(jU4Pu?dWxtE1%}59rS@crXg$fXRB3`i(`c7Dk2z!QN zH^k+THdn3Kvm2>2&H;YDZe*&GlBVr(*b^7w?>NdyUPkOY-yh*f&A()!<(8Rzf>fgS z$!ACmCBju1OoZ;;78LKRdvt&Dc}_(Us!>HOsG6YqDWfl1(0<{g5^Pc|*blT zq|-TF*;Q0g$(gf3O0pCnZfx)930u@@SPFhf@;apBcSv&z*~CYr1K0*>MU=ds62oNl_`6f( zmLVPdl5tFpa{h7Q!bG#Ikl4vz~Y})3D9bk+HEZTWFW{ zL98Uj?{!TzLF^07+bnxLDL`Ot$j9Ea(LWiLmWJ)~7Gr2ORzMH<2F%F~@wD{;4Sp;K zo%C>MyH6d1@p;`wOMmyw*|T9Q>#v1aO!Kz6i!C=&G0G=5t_CeZ4MFPIBrcnzQhKRT zfT;V)$p>`5ukOJ-YsRYDND>&wU-^{{RQ=fmp!f9d_d!HFq3~ljkn_&A3z`lw0a3FF zsxJ@RN(9yKx2VY%P1G@j$rV+E9O0Ho3FxAC!17=Q#p?kGp6Lz*Go z{|^ys==ZgmX%te8(2UeSz{TXsp6{FCQ?#) zoLBX56jVlYd{$GJhC*cmzOm&EPanYCDzr#Sxea-gPnm}_z`x~1an#N8#cAQRPPk64 zLN|VoLv_5-ql4rNzpmpDB6vbYc)nhw^RI2M%ZS{Z04)| z*+JC&FSxDe(lJC$W$;7d>bw#@-tsw3O>2HAkr9>L5^0ep$_}m^a^%Z<3Gv?DxlNID zMlP(kz>mlUx@sju`vci+092;_Yn2IISQPRUYnB`-WCq!%k>*@U7Cx5#8#aea2+xg4 zV{uhWwX7$93R3!DyK=Hq8;Xn?ehe`IiDLy(=@$i;s>@p|CjF2%cAfgw&XdN8vfUwT zJtnFGsWxx!TAyd$Xx(MlXca_;e2(@Fdzjb}+=5nnU!$j*mvm*$g(%r=@WLAgKcccf zlNu5y9EbFX+9Rvis%{@NT{oL(PpY7eXVoa9^Pco_T+9{%co?pVvw|6vO}}=SRu9&0 z;svd^CBl^0+E9J?tpJDP!jaGvynbvfR{v`(?C~7rTKQB*EObh;iLPJYeF=FZ`Y%>c zFJ*>_d6(Oqgj#wlJ2pDMOaE@P?eetjocr&Cy?$VejH{EaxH<*ZBB#zfzO!W_PUW~Q z=$~CD4S8-qZ;`&5VJt?IVi>J>q#h%G`b`=lV40!_ScvgO)QukY5D@7Zhig^f_#5G` z-%~bS6sQs(t?t=FL?}ExL;*;qgcGAP?)rt9!-E|Y<%}=`NuLl{Gfg`{#5Qhkx-V7y z+yUr3-&hJadc&z0?XDd}QCSnCYsEXhJrTQxj9quE(YeY&j8=_1DjySxHL5mRFWPUk zm3|t{dHWz=M!QYmH@^tPe1ZwY{CtK+XL0;t`M39HV;-W)=Y)p-KCLL#;z%9sm94#~ zx^o&;=NY3j3Z9_K@tu=7?8e%MX5xlcjTD{BW*qW`@((u_P_sg2>a`MvKVC4H+dc*6 znV6%MGwU6HC^M!#WTW-z%v4yQwPv}J} zpJHmH{UJSe{My*#*Kv`=IfKoNLMbR27Z20&!5$@%c^#$#ZjDy^7a&-33fx_>CWdak z-XC%N=snVG%#!Wf)qN#wgO`j8x#|RZuQRJ|mM?Q-C@f#u{AQoihB9)C&kD)kkY_#L z*VxRB<)AQD)@6p3u{h98A*UE|L;ki$$Kqjez~d{k`1TKVa=ZXM`{y+77Y@!jco=try3TuO=4A#G1OJmCh=G$ z&J8A3)bI{`Hq^7=H*AL*z5lDEtZyGiDt8sy;*5YEE*(b~ON11eKmL*XWIKDp<8L)$ z^d&!Rl?$v@fw__s3nLKMO*vKFn(%W3EItNs%H597x_d|9EB*b;DT3zA0HOm0L2)|SiLP;%bq~))V6`mMr=7hhaVZxsoVFHQ|PZ@JzZ{oWgb=@ij zG!%jDQ#N(;YblA484)4xd*(v|;(wI~Wxq;5Bb6U-IThKQ7XN@E z0}n!A(@4c}o>#;p{l} z$!0_=e#lB!{60TA(Gy1R@$?_qZgVF>Uq#^<_@A@q^z_o+X?~@@rxa8mo?v_5`}C4> z(0SR|EX;Wmb;BhQf^;%X7%O{D`l~UV#CC1IsfTr&_m}oeaMiCK?OTxO&f8x$c$t(?i|Y31K`Q z59x{unVULYBQV{mu`5~-WkBii4{lA1exo}cTBEv-)>A;OoIXUIK&y@cv5@Is*-8Kh zZFBgB#X>u@dXU-)uQ!zRa+Q<`h?<8;YNyX>gSbn4V-;u6#@u_7sy6uDl>Ec$r;RK; zn69_t`;11vmP{WMsQ`B=vqn8TJLF8q5X$Z3h3B5h1nV08*4st>kiD|>@cpJlUT%_; zmoHcgW?vh^Sls%)0~ErxJE>9!kyMEu$y9B0*2aYrh3)uDu!=OFR!ZkOHaK45Wb3CW z?MV0RoAM-|tcZiiJ{N6dx9_8|aE-yrpiCkwPeA@dSPT*36Kg@lZhKHi^K-qNOO!Zb zpU^ah0{YN&h_6N7K(HPC$sXz0D3$O=P+_tdfj&Ogb4dB?V%uTQ2BiBL5g~W!M87|g z3Fm_}Z-1;}p}~9oFraT*jH8Qi{5!t?^Gy~`V1G?Z*srNuxX;pVEJ5Cg2|2R~uR7LF z2ks{0R{!wN%?ndQ`iOlncB zZIkn-hIR38SO<8Bn}%bL{U_Fn zGaU*|8DGKSi9ZwNeo;!SOc4pW3P4ipn%Cwao>ui$lDyz-19`v!fDQj<*SKZhdY&TY zSnV{5g_Tfl)iz3B6_%%O$F&C>UOP*eWn(Ee@V0l9yhF>D@!B$0>LwP&?DUeRn|Vho zmUZ&3&BBsa+^v^qC^6gmb+utBjEug=M(IBE1OeOE1Vd&?B^>UIJ(#Q6YvunQWE0os zSG{XmAqFx@T{&1Q#@|VY*!mG&4!=Y92flwmr*Q<~9`&ZYY)Z!l>GimX z;yU2XAftZ*gW{)p4Sv@lY?`i{f8!KF#lH`#$39`NWxM^rrAM8xE6-^TT~-o}%uGH3 zwZAVx`hkssB6W9<$YIiVP3p-$i!xYK6;8-gj8@%%7W&h%0=_onUhAKdDkny4`<1sV`{E}T>37Lev@(fdHT6o6V})J56R6a|#Rng3D;#Duuqy#)$M>b` z0Li{YJ-?{K3__zcxLsh-mgDz$Q=LK8=G3Uf)iyFRR<0h0nJ&?(u)|ZV5H@2nY!xJA zqlYiA758t_a+;(z=YSiF`xv))iz~rRTJF+g9%cSqqVdM|lZ~%X+)EN>YmtQ7hb%BU z+V!QzkflW_a_;FuIsf8`=2iC)4mmr+c)y z%8M}cc1_6~m{IL{NG?+IWY@++L764q4qHi0SPy`%)g5^d#i~Zq&z8M@-4sb=1hWgC zFLozp03ozz>sMXXmPi6P2abn^p;bUTZEoxD))fT$cmSK3*vKtRk4^f-coi@?IdHNL_ z4-0vWhpE#H>z*lhpf0BUyQg#3Ptwp>MY&5a-&l?_i&iM1SBL>Oz?1!_8qu9nk!WQ`EA zJuVb`Rm4$^X%b1zz*($S`OX3e<|&9_PWmksI=Q-{WsA?NJkDDuQPyhM_f{`tBmL@U zH?ZFIqk;@If$2rG3C!;NJ)DOu!FJR9l!jA0q7*i{b}F5iz6kG_?dZ4pRxN9+^Lgyg z=Q0ea*J~#X)_E(I0!lMbsV9w}ygCkk(mf7FcdsNh{UwJ1-j<1j45h_Kd>266G!`Pe zT-nI?iM1ZW$?z}~&DaZzAp$G)q*0Hhi@Yu;8z*B#c4x7clHVEKvGl1iuh!USNkaC) zfX3-s*zsNN^7x)Xvo`yxUTs_fdXN>ngfNjDLlffVR&B)|7z^1qZd#pw&5{~=6OA9l zWlATLvMrb>$oK2%OuV!iCD@D1jkWEK#XWCu6JJfuxXyyx>THabLZ5dbF`9gCnl|7k z&0`;$ufi~zvw4k11`7QFnCcByK}8YD65*BSG>K0v_Eoeo##@*58!D?I4P9-7I`IA6 zt`vmGFP~_a2g(CjNzcwDEL~iuR*Z}-QSh+6?09)@$zUqmpn1VceaAwlJ~7LNInwzh|Dk8xrC#w?a|%7(rm@Gi_e1|Bj7?_Q|{g?P#B<)rnY4ia6YT0|@(O zfJ5z;;arWV@#83E#POTkw?a8lY?K8_+aHHQ!LTm?+Y=>(+ZN$N8+C3HnJ^NDyZM5VeUym8?o;PZE^cN zt5%*N-ue@LQ~V|R$A{>-#f+ZuA*K5)P#xhvh6o6dYh+Q%^v5ARZAu|#kVm}w3C5c0 z3p+l{i=bOg!?uZAKB!cyMOq?pd~jPhMCkR*3Jco%VPRdKj-U(u0qCYv48qP>?C0{= zj}4;t)(GnRqw6JHidZo;Q>SrA>am!rI5V^pH$9})e1o;>f^Q7<^2L$;C$_(1cY4b< zp5zIq+#DFp2}k8sQ_#e0-(!U+gFfm}FnKBJGF5Sp3$rpb*EKkBb zMeT0SCSyyq0R~MB1vPs9eLtexmn`L#Q0NWjRgADW6xZqD6h&VvnAp(z**#4(bm%UfCdizCJ9?wMraj znJ_$7^pWBc>ltcFS1idVrF%G_qh*&2{5^uq@^DTq2!MYj5=`ACLS{EAE{TRNN{IXv z#Ou^A)%=eA*JPuYQnV|_X&zCOwmyXEbXwlEBU3D-=+f##1(qUdDOAQ58Lfm{OdH~K zh@RB-to8a;8I*nrOLv3`Mn6bX4`{E~Vkw}23)Z8+75A4LsLF5l?a0;_yt%6o6R9pL zvNi2~>>!_DJSeUkv`EK@+mRJw!#)hCQZWRZObJVTRPp9*QK(_4P9=M`88~0+=X??H z9`erKmz|{~FM8&tA=#bNESZuIbaUCQ#Gl1~^t9>HIjp{WAfvpzA4>c`vCfA?Q>u9J zk{%KyM0lSOvk=?A)yZf<_`0nI+q~#5ZgPd`s zI@-PbM4wGa@(RC>6GDR*xK3Vp1b4D=gpLp87&iwNX4xdFsdsxmgRVg5ukf^0+eGk%*Bz#ZEBy>tUM@tK+jRPTtkiSFzqg|fM!od;NVH?u5>a}uLsD8(& zjda_ky@yc$kwxqWd$cO|ZBk z%Q!=JCAhWyahGwlvD_v}XWzXZ&Or&GiEjth2B&j|#B=uX8_(b6AUYLK%68F?9d$ZN zc%owW^GnZ+bC7oXLE=xEpMD!(k=cKI`t)j_WMq{ z7?=Z|fkQwC7&2#WHBDOc*^!s^+Om7bZ@W}(B0!Ah7|q=MC#FKWEgJoZz}eQY zOQMt(nQ@&8vVUqd<2Jgp+@cCqLXp3=`>ysx(_H6q=UxLrjaVL0W{WRKl>^A*X7wmMsiMcQyP3^~w-wodD zjUl%2ZNm~Yr|Z4Ja3mG#do^OojHE(aBrThSfJO%-y%$d@_%1gL=>|-#_G2GJU#|j~ zJrRypN_djl%!Ks3!);~%kM8ZP;T~l1^=s3|U$EAzO2oUv#-d=Wp*~IfP?*V{A~1SM z@k}8lakqI31<$|`E-2mC%)5?YB&{ke4SDC)aWIo&nJ*Ds>Z(m?3c*^xO*U#ngpJz(WMZ@h37^h$jlb$8}*LXOJ250dG@z;2+* zp71#yeqyay=*3ko)1u$2P@d6p?+Nk0%V;(SRB6dMch1U_hkbD}3|->AB@+T8b;r|| z8t>n@^)g-^ulV(wqop)^Jk0CJ*~kx#IQ^zr<2g!|F8wsvcdP|vj?JFyz?v>caP!#` z_bSea>iDoAM&o_{CyXJ{HYiigDB7ehBUzkl+b{wai;Adcf`v>+RwzR<>qYU$`H&eT zpJb1G+yJ+)Ml23cjHcxsLP)^LuKp>*)D;IT??9 z3io(!h&!IN9K->4Q}6W7--2<56FxKE)8Y^*(R86m&l|6fgT|lz_!|Xa)ELN;G;4!# zLWL`acrE4-lAJbt;;*%FvYi-V(w-~%jq-8%b(0VsCu~itV!>~d*g5n$u}73+cywSG zT~Bothx7@+tuWb0%*OguVq`K<@t(?{#q$K+A{(CRW${%kMem! zl8S+w0D15G1f}%YLT}iGnPe>zE81sQ%4^ko+#wF`3%U4j`%&(P`bMax#koCfpXzCW z!Z%Gpt1A9O-XtS&siQfyX8TBS@S>6**s}I)-hEf0c6luK1KBbVZ}U8e2cU*H^p1n3 zu^6>hU6WilA6Z(X-7Of|R~BlfYJ@J=QWQAPCCrO`W8uom1JXwK`^80-Ms%k-J4)8G+;)g}`i>J_`81Y;q}NT3 z6Mp%GLDcSo7apW&qFTL>JzN0bUU!5~7*<9A6Ct}uu=2tr4bsit6PS#FkRB|#eicXr z?Fnn*;_-$foF#X}G7r%m%nC%TJKPU>)(NZ4p z6HAa;5354fPEb8!C5JYCJ)PxdR*>vQVi+Cq(pl;GM$e6@QKf_d-gCOZoy#}TH-!jk zC&i*0S!q{M!K!RKU^Uu1+5nbSKUSLasVMox3UFrR=6!2NzeSnit5X!w%0Gp;_*ff) zSLPv#vXPpT`B$pb-z&tOl#z@Uk_nqHpbZ6<+zl)KdRRZE(PpVl-|!l+TmJPDNZwwj z8Y+CNmv8(&A;<+c`u#l-g8V*+(6&Z(wI};E3n)|{rT{DsbefLbZO+L7i(_#j>t{k7 zQ;5V1^KtfA3E53zKpC8|L3!0h31QwT)Q!=01$QMOM^GD^wr_vz zXs*eu*4s0D=7tKpcpxnh8v>q9q#pN1CLuTR!Z}YXhj9J!%&uD8~0ihV72MB_5l(bH*Ykj=CdC(SpXxy3It4==(U9k(?zF%Kqq*L1Vvd z5Q286!Zm2t|H&R&NL!pQuUp>?|i*U$HsXc@*2Z<}bic z$x_@e4eowgYWI=g@yqVsST!e!VUCH^I$0?Ud}lCbhU|X)5H37Qe8Xl$y|?<-X8nrG z*hP)CcW5SAy%M__uxU}A(0t?mCw52tUbQfFTz^8@y9x+#>A3n8!Lb$SARoIoW31tw ze<$r?P3`*ZhiUdSlLa=ZH+GGQE$E%_F|lLSaXkG{Ml3|E@U#Q}uj9P^u@s3}D6Jad zKd>>;uJLxw#!~ZgUMp+;v106lhEhd;M_}(`KSS}$ZntoFubWSfH3g*c^@#Oz;y!yU zX*lPGG#@VrL8bvI+AHn2lk5633qQr7GoH4(bDz3a&=IgtTQvib+RXJ1tGvfC=e%uD z@6bg%FY;d_$%vz!Z;IUvqWKihikMFL-udvIGvAT6;s5%pa#Otak<{Oc*g4^_5Hwvc zvv)EX!qfNFMM&1_UtPpw{jj=2_&ZJig&FI?e8EvWyVSQPVa^tR7{csyO^2;vZR?jC z8?wNFCH0HS#f(Lsx?&!JF11R+5(bED&ePB93Gpy2iQQP`I78%Hd|$cIBlwWw79qPk zUO#qqx0}P*MhFd2oZ#!4W-dxd)*xFuQVE~;^!_K5&}!upW+S0!#`{JpniaxB!B%bd zS&tCO%C0ZmJn5NX`S2lJmH`sjbsMj4}a!3Rbhww#Ah{A*r zvEHsuhWycPjDsJTcwN|>$cOIn%h_BdL5OYX4-kp*M$fsJS_$(3%cgH<^HZC`ZYmAv zsq+vC?`u-x>||(WLXCvW4XF{6ATD=E*@Qy`{%{o1k#y8kaCmcak{#b|{swnac)aT< z{EhFVqwqykm@FIzWqyxVMBq5TCvYak-8P67yys@ce7rC7jbC=FvFwt+6T%RO$jOil z*3JEM-^9ZYy4!_eY*(LMP2PLOSn&(NZ?KMJr+NT~`VghC*;L=LSZHk`IU9=acR-~E zQIPKvD`qt%qZDfT`=miiJ_=G|`*3jcbg~~(bx5*x18jA6u=9B+*H5<~EYoQc_k#p|H#P zb&)5w7wNbOh+4-{25OH?Y??INfIiUP>OXc&yc-iXHXiI7_R*Us)6YpRr!8%Bay2DXBvumsE%x#)kdwl@cv|KhmHu+Z9jb*BZH?Gw!SV+3X zlva_Vhy==V4#8ziFceJ5kydj%PhRDEB3*J}udPi^c?fO&qFq_4L5Wr4lnNbC>g^D! zZ^&Fq1Qe!&X2v$*^>YO;&~@LhWuZGfRmY2VS_pGKWlb;TVTK$x){3#$=()?0Nh>!hZ#7ob+|!6V zT&=lBoljf6VG~;I@`v0@%6`4EOre=N3DXcUv53k5ZqCC*mz*A~FkggW{x(qql}8%# zM)qUk8!JZkH{{2D|36Ip`U|st%p-R=#unRY`mDof%4w>kWD6?&G^E_`(T2tGU<}0( zu$qL8msA0&Ocy_57?s~hPnD}MEx_%TZQfb#nF>O=GsH@1L&ulj{il*)Utusqa* z{r+NM_kqG#ufN3M#u77mMsH(j;%-MSc*6^<_%~S~*6&H5aLgfGr<+1g<<&&0;6BpMDSFF@sTZtLQLAaj1n;D|~3uBtY4rcu1 zR}FA8^mV*=!QmRomdCz{<3qfXwm*sEBUUN7DC2-CPg%>Ev2nsRiVe0JgBp1NK3V7- z9B;a;M4O##zhk$aLK6v*G!1jka)?>;B8?R`#s{zCG=rt(Z#`I_Gr4{)RIimUYn>ER zN{vJ_+(BjLJ-&84Wq{tQd+K)m#10=MTW9^wJkU?@>5&DMko_KaMWT4E6jPi~34dKb zkDoPz$pWb=^kC0X*e$3w}En^m`? z#=^iHb; zGeBI~Y3;BohI^8{$Mt_<59g^H9UWoY;KW@zc>pK+;e1soHIeJPp>V#MhGBPd@Flt} z8B(qz2JT}g{n}pEJjTPa-e5guvR2vYLyAxwG6T~A*X#68zw;`%z?;UH!>8sd8K!m4n4&Etb31YLFIGjX1HgSs~M2w^t^{NmETbg+r@O8Qv zwprbN+pM1b*5)msINyeQ(YMg!Jj`7Rqw#>cI}jqTa)ft0KNMt!jan#i_AshegB-nv z-HK%J5GBB=7Lj3 zCQj`Y$Z;TC->&;KFF~efUSF9%J@#v6k3d8S7zcCn=y9o5EpHuna^%Lt=rFYjk+9oP zN$M0QtnA@&Y#M~aTWa9n@}gM%Ci-~W#W5F?%Hm(I9?NLKVgbK6SiSo%?BU=f#kO$e zaVpFSm^3+<3Y3k3J10U|VGsX$d}@t~os9q$PKAifKZrtDa#o;5K+o9|bK zycjb&y&;J6i-9Tv%}>=^WoQorFL+XDZBwo9w&SMyZTyY)`puhJ!tgM#m&lu~w8X=~ za{AGfgVl<-9%Y0Nc_bMJ<=u=`tA|~^QrSR)3lH)}_6U)?H;dLpXC{Vphgf{5OvA;+ zgh?7eL0rX<*Y6!`>SkQjPf$JOe?sJRJVd?t35a97HHZ#e@p{YI;SFi@$l@MkvQss5 z5syjr&O}64gETJS5N4h5k8#S{k+|%=eqUT*o3Sg_9nJkO``9oBGPQ#*dv%O)r2k@eo z4*Nw`ea(}KA9!)`plJGXM*1*ZtNEA5rATYRhM89Kq}|;<9=>D8Lm$3r`*iMZf=tqK z93d`i-_DduJ2_N@`8rU1cI;`Dx`})}uCReRe}_~I&>wRA^RzXprfX1lS0Cia?>8Pk zeC5`!Z79}S%v2?u0;LxZD=sK{P5fSy*dGv5I`lREFW#Rmwpsj%Jv>CWIw;6~1vl;S z_QfQm(H(}x!H4vsOf)S+k^x^Ufx@GFmv1-HDD*Qc+(lb=HL*1ooA1}QmWnEdc(v;< zx8f%{q*X6@{lboeG;*=s4$&u&P8k((mfDdSZ;~ub7XbjO8ef`pmsAE#e~v1}mW|Wp z#qs7B&GES9YQ!76N%e8H7xGML2JzawCOIqU<>8h@@RU&U-yTF50jgOCMul2lR>!;Nw zwN@|Wv!8%G5_^J$+3*Nj$CrJa5A-0&_b~9W20v-jn#1Zy`&B>NV)7%zQL@Y0K=IEN z;6vIWLu+KnGi055gP6Th>f&0xjMC&ana&GH{RdNtyb#Z7;xgz5*LZ>V=! zIo`>gCY^pzx?E4}Hx4BKZyzVXEoB1N{Sg;uC`VL{U3eo}vSHH}lfo zsy1(c$Eg|$P}S_wQ~eVnz*JadL5Tl0>jqM9o>phF_6%EyJ9MvpLId&CNppb*B^{N; zDezc|X+-~tfA82af)Ll!S=u$IZL2ubE6glDLs?5c(2(vJoiIw{TXC&=M`Nt*dmx?X^FU66?Qu&f92L0Bky$YQyjJQV2$5IK%v&i1t}LI zLMEw_69|!G0F*9ablv2?LJtS8ZoSV$S5nuiWl8F&5Js3D!d&Ss-654191F4O!Mf(Y z)2kiWKwWmencnT{64&gID^c2|qXy106|Rbc0bhy>qul_OUb#jrK@Gm(Krc-qkii~0mo{QXxZk_H)~*`4tu-#mH9Uw|(>Hp5<-tk56-Fh|RoU(RYY zaiDgA{y47a?Lkg=Ilv#*X>`Xgqc_4W4E+%9mw@#Jy+4KSnbv*|>Hci>7>s`+UxjtF zOAP0()vpyJf%+2?22fmibn5JTey%LxsF}g?w2BF8m{9zX(i5@e57!hQ4eN0D6Ptv^ zV?ILdsIbQBrsrhb#L(cm5VuSdI*(g|Ia8I9~*JVXfS93h2oM<*{8 z{NnkFfs#$}StC(By-LtX?2U)%1(RBxWay~}lv@v2<+5I*B^?~URQ_wpV` zsbyC6lW?n_fSCxhnX@;_&_pKBV&1ME7WWQ&xX0zIr*KC1{U-@bDu`glh0e)zPf&(% zm#agX>`z0$bUDh%Znhdfv-ow?>p*x|^=x+b;n=>?uowRvGW{aIx+?HScNh46k%e=6 z?PIJl=gaVq!$>}F)&I(9s*!gI;snZ6@EdRV=Z`Sn1?Mnl?qQGZ%YnRJ6RyXrhz2(22wIr&86A| zR`wqfQ6zj@(E8^d!P<(^o$HQ+Mi&J-PJ9__)O#0&zqSQ&X;ZftSHREUQ15->_(~9Z z;pdSJS0y(RGWJYd)KkvUT8Jv^nnLx58Cb~K%Oa6UIQ+E%J@0U&yHYcaZr`H$4w;{s zz%FddG{=SQgv@)bE<_Oi)Tt+WPoycLSMm{dGw9{*P8lQgB7PkiTFo1h12|5d7HkTg zvnZ)N_catVDGtX1@2It2@?O7Ay7}lIZ2FUV$KxLEdetFONY@p#d0}To!u!o$^Bq5X z_hJ0(ODydfPq-zqWm+CLQopgGl09z#)W};NM+Z()8^qyYXRX`51k!eZbz7jJR?Pu$ z!~B@ueTG`_nmV?VZ8X1LVR}7S1l4YJvk5{Ex{Wa1R;U%f>qH}+vazV}m;bwuGt|oL zuAhfpuOHv>Owm0DUK=jsDFDKhj|>uCOYU2NKtoGmFemqI-$b*r&d1HeWZvg67dYCW zkS-rYUfrK~FL!MS(f;*oxASrZA7hx~k#O+x?&q-m3pY8oE8yLG`&&J`pdtemyu-FP zcnakeL-x9UL0>sswDr0^&6q?BClf4MDD0n`G{dVKFab7wGNDls(nTMxOvFI>X?3&R zzhVR}jI$Y2*q*|)LmX+5q&RnCS(|<)#EqoaSON$2>wdEutgbdy7Ojm)P@6YQjz4{X5#<335>jACPuD){HS@G-UYf&M{^^zfxO5NmURu{3wOt%f8md#QmxS7|DZF@6!v9Vdf zdU$EAXzy!PWm8;Xgx>^S7p!6KWX37y?cSh(DALJ9@6bGE`cn0gKo!FM9L3(p4{C%{ zk5Fyw^12-rld>%17oytgx-zipZnJIvN-Ga^76)N{V@x~Iu{~=SGWS9Cf!jRDRlhZ< zs70M&Lv@hqR20z?`#Tyx$gD6^a=km2>QxA}Ua$g3!>AsyZpPBpZWf^=*a6+qUX$`) zG2Tg6AmG+g0D=TDI}!!F9Y@D^8}cjPKV>2Qxk=gc<;en%I8o=Xr7uFH7g9M3ZI`CD z$mg;MOnj4mrl44@^`-G6Ipl5Am^ubNL^oQ2Xx3BLX5w2uaU{N6K^c?O2Z~Zn zW+Ca|pU9OW7Ez)pz6V=j%di+|W?iG_406K8dI*719$AX>M%tbLurzNZ@fwdQ87cdF zBE-W_O%9n_kbv?kax+N8DakmPQ=QntB&o@Nh`$+W7D3_yndcBvhNynXEz_)@Sr+U} zVt5PDK+r2w;>CKDA`1`ezllRD&ekjztKB~PGNkwO6Ji88G2-YY53A(e6o}~JrJ!BS zpAcUqcR$q>8NG0LTk~KoC zv=I&3kr(C=ISe7LmAj`K$&j(oiLk1@`ej1LLO;_(c+KkXT?mZPqEoGyZohk0$NH^r zHFS^2yop0=wgK7;360{r#2wOO)zOoW5JDfSpD-4!Ar-zklts_msLCSH?WT&u?l$y*d%%TI1~sdLus}Ob{@Mr^Cy=gd}xQ zM%@{iX37)tLyDT@seC}^`MJ5);7k?HeSV6k|5{9u{MAjQMYF1Vxu_8HYosliNw}Aw z5|}>Rz=bC{OHEs@k5jB4EppoT6B|+9T75&N>u2xY9C+OcHmjqn?afO3D+)N~M*+ld zNs+0&xT({y!VR}&QrcGc`;4X^#q3k`5|_#;DoTh@ToGecqLTK-1D737%W({jQ>v50%R0r!h`aUe@vy`pTYdfP8b(A@P@#2t?=mwVJLJU)@#@=2N^-8s%ckgMf|0pz z9kpm7try|_H=rQSn&ki7zVS%Q4K@*+a={Re)@H#cbL`Q=zQ;I z0{8cx%G$5>#_aWyk-*5LBkVT3nyV(x^VuCM{PTR&N$q*hY^`}fbt~-AP#vCCy1^Jb z`};!0sR@CxAGogokn1H>)X-G|XI%R+NzjOruq;NMu*A8OmDg&&LU%&B%+^Sn zownv=^~g+Pvw3bCvEw3%-G1d{v7EVBKc`kCi0A6jny1yx9yS3&dO+;Gt7Sr$4>j-h zV$+-@qT3Z7;_sVS{1O(6e@Olx3rdoe*|&aCD8Xc~n9MZyypPl`grn9EQYL-eG3ue! zZ7c>7Uv?W(bS~;Khpwohcw2;pIDcOK-mwcv?fsgTu)K|gsl9>GG(EcU z+B8=x9Y&{`l~&0-Kr!I$&@z259$WBbeo?)7KAgDJFTT~)l%=VU>bvljtuO^Ls;9ab zp(2|{^*Heriw?ylI!-f9`!qzzX<*3dTXmG(XRe8aeFsUw7u6bdW8=vp3}G8uMpkd3 zl9gX7z_7W|u@aa1p;}L^9ai&09-wh*u?5#li1B(MS0gb=cY(|#S5*>OdJE)7Y55SK zR$E-Ar9|{B%qgIwxu>Y&U7^^RsdMgBzn&Z9CrD=JNq=V&#uB3XN)|ggGFXdw%rB^w zt)2#gd0lJ$JgIX4^)ld{x5x405(EF?+$D@fMolZ8%uI{`zSIVxxvq#(Y7^xk?2J6R zhj6et3&WxTHMYIY!}O+X3(9Uz&LPg@n83ohC`nqElsA^JpP>K7A}RG_EWNH7a>=is zaxU~VPi;?I+fIeTK=NkEh28YHM;wKu_h**Bi^0vDj*WtBgQ@$dFl!Pb&)2Ss=`(#< zoK=}O^W2XenN;Rgl~R2(yU=*L{rh$iqG)38B#jj$e-+NIxZpoOZ zV(os7-u8bt%Wtgz6o+`&Mb^z~$~?-GhcYHe+N*WZ?vy-htQ(t=faCFx&K`2bXHNF) z?rHwq|)gK1L+04$j9D<8SBB20dY^I!n_!G6IwOnMlUV6&9_nyKO>B= z-J~Dlv`Xi}ZW2LyZBuiTd1Aie#>Yu|b!V9=tlZOo8I8%WWu4r})JSb?K-;^S7kzlT zk%c#`nNw%GZiDh&x|$l8?-<~Y5{?Sy7QWt4C6HnTMZENy;hoRs8`5I{(T6J-EA-=1 zKsv@`pz7CHaeOm=)Q;52QJ=TbK00Pyo0t^~|ChfqA(oC;&Lp_>&kR`DlvX89g(MO? zMS^@;03$9Tt2VVn5QO)?dXx^la^BSdRX>kj)M!^ZL%ccC3~3zKyoSiP-PZZUqTtkR z~a37|==eM|2WoE;|uo58fX6#G;dv?b6JA*dQ$Fh-C{PkK8XQy%J|KK9v6IF zDWUzq{*lUtiM3oi#WMEykQK4HxMEuM$|73rn{7IU-KkqzTZNpMYFx*pRWF4s31XH~ znntdQu18@{T2v-B7H4ceQmy{OE*r8~MM#I|kQHoi#R8O8tRGYJWQx2eo8{&_+nJQP zCmW$m<=neZDDIJ~NutC|nWaT+OO>%Vj7fW=73w$`0R)(Xc)>qTkMps1B*Jat>8&3t>i%f6cwm z2ZX7K&B}*7gNt9?Kntp^$%#G*@-d)#nWaD$Vo?oy#LJ2;v{T`@uELUJ{K@rqNjNRV zgTQ6&jG3mSlZw>EcTtub%dy&iOeguL7)Yxu|B!Sn9}W?LzJ8D6zCCjqN0hph2BYcW zg_#{M+JQVGw+)h7C-@S=T;RP`SdFZIY9GyA5Drmn%hsPBdN5->SUa%jJzpTq13u;t z;q65)8b%j5S zzuFdLciY0x9Z7K|hbAojZ96&i%KYq3#;QFCgDVnPVI&G`hi+Jb%waC68y!#fCSAWL zC}Si@g>9R`6ImuQOl~YRPljvrB(0s^YVLRFCJJ8|KfWJy(vd8*VD?^V%jAOz)A9-k zqz_3)pXq=U%i;Tk{KiFj#-cTnv<~D>YZFit(hSVa|3N;O^|0`h6|t}s4dvJp?R8}E z`4HCgk&nEP(Y~6IQB3D&4^4}GU^@q4%8a@LWw~7!s^?TxcVTvEecv!Cfdrvej)Odo zJ@yQvX;R%LDoMOn(FiAU3sahgUOF&YX00rt5w<8Epv%TD>keoOFibva+Nl=(`Y=q3 zycZ@Q*558j5DM!;c2jW#?4ugZ;sZ;%eAU-cjL?Y6XK5bP{(sma)uGw?H&=m7oUStM z$$>ZjlJ#M(o+MrA=L{MMof;EYMQffLdyz@J;PO8_TqqU7HjHEQE%iDUQqpfMd}nJj zmt$OUs&>=@YfeB4 zn;!9qjP#hH|PgzQpr$j1ga7GgykCH?C3i-noi9MdS1_yllJqZO(zh6dT! ziYiOvwwy}*#Eyg8-m6=jiD(*PqqKp_G`xuuHdtPErE1S}W$myk@>fAuZSeNjE<0%@ zso!qO@moK;zY??)Wp~LE2H0LYs#UgCh!k-I4aqeQaVPEB0+e8_cmwm!wK90J;19E8 zAympsV9t{L#3r<)s8@lHqFES?^(X?-P5psx}rRSE>IpaSwjek{yWs_R}=!ar#9B;>E_neQN~8I!C&P2PSK-6uRM*Q&x+-x z<0mCd)#_Bpaw9`*#%(1$?wPE$S{`c>G!2a!i*SBO(Ae-UR6j`Bzm>bYxL;zW5}d{^ z=3{Mc+cwDr`1PJcl{GP)pISZrByputA+LH%S7F*lIOU3jHjKB3eEq^u?!h8c3XP^- zk@8~ck>$j!VCBgQh2GC`w~9WU+_|e%NigrPJ7P(lQo-a^oVCMa68t6>CoIm0tC6?n z4#W2CVPomACYHuaGuRQk(_mh<-Oj8kPKN_L@H za}t|8rlxqa`I`6)Clp1)+c1Eb8lC9mZ4OQ?iA@vI6teA5S(_eAiK5)tE)mu8Z@Z)l z@nCtgux)mk*=VY)Z+uapg*aQ#LU&s28<_p(xuFnNb_5kQn68J=OgH-vY)6Su+K%1I z^s4uotc?&%_f0~vb1znGq|yDPR$b}w!jk*A#}R%9 ze}`X@P^?gq)KP-SdpjUeewl8JqEnaLmBj$HQf`*+XrGi%%M|UIwva5GRK+JYzusBb zK@bzw2H3w^-ThX?qS(&2b3)$1q9FCuj$f?yH5RJ!Xw#*H_luB|_IEZ%E6g{(m`#Ve@pj7J8Ouz%K<)=NCi16f5#pnnRcB`v>ZW4_AZM;*u~8< zm2hQ14`!?fql87pY{T{wy|nC9aWcvPLRuH)){j$lL@#d96vPEN{f4spB6W+|vsM9f z!~t)tdKgHdEjs@HF?KImlH|Cyru#99JA}+U`8YYAyVhORI5q!negB52hpDP(RW%~q zY#W6F0w4$iAf=sFgD?wqcGnA;jn>cg#p*>=rhaLP@6LMT`wJQlU0|-zMHeo)K-X4! zon~Ee<`$QA9|v!^~D>h_wT;GvBpEUWK7Xj$di0Rq`;dfcB)I?Llm^dcW!wnGmocM zlE*eIKwAEEju!s_9SmZ{65EI5XvsJBqEv`qU zFpEZ3@$TmeQR>y4Xs`DKefSv1^$#qoQ+7eDVEo*jQXy)F%mDELy(bCEy2}HK7!*No z#F0=|0w%L@1LPLg6ZP#oZjt^jtCJu#FBGv@P&YFqL7v?LWVBjP&k8VVX>_E^^Z+t;kH6K{is&+RNu{3#3sH16NXd>RYtS-QK6j;uGKyX0&z#8 z2@lz==qGk@p;#FU@^o# zTQSeHLs&B=^F5w3{%8>1Pxa_Pj4~8{$$mGb6DgK=GHWbfJ)WKte2sD$+j$MhF$`Jd zP)Gr)AxY{bzboaC|8UA~1wC5+t*A$-wmyJ48Wu1^lid4JmDqoFwpadq!DEMPzpkC& zX>4biDnf{(E>E~AvBO#bp@2&gw*6Wn3fntQ6Z8Iwi9KcB^wjU=V668x<@{QeC@){^Tj`0!HBR<-)JdtE3$A0_I zG>F;N8FSWw+4Neq_EE)T=GoW(i-^?pA>s{7i)jyQGj?53yUs7PXqntyAUeNLPAujS z)Dzh}8ocm9Qm}@N!HV_m!oOI4Vz@gujF2yYZmsNi^<*Shs3O&yFIDcA({A}&SMS(K zPlh)3RhLkrsu$)410Dx=W&3qyC5r4#N2_eF1KmljX6kigKad|}_)29o!SAjkYqZJW zLE1j<_bzCdOo{;>LVI6Qx~Zr0F2l3E5hT}XrZX(Z7^a}>-l#%?1Q7MleHY<3y?wtS z*`aIcW8CxIy^KPe@~K%Vs+5WfFZZO0D+R79j-v0AZ7{k1Udaek&bDui?oCM13JjU%H)G;3;K}bHRxNh}g009s^0ydO&2xurAZperhXuAz zX&)nC#|Y-~#12VCYxPU1S__6;?5Ez#DS^-wm&chN!@t$T9`Z|LZ>e3YAJ}OgEsiW& zEC{&1o}wd;kUiE$yfakk^=_FwC1T{WQ(-36DN&5lk!qGxkDnUzsNOG)xo?$`%o0P! zVg@|A_a>{ZF1X$wo%t!jGXgEV6=smB1O6wRuH72KIH#j*9|QGFfHy4X#gmGsYDZzu z)npk9fQQKFoVD;_#q`hO!#mkVz|6JA3|mTkcDQqSz0qY1CmpQqxiXb11Wxp~)&zAi zK7n1}u|_ZZO}Ys+1h4Ng>Kn#Yv2LE|=eI)Ks+-$0P5Y%WuPH~beqfL2XDXV7b3j`s zrjE2oL`PT6-gXr9%J;EeM(3Cgy4vK4Fcu`j7W}WN^%CJb+ZoZ=ew81%O|C_t#3w??io9>lPKCuS_IAWj|~2 zflY1c!vcXg@0)TB&=y0Km~=P+sY?75p-!q8i}dv+U}m}v+xDCY6%i0Bn)dPY9(xfv zS-pIjH%Tmt%8IS#5lgub?bO;M78vOmz`jb69CGJFSi#p6c*C}jAf8U=NDVw;bqrK5 z8exz-JH~dLME41$1Smqlfn4uq#l;__9Z$@hi&$JlBIB1xP9lxFsycGx_ezA$SMS@?@qJ#s%8pWJmdUHE~evS!-yC-I%O583^<0eKrq z)Lc3f!^}~k+16FT_Cocsx6YPPJ~}hRGhi)7KW0tIj7j47mn0@Z3b~kAJXVOWRhw^$ z7}pi+9A`L*@sI!HT7yj-(ZZkDBq(&YTiCl=w9H`<9b7sIDwD0RUNdDYZ(!j}hWX;p zVG35$&xfZ{op;tfWDI46( zy@*KF901wrrp<2!zYkTubRqd!w&b-v$9!EeY_q!@S;$UWU^)9=-<0abI%Zq#!-!H; z`AnMAsv_ii{t%SGCcd#e-Fw8)X2OcgAJUh3aF>0^NIFlXRVO+YMIwaVFb}cOJ(uni zYdpljF0L=fxH2d#r{F+c+2JQo)4Wss(+zQyNkJfN@xJEwMWuUe`qs^8rddj>b>S zE(Gf+V(b)rzU4uvG;uEam|mC(t1xQ?>FoL~7$h7`MNhZHca+S>Y{ru=j{g?aiEk`F zZcYq|&j>p|8Hep*6MboP1=2$l_CS!+A>2bu%&7Rp5??#FBBS-SGiDI_Twi6W%Owse z-3a*=%C1$unh`m9kZV{^4@-HXjmY~1LiI!v1!*1{Dmwp#)v7De9;DX+FzErFO`P?a znq61>)Tklv=C?YMM@!AV1pgbXAur~9t2bM6Q(15{?XOH?G2FtP8?sJwyCNNjBrmkm z!HTCLuIX*{F8sea_$jUv;wR%1qR7Rp(D)wz1eSP5*I6E7`9MLn$TD^BUYKvpfaH4r zf}pii=Zb|8QHeM&HgJ`%|8iWyI1T)?Ed-)348)5{jxykzi`PrA_++b^#~*FEz}}tl*=o zXDsrzBG*%4oJ}PQe`gV*QvG9--cCYbZHUZST(E6wmPG+S&37%<*8&Mc^3Q8jkZHgo zP$91p`TAT}GgO$geJ2mtqENg^U3uS#dun?@$^+6Z0}KLRZnhlPT9EuPFXWDUA=G*vUf5$~4sOa!U1eA$l%Sv8?2Z%gI8rruFD#AtcN? zh%6}DNtJ9%a=*5jZPhkH>w}r1Yq8Mz7BKufvg|^ezWnd%Ahv(X*Ly@**FQu!vHpqW z3*)oXeqM+TPHDsjV_o(hvs}@6eMucBY4XayI?}Ddsh?@&pxy?!cuB1UR~pQ_Dz~F* zUVJjJiD7cBzyfpZE`=H(wm^-@oN1Q|xHF(aH4Mbui^ItEg*71UUS~1|@J@=)$-v4% z#x5T5?&cQDbMyZ7wYgbem58ipxDZrsC8SEUgkx})aj&ynzC>uN!6KoP-=9tHw=fcL&aWKB)T?22YM=J@^HTQZ9+ZR314QuCs}z< z9VhxB#3|U*N)ZO03WNbW;p1wRMPaf#$9d+b>B>Rd$E|SQ&aT;$gZ3y5tXPTx@=uzs z1-~*#m_U91RGJ|_l_qE4mm)=aVUkYarAYf0%S2s-hay#ik(d{E^=s+pc$b{pv7~EF z<2dCMZW>d7U6y{l>qgp5lIO9B@7~XwsqZ1ZtJ(Eyy4^r-JuXTekuM(D2duIptc&p{ zn_UzGak!yp^M2;1yz_3im8{jD{QTDzwfNcI21C&l`{tO0@Q=%{geaRzw;=_Dj}JDL zH%295&wv)QtEX)EhPW_B@++#I+6g+z$X=K%u`q`=ztopBnMP zn_e`0H%L$*yN1+^0@%%-nmvx?VF`!og(Y_)To|Z~R{814xp`2IOLQU85uXZoWxHPMi&>M&Fgy@y`PNyYrj4NRI7XCv8 zg+Q4l`Kgo8mrHr0pCx@A=1@2=z|{;%m6lzQU6W_C6LYNK^`y|TMlAtt(;$~Q9slOx z;9s9bJkjs0@bPpeGR|{$4%w8SEPn9)o@?_SOBwmIeWuAFw#O&J-I`My-#9p}Rl9N- zw8JLCOn*w$nMC$9PO&V9Fv3lUErB68jU*W2|kM{rv7fz2go5uM3%-I)% zn}e@eqKf$?2#Lf@NMV((RwJ$|2%<@G)G<^>n}O(>yGGRrq82 z>A#`B)@wf3vGjJ(h~hBE^}M`iCUyJffU<^hy-%?PwT z&9lWO`?U2$CC_&7xkRe#3FpsMbMWwFU<=!LIch6wdnAQ`jHnpv#B8Trv)dRr{&&g` z>QOpXEkNAFgt|}57}FvC_l)KpJA+bMZt5>xbZfr=)2)Fjhw2N{WZ#=ENG7f z-4ZAy9|c_UTZQrcHY@e5)#eDjKDIwGa%^_tL*lZ=zkFD?nbf(7vn#|*Nm5FJ`1usp z!T#k+AAONTE?Xnsu}{D*FY^1Fs7`*mx`Lc_b!^x<9i8jW_xpOs&8?$t7=Rf?F(38yZNyBObim6kxY&+X?^tZ$2;L&HzT&9mtozwVyhT7? zAxlG--@}-O1KV+S;!@civ-Gt6X#zYiARnX107T~F4(gy`n{b%J&N*(hV}}$%{!xq# z;=i-HzJ<8g8DKG;&GkjTH{=;FvtOudj|q6kmR36aiA+kQLgK+5+u~COhpih3IZcKvmPN!(F<->+8hJvUS>ORP5(%WgrujdSJpX{sEmI9vJ1%v>*oN+$zpZaNm z($$B~&Q$PtUnB@c-O?s(axZiv-5Fw5`iwxIH<-g@|MRSyjMjN<%>Lu4;3BTDdfghd zsobXWbXL6Xr0l#ymSL0T8ubmS0Uxuwb$Zfz>;eI1Dug!RdsNX@J`Ov%I`8BcF@jwM zdTyOIA#T2XV)Xy-RfIg$SL*#oi0aeR+STd@6gf}G0%a2*jG8oPv}}=rSlMn0N)%>7 zS1EdnB;`6bSW~-LujiJv(uf9KM?Bh02V^%;tjXm(jn5&dbG;bx#+RNgXhj8WJRvda zQ(r!@W_;_Vn@%FZ4b3-c6hoY5^Xuxp*)zX~_3v=t8Ao>c;Y%M@UQhOkdeXcBehKSl z?kC%c5Vts&*BQUVg!_ArTzA;%%vwaT{$AC{T$&t%t4#XB5}~kN-(T&?J7fZpo64mi zu@(A3x@+>})t#;e1hYR+jpA-K?s~VjCmqI+%NkKzkpo<&yyJmkFXwAy`n^Lx*QRR7 zT2$pR3#v|LFB8gHLA{r`Jy^6A3uNAJ*|(6N&US|HbmI~Hl;KY(`Jr}aX!Rr}S(MIx zv~L5=3P~2O&EI!8VXHT%^RZRCc?O#Vs_uO@O1CI>81P8S-XY)fC*i7xf5W5WlO_$;x@CM2v?`9d77&VJaFxqwqo<#HC?z`d58 z#3y)lJZ=x#%iNfA3z@@j)EbFCJR3nKVq3|Rxq?xO5ro(^x>868jUR9ZF5uC+xnIxA z@{UrcY*ziq95hz^SRMm{^=Bk_pF3CrlW;UYaMF$@wa+J?%6;fcCiY8z;! zh4ko;bX-Kmr45*&+Eo`g*?#cpOQH8k#j%&3E76d$m}fbeznf?5?u1vOGU2&^we@y_ ziN!Yl3(o$XD$USmgmT^gzAbVpg$+5i4d(-EcMIc89s}JI7g_CB#q+AUcl3dIfv_%^ z1zDwCeX%rUM8gyfWUl#acOL0H~#A&=yAS!fnXa)ab zxTki*s&B1QXF9tS6T3?gFv^5?s?#7Bc#KiW_hY73d?^m#~M^trB9R#qc*ZpW8>dI*4zCxk?`ek|tk z+)Rpw<%^A{@7On!V5(nkjA)?`A$R|v=GVOuUcjd`!0p$yf;~coHJ4!fmf}ReFG50C zxl<2Oefmy>i}csVS={3(C3+PVEBV3rbZA!Al{*v zX#!(b_+x3+oqCy4%=`MnPW#NC#EN3c#OupdH4tmDjpL~5(E1ROx-H!ea1~!#8Nw;s zRqa9KdtO2vt7xs+^~lh4Nkw$9!e%|W7wQ-)78(T~;`${-r}3|yo!KM9pU_LSUaeL= zT5oL7DW!dQbTx_WEfYn^=(1A$ed=)7_@K<@D1CZjcwR^~lQ*A#LQ{rctxVc|4AlFc zzMI%ZCH|z~K~B3LIuF}4e1`X{C%k%%?nS`|)Og?8ynxx9d#EW`>?Nd^%786 z+Ud{ z_~saZNrWou(=yin>D8+0{2_0`y>+ZySF4IL4`KLSmxv0-=j$ymF}D=rre;%Sq*hB) z{~x`5W6xq>yD-WWQa*j1GGfSXj?lY3OuErbVILb&(%WX$JY3Kd|N211l#HVqCr%cq znk*hsC}23YU+$@oSnq0Qq?-&F(O2MigRJ3+UMv9eiDma;?)9m!_EwdU)M^nQ8< zOH)+2^^NhrBz;apti}x}0k>7edf`aJ#z0@Cd0Ls9k1SY@lf`+}boj~*#eJ4=^Fi@t zk5=kec*;)Ws(Tt-*R6TmgX!wQ5}`fQj;6qTqVRdL?S~-|KqPVScfC(SdX7pVQ}Je0 zv5tbr8wz{a1kkEIQDd8D9Lu{8`5AB5LQV_|maf%IxK?@Ad+tqC6Cfhk5`y-F-CpwZ zlbDju5W{V28%7_Oo%e%dTWyo*WOYN&oxzIVfygDum2NL*3vkHxnIb{DqfFOMakVBv!qKOwZ}t5LL5pnd%mupx{as1;jN@khw+#twOtaANnR4V%e6 z>hXu|h&A4TNIq-vhO~C#htg=z~Dnr=&QsIuo zhHP^Nv8*k66V`^_WoU%~bfBkw6&tW%&0e=}^oI07S>f+UpnQ95pSu~dm3FQ22S;Y+ z_MV%2ZG88o=P)y0PsGQ2xmI~SAv?OEiMcv0EB+;}utrKk^;xK8v0bg4z%@*Wo2qPf zjqcwp+BkLCcrYwZ?EnM%w4+t^B{(K6Go&bUJqetgEDM*!^WIlXnDjbY5y18(7$SSf zzAwZ8rcARfV?tkT^fn)m-wKcCH{ptn#*d8kX=)S)PjB2Yblk3LA`@ zL##88Zpvv6api(#&kLn}4%l710JY7Ve!FnQtzLRuGop7hmb z#AfCz_cj^MHteFCG$o)Lf#V;`v}ERkH=_TIIy7RN8Vmf>SJ5I0Vvlf$xI#pQL{uVlA|nwFOUGfnI)bjJ)m=4BW^O-) zWyp!}lkbU;n^AUrd|wq$_f+jt!=$rsi@T@F%{Wvm#G4WE0VP4VfiX(Rsa5$Vz*1Qw zRPD(jJ0;O@Dvqirtsdc+Ue?=g6zGn<2X=*$_?7t;AtFupYw_YrR`b*n3~L zSMQxL+C9Vw$m=^*VJiSTECSn!w6G1CO8{|5WIZ|9u{m#q?nb*-mTixj088*7V4uZ# zWZ&ziA1C|i!^vDR zY(*jla}f{7EwT{FjOz(jtSqiG2K}%jhf!iyVS=8Dhi<|_I7n1z&?8dEhP*dq?m>@L z-ge0B>=4VRuDqEuz0Oxj8VByeH_usv{V7H0Y|tsfBlZt$MyEoJ9`Gb%+LH|Oz76O# zoa0naiSSk_h{*QoLMJgFR*9!4NDk2oiJK%llJF&~N$`{H1c;~i2~CemiCKhv%w64a z@1`=lL#Sxwd1SqJ=0>)RpgpH7vqE0G$rlq=E1vc>;&M zTJ=4sAzP_?u2aQ_{P|q|tE{M1CMQrU7q1BB5UVu9WIt<}|1;}kzOJyPyf&GE#^dQDwTnIE!Bf(?i)P8BAL zBv^4)3DWiE_dLc~rm4%n{tyRl*4J_$+g;Yv>Sm{hUE?Qh#h=--Rby$~o(n4om9`e<9MT;?AIKSHO(sA_ zf)!XBj^95C&{Dc1b0jFl`BH^X!Be7r_wdxCYY)?P@s-m(`^J73NIuhD*v+B@dgQ{xHQ1z;eTl%c+U zPKztcX2V9oJ{3Sxs+(p5qCosbR}c2IN@w4ZKY@haCMoYwBMw!=vrfBtYY00>peaU2 zydE`}j(tE4*8*@})%YLl;_KFOVk3|Mt8HtN$D0%p0NZC5U?PyGo3_bmo#!9*HDP`T zYLo9_`JZASKFqsqg3cCmc0iG)@R55Z{|r^mwaY1_WJ4yt2OD8pRc2f}#dT-!^Xz1` zbCGXpSg7kk&Uh{Co&45{?N5HWsZU2YuN=0(;$D{)@N8(?q#jYl>R#B9`7pg!e;hLZ z@W*poPw%ldN^!sulM}kqrC-XjCZ{U|I$ik_N_sZqx#JPQE9^O8pqzsSLNU?|i0tK% zo&5UWx+>N;GDRSB_3LTXshb|%V7=EZ0{7>HG5tQ}U=tt4<^Clb08eN|?h}@2=*Fm* z%}soec>aM|$klY18jq8xU2{z};f_`7OQMB6JtVGM^}F!4zSin65g=?|M>ij&fqs$j z5*Fk|!VGc3`PFJG;vss9Og8$2{5;nHe?2E|bUc{R>p8aQIHmbZIWpGc-VbaVYYH#@ zmlAPXwIaH%gga%dtAK6v8}V+WKWyt}e4&{9ZXLDBeoc{k-TS0Tgr9s*gtl8Zpvfn` zi_Pw+=z80Xu;Q*b58{&-?c!_ohP`CCy|g84E_OKx?WBDgCBMQ~BgY)K7BqP%^Re0D`l3oc|1h{);0osxu}wlBnk&7GrR9?T(B>*RV7>-c_2&|3N^^_fH8kB;+IthTACx3;_?`!e5< zu539@ykS#RX{g-=(UXF`o)mVkAh9Q_+zD7>FU_?LEZQ`TKQ)0Z#5dtr%{|t13~s`( zhdbn|lZGh(D_XP3)*?p-q2B%#-oVtQH7Z- zY$%RBvJ`l|`0$3ECd+I@RvPn&OO)ycq~7;txU5I>i{RTCBnh@*rI@f0P^5plXiW2i z2|_6O#dXg0$?vaH;d)9qHghp+m-av6Ivw`bM}dS%re?&|4eL*skK}&5Vn6*-qQY)T;_?ezgIfhI*QknmwrF~u!uqBgAoICsp zMH#m!d#06Q#paT%enrwDB_#sv=;;aISyNf3F0{&7ccy9+qHub@^LkFD*lxW+6z(5i zbX*{Rm|fVOll{DYwv0uMy3*d&UV~C6_ppDjD^Mq&kH!?--T*fvL8F|35HVZ+4urk% zgZ-|R@tkqKa0mE@m5WQHwhB+HzSbS$!wJ_D*Z-c&iOS<$@0%j+spwaTL~VkBbP_OR z_pe7fg;BB%Gn{HB)~aLoA+9=zazo%&ZG85?XR6wf=PGC=ymTsCMb*h*^XfyoXD19* zlxTg)*;S$zAAH5|`uZEM2tp9~73;kk^APEb(}Mnu^n-LoQ9(D|)y5tXV)Y5IMNoL7 zo*0$5Zt<*2H)QAA>nevqy?LCWk#XI!IOiSWqNeLitLLd>F*`zJ>5ZhEo%iVS-~ z6aSA8x#jC?N0vf(2r(J)`KWla8)A+PZl=KofP}=cp|ZIskez69SJd*@30Mj9!?q|w zaug0}2tBv${GPKLND{U@u6(|}`mB12H>2EhN(7R_?-b?}I|CzPVxZHI$7xr*l+KVz zRXd5op8tmD;>x3eX7wejxPZV~nQUghp0bsj@E^iD34XGj2pvwAhl&xc)D6fXLqYgD z;|Ek9BD~s)84-n}7>3yXj&(hT>z+t1L#f^F2nqSOgwpz|2+KO=b(9@C=?-)CI*Ac~f>`S3+J(`S2g}t7>3X7T)%=18MnzK3iCILtPHD(6VK-9% z69D%<6;8?Uce4M)lA$1VH+$5-kFK}o7I~bRYw~T`;Fjj=PhR&Sg<7ea>5U{dk|7vU ztKw91I6uWTAsW%UFcKm*SJocm9b+M>ovqx6ii`@wJMXHKshcu|(J$wF&$(MV`4mdbxawQ-Ek$a@X04M3 zjN|iQ`6wY>rhKhh3m|Ozaf>?4#WX^@n0v0+x)DAx#AKoK|0MlSjcCjnU&_&wJUCqy z{c7<+sFJgY@|VtUhbRi&;sKL;3rl}u6{L&c;*_<{^N+MP0Zg6duf5WjEXWZ5{&E`* zYR0RC2Ea5}`Qga1LXiN0$<}*h3sf z%lZ(nVE_7J_$#VtK$1|DQLBFx`)=5_yFEvAodO*r{!L+z2HWGaKg-UoRrA(kQv1(i zo!K~K+Gl(n*9*b)+MuMEYRC@oJ%YcN{Sy3?;Rlug#g96^(34a(c~Ot{<9pxS6^K+s zZA`FAPEtOhf#$*^FvRG|NuC_}Y5?;#K7~bTiSUcBug9GCF~V4&PXB~jWFOL0 zcNTVn&|yyx~R6y#$I%;CM?PVXDG@K78=S*qkP7rEk zVMct_zg-&BbKR^I;EJX6jC^+zHb}_k#7T#dUd3kD25xvo80uJ3^#;tFnh=IPwjPFw zLwXCgNE2&5L}|o>oX}bNK5!kjlA{=~10|dP-7qsX_!2s0f$1yNpa`jJ8~#}Z(wgO@ z8svL=w*+g-vRp_+wLLlg;SQ95s0uezuaPwH%@|&PdiNnI&zXN8Om7nsOIx1GUhfuF zmwDKpEdr@*VXmYiaQlhd(Dni{hTri39u8}~u=z8^ z>MQ?n)0Uh&2piHFH9eW|vp;$ge`;5rQJ`i=17mk)$8H1L6qxT0saUh(kVYfd5lxs? zabVBoydy76o*uj6LbsSCRi0hCm(FZoH*FZ>AM8(kXv{5I+bMJNiZi7CGpc&(>skFS z<9lzLxKRMBE`8%u_JeYW`Po>yD5}}{DXf#=C)*Ptwu{vs+Z|sT!lCVzA_O@h_{j?7 zpJaP(_x^=78gz+m>59YD1^uq`(F4aML`{gkI$2{eU+2z4Z8kg1W65l$awo)kua&^8 zo(Qfie$R}JLnOicJg1CO;tQB2|d*)78nKqb$xv6@q!qmS)rBgj#-EmmOE03U7 z9ZSDfQ=v~;odiEckpz*v3;ipn5YyLNf*6wtqH^&NH4wd#MX1ChDn2oMz-C@W?P$5G zbQi_M4m81{ocy=r(A4~|JqB;SN>Bl^RsH}N{@Nu0z zYyPA}T3wtw1O9hQc}QP^m;moXg4fClJgkq_Tu-g4&})phzofTrteo%?T3WPed80Uh@0H| z!t>;A%vBeRQ64_vMF1gWKtEZxp5C|_3v%A$6r0s4>Ubg{7myE{u-p% z7)&&`(cwUGnAo(#ZU9@@tQS?`j%z}p@`4`qnH!aE-uRiFmLn=wMEah37-?xem#v;2 zw!r3s>fObX~~DE7K%&ly3PkSJYs2hMcb#WIAGOXD<(L5gLCYK zp7dRH%xRtK+!Mm158=5y z68+KJ9FOM>ql_xdnG5Ug!tr^LQ-}*9PN?FgXF-Kq>)k@s-Ghy&<@DcePpepLTNMYp z2CAOK5>6W8r6)tWa1K}|;IV1e(35>BR6VsbFaDM6%QJ@vKfh#8ud=eRzont+%&Xp1 z$nTyjh_~_WCZyAu1@=zYEstk%#J+E3aYp6Lp5-9K;O&`@1`4DvBJWPw8}sA1*{_Jh z8*?d*O>aoivZUDc=6WJ8?$INCKGpRl!f-m`uxTUIYJtn1+Z9SLIiK|DpfkwOngpLne8F~VqF zmf(%ML?bP3%M#n+E`UgbVNgh38bDj!h_Eg|xXZz9_Cq%<65iJA#f$^ zLTvL+TcX`^aZkEjq$yRraeg&7+=2cH(cOzL1$6ZHSjw&>vchJ|@%drtBgjs3;JU2B z&7F3i^%Rua)+U#6qTxjz@+Pd;x?3P^wSqR+OPi(OX2$A2nUmumk2lV6T&pu*{~x`5 zW67|!aqbPhs4y%Zt7D9JTL=M->w^-6FTe><@U*KM+!|sc4lbyX$OWsp-n?cn_|wJ1bxILXY_S!O~x#e%EM35h=xD% zc+uP(GfeTUPq@{JzqP7ki1OYW$~)6f6jq?tU1tD9fcvO#WZ`z0P;R%noL(g^k(Xyl z`RppKeZv+8;K#HDOM)DWlc39V(`_?#@xcHP)CbWlASRTZGReRN*zG`$EzFB_Jzr~P5gKWZ}~ z`8;g`0)#1bMG6-SZo|s%jhEKQTa8<)ce;-I+a)-WV6w(>VU|9L8lqU*x-miJGCWu| zdsqpSwW^Bu#Q6Y!iq})c4vfBd>T2eT)hF~)td$2;HQ#;24N%&z($ao$5;rmR+n$7jGx145m9aLu`Ov`>-pJVAf~D4aRx9TQ)=-8s3K-rutmn zJ3&Clx@NZhKKC-BOol4sw*SsiMbU~YR$A%Xe?z*y%CLlCs(Na!k?=QPtDFDzn#> zi*}A#fBDDlAa!pAJl(bq#CVM8DzZtw(|O1D4BR7&M2K`I=CqyUyw3o+J%^b0gjyK) zW)geYS@E9xz$Qe|DK{XD^kw9Q&nm=>rTlA?*;9%bj!~xgJSiBDwegt-Rv+O+2=ILIq^_9hs4|JWv>-k#Uy>D2bkL;u;Ch=EOx^(y zT?r`BcX4q2*OA>@Cy5G7b7`ZvghbPhj-^b{<`Qg|OT^}`30bSIPddi`M^Uhz|F-nh%0~YZrZ$_Wd`emH zU4l`7v!1wBu?L-Bm=VJmrRd5*tW-vVmRocDw1G5aZFX&89NvqsFUfMECkYFb2_Qek zAv@W$ky;w}U0NqYw~=tOJ=u)mz?x0HVIc*lGkFs@s5f!FS}o4ct@x6CRD9|~BPtMS zp^P#dXOBwB?w(fk3#PId<;l+a(KimobtMvXifTFkIUp>w<*Or1U65@|74$KkhRsOE z=nUzQ0)K0jXC3kzVYphQ_hI}hr!byBnDWUjE*32#EAMi`u>+g=gP8#_CMUc+ONrbr z;tt_h#wxDNKEwcFS!RI0uvo?6-Qh2+vioby<$l`o#&);p2e7dQ1889yt8~Ah5D6BV zMw0LHX<`NHZlP4@UBm>ht2SGf_}cNrW=3IXH^RDFMG8c!{M19GY^w0lTT|x~%cFx? z<&ISQ_fybM>`|~~ zwzt6)PafB&*MN?e{$332F%o+ORIgn@2X(7+L@o^z(nr){dFTFm+aPTosNsSp7~Cvo zJ!$S}sdMt`0w1cySM)S*XO1YkMY^IJwhXq>iZ7)D*@=YL6&5?tQ8qc23##0_(L1lGgx>{{Rcq%Dhm`U3UO@)HgA?~?tfcfJL?%LQE4&mkIw$wY9#tLaTj=M$atQSLL z$U?*Q@;vNCx~K*tUHoyzxqK_Q{GA%Cq}p^n(*8{KW~0~T8D zZEVWF$bjEbjC+!*qWd0GB=TTY{;XA}dDp7lP{^BvsqFs+wWsdWLXoA8tG#EKFGV#% z%WO%Co<-q}S+MF5JI3dYRtCN84L>mkJItcfAh9oHiVs#zwk(9@8KRh`-bHDgj9FiE zvtqlgM>(2l)hg2<^6J;qu3)Q;a9LBJ-Z{F*W^?Xu<5!jJYU4x!+Ehf7MOfb*wQEOv zw7+9VyQQutizT8f&TtSP#Hhx;#j@8G->iAB81`OLqk{PMT0~wwri!lIz9dreY78T zl%)=_fve4AkB)8GV&LMFQKl~C)J;?^q1yKL+_6+(99=LT)!+3*1*uGY$#ed_AUMn` zmg}?k6ke-#Agss^6j)q{p?FRzrV7=$tfxL#Fs?HUDQ&%XHQlgk*+Z-e55le=LR!}* zX`Ku$BYlkN-e{MU470@TE8>LOxFHf>(fWvP{eSfKg;`O;%)Wc8+vSozeyv86G^{mA zqcV$(h~D{lzjWEoYnXE({~YgkeM0E*!?r`$it}!OwYoEfLlVS?xE>+qWR6)e!h!UJ$eAdIHg+|4 zN7rf~(Zw6N;pqQG1(p9r#h=)O$UKf;O-P0zZdq01Ji^L6g*ctuV{F`g^)Spza3tWL zWgJohbfV~-LjX~vrawf%*Lh(Kcibu}lOa&xiS;*KrLkQV_GZlAgM@COo=F#z#PRFH9Q| zX|(wjo2kUo{(Q(!K|SK5CyTVEL~XVbpXH=zTD`Gh|D`unRVWQG^xt>({et6y9p)n% z)dbVp9D$8y3ljz_le!sE?z7S0d0&+sW2$iu;f^Oxl+2krmRnBZqF~&f<7ibW7-p*< zon}u~r0RTmrlj7OM$xL}=E*#mz8);fTQ3XM!CWko5tAF}0@r%yRn|KV++iJvu-4H| zPnAgOi%`p0)=J?;&k5FaA3%MZ!ci5|9~H{ODNQ|W3Ii$Hb4W{Q&%Fuj%xGKvwq^C7 zolk_UnPu^?LO7#Bi}kkKS)bmn%|svP_l6%>oZ!PfwD#rMephIGJt;qIgxRPTZ9nw2 zfI9M1cWcEgg1bi0w2ErZ7xl6?QB40cu^9 zij&V$aBvGk%dMM(M}l~78Su-lsIfkG657YAt zn|XnBmD#oOr=Ckt>uG|T`1o=5TgP(6NfV!U^1+Vj&PaO}qAK+0a!&ZT@Y&nz4bMAu zkoc&AwdXKKd`R~rMcC?jYN8}4!ZJ7;c%C9RX81+P4*2c=_6g(wBf zr8|MCHZcJZp;+n>s^Ir;JA1w0Pa@)j#cZ`(5mu-1l!JRp<2tbyQbF)k*XRm~65~%_&ty%4(Xjr1VcQmvDob)pHq#Par6j8EOWAVJlKdTQO%jVy z3@R@+y*&!7dJ>mIM6DhYidKzPIGQz#grC@dMt(i^a8Gn4eIzXxhW!y+-0Txu%-sbL zT%yBkzt>fz(c3%V!4(bsn1pSrZn| z;hfHlzBTX>)cCe=*u>}3CHANHt=^{#!10?;I|FHPsxDzP9PKvR?G}I6+Y8f|RW?;< zJV<;@U**B+nN|MOW#zCTN(Iw>f9f>qX`?mi#w@N91zg7M-tk3wLi52(6cdb7$~_j` zG3dUXsV~agG1%D9?X(9JR|)tOLmou&c2E7KuX4u$k?|fgEeeDy1ri9Gdz+4(l6_&u z3o~o(Nv<)<|5DoF5e=KVu69*jY}z4v1NPYNhDr>cKsdzwk5NRM)9U1SqKYXes`T|s zeE)xt6THwz#ck~(EjQZ>{w3{ywg{Dx>z`pN%AN1;yPDDUsW88xB40o|`+=iY79)AKl_<`x=h)===)l;5778b=AO3kab?1C!R|2g&1Kck2dG4Ztc0S zmj_!uc!&(Up0W(Z`o8#n{1dG`m3KcxRF%=H8at{w|KR1;^qSB|yESv*6Ea|((6A@S zpq!TAIzn*A;jw@^3|UDSK6O|~0mHdPPOTpC6 zi_Mn`s=U$u!mB;&v=*l6O`;X?5If97`rX?Xw#k(G#P=v`BSbmePm@B@h1}F0b4}fe zbQgTYP>*pO$1OA9-{ul!%6W*PHc~MLE$q!0D%MJVgYL?dn4Dp((Uzcq6e(akr4z%R z!r^n$nbVz#-64�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