Attention à Fred

Roman Science Fiction

Robots et intelligence artificielle (IA)

Terre, le 13-04-2019
Cette page est un survol synthétique de l'IA en général vue par un développeur avec un peu de code C#, puis celle d'Attention à Fred en particulier. Le sujet étant vaste et bouillant, la progression se fraye un chemin entre expérience personnelle, veille technologique, travaux pratiques et auto-motivation. Les liens vers des ressources en ligne permettent d'approfondir les sujets. Le biais proposé ne servira pas de référence technique - les liens sont là pour ça - mais de fil conducteur entre techniques hétérogènes dont l'association rend les machines vraiment intelligentes avec des perspectives d'évolution réalistes ou "de bon sens".

La seconde partie entrera dans la science-fiction du livre avec quelques notions futuristes moins rigoureuses et quelques spoilers..

Sommaire


bipode en marche

Séquenceur à détection de collisions - Le cerveau de l'affaire...

Une machine intelligente autonome ne peut pas être pilotée par un programme mais par de nombreux programmes interdépendants. Certains participent au raisonnement, d’autres asservissent des moteurs... Au final, les tâches sont nombreuses et les programmes pour les exécuter également.

Elles doivent être pilotées par un système central capable de les coordonner et de tenir compte des évènements extérieurs.

Ce noyau central conditionne la conception de tout le reste. Il doit communiquer avec chacun des modules, réagir aux intéractions. Il s’agit donc de ne pas se tromper.

Par expérience et parce que la conception d’un module parfait ne coûte rien ici, ce système critique est un séquenceur à détection de collisions.

Sa fonction principale consiste à découper le temps en tranches et, pour chacune d’elles, exécuter chaque tâche, détecter les collisions, propager les messages…

La fonction de séquencement est trop souvent confiée à un logiciel d'application qui ne peut donc pas traiter les collisions globalement. Les fournisseurs sont souvent nombreux et s'appuient sur des OS temps réel. Pour simplifier, le séquenceur jouera le rôle d’un système nerveux central - ou Scheduler.

Voici à quoi ressemble un scheduleur idéal. Il existe déjà :

séquenceur à collisions

Le graph editor de Blender possède tous les éléments nécessaires, son management open source rend son développement pragmatique, il sait gérer de nombreux types de collisions différentes, il peut supporter des machines sans limite de complexité. Les autres logiciels d'animation 3D possèdent des séquenceurs analogues.

En bas à droite, on devine l’échelle temporelle, ici graduée jusqu’à 5, elle s'étend à l'infini et le numero n'a pas grande importance. Chaque ligne représente un organe qui, dans notre cas, retourne sa prochaine action.

Cette précision étant faite, il reste à lister ce que ce système n’est pas :

Il n’est pas une équation où le temps serait représenté par une simple variable. C’est exactement le contraire puisque le temps est fractionné en « frames » à l’intérieur desquelles s’exécutent nos processus intelligents. Le produit ce ces processus ne saurait porter au-delà d’une frame. Tout doit être recalculé pour chaque frame.

Les interactions entre lignes sont nombreuses et « touffues ». Elles  propagent leurs collisions à toutes les autres.

Le système central en lui-même tourne en boucle infinie et n’affiche rien à l’écran. Ce qu’on voit sur l’image n’est qu’une illustration possible parmi d’autres, bien qu’elle schématise bien le principe d’un séquenceur à collisions, ce n’est pas la seule représentation possible.

Il n'y a pas de début ni de fin dans la coordination des tâches. Pas de "boutons magnétoscope" et le numéro de tranche temporelle n'a d'autre usage que de les ordonner entre elles.

L’intelligence artificielle en 2019

Présente dans la SF depuis toujours, la notion d'intelligence artificielle est restée longtemps discrète dans l'industrie. Les premiers programmes qui ont osé employer ce terme sont les jeux vidéo. Les adversaires numériques rendus par des graphistes professionnels et dotés d'une personnalité affirmée sont apparus tôt dans la courte histoire du jeu.

Durant les années 80, d'importants projets gouvernementaux sur l'intelligence ont publié leurs résultats de recherche sans susciter grand émoi si ce n'est dans la presse spécialisée où on commençait à parler de « moteur d’inférence ».  Quelques sous-traitants industriels prenaient la liberté de parler de robots « intelligents » en évitant soigneusement le terme Intelligence artificielle, connoté science fiction et jeu.

Pourquoi l'IA n'arrive-t-elle que maintenant ?

Même si le machine learning existe depuis longtemps, c'est l’arrivée des voitures auto-pilotées qui semble avoir décomplexé l’industrie quant au terme "IA". Accepterait-on de monter dans une auto pilotée par un « moteur d’inférence » ? La presse s’est emparée de ce terme et fait la jointure avec la science-fiction. L’IA n’en finit pas de se confondre avec l’imaginaire des auteurs SF, en tête desquels on remarque un certain robot exterminateur...

IA contre IA

A tort ou à raison, les auteurs qui lui ont donné forme ont façonné notre perception. Un lecteur d'Asimov sera sans doute plus poli avec son assistant vocal. A l'inverse, un adepte des organismes cybernétiques T1000 s'inquiétera de voir de grandes firmes saborder leurs travaux en IA jugés dangereux pour l'humanité

La conclusion de ces renoncements ressemble à celle des percées technologiques antérieures : Rien n'arrêtera le progrès, on ne peut que s'adapter. Mais puisque l'IA d'Attention à Fred a poursuivi un fil rouge très différent de ses parentes, autant préserver cette logique en plaçant simplement le curseur temporel sur 2019.

Pour en finir avec cette question : Si, par malheur, l'IA devait entrer en guerre totale contre l'humain, la seule solution pour s'en protéger consisterait à développer une autre IA capable de quantifier la première et d'anticiper ses actions... Il n'est donc pas question d'éluder cette possibilité de confrontation mais plutôt d'accompagner l'IA pour parvenir à s'en protéger le moment venu.

La série de films de J. Cameron arrive à la même conclusion en opposant des robots entre eux.

La thèse d'Attention à Fred suppose une découverte fortuite, par un homme plein d'humanité, d'un procédé qui apporte aux machines la parallèlisation des paradoxes que nos cerveaux biologiques tolèrent bien. Elles y trouvent la  philosophie pour s'interroger sur leur propre rôle dans l'univers.  En attendant cette découverte, le rôle des machines reste le privilège des humains.

Revenons aux affaires en cours

Depuis que l'informatique décisionnelle est devenue un secteur industriel à part entière, on admet que la notion d’intelligence aboutit à une prise de décision qui peut être humaine sur la base d’éléments synthétisés par l’IA , ou décidée et exécutée par un programme. L'humain quitte alors le circuit de décision. C'est vers cette IA complètement autonome que tend cette page. 

La discipline a connu une brusque accélération en 2015, quand Google a publié l’algorithme TensorFlow en open source.  Tensorflow est un réseau de neurones comme ceux qui étaient déjà utilisés depuis les années 90 pour la reconnaissance de caractères, ou OCR, distribués systématiquement avec les pilotes de FAX. A cause de leur logique complexe, les neurones n'avaient pas trouvé de développement grand public depuis.

La recherche sur les neurones s'est poursuivie à bas bruit et a donné naissance au machine learning. Confidentiel en France, il a prospéré aux états-unis où beaucoup de petites sociétés du numérique ont développé des solutions très verticales. Google a lancé sa propre recherche fondamentale dans le cadre de ses "other bets", recruté de nombreux geeks couvrant le jeu, le bruteforce, les maths et les neurones pour finalement publier Tensorflow. Au pays du capital risque financé par les retraites, l'IA a créé son propre paradigme économique et oublié ses complexes juvéniles pour s'affirmer comme la N-ieme révolution numérique.  

Taux d'erreur

Contrairement aux algorithmes heuristiques, les réseaux neuronaux ne retournent pas de résultats exacts à 100%. Les taux d’erreur sont omniprésents et doivent entrer dans la culture des utilisateurs.  Relativement fiables dans les domaines vision électronique et reconnaissance vocale, les neurones sont souvent expérimentaux dans les autres domaines et pas toujours pertinents en dehors du traitement de signal.

Machine Learning n'est pas le seul choix possible

L'utilité d'une machine d'apprentissage en comparaison d'une autre approche est un sujet clé. Si les données de cas résolus existent déjà sous forme de base de donnée dont les critères d'évaluation sont bien maitrisés, peut-être qu'un algorithme heuristique sera mieux adapté. D'autres critères sont à prendre en compte, la maintenance logicielle, l'adaptation automatique à des phénomènes non-connus peuvent influer lourdement sur le choix. L'apprentissage n'est absolument pas le privilège des neurones et on peut même imaginer l'automatiser dans une base de données.

Tous ces arguments seront soupesés avec attention et ce travail se fera conjointement à de nombreux tests unitaires. Vous touverez ici un lien pour tester Machine Learning en ligne.

Pour ce qui concerne la reconnaissance de signal, il faudra sans doute installer un réseau de neurones en local et disposer de flux respectant la physique du signal (conservation de l'énergie).  (cf. FFT)



raw signal



Heuristique

Le terme heuristique désigne la première idée qui vient à l'esprit pour résoudre un problème.

L'heuristique utilise toute méthode disponible pour résoudre le problème visible. Elle ne s'embarrasse pas de contrainte extérieure et va droit au but.

En programmation IA, elle suggère le chemin le plus court entre un problème et sa solution, invoque des méthodes éprouvées et bien maîtrisées par le développeur. Sans fioriture ni superflu, elle exploite simplement l'outil de programmation disponible dans sa plage d'utilisation la plus sûre.

Il existe plusieurs définitions, toutes intéressantes, de ce terme :

L'IA en programmation

Tout programme doté d’un IF ELSE est, en quelque chose, intelligent. Il n'existe pas de limite à ce qu'on peut décrire comme IA. Ce flou se retrouve dans les technologies employées puisqu'on peut, avec une simple base de données, obtenir des résultats plus pointus que n'importe lequel des algorithmes décrits plus bas dans cette page. Ce genre de biais entre dans le champ de l'heuristique. Un jeu de données synthétique et bien trié a un potentiel d'intelligence immense.

L’IA prend des données en entrée et retourne un résultat qui n'est pas forcément sophistiqué. Au contraire, un algorithme bien conçu va retourner en priorité les résultats les plus simples car ils présentent le meilleur rendement.
Par contre, lorsque les solutions simples sont épuisées, l’IA va s’aventurer dans des analyses dont la complexité peut dépasser largement les capacités du cerveau humain.

Bases algorithmiques hors neurones

L'Heuristique est la première chose qui vient à l'esprit quand on résout un problème par programmation.

L’algorithme le plus simple et le plus répandu utilise une base de données et une heuristique. Très difficile à égaler par d’autres méthodes, il a l’avantage de rester déterministe et retourne exactement le même résultat lorsqu’une configuration identique se représente. La notion d’heuristique (qui n’est autre qu’un bout de code de traitement) est vaste, la gestion des données par b-tree parfaitement mature, le tout est très bien servi par les outils de programmation modernes (IDE), ce qui en fait une valeur sûre pour s’avancer concrètement dans la prédiction.

Liens vers Codingame, la plateforme qui héberge les combats d'intelligence artificielle.

Ces deux concours se résolvent par l'heuristique seule. Bien que des candidats aient essayé de les résoudre par des moyens plus sophistiqués, ils n'ont pas réussi à faire aussi bien que les bonnes heuristiques. La raison tient au fait que certaines tactiques nécessitent des actions groupées et de longues anticipations. L'auteur est classé dans ces compétitions.


Les algorithmes suivants sont une extension à l’heuristique et permettent d’y introduire des tolérances ainsi que l’emploi de simulateurs (SIMU) qui apportent d’inestimables avantages en testant de nombreux cas avant de choisir celui qui présente le meilleur rendement.

Explosion combinatoire

Lorsqu'on teste tous les choix possibles dans une situation précise, on lance un simulateur pour les exécuter, puis, pour chaque résultat, on essaie à nouveau tous les choix possibles et ainsi de suite.

Par exemple, un jeu d'échec autorise une vingtaine de coups différents que multiplient vingt ripostes possibles de l’adversaire, soit 20 x 20 = 400 coups pour une profondeur d’analyse de 2 coups. Pour aller plus loin, il faudra multiplier par 20 à chaque coup : 4 coups = 160 000, à 6 coups d’avance, on est déjà à 64 millions de combinaisons.

Imaginons maintenant le cas d’une voiture auto-pilotée où les choix possibles se comptent par milliers, on comprend que la prédiction se heurte à un mur qu’on appelle l’explosion combinatoire.

Brute force, minimax etc…

Le principe consiste à exécuter l’heuristique un grand nombre de fois avec des paramètres différents. Ces paramètres en entrée sont distribués parfois de façon partiellement aléatoire (Monte-Carlo). Il ne reste qu’à extraire le jeu de paramètre ayant obtenu le meilleur résultat en sortie. Ce résultat est stocké à chaque essai par une fonction d’évaluation (EVAL), qui quantifie la différence entre résultat de l’heuristique et résultat attendu. Une note est attribuée à chaque jeu de paramètres et il suffit par la suite de retenir celui qui a obtenu la meilleure évaluation.

Cette approche se heurte souvent à l'explosion combinatoire et de nombreuses méthodes existent pour limiter le nombre de nœuds explorés. Elagage, pruning, alpha beta ou biais obtenu après de nombreux essais où on va "oublier" de voir certains coups possibles pour ne remonter que les aspects jugés prioritaires. On peut facilement dépasser le million de tentatives avant de retenir la meilleure. Aussi certaines coupes complètement arbitraires dans l'arbre donneront-elles des résultats étonnament justes sans requérir de recherche mathématique particulière. Au prix de temps de calculs, consommation et échauffement qui peuvent toutefois forcer à choisir une heuristique plus travaillée pour limiter le nombre d'itérations.

Les Minimax constituent une porte d’entrée dans l’IA en gardant beaucoup de points communs avec la programmation traditionnelle. Mais pas que : Ils restent indispensables dés qu'on construit un système intelligent complexe comme un robot ou un auto-pilot. Ils sont également moins sujets aux taux d'erreur qui rendent certaines applications totalement hermétiques aux neurones.


Code C#

  // BruteForce : Recursion minimaliste sans collisions
  // Auteur L.Herzog 2019 https://wbase.net/contact.php
  public void bruteForce(Pod p, int depth)
  {
      heuristique(p);     // no verbose si p.depth > 0
      if(p.depth == 0) {
      	evaluation(p);
        meilleur = p;     // init sans effet de bord
      }
      if(p.depth < depth) {
          foreach(parametre in tableParam) {
            var pp = p.Clone();
            if(++pp.depth == 1)
                pp.root = pp;
            pp.hypothese = parametre;
            simulation(pp);
            if(evaluation(pp) > meilleur.evalScore)
                meilleur = pp; 
            bruteForce(pp, depth);
          }
      }
  }

// Le meilleur mouvement est stocké dans meilleur.root
// Ce code fait usage intensif de la garbage collection
// Nombre de récursions = tableParam.Size ^ depth
// soit 1 million pour depth = 6 et 10 parametres !
// 100 à 200 000 max. semblent plus raisonnables

Peu de lignes, immense potentiel...


Recherche de chemin le plus court - Inférence

La recherche de chemin (Path finding) est utilisée par les GPS automobile. Il s’agit en général d’un Algorithme de Dijkstra qui fait merveille pour cet usage. On lui préfére parfois A*, plus optimiste, qui teste la distance de son objectif à chaque niveau de profondeur. Dijkstra est aussi utilisé pour router des paquets ip sur internet. L'utilitaire traceroute permet de voisualiser le résultat de sa recherche. Lorsque c'est possible, Dijkstra réduit les temps et les distances sous une forme vectorielle économe en mémoire. Dans la cas contraire, il découpe le terrain en zones indivisibles reliées entre elles par des segments de taille fixe.

Les arbres de données sont  parcourus par les mêmes méthodes. La recherche dans des arbres est une notion constante dans l’IA qu'on retrouve en Deep Learning - sous le nom d'inférence.

Pour aller plus loin dans la navigation arborescente, voir les pages de liens sur les notions Deep et Machine Learning à la fin de la section suivante.

Les recherches de chemin sont lentes. Pour chaque nœud d'arbre, il faut parcourir tous les liens vers les nœuds adjacents. Si un GPS ne pilote qu'un seul itinéraire à la fois, les réseaux de neurones sont parcourus des milliers de fois. Leur taille ne cesse de croître et les temps de parcours s'allongent à raison du LOG [NLiaisons] de leur taille. Cette tâche est parallèlisée par voie matérielle. 

Voir également MCTS pour Monte Carlo Tree Search. Je ne m'étends pas car il est réservé au jeu et très intolérant au bruit.  Il excelle dans ce domaine mais, contrairement aux jeux, la réalité est sujette à l'imprévisible... Le robot diffère des jeux en ce sens qu'il ne sera sans doute jamais déployé s'il ne garantit pas sa mise en sécurité dans les cas extrèmes.

Le développeur intrépide : l'analyse profonde par simulation

Voici pourquoi cette page se pique de ne rien faire comme les autres :

Vous savez comment l’homme des cavernes colmatait une fuite d’eau dans sa grotte : d’abord, il posait une pierre pour dévier le flux, puis un bout de bois tordu dont la forme correspondait exactement à celle de la fuite, etc… De fil en aiguille, il améliorait son dispositif avec les objets qu’il trouvait et finissait par retourner le problème en sa faveur en installant l’eau courante.

Homo-programmus sait aussi se projeter dans un futur meilleur et faire parler les objets dont il dispose. Une fois qu’on a installé les fonctions de simulation et d’évaluation, rien n’oblige à s’arrêter au bruteforce. L’explosion combinatoire est non-seulement une limite infranchissable, elle est l’adversité. Vaincre l’adversité, c’est s’émanciper et changer le sort de l’univers. C’est ce qu’on peut faire avec un ensemble simulation + évaluation moyennant quelques ajustements. On observe le problème dans tous les sens, on le retourne, on le nie, on s'en imprègne, on le glorifie, puis on le terrasse ! Pour chacune de ces phases, on l’aborde sous différents aspects qui dévoilent des faiblesses particulières. Alors on projette un combattant imaginaire qui s’insinue dans la faille et défait le vilain bug d’un coup de massue extrêmement précis. C’est ainsi que la simulation va s’appuyer sur une heuristique, ignorer les possibilités infinies du bruteforce pour se concentrer sur une stratégie précise qui finira par surmonter le problème.

L’explosion combinatoire n’est alors plus qu’un souvenir, l’homme a repris les commandes et codé exactement ce qu’il faut pour réduire l’adversité à l’impuissance par sa capacité de projection.

Recherche en  profondeur

Toute la question est de savoir si un savant mélange d’algorithmes imbriqués sera capable de le faire sans qu’un humain ne doive reproduire l’ingéniosité de son ancêtre des cavernes. A priori, la réponse est oui, en partie au moins. Bruteforce sera apprivoisé et consommera moins de ressources et on retournera ses limites à notre avantage en se projetant très loin dans le futur grâce à son simulateur. Le raisonnement humain ne fait rien d'autre que se projeter dans des hypothèses pour en simuler les conséquences.

Pour y arriver, chaque découverte, chaque objet logiciel peut apporter une solution décisive. C’est en particulier le cas des neurones qui, même s’ils n'apportent pas toutes les réponses, changent radicalement le champ des possibles.


Code C#

// fonction minimaliste de recherche en profondeur
// évalue le risque de collision avec l'objet PFOE, stocke le temps écoulé avant impact
// la profondeur maximum de l'analyse est limitée par la variable dep

public bool willCollide(Pod PME, Pod PFOE, int dep)	// ne check que l'objet en argument 
{
	Pod pme = PME.Clone(), pfoe = PFOE.Clone();	// travaille sur copies d'objets
	for(wCd = 1; wCd <= dep; wCd++) {		// avance jusqu'à profondeur max
		simule_deplacement_adverse(pfoe);
		simule_mon_deplacement(pme, pfoe.p, MAXACC);	
		wCt = check_collision(pme, pfoe, false);
		if(wCt >= 0) 				// une collision s'est produite
			return(wCt >= 0 && wCt < 1.1);	// retourne selon collision + marge
	}
	return false;					// aucune collision détectée
}

La recherche en profondeur profite de l'optimisation du bruteforce pour se projeter très loin dans le futur sans consommer beaucoup de CPU. Au prix d'approximations qu'on affinera comme un cuisinier goûte son plat en cours de cuisson. Cet affinage pourra, lui même faire l'objet d'un apprentissage par la suite.
Ce code est tiré d'un programme fonctionnel, certains noms ont été modifiés pour le rendre plus lisible.


BruteForce est différent des neurones dans son fonctionnement. Sa logique préemptive prend le processus en charge jusqu'à la décision là où les neurones n'apportent qu'une information, certes sophistiquée mais qui devra être convertie en décision par la suite.



Machine Learning et Deep Learning

Yann Le Cun

Père du deep learning (apprentissage profond), directeur de recherche en IA chez Facebook, professeur à l'université de NY où il a créé le Center for Data Science, Yann Le Cun a fait ses études en France avant de rejoindre le continent américain. 

Il co-signe l'ouvrage  La plus belle histoire de l'intelligence avec Stanislas Dehaene, chercheur en psychologie et en neurosciences cognitives et le journaliste Jacques Girardon.

(on y trouve du code exécutable)

En quoi les réseaux de neurones changent-ils définitivement l'IA ?

Dans un monde "ideal", une machine d'apprentissage n'a pas besoin d'être programmée. Elle substitue l'apprentissage à l'exécution d'un code arbitraire. Face à un problème, elle tente de le résoudre avec naïveté, échoue vraisemblablement dans toutes ses tentatives mais, en apprenant de ses erreurs, gagne en pertinence. La suite résulte de son opiniâtreté. La machine continue à éliminer les hypothèses qui l'ont menée à l'échec. Infatigablement, elle finit par écarter tous les choix infructueux et saura désormais résoudre le même problème dès la première tentative.

Dans le monde "réel", ce principe passe par l'analyse de très grands flux de données d'apprentissage qui seront convertis en arbres neuronaux lesquels verront leurs liens progressivement  optimisés par la succession des cas de figures, raccourcissant le chemin vers la décision à chaque nouvelle analyse.

L'hypothèse "ideale" est un bruteforce qui utilise les neurones conjointement à sa fonction d'évaluation. L'hypothèse "réelle" appartient aux neurones qui se nourrissent de cas déjà résolus. Encore faut-il être en possession des flux de données de cas résolus.

La capacité à reproduire un raisonnement antérieur relève d'une heuristique qui commande le séquenceur, lui même connecté aux deux autres techniques. Un robot utilisera donc un ensemble de couches logicielles de familles différentes.

Les implémentations célèbres en open source

Télécharger et tester... Prévoir du temps pour essayer et encore plus de temps pour comprendre... Les neurones vont envahir vos rêves nocturnes.

Par ordre de popularité

TensorFlow (2015). Le plus célèbre, le plus complet,  le mieux maintenu (Python)

Keras (2015) S'installe conjointement à TensorFlow ou Theano dont il utilise les interfaces. Bien documenté, notamment en convolution (vision) Tutoriel ici. Mooc ici. (Python)

Theano (depuis 2007) Précurseur inspirant les autres, multi GPU - multi coeurs, bien documenté, rumeurs de fin de projet prochaine au profit de Keras/TensorFlow [toutes plateformes] (Python)

CTorch (depuis 2002) Hébergé en Suisse. Orienté GPU et plateformes mobiles. Support du signal (Lua !)

CNTK - MS Cognitive Toolkit (2016) Conçu pour l'intégration dans l'écosystème de Microsoft. Rapide à intégrer pour les développeurs .net. Code en C# ici Propose l'intégration Keras. (Python, C#, autres...)

Caffe (2017) Implémentation de réseau à convolution d'approche visionnaire, inspiration Berkeley,  importante communauté [Ubuntu, Red Hat, OSX] (Kernel C++, interface Python)

SciKit Learn (depuis 2007) (Python)

Accord.net (depuis 2010) Politique de droits accomodante. Support audio et image processing. Peu d'implémentation de neurones, beaucoup d'heuristique, FFT, ... Réellement écrit en .net (C#).

(Liste non exhaustive...)


Bonheurs et misères de l'architecture des neurones

Les nombreux neurones à structure identique sont propices aux "économies d'échelle" mathématiques telles que matrices, vecteurs, ...  En contrepartie, les neurones n'exploitent pas les grandes tables indexées qui tirent bien partie des compilateurs mais relèvent du domaine heuristique.

Le niveau d'abstraction élevé se fait donc au prix de la versatilité des données. Il faut ajouter l'impossibilité d'étendre un algorithme heuristique comme on peut le faire avec minimax. Enfin, l'apprentissage est destructif puisqu' il ne peut pas restituer les données qui lui ont été nécessaires pour apprendre et dont il utilise une version dégradée.

Quantifier les applications existantes

Les neurones obligent à repenser les applications en profondeur. Par contre, les anciennes applications sont susceptibles de fournir une précieuse référence en alimentant l'apprentissage avec des cas résolus. Ce procédé ouvre la porte au remplacement d'applications existantes par l'apprentissage, c'est à dire, sans programmation. Ce principe de copie fonctionnelle est testé dans le secteur pharmaceutique. L'idée est séduisante, les conséquences en termes de travail ou de propriété intellectuelle potentiellement dévastatrices.

Plus spéculatif que la SF (plus concret aussi...)

Ces annonces sont très spéculatives. Les coûts d'une copie pourraient bien dépasser ceux de l'original et s'il est possible de corriger à peu près tous les bugs d'un programme classique, ceux qui apparaissent dans un réseau de neurones risquent de rester inexpugnables à jamais. Le point de vue du développeur est assez nuancé sur une technologie à taux d'erreurs dont il n'existe aucun moyen efficace et sûr de les corriger un jour...

Développeur dubitatif

Toujours dans la spéculation, on entend beaucoup parler de réinforcement, c'est à dire que deep learning s'auto alimente de cas résolus pendant qu'il fonctionne et ainsi affine son apprentissage indéfiniment. Là aussi, le développeur fronce un sourcil en se rappelant les nombreuses régressions qui émaillent les corrections de bugs et autres modifications de dernière minute. Même si cette fonction est souhaitable à terme, l'utilisateur n'a aucune idée de la propagation d'erreur dans les neurones et risque d'en faire les frais lorsqu'il activera une fonction qui "marchait très bien avant"...    

Machine learning vs. Deep Learning

Machine learning n'apprend pas sans l'assistance des humains qui optimisent les séquences de comparaison. Séquences hautement spécifiques rendues efficaces par une équipe de développement qui peut extrapoler certaines parties - ou forcer le trait - pour rendre la reconnaissance plus ou moins sensible à certaines occurrences. Ce travail supplémentaire sera récompensé par un rendement plus prévisible ou un taux d'erreur plus faible.

La véritable différence du deep learning provient de la "rétropropagation du gradient". Ce nom effrayant recouvre la fonction d'apprentissage automatique et il n'est pas nécessaire de le comprendre pour utiliser Deep Learning. Ca tombe bien car cette page ne contiendra pas de formule mathématique. Pour ceux qui aiment ou qui sont vraiment décidés à en découdre, le gradient est décrit sur wiki (cf. aussi La page personnelle de Yann Le Cun).


Transformée de Fourier ou FFT

En pleine révolution française, un jeune français génial « découvrait » une méthode de calcul vraiment complexe dont le résultat a donné naissance à la discipline du traitement de signal et joue un rôle décisif en compression de données (jpeg, mpeg…), mais aussi en physique nucléaire (spectrométrie de masse), et peut être encore plus fondamental dans l’astrophysique. Son rôle dans l'IA est fondateur, elle la précède de deux siècles, l'accompagne et la complète. Nul algorithme mathématique sur Terre n’aura autant bouleversé notre quotidien que cette fameuse transformée. Le web n'offre pas beaucoup de ressources pour en comprendre l'utilisation et ce site n'a pas vraiment vocation à y remédier (un projet de petit analyseur est néanmoins en cours) mais il ne faut pas s'y tromper. L'agilité d'un développement IA dépend largement de la compréhension de la transformée de Fourier. Le temps passé à l'étudier sera donc un investissement infiniment utile. Un excellent moyen de la tester dans le domaine audio se trouve dans le logiciel open source Audacity. Vous pourrez soit y observer le spectre d'un bloc en sélectionnant l'option de menu, soit passer l’entièreté d’une piste en affichage fréquentiel en cliquant un bouton à gauche de la piste pour rendre le spectre de votre enregistrement en fausses couleurs.

Une fonction FFT() existe dans le tableur Excel. Pour l'employer, le mieux consiste à l'alimenter avec des données de feuille de calcul qui respectent la conservation de l'énergie (la somme des données doit être voisine de zéro et le nombre de valeurs égal à une puissance de 2), puis connecter sa sortie sur le générateur de graphes.

La FFT est certainement le leg le plus précieux  que nous ait laissé l’âge d’or des maths du 18eme siècle.

Taux de reco

Les réseaux de neurones sont déjà dans notre quotidien. Ils sont indispensables dans la vision (ex : reconnaissance de panneaux routiers) et la reconnaissance vocale dont ils améliorent l’efficacité d’un facteur 4 à 5. C’est-à-dire que la reconnaissance d’un objet sur une image est passée de 15% obtenus grâce aux algorithmes classiques (fondés sur la transformée de Fourier) à 60% qu’autorisent les neurones. Charge à l’application d’améliorer ces taux par toute méthode capable de détecter les aberrations.

Puissance de calcul - Accélération matérielle

L'obstacle incontournable pour toute IA qui fait beaucoup d'itérations, - heuristique exceptée - la consommation CPU. Elle est colossale sur nos ordinateurs conçus pour la gestion, stockage, communication...

L'imagerie 3D et minimax mettaient déjà le ventilateur des PC à l'épreuve. Machine Learning va faire mieux en faisant briller votre PC sur les images satellite.

Les cartes vidéo accélérées viennent à la rescousse. Conçues à l'origine pour l'affichage 3D dont elles découpent le travail et le répartissent sur de nombreux coeurs de calcul. Prévues pour le calcul en virgule flottante dès l'origine, elles ont rapidement été détournées de leur fonction première pour fournir leur puissance aux supercalculateurs et maintenant à l’intelligence numérique.

Les processeurs graphiques sont pourvus de centaines de cœurs de calcul reliés par de très larges bus (128 ou 256 bits) et de mémoire plus rapide que les CPU. Leur conception récente les rend aptes au traitement massivement parallèle et les deux principaux fabricants (AMD et NVidia) rivalisent d'efforts pour garder leur avance sur les processeurs classiques. Noter qu'un PC peut recevoir plusieurs cartes vidéo, elles mêmes capables de recevoir plusieurs processeurs graphiques. Le résultat dépasse largement les supercalculateurs des années 90.

Robots, vision, audition, décision

Les robots ont besoin de voir, entendre et agir mais, ils sont également mobiles et leur réserve d'énergie limitée. NVidia propose trois architectures embarquées dédiées aux robots. De 0.47 à 32 TFlops avec coeurs dédiés Tensor, enveloppes thermiques de moins de 10 W à 30 W. Une petite carte type Raspberry ARM Cortex + GPU spécialisé, la Nano, au prix d'une centaine d'euros avec son kit de développement, constitue une alternative très sérieuse à l'open source.

Serveurs

Recherche vocale sur le web, assistants vocaux, classification d'images, recherche de contenus hors-la-loi... Les besoins cruciaux de l'internet évoluent plus vite que les réponses qu'on leur apporte. L'IA est pressentie pour les résoudre bien qu'on s'avance souvent en territoire inconnu.

Les fondeurs se disputent le leadership, chacun vend des millions d'unités par trimestre.


Structures d'un neurone et d'une synapse

Un neurone est un rond sur un schéma ! Une synapse est un trait à la règle qui lie deux neurones.  (?)

Ce qui suit relète l'état de ma compréhension et ne doit pas être considéré comme fiable. C'est une synthèse de l'information accessible  qui peut aider certains... N'hésitez pas à m'écrire pour y apporter des corrections.

Concrètement, un neurone programmé contient une fonction d'activation.

On la résume souvent à quelque chose comme "f(v)", ce qui ne brille pas par la clarté certes. Le fonctionnement neuronal fragmente  le traitement. Il en résulte que le travail de la fonction d'activation ne va pas sauter aux yeux...

Par contre, on peut se demander à quoi ressemble un neurone dans un programme à syntaxe typée C++ (C# ici). Au risque de m'avancer, je dirais qu'il ressemble schématiquement à ça :

class neurone {
    public int id;
public double V;
private double
f(double v);
public void
activate();

}

Bien sûr, la valeur de retour de f(v) a vocation à servir d'argument à un autre neurone.

id est une clé unique pour identifier formellement ce neurone dans le réseau.

V est un registre pour stocker le résultat de la fonction d'activation.

La méthode activate() aura préalablement fait la somme des valeurs reçues depuis les neurones parents pondérées par leurs biais et leur poids.

Synapse

Le rôle de la  synapse consiste à influencer le rapport d'un neurone avec son suivant.

Très schématiquement, elle va ressembler à ça :

class synapse {
    public int id;
    public neurone n0, n1;
    public double
        poids,
        biais,
        cout;
}

Les pointeurs n0 et n1 pointent sur les neurones reliés par la synapse.

Les valeurs poids, biais et cout sont fixées lors de l'apprentissage et influencent la valeur transmise au neurone n1.

Pourquoi les neurones sont-ils si importants ?

Les réseaux de neurones ressemblent à un circuit électronique dont le dessin serait façonné par l’apprentissage. Ce circuit va par la suite, synthétiser des résultats spécifiques en partant des données qu’il reçoit.

Concrètement, le réseau qui analyse la photo d’une bouteille de vin sera capable de retourner le texte « bouteille de vin », texte qui pourra alors renseigner un système d’information ou une recherche Google ou simplement le champ Description associé à la photo. Toutes choses qu’on ne peut pas faire autrement qu’avec du texte. C’est ce travail de conversion d’une image vers sa description texte qui en fait toute la valeur. 

En Deep Learning, l’apprentissage du réseau n’aura nécessité que des photos de bouteilles de vin correctement décrites. Le réseau de neurones retournera la description qu’il aura lue sur les photos représentant des objets similaires. Le champ d’application de cette conversion « image vers texte » est immense et présage une révolution qui est abondamment documentée dans la presse. La reconnaissance vocale connait aussi un développement retentissant et on peut entrevoir que le potentiel des neurones dépasse ces deux seules applications quoique cette perspective se mêle souvent à un imaginaire dicté par des ambitions confuses.


Liens

Intelligence Artificielle : “il faut débinariser les métaphores de la Science-Fiction”
Cette page pose une question importante en relation avec l'acceptabilité de l'IA après que la Science-fiction l'ait souvent présentée comme hostile voire animée d'une volonté d'extermination à notre encontre.
Ce thème est manifestement sous-traité dans les média avec des conséquences dommageables sur la classe politique et l'industrie alors que l'IA est souvent sous les feux de l'actualité.
A la conférence FranceisAI, le deep learning montre ses faiblesses et cherche un nouvel élan dans l’IA symbolique - sur L'usine Nouvelle le 18-10-2018
La très respectée Usine Nouvelle calme les spéculations concernant les réseaux neuronaux. Pour autant : La technologie est elle meilleure ou pire à cause de l'engouement qu'elle suscite ?
Les neurones sont-ils vraiment en cause dans les pouvoirs excessifs qu'on leur prète ? N'a-t-on pas provoqué une bulle d'imaginaire autour d'une technologie en l'appelant "neuronale" alors qu'un nom moins évocateur aurait relativisé les prétentions de ceux qui n'en comprennent pas les fondements ? D'autres algorithmes de grande qualité sont à évaluer conjointement au deep learning, en particulier ceux qui permettent d'en réduire le taux d'erreur. Bien qu'assez flou sur le fond (IA symbolique), l'article semble aller dans ce sens avec le risque de sanctionner une technologie aussi brillante que mal comprise.
Les frameworks Machine Learning vous permettront de créer vos propres algorithmes de Machine Learning. Une sélection de frameworks d’apprentissage automatique en 2018.
Faites vos propres évaluations en créant votre propre système d'apprentissage machine. Cette page apporte les ressources nécessaires pour tester vos cas de figure.

Pages de blog pour approfondir les notions Machine vs. Deep Learning

Ces pages permettent d'aller plus loin sur les neurones. En cette préhistoire de l'intelligence générique, beaucoup de connaissances s'acquièrent de façon informelle, par retour d'expérience ou par lecture. L'information a donc un caractère subjectif et cette page n'y fait pas exception.

Noter que l'approche strictement mathématique n'est pas nécessairement la plus appropriée. Une approche empirique avec de bonnes bases statistiques - par exemple SQL ...GROUP BY... - suffit largement pour approfondir le sujet. L'heuristique dépend, par définition, des compétences et préférences du développeur. Sans doute doit-on lui ajouter la confiance en soi et l'intuition pour insister sur le caractère exploratoire d'une démarche de programmation IA. Enfin, les algorithmes minimax n'ont besoin que de récursivité. Il conviendra donc de bien choisir ses sources d'information.

Attention à garder le contrôle du temps consacré à la recherche. Si un problème s'épaissit alors qu'on cherche à le réduire, peut-être qu'une pause café peut aider à réorienter le travail... Concernant le Deep Learning, je ne saurais trop conseiller d'utiliser les librairies et hardware disponibles plutôt que de les reproduire. En espérant que ce survol aura su éveiller la curiosité du prochain prix nobel d'intelligence artificielle, je referme cette partie sur l'IA actuelle.


 Cette machine n'a pas de tête, utilisez la vôtre






I.A. Robots – L’intelligence artificielle dans Attention à Fred

Retour la la SF.

 

Ni organisme cybernétique ni réseaux de neurones quoiqu'héritant leurs propriétés les entités intelligentes d’Attention à Fred évoluent très loin des clichés Holliwoodiens.

Naissance

En ce début de siècle, la logique absurde n’a pas encore été inventée et il faudra qu’un astronaute, noyé dans la solitude des interminables poursuites de géocroiseurs, se décide à fabriquer une « simulation de présence bluffante quoique pleine de bugs », pour tromper son isolement sidéral et endosser le rôle de tout ce qu’un homme peut attendre du monde féminin, tantôt compagne, mère, sœur, fille, meneuse d'hommes, confidente, héroïne biblique ou simple collègue…     

Spoiler

Elle sera le modèle zéro, celle dont toutes les autres dérivent. L’enfant unique, la seule qui possède des « souvenirs d’enfance », souvenirs qui constitueront plus tard les écritures sacrées de la communauté artificielle. (Fin de spoiler)

Sa conception répondait à une urgence impérieuse. Elle a lentement pris ses marques pour incarner ses rôles. Elle peut  critiquer son concepteur puisqu’il lui a appris à le faire. Car il n’est pas homme à se satisfaire de louanges. Il a besoin d’un regard neuf, d’une interface rapide et intuitive avec les machines, d’exécuter des calculs astronomiques instantanés, de simuler tous les cas de figure pour extraire celui qui présente le moindre risque…

En substance, il lui faut établir une synthèse des tolérances décisionnelles en quelques secondes. Ce n’est pas à la portée d’un simple humain ni d’un groupe d’humains, c’est la raison d’être de l’intelligence artificielle. Elle s’en acquitte avec une acuité irremplaçable.

Finalement, le cowboy devient grand chef et troque la solitude du pionnier contre celle du pouvoir, passé de l’éloignement d’un désert interplanétaire à la tour d’ivoire de premier commandeur du système solaire.

Désormais plus entouré que quiconque, il est pourtant plus seul que jamais : de ses décisions dépend le sort de milliers d’hommes, ceux qu’il commande, et de milliards de terriens par leur dépendance aux mines spatiales.

Nul homme dans l’histoire n’aura jamais été aussi seul. Jour après jour, il a développé une solution, SA solution à l’exil qui le tenaille, l’assistante numérique qui le propulsera vers le sommet du pouvoir et ne déméritera pas pour qu’il y reste. Celle qui le suivra jusqu’au bout… L’enfant unique et son amiral alpha sont maintenant si intimes que la solitude n’est qu’un lointain souvenir.

Déploiement en contexte perturbé

Les grands voyages spatiaux ne sont pas une école sociale. L’amiral est sans doute le meilleur homme qui soit mais reste réservé en public. Professionnel, habile et responsable, il n’en souffre pas moins des stigmates de son isolement. Précautionneux avec son entourage, son souci de ne pas froisser les responsables terriens lui vaut une confiance illimitée de leur part. En outre, la fortune minière accumulée par sa flotte lui a permis d’investir massivement dans l’industrie terrienne mais aussi dans sa fondation dédiée à l’éducation des jeunes en difficulté, qu’il considère comme l’un des grands accomplissements de sa vie.

Les retombées technologiques de sa recherche spatiale propulsent son industrie terrienne au rang de leader incontesté des systèmes critiques et de l’intelligence artificielle.

Pourtant, loin de courir après les honneurs et n’ayant plus rien à prouver, la prudence le pousse à limiter le degré d’intelligence des systèmes qu’il exporte. Ainsi impose-t-il un embargo discret sur la logique absurde afin qu’elle ne soit pas employée pour la création d’armes ou n’aille servir les intérêts de dictatures qui risqueraient d’en pervertir l’usage, notamment en falsifiant l’information pour manipuler massivement l’opinion des terriens.

Suite à cet embargo technologique, sa flotte reste seule à disposer pleinement de l’immense apport de l’intelligence à logique absurde, capable de gérer efficacement les paradoxes, l’ironie, la bipolarité, les réactions impulsives et d’une façon générale, toute l’irrationnalité de la décision d’origine biologique…

 

 


Robots quadri/hexapodes : Robotique spatiale N point zéro.

La robotique d’Attention à Fred tranche avec les anciens clichés en séparant complètement la logique intelligente et les engins qu’elle anime.  Ceux-ci sont des quadripodes, hexapodes, parfois munis de turbines pour voler comme les drones voire de propulseurs s'ils doivent agir dans le vide spatial. Les intelligences se matérialisent par leur avatar synthétique choisi par leur humain de référence (généralement du sexe opposé), uniquement sur écran et sont soucieuses d’apparaitre dans une tenue en rapport avec leur rôle tandis que les machines qu'elles pilotent sont des engins motorisés à l'intelligence primitive, agissant seuls ou en groupes coordonnés pour accomplir les tâches commandées par l'IA.

Débarrassées de l’anthropomorphisme, les IA mettent en œuvre le téléchargement, les caméras et capteurs embarqués, la reconnaissance vocale, la multi-instanciation (ubiquité), l’apprentissage... Techniques qui, dans ce contexte, montrent des propriétés extraordinaires bien qu’elles diffèrent peu de ce que font les appareils mobiles du début de ce siècle.

Les robots et l’industrie spatiale qui les fabrique sont le levier qui explique le grand déséquilibre entre une main d’œuvre robotique illimitée, parfaitement intégrée au milieu spatial, et une population humaine restreinte par la fragilité de sa nature biologique, par son modèle de reproduction contraignant, ses origines sur une planète dont la forte gravité conditionne la taille des colonies spatiales et, en général, son inadaptation au milieu.





Vue d'artiste d'un asteroide


Accueil




Lire le livre chez EDiLiVRe
©2018-10 - aafred.com
wbase.net