• AgoraVox sur Twitter
  • RSS
  • Agoravox TV
  • Agoravox Mobile


Commentaire de perlseb

sur L'IA pourra-t-elle surpasser l'intelligence humaine ?


Voir l'intégralité des commentaires de cet article

perlseb 8 août 2023 16:35

@perlseb

Bien comprendre les différences entre programmes et réseaux neuronaux.

Un programme est constitué de lignes de code qui sont écrites dans un langage informatique. Tout programmeur, maitrisant ce langage, peut dire ce que fait une ligne de code même si extraite du contexte, il y a peu de chance de comprendre son intérêt. Mais (on va exclure pour simplifier les programmes multi-threadés ou multi-processeurs) un programme s’exécute séquentiellement (globalement, on peut faire des sauts évidemment), c’est-à-dire que le processeur va exécuter les lignes de code les unes après les autres. Il ne se trouvera pas à plusieurs endroits en même temps. La tâche du programmeur consiste à soit tester un état soit à agir selon cet état (exécution d’actions, changement de variables, d’état).

Un réseau de neurones est un ensemble de neurones reliés entre eux. Le spécialiste de l’IA s’occupera de choisir la forme de son réseau. Mais le plus délicat (et le plus long) consiste à « former » ce réseau de neurones. Pour le faire, il ne peut que jouer sur les entrées et les sorties du réseau. Par exemple, Alphazéro se forme en 4h aux échecs et contient plusieurs centaines de milliers de neurones (sur environ 80 couches). A aucun moment, un spécialiste de l’IA vient modifier manuellement les liaisons entre 2 neurones (en augmentant ou diminuant la force de leur lien), car s’il n y avait que 100.000 neurones et qu’il y passait 1 seconde pour traiter toutes les liaisons de chacun d’eux (totalement impossible), il lui faudrait plus de 27h (et évidemment, il n’y aurait aucune chance pour que le réseau converge en agissant ainsi). De plus, la convergence des connections vers des valeurs qui permettent de trouver toutes les sorties à partir des entrées s’effectue petit à petit. A chaque fois qu’on ajoute un nouveau couple entrée / sortie, on réajuste les connections d’un grand nombre de neurones pour que le réseau se rapproche de son état définitif. Et contrairement à un programme, il n’y a pas qu’un seul neurone actif en même temps : si une couche est constituée de 1000 neurones, il peut y en avoir 20, 550, 900 qui sont actifs. Et l’ensemble des combinaisons possibles représente un nombre d’états qu’un humain ne peut pas appréhender.

La différence doit sauter aux yeux : un programme est constitué de lignes écrites par humain dans un langage compréhensible. Un réseau neuronal formé (après apprentissage) est constitué de neurones dont les liens ont été calculés par un algorithme assurant la convergence. Un réseau de neurones est illisible pour un humain, ce n’est qu’une suite de chiffres (d’entités reliés plus ou moins fortement). Même si les neurones étaient autonomes, il ne serait pas possible de comprendre ce que représente un neurone dans un réseau qui en comporte 100.000 (si l’on excepte les couches d’interfaces entrée/sortie). Mais un neurone ne peut même pas être compris individuellement : c’est l’ensemble des neurones actifs / non actifs (avec un nombre de possibilités nettement supérieurs au nombre de neurones) qui définit l’état du réseau. Et si on décide que les neurones peuvent avoir des états réels (et non binaires), inutile de dire que le nombre d’états possibles monte en flèche.

En conclusion : un programme peut se modifier, on peut réécrire des lignes, ajouter des morceaux... Un réseau neuronal formé est un paquet qu’un humain ne peut pas toucher directement car c’est un code complexe qui a calculé (pendant l’apprentissage) les liaisons des éléments qui le constituent, que ces éléments sont bien trop nombreux et sans aucune signification particulière pris individuellement.

Le code (programme) utilisé lors de l’apprentissage n’a plus aucune utilité passé cette phase : le réseau neuronal est opérationnel et autonome.


Voir ce commentaire dans son contexte





Palmarès