---
# System prepended metadata

title: Evaluation ANN

---

# Evaluation ANN

**Etudiant : Charles Paulas Victor**

1. Citer trois architectures de réseaux de neurones
    - Simple couche caché 
    - Multi couche caché
    - CNN

3. Rappeler les paramètres d’un réseau de neurones MLP (Multi Layer Perceptron)
    - Nombre de Input(Entrée)
    - Weight(Poids)
    - Biais
    - Nombre de couches
    - Nombre de neurons dans les couches cachés
    - Nombre de Output
    - Learning rate
    - Type de fonction d'activation

5. Préciser la différence entre les méthodes suivantes:
    - Descente du gradient
        - Minimisation de la fonction de coût après avoir calculé le gradient sur l'ensemble de train set (on se dirige vers le minimum de façon "deterministe")
    - Descente du gradient stochastique
        - Minimisation de la fonction de coût après avoir calculé le gradient à chaque nouvel échantillon de train set (on se dirige vers le minimum de façon aléatoire)
    - Descente du gradient par mini-batchs
        - Minimisation de la fonction de coût après avoir calculé le gradient à chaque nouveau lot (= batch) d'échantillon de train set. Cela permet de ne pas faire calculer le gradient sur l'ensemble du train set. On parcourt le train set morceau par morceau

4. Rappeler la différence entre les algorithmes de NLP Vs NLU
    - le NLP s'intéresse à l'analyse du langage dans sa globalité
    - Le NLU est un sous domaine du NLP qui s'intéresse à tirer des interprétations du texte (par exemple à détecter le sentiment qui se dégage d'un texte)

6. Citer les différentes étapes de pre-processing à faire en amont des modèles NLP/NLU
    - nettoyage des caractères indésirables (par exemple les balise html)
    - Suppression des stop word
    - Tokenisation
    - Stemming
    - Lemmatisation

8. Rappeler les deux architectures possibles pour un modèle Word2Vec et préciser la différence entre les deux
    - CBOW (contexte -> mot), ce modèle apprend à prédire le mot manquant pour une séquence donnée en ce basant sur les autres mots de la séquence
    - Skip Gram (mot -> contexte), ce modèle apprend à prédire les mots d'une séquence pour un mot donné


10. Expliquer ce que la méthode «epochs» permet de faire lors de l’entraînement d’un réseau de neurones
Les epochs permettent d'entraîner le réseaux plusieurs fois sur le même dataset. Ceci permet de renforcer l'ajustement des poids et améliore les performances du réseaux. Néanmoins, l'amélioration du réseaux atteint un plateau au bout d'un nombre d'epochs.


---

8. Exercice : Donner un pseudo-code qui permet d’entraîner un réseau de neurones à deux couches à apprendre à reconnaître des chiffres manuscrits.(On utilisera la méthode de descente de gradient par mini-batchs).


```
# Train/Test split
data_train
data_test

# Some transformation on the data in order to be interpreted by the NN
- normalisation
- labels in one hot

# Instance of the NN object

ANN = NeuralNetwork(nb_input, nb_hidden_layer, nb_hidden_perceptron, nb_output, learning_rate)

# Train stage

# batch will be a chunk of data_train, there will be multiple samples in batch
for batch in data_train: 
    # Input
    input_vector = data_train('pixel', batch)
    target_vector = data_train('label', batch)
    
    # Layer 1
    output_L1 = dot_product(weightsL1, input_vector)
    output_L1 = sum(output_L1, biaisL1)
    output_L1 = activation_function(output_L1)
    
    # Layer 2
    output_L2 = dot_product(weightsL2, output_L1)
    output_L2 = sum(output_L2, biaisL2)
    output_L2 = activation_function(output_L2)
    
    # Output
    output = dot_product(weights_output, output_L2)
    output = sum(output, biais_output)
    output = activation_function(output)
    
    # Error 
    output_errors = error(target_vector, output_vector)
    
    # Gradient descent
    ANN.gradient_descent()
    
    # Back propagation
    ANN.back_propagation(output, L2, L1)

```


---
## Remarques sur le cours : 
- Cours de très grande qualité. Merci de nous avoir fait faire les maths qui sous-tendent les ANN.
- j'aurais aimé travailler avec vous la théorie des autoencoders et faire des use case avec.