==== 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 : import numpy as np Puis créons la classe selon les composants dont nous avons parlé plus tôt : 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) ---- === 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**.