1. Réseaux de neurones artificiels

Les réseaux de neurones artificiels

L'inspiration originelle des réseaux de neurones artificiels se trouve dans un des premiers modèles du fonctionnement d'un neurone (cellule nerveuse, dont le cerveau est formé, ainsi que tous le système nerveux).
L'idée d'un réseau de neurones artificiels et d'implémenter un système qui se comporte, de façon très schématique, comme les cellules du cerveau, afin d'en simuler son comportement au niveau de la reconnaissance, de la génération, et du traitement de l'information.
Le grand défi des réseaux de neurones artificiels était l'apprentissage. Comment enseigner à un réseau de neurones artificiels à accomplir une tâche? Le plus grand écueil dans ce domaine était la difficulté d'appliquer la méthode d'apprentissage aux réseaux profond (deep networks) constitués de plusieurs couches de neurones. Une solution dans cette direction a été d'alléger le nombre de neurones dans chaque couche. La découverte des couches convolutionnelles a permis de faire un grand bond en avant dans l'application des réseaux de neurones. Aujourd'hui, de nombreux type de réseaux de neurones artificiels existent, des plus simples aux plus complexes de plusieurs milliards de poids (comme ChatGPT ou LLAMA).

Implémentation

Après une introduction sur le modèle mathématique du neurone, on passe à la couche de neurones, dans laquelle des données sont transmises à chaque neurone artificiel de la couche (les neurones d'une couche n'échangent pas d'information entre eux), et les neurones de la couche transmette leur résultat à la couche de sortie composée de un ou plusieurs neurones qui mettent en forme résultat final.
Une fois cette première partie maitrisée, on peu passer à l'implémentation, mais surtout à son application. Déjà un système simple comme une simple couche de quelques neurones est capable de traiter de nombreux types de problèmes, en particulier des problèmes de tri, comme la reconnaissance de caractères dans une image.

L'image suivante illustre la courbe de décision (ici une droite) d'un réseau qui a appris l'opération logique et. Toute entrée dans les zones rouges (essentiellement les paires vrai-faux, faux-vrai et faux-faux) aboutissent à un faux et les entrée dans la zone bleue (essentiellement vrai-vrai) à un vrai.

L'étape suivante est l'empilement des couches, afin de résoudre des problèmes non-linéaires. Il faut deux couches par exemple, pour enseigner à un réseau le ou exclusif (xor). L'image suivante illustre le résultat d'apprentissage du xor

Une difficulté qui apparaît assez rapidement est l'explosion des poids. Chaque lien entre un neurone et le suivant possède un poids (un nombre), qui donne l'importance de la liaison. Parfois, durant l'apprentissage, certains poids croissent sans limite. Il existe des méthodes simples qui permettent d'éviter cette explosion, et permettent au réseau d'apprendre. Ces méthodes sont liées à des super-paramètres, des choix qui déterminent l'architecture du réseau et sa manière de fonctionner.

Réseaux profonds

Les réseaux profonds (formés de plusieurs couches de neurones) ont connus leur essor avec la reconnaissance d'image et les réseaux convolutionnels. Aujourd'hui, il y a une grande diversité de réseaux profond, chacun avec leur domaine de prédilection. Les LLM (Large Language Models) comme ChatGPT ou LLAMA, n'utilisent pas la même architecture, ni le même type de couche que les réseaux de reconnaissance d'image, qui sont plutôt du type convolutionnel.
Pour exploiter au maximum ces nouveaux types de réseaux, la puissance de calcul des machines actuelles doit être exploitée au maximum. L'utilisation de package dédiés (comme Tensorflow ou PyTorch) et préparés avec grand soin devient nécessaire. Ces paquets sont capable d'exploiter les machines multi-processeurs (GPU et autres matériel dédié) en parallèle et permettent l'apprentissage plus rapide des réseaux modernes.

2. Apprentissage automatique (WIP)

L'apprentissage automatique est l'un des domaine les plus signiticatifs de l'intelligence artificielle. C'est vraiment la partie (intelligente) du système. Dans un projet ambitieux, l'objectif est de déveloper un système qui est capable de prendre les bonnes décision, si possible sans qu'on lui explique comment faire.
En système d'apprentissage automatique apprend au fur et à mesure de son utilisation. Il s'agit ici d'un projet en cours de développement(WIP)

WIP