projets:creer_son_premier_reseau_de_neurone_from_scratch

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:creer_son_premier_reseau_de_neurone_from_scratch [12/06/2019 14:40] amenasriaprojets:creer_son_premier_reseau_de_neurone_from_scratch [12/06/2019 14:44] (Version actuelle) amenasria
Ligne 1: Ligne 1:
 +==== Mon premier réseau de neurones from scratch ====
  
 +//Prérequis : Base en Programmation Orientée Objets (POO) en Python//
 +
 +=== Qu'est ce qu'un réseau de neurones ? ===
 +
 +La plupart des articles compare ce concept à celui du cerveau humain. Cette image, bien que parlante, est assez éloignée de la réalité.
 +
 +Il est plus facile de décrire un réseau de neurones comme une fonction mathématique qui à partir d'un élément initialement donné (input) renvoie un élément (output) désiré.
 +
 +-
 +
 +Ainsi un réseau de neurones est constitués des composants suivants :
 +
 +  * Une couche d'entrée (**input layer**), **x**
 +  * Un nombre arbitraire de couches cachées (**hidden layers**)
 +  * Une couche de sortie (**output layer**), **ŷ**
 +  * Un set de poids (**weights**) et de préjugés (**biases**) entre chaque couche, **W** et **b**
 +  * Le choix d'une fonction d'activation (**activation function**) pour chaque couche cachée, **σ**
 +
 +//Nous choisirons ici la fonction [[https://fr.wikipedia.org/wiki/Sigmo%C3%AFde_(math%C3%A9matiques)|Sigmoïde]] en tant que fonction d'activation.//
 +
 +-
 +
 +Le graphique suivant nous montre l'architecture d'un 2-layer Neural Network
 +(N.B: on exclut l'input layer lorsque l'on compte le nombre de couche dans un réseau de neurones).
 +
 +
 +{{ :projets:first_example.png?nolink&600 |}}
 +
 +=== Création de l'objet réseau de neurones ===
 +
 +Commençons par importer les librairies dont nous aurons besoin :
 +
 +<file python>
 +import numpy as np
 +</file>
 +
 +Puis créons la classe selon les composants dont nous avons parlé plus tôt :
 +
 +<file python>
 +class NeuralNetwork:
 +    def __init__(self,x,y):
 +        self.input    = x
 +        self.weights1 = np.random.rand(self.input.shape[1],4)
 +        self.weights2 = np.random.rand(4,1)
 +        self.y        = y
 +        self.output   = np.zeros(y.shape)
 +</file>
 +
 +----
 +
 +=== Entraînement de notre réseau de neurones ===
 +
 +L'output **ŷ** d'un 1-layer Neural Network est **ŷ = σ(W1x + b1)**
 +
 +L'output **ŷ** d'un 2-layer Neural Network est donc **ŷ = σ(W2σ(W1x + b1) + b2)**
 +
 +On remarque dans les équations ci-dessus que les poids **W** et les préjugés **b** sont les seules variables dont dépend **ŷ**.
 +
 +Naturellement, trouver les bonnes valeurs pour les poids et les préjugés feront la force de prédiction de votre réseau. Le procédé d'ajustement de ces valeurs à partir des données de départ est appelé **entraînement du réseau de neurones**.
  • projets/creer_son_premier_reseau_de_neurone_from_scratch.txt
  • Dernière modification : 12/06/2019 14:44
  • de amenasria