Restez en avance avec des stratégies financières pratiques, des conseils, des actualités et des tendances.
Réseaux neuronaux pour débutants Pt.1
Le monde du développement logiciel connaît des changements fondamentaux avec la résurgence de diverses techniques d'IA. L'impact le plus significatif est venu sous la forme de l'apprentissage automati
avril 9, 2019
Le monde du développement logiciel connaît des changements fondamentaux avec la résurgence de diverses techniques d'IA. L'impact le plus significatif est venu sous la forme de l'apprentissage automatique et plus spécifiquement d'un sous-ensemble de l'apprentissage automatique appelé apprentissage profond. L'apprentissage automatique est simplement une forme d'IA qui permet à un système d'"apprendre" ou d'être "formé" à partir de données plutôt que par le biais d'une programmation explicite. Il est important de noter que ces techniques ne sont pas nouvelles. Le terme "IA" a été inventé pour la première fois par John McCarthy en 1956 et se définit comme la capacité d'une machine à imiter un comportement humain intelligent. Il ne faut pas confondre ce terme avec une machine dotée d'une intelligence réelle ou capable d'imiter de manière générique un être humain. Les systèmes d'IA sont conçus pour imiter des capacités humaines spécifiques. Par exemple : comprendre le langage, résoudre des problèmes spécifiques, reconnaître des sons/images et les classer par catégories, faire des prédictions, etc. Chacune de ces capacités est très puissante, mais ne reflète pas l'intelligence "réelle".
Il existe plusieurs types d'IA qui ont fait l'objet de recherches au fil des ans et la plupart ont été abandonnés, tandis que l'apprentissage automatique a connu une renaissance. Dans les années 90, les deux sous-catégories d'IA les plus étudiées étaient l'apprentissage automatique et les systèmes experts. Les systèmes experts sont une technique par laquelle un système est programmé avec un ensemble de règles plutôt que d'être explicitement codé. Les règles sont traitées par un "moteur de règles/inférence" et peuvent s'adapter pour traiter des dizaines de milliers d'événements par seconde, même avec un matériel modeste. Le problème est que les règles proprement dites doivent toujours être définies par des experts en la matière et qu'elles sont limitées par la capacité de ces derniers à imaginer toutes les situations possibles. En réalité, il ne s'agit pas d'IA mais d'une approximation de celle-ci.
L'apprentissage automatique, quant à lui, est une technique dans laquelle le logiciel (modèle) apprend à partir des données plutôt que d'être créé/codé ou défini par les développeurs de logiciels. La technique spécifique d'apprentissage automatique que je décris dans ce document est connue sous le nom d'apprentissage profond ou de réseaux neuronaux. Je tiens à souligner que cette technique n'est PAS nouvelle et qu'elle a été développée à l'origine dans les années 60, 70 et 80. En fait, la percée qui a rendu les réseaux neuronaux utilisables s'appelle la rétropropagation et a été découverte/publiée en 1986. Malheureusement, bien que les techniques fondamentales de mise en œuvre des réseaux neuronaux aient été bien comprises, elles n'étaient pas vraiment utiles à l'époque en raison des énormes ressources de traitement et de la taille des ensembles de données nécessaires pour former les réseaux. La seule solution commerciale dont je me souvienne était un produit de Computer Associates dans les années 90 appelé Neugents (qui faisait partie de leur suite de gestion des systèmes). Les réseaux neuronaux ont été abandonnés par le secteur commercial et la plupart des universités, seules quelques universités continuant à faire de la recherche dans ce domaine, principalement ici au Canada.
Revenons aux réseaux neuronaux, qui ne sont en réalité pas très compliqués.
Pour commencer, un réseau neuronal est un ensemble de neurones reliés entre eux par des couches en cascade. Le réseau commence par une couche d'entrée, passe par des couches cachées et les résultats passent finalement par la couche de sortie. Avant de plonger dans les détails de cette structure, nous devons commencer par définir ce que l'on entend par neurone (il ne s'agit pas d'une cellule vivante).
Un neurone est un élément de calcul qui prend plusieurs entrées et calcule une seule sortie. Voici un exemple simple :
Ce neurone a 2 entrées.
Chaque entrée est multipliée par un poids.
Les entrées pondérées sont ensuite additionnées et une valeur de biais est ajoutée.
Enfin, la valeur non bornée passe par une fonction d'activation (sigmoïde par exemple) pour la réduire à une plage prévisible (par exemple, 0 à 1).
Voici un exemple de neurone unique en action :
Entrée 1 = 5, Entrée 2 = 8, W1 = 1 et W2 = .5, finalement notre Biais est de 3
Notre sortie ressemble à ce qui suit
Af( ( 5 * 1 ) + ( 8 * .5 ) + 3 )
Af( 12 ) = 0,999
Essayons à nouveau avec un ensemble différent d'entrées, de poids et de biais :
Entrée 1 =-10, Entrée 2 = 10, W1 = 0,2, W2 = 0,1, Biais = 0,5
Sortie = Af( (-10 + 0,2) + ( 2 X 0,1) + 0,5)
Sortie = Af( -8.1 ) = 3.034
Un seul neurone en soi est essentiellement inutile, sauf en tant qu'exercice mathématique intéressant, mais si nous assemblons plusieurs neurones en couches, nous pouvons obtenir un réseau neuronal sous la forme suivante :
Il s'agit d'un réseau neuronal extrêmement simpliste avec 2 entrées, une seule couche cachée de neurones et enfin un seul neurone de sortie. Les réseaux neuronaux peuvent avoir n'importe quel nombre d'entrées, de couches et n'importe quel nombre de neurones dans ces couches. Cette flexibilité est le seul problème sérieux des réseaux neuronaux. Comment le concepteur du réseau peut-il savoir quel est le nombre optimal de couches et de neurones dans ces couches ? Il existe quelques lignes directrices sur lesquelles s'appuyer, mais la réalité est qu'il faut procéder par essais et erreurs pour y parvenir. Actuellement, de nombreuses recherches très prometteuses sont en cours pour aider à cet égard, mais nous commençons à peine à comprendre cette partie.
Comment choisir les bons poids et biais pour chaque neurone et comment "apprendre" ?
Un excellent sujet pour le prochain article.


Abonnez-vous au blog