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

perlseb

Nous avons tous 2 parents, 4 grands-parents, ..., environ 1 million (2 puissance 20) d’ascendants à la 20ème génération : nous sommes tous frères mais nous avons aussi, inévitablement, quelques criminels parmi nos ancêtres.

Tableau de bord

Rédaction Depuis Articles publiés Commentaires postés Commentaires reçus
L'inscription 0 1405 0
1 mois 0 8 0
5 jours 0 0 0

Derniers commentaires



  • perlseb 8 août 2023 18:17

    @Jean Dugenêt
    Je préfère le repréciser. Le code qui fait « tourner » un réseau neuronal formé est réellement un jeu d’enfant. C’est le réseau neuronal qui contient toute l’information, toute la connaissance (avec le poids de chacune de ses liaisons).
    On peut considérer que le code qui fait tourner le réseau neuronal artificiel n’est que l’énergie nécessaire dont les neurones artificiels ont besoin pour exprimer leur complexité de groupe.
    Je pense sincèrement que le code qui fait tourner les petits comme les grands réseaux neuronaux (avec des neurones de même type) tient sur quelques lignes seulement (pour chaque couche, on traite chaque connexion de chaque neurones : on récupère l’entrée et les poids on fait le calcul de la sortie, on passe au suivant).



  • perlseb 8 août 2023 17:57

    @Jean Dugenêt
    Vous avez raison, la tâche consistant à former un réseau de neurones est très complexe et fait appel à beaucoup d’écriture de code. Il faut manipuler des tonnes de données (sorties connues pour des entrées connues). Parfois, on automatise la génération de ces données (quand une machine joue contre elle-même ou que les lois de la physique peuvent calculer directement la validité de la réponse du réseau : l’action sur les « muscles » prédite par le réseau neuronal va faire tomber l’humain simulé).
    Le code des librairies (tensorflow, etc...) permettent de faciliter la manipulation des réseaux neuronaux lors de l’apprentissage, de le faire converger si on lui fournit les entrées et les sorties et de le manipuler lors de son fonctionnement comme un objet final. Mais à aucun moment, les librairies ne fournissent les entrées et les sorties de votre problème. C’est vous, en tant que spécialiste de l’IA qui allez devoir les récupérer, les trier, les agréger, les faire générer par un programme faisant appel aux lois de la physique, et les homogénéiser pour les faire ingurgiter par le réseau neuronal.
    Il y a déjà des données d’exemple dans les librairies, mais c’est pour s’initier au fonctionnement des librairies et comprendre les différentes étapes.

    Et, je l’ai dit plus bas, une fois tout ce code utilisé pour générer le réseau neuronal, le réseau formé devient autonome et n’a plus besoin de ce code pour fournir une réponse à partir d’une entrée. Le réseau formé n’est pas du code, c’est une boite noire, un ensemble de neurones reliés et on n’y touche plus. Mais comme je l’ai aussi écrit sur d’autres posts, même lorsqu’un réseau est autonome, il a besoin d’entrées avec un format précis (il y a donc une partie code en amont) et il y a souvent du code en sortie pour décoder la réponse et faire les actions nécessaires.

    Quand je dis autonome, il faut évidemment faire beaucoup de calculs pour simuler les neurones et leurs connexions figées. Et les bibliothèques sont là également pour ça : faire tourner le réseau neuronal formé. On prend les signaux en entrée, on fait des tas de multiplications et d’additions pour chacune des connexions et on calcule la propagation des entrées jusque vers la sortie qui donne la réponse. Mais ce code est un peu un jeu d’enfant par rapport au code de convergence (qui lui est écrit une fois pour toute selon le mode de convergence choisi : donc fourni par les bibliothèques) et au code de récupération et de manipulation des données d’entrées et de sorties pendant la phase d’apprentissage (totalement spécifique à chaque problème : c’est l’essentiel du travail en IA).



  • 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.



  • perlseb 7 août 2023 22:18

    @Jean Dugenêt
    Les réseaux neuronaux ne sont pas formés par leur apprentissage

    C’est la base. La « topographie » du réseau est effectivement choisie (réseau vierge). Les poids des connections sont bien fixés lors de la phase de l’apprentissage.

    Un réseau vierge n’a strictement aucune utilité. Comme le cerveau d’un enfant qui aurait été élevé dans le vide, sans recevoir aucun signal dans sa vie et qui n’aurait donc rien appris.



  • perlseb 7 août 2023 22:02

    @Jean Dugenêt
    Évidemment que c’est « prévisible » puisque ce sont des calculs.
    Mais ça ne veut rien dire de plus qu’un neurone activé ou éteint. Et comme un neurone ne correspond à rien de concret, c’est juste incompréhensible. Oui, on peut prévoir l’incompréhensible, et ça nous avance à rien dans notre compréhension. Il n’y a pas besoin de lire des ouvrages complexes pour comprendre les réseaux neuronaux. Mais à aucun moment, les humains ne cherchent à analyser ou « comprendre » le cheminement des neurones allumés, ça ne sert à rien du tout. On se sert d’un réseau neuronal comme d’une boite noire « magique ».

    Si vous ne pouvez pas comprendre la différence entre un réseau de neurones et un programme, je crois que vous devriez éviter de parler d’IA. Et c’est globalement le problème de l’incompréhension : il n’y a pas d’explication à ce que certains cerveaux puissent appréhender certaines notions et que d’autres n’y arrivent pas. Je ne fais aucun classement des hommes entre eux, il y a tellement de domaines pour se juger qu’un jugement global serait présomptueux. Il y a des domaines où je suis très mauvais, et c’est comme ça.

    Malheureusement, la quasi-totalité des gens ne comprennent rien à l’IA. Ils sont persuadés que l’homme est derrière chaque réponse de l’IA, que seul le calcul (vitesse) fait la différence. Non, l’homme ne comprend déjà plus la réponse des machines. Elles deviennent des boites noires, et c’est le pari que l’on a fait en cherchant à imiter le cerveau.

Voir tous ses commentaires (20 par page)


Publicité


Publicité



Palmarès

Publicité


Agoravox.tv