Aller au contenu


Contenu de jpdelespinay

Il y a 1 élément(s) pour jpdelespinay (recherche limitée depuis 05-mai 13)


Trier par                Ordre  
  1. La vraie IA... A ne pas confondre avec la fauss...

    L'informatique, une méthode qui n'a pas évolué depuis un demi-siècle

    Plus une machine - ou un être vivant - est équipé de capteurs, plus il lui faut d'intelligence pour les exploiter. Ou… plus une machine dispose d'intelligence, plus elle peut s'équiper de capteurs. Choisissez. C'est la poule et l'œuf.
    Ce que l'homme a trouvé de mieux pour donner de l'intelligence à une machine c'est, au milieu du 20ème siècle, l'informatique avec ses ordinateurs animés par des programmes. Ceux-ci contiennent une connaissance humaine et la font "tourner" pour obtenir des résultats sans passer par des cerveaux humains. Un programme, c'est une sorte de mécanisme qui produit de l'information. Le problème, c'est que la façon de le produire est toujours la même depuis l'aube de l'informatique ! Un programme, c'est un liste de procédures chargée de résoudre tous les cas qui se présenteront : le procédural. Comme l'ordinateur est considéré comme un idiot (ce qu'il est très loin d'être !), le développeur informaticien se charge d'apprendre la connaissance qui devra être automatisée (l'analyse) puis il imagine un à un tous les cas qui se présenteront et raisonne pour coder la solution à chaque cas. Le codage est nécessaire pour ne pas faire des programmes inutilement gigantesques. Hélas, il réclame une formation poussée aux langages dits informatiques : Java, C++, Pascal, etc. C'est ainsi que toute l'informatique, encore aujourd'hui, est entre les mains d'une "catégorie de personnel" qui protège jalousement son pré-carré…

    Au début des années 1970, les chercheurs informaticiens de la planète se sont passionnés pour l'intelligence artificielle, un peu comme une spéculation intellectuelle. Ils imaginaient qu'on pourrait simplifier définitivement les programmes en leur donnant la structure suivante :
    1) un "moteur" universel hyper fiable qu'on n'a pas le droit de modifier et
    2) une base de connaissance exprimée sous forme de règles SI.. ALORS… en langage courant qui, elle, est le programme. Le moteur raisonnerait sur la base de connaissance pour exécuter le programme, comme le fait un humain qui raisonne à partir de ce qu'il sait. Le programme devenait ainsi une simple base de données... Donc quelque chose de très fiable et facile à modifier. Avec un avantage de plus : il n'avait pas besoin de toutes les données nécessaires pour fonctionner car il savait dialoguer avec ses utilisateurs et leur réclamer pas à pas les données manquantes. Les Américains développèrent ainsi Mycin en 1971, un système expert d'aide au diagnostic médical des maladies du sang. Ce fut probant en partie ! Car en fait, il fallait piloter le moteur pas à pas pour qu'il puisse exécuter correctement les règles dans le bon ordre (utilisation de mérarègles), ce qui imposait le recours à des informaticiens encore plus diplômés ! Les "cogniticiens". Depuis cette date, rien n'a progressé dans le domaine de l'IA. Il faut toujours des informaticiens spécialistes de l'IA pour mettre de l'intelligence dans quelque chose… Cela indispose nettement les industriels mais ils n'ont pas la compétence pour résoudre le problème. Cela n'indispose pas du tout les développeurs informaticiens qui ont la compétence mais ne s'y intéressent pas pour des raisons que vous devinez sûrement… Cela fait donc quarante ans qu'une bonne idée n'a pas progressé d'un millimètre ! C'est assez unique dans l'évolution des technologies, vous ne trouvez pas ?

    En fait, en 1985, l'université française avait concrétisé l'idée testée dans Mycin. Elle avait mis au point le 1er système expert universel, doté d'un moteur qui raisonne sur une base de connaissance en clair: "Pandora". Je fus le seul à le remarquer et j'en fis l'apologie dans un article de Science et Vie en mai 1991. Je fus incendié par l'AFIA, l'association des universitaires spécialisés en IA ! Ce qu'ils avaient fait là, affirmaient-ils, c'était nul ! Quant à moi, j'étais un charlot ! Ayant bien vu qu'il y avait un marché, j'ai donc créé ma société, repris leurs idées, développé une méthode de recueil automatique des savoir-faire d'experts et développé un moteur faisant un vrai raisonnement humain sophistiqué. J'ai baptisé cette nouvelle technologie "La Maïeutique". Et, grâce à elle, j'ai réalisé en 1986 le 1er système expert conversationnel utilisé devant le grand public, à Paris et Rennes, pour la Banque de Bretagne. Baptisé "Joséphine", il était très gros (plus de 1000 règles), et fut développé par un cadre non informaticien que j'avais embauché pour l'occasion (Michel Le Seac'h). Cette réalisation, ainsi que les suivantes, me valurent au cours des années des centaines d'articles dans la presse. J'étais une célébrité. Dans le privé ! Dans le public, pas un mot sur mon invention, sur mes clients, sur ma société, sur mes théories. Pas une ligne sur moi dans les ouvrages scientifiques ou les revues officielles. J'étais même interdit de parole dans les colloques IA organisés par les universitaires (à nos frais…). Heureusement, il restait les colloques privés où j'étais accueilli à bras ouverts.

    Résultat : vous ignorez que l'IA a percé il y a 25 ans... Depuis, je n'ai cessé d'améliorer mon procédé. Produire du système expert, pour moi, c'est de la routine. Pour mes clients aussi. Mais je dois toujours vaincre mon incognito forcé, les réticences des services informatiques et, le plus extraordinaire, les attaques de l'État lui-même…


    La véritable IA, c'est celle qui raisonne !

    La véritable IA, c'est celle qui raisonne ! Toute personne qui vous dit le contraire est un charlatan. C'est avec le raisonnement que le développeur programme, c'est avec le raisonnement que le système expert programme …à sa place. Le raisonnement est la 1ère conquête du vivant. C'est lui qui sert à rester en vie, à se nourrir et à sa reproduire. C'est donc le 1er atout à mettre dans un programme. Et tant pis si derrière il n'y a plus de procédural et donc plus besoin d'informaticien… On ne versera aucune larme : l'informaticien est le métier qui a le plus tué les métiers des autres !

    Si vous discutez avec lui, il vous dira que ce qu'un système expert ou un Conversationnel fait, il sait le faire aussi bien avec un langage procédural. Il disait aussi il y a 20 ans qu'il pouvait tout programmer en assembleur, mais il a changé d'avis depuis… Il est vrai que, quelque soit le langage informatique, on peut virtuellement tout programmer avec. Mais on ne peut nier le progrès ! Regardez ci-dessous les défauts évidents de la façon classique de programmer par rapport à l'IA que j'ai mise au point, la Maïeutique.


    Les 9 défauts du procédural

    La liste qui suit, vous ne la trouverez nulle part… Il faut être non informaticien pour oser la commettre. J’ai mis l’Intelligence Artificielle raisonnante en parallèle (la Maïeutique) pour que vous puissiez mieux mesurer à quel point ses avantages sont énormes. Ils sont au nombre de huit :

    • Le procédural nécessite la présence d’un intermédiaire
    • il représente la connaissance de façon illisible pour le commun des mortels
    • il faut coder tous les cas qui se présenteront sans en oublier un seul
    • le programmeur fait un boulot de dingue …et il en est fier
    • pendant tout le développement, l’expert ne voit pas son programme !
    • on ne touche plus au programme une fois écrit
    • impossible de certifier la fiabilité du programme écrit (théorème de Goedel)
    • impossible de modifier un programme en cours d’utilisation
    • impossible d’aborder certains domaines d’applications


    1er défaut : Le procédural nécessite la présence d’un intermédiaire

    Entre l’expert qui détient la connaissance à mettre dans le programme et les utilisateurs qui utiliseront le programme, il y a un intermédiaire : le programmeur. C’est lui qui est chargé d’écrire le programme. C’est lui - ou un autre - qui sera par la suite chargé de le faire évoluer. Comme il faut tout lui expliquer, c’est long et fastidieux. De toute façon, il ne peut pas comprendre une expertise qui a demandé des années à être acquise par l’expert. ça ne l’empêche pas, par un amour-propre compréhensible, de prétendre le contraire, ce qui a pour effet d’envenimer fréquemment les relations informatique-services utilisateurs…

    Avec la Maïeutique, c’est l’expert qui écrit l’application et la fait lui-même évoluer, en collaboration avec les utilisateurs. Une fois terminée, il la remet au service informatique pour intégration dans le système d’informations. Le poids de l’erreur dans les logiciels repose désormais sur les experts (qui s’en accommodent très bien…). Les informaticiens sont libérés des tensions avec les services utilisateurs. Ils deviennent des collaborateurs « normaux » parlant le langage de tous.


    2ème défaut : Le procédural représente la connaissance de façon illisible pour le commun des mortels

    Un programme, ce sont des pages de « code » cryptées dans un langage hermétique qu’on ne peut comprendre qu’après avoir suivi une longue formation. Même le programmeur ne s’y retrouve pas quand il remet le nez dans un programme qu’il a écrit il y a plusieurs mois… Et je ne parle pas du malheureux qui doit se replonger dans un programme écrit par un autre !

    La Maïeutique présente, elle, un savoir-faire ET une connaissance humaine en langage courant, qu’elle sait « faire tourner » comme du procédural bien écrit. Avec elle, le programme se réduit à une petite base de données toute bête : une « base de connaissances ». C’est quelque chose d’infiniment plus concis et clair que du procédural.


    3ème défaut du procédural : il faut coder tous les cas qui se présenteront

    Que fait l’expert quand il travaille avec sa connaissance : il raisonne sur LE cas qui se présente et il le résout. Après, il l’oublie et passe à un autre ou à autre chose. Ce n’est pas fatigant. Que fait le programmeur une fois qu’il a compris la connaissance de l’expert à mettre dans le programme : il raisonne sur l’ensemble des cas qui peuvent se présenter au programme et il code chacun d’eux ! Quand on sait qu’il peut y en avoir des centaines ou des milliers, parfois beaucoup plus, on comprend qu’écrire un programme réclame beaucoup de temps.

    Que fait le système expert de type Pandora, lui ? Il raisonne sur LE cas qui lui est présenté, il le résout et il l’oublie. Exactement comme l’expert. Pourquoi le programmeur se casserait-il les pieds à imaginer puis créer une procédure traitant de tous les cas possibles si le programme peut inventer immédiatement la solution pour chaque cas ?


    4ème défaut du procédural : le programmeur fait un boulot de dingue …et il en est fier

    Non seulement le pauvre programmeur est obligé de comprendre une expertise qui n’est pas la sienne, non seulement il doit imaginer tous les cas possibles, mais encore il doit suivre une procédure complexe s’il veut être sûr que son programme tourne et soit accepté : analyse, ordinogramme, codage, tests/modifications. Plus toutes les étapes nécessaires à l’intégration définitive du nouveau programme dans le système informatique : présentation du programme aux utilisateurs, prises en compte des demandes de modifications des utilisateurs, modifications de l’ordinogramme, re-codages, re-tests/modifications, re-présentations du programme aux utilisateurs, etc. Je dis « etc. » car ces allers-retours entre l’utilisateur non satisfait du programme et le bureau du programmeur peuvent se compter par dizaines. Et je ne parle pas du travail de mises à jour sur les programmes, tâche encore plus complexe qui prend un temps énorme. En effet, le programmeur doit relire des pages de codes dont il ne se souvient plus et, pire, que souvent il n’a pas écrites lui-même. Cette re-programmation est une tâche très stressante pour lui : il s’agit de modifier un outil maintenant fiabilisé et utilisé couramment par des gens qui ne peuvent s’en passer et il sait d’avance qu’il va le leur livrer avec des bugs... Bonjour l’ambiance !

    Ceci dit, il est conscient que personne ne peut mettre le nez dans un tel travail, que les utilisateurs n’y comprennent rien et qu’il est de ce fait incontournable… L’évolution des langages informatiques dans le temps est le signe tangible qu’en matière d’informatique, le pouvoir n’est pas entre les mains de ceux qui l’utilisent. Tout indique qu’il faut plus longtemps aujourd’hui qu’hier pour développer un programme et que ça s’aggrave sans cesse. Un langage comme Java, très récent, plébiscité par la communauté des informaticiens au point que la majorité des projets nouveaux sont prévus avec lui, réclame davantage de temps en développement que le langage « C » plus ancien ! Les services utilisateurs d’entreprises se rendent bien compte de cette dérive et font de plus en plus pression pour maîtriser eux-mêmes les développements. Encore faudrait-il qu’ils soient tenus au courant des progrès réalisés pour eux…

    Avec la Maïeutique, l’ordinateur fait déjà 50 % du travail, ce qui est un gage de rapidité et de fiabilité. L’expert n’a à réfléchir que sur son savoir-faire, pas sur le futur programme. Les utilisateurs et lui voient le programme s’élaborer sous leurs yeux. Ils peuvent rectifier au fur et à mesure si nécessaire. Il n’y a plus besoin de la présence du programmeur et de toutes les étapes imposées par Le procédural. Ca va au moins 10 fois plus vite. La mise à jour des programmes est encore plus facile que le développement, la connaissance étant déjà structurée dans un certain nombre de pages identifiées. Sauf que là, ce n’est plus l’ordinateur qui guide l’expert, c’est l’expert qui guide l’ordinateur : il cherche la page où se trouve la partie de son savoir-faire à modifier, la lit (ce sont des arbres de décision écrits en langage courant, vous allez voir plus loin) et modifie l’endroit désiré. L’ordinateur re-génère l’ensemble du programme, en quelques secondes, et fournit un nouveau programme totalement fiable. Avec la Maïeutique, l’ordinateur est au service de l’utilisateur, pas l’inverse !


    5ème défaut : pendant tout le développement, l’expert ne voit pas son programme !

    Quand l’expert (ou un utilisateur) demande la réalisation d’un programme, il ne peut dire en général au programmeur quelle tête ce programme devra avoir à la fin. Ce n’est pas son métier d’imaginer le programme en train de tourner alors qu’il ne sait déjà pas de quoi est faite sa connaissance ! Quant au programmeur, bien qu’il soit expert en informatique, il ne peut pas lui dire non plus à quoi ressemblera le programme à la fin : il n’a aucune idée de l’expertise à recueillir. Son métier c’est informaticien, pas expert-comptable ! Il ne sait pas non plus comment les collègues de l’expert travaillent actuellement avec cette expertise et donc il ne peut décrire le programme qu’il serait bon de leur proposer pour que ce soit mieux. C’est un dialogue de sourds. Tout ce petit monde n’aura une idée du programme que …lorsqu’il sera terminé ! C’est à dire bien tard. Et là, les utilisateurs ne seront pas d’accord, l’expert dira qu’il y a des erreurs …d’où les allers-retours.

    Avec la Maïeutique, no problem : le programme est développé dans le service concerné, par les personnes concernées, qui le voient évoluer sous leurs yeux et peuvent le tester en permanence « pour voir ». Ils le rectifient ensemble autant de fois que nécessaire. Quand il est fini, il est fini. Il n’y a plus qu’à le transmettre au service informatique pour intégration avec les autres programmes existants.


    6ème défaut du procédural : on ne touche plus au programme une fois écrit

    Il faut tellement de temps pour modifier un programme et sa fiabilité devient alors tellement incertaine qu’on ne le modifie que le plus rarement possible : tous les 6 mois, tous les ans… Un tel délai ne convient en général pas aux services utilisateurs, mais c’est comme ça…

    Avec la Maïeutique, tous les programmes peuvent être modifiés quotidiennement s’il le faut. Ce sont des bases de données, ce qu’il y a de plus fiable et de plus facile à modifier en informatique. Du coup, les mises à jour peuvent être quotidiennes.


    7ème défaut du procédural : impossible de modifier un programme en cours d’utilisation

    Avec le procédural, on ne sait pas dans quel état sont les données ni où en était la procédure si on remplace brutalement la version courante du programme en cours d’utilisation par une version ultérieure. L’exécution ne peut donc repartir du bon endroit. Les utilisateurs devront recommencer le travail, en plus sans savoir à partir de quand ! C’est pourquoi la version d’un programme procédural n’est remplacée par une autre que la nuit, lorsque tous les utilisateurs dorment, ou alors pendant une période où leur utilisation est interdite : « Désolé, cette application est en cours de maintenance, veuillez attendre SVP… ».

    Au contraire, un système expert de type Pandora peut être remplacé par une nouvelle version en cours d’utilisation, de la même façon qu’une base de données …puisque c’en est une ! En effet, ce qui évolue constamment dans un système expert, c’est sa base de données de connaissances : la base de règles. Sur Internet, ce type d’opération est fréquent : on l’appelle « mise à jour de bases de données en temps réel ».


    8ème défaut du procédural : impossible de certifier la fiabilité du programme écrit (théorème de Gödel)

    Le procédural oblige à tout recoder en repartant de zéro, ou presque. Même dans les langages objets, conçus pour éviter le codage au maximum, la partie essentielle, l'expertise, reste à coder par des "méthodes". Ce qui rend le concept objet encore plus complexe à mettre en œuvre que la programmation classique. Mais il y a autre problème avant même le codage : l'incomplétude. Celle-ci est le pire ennemi de l'analyse en informatique : des voies de codage sont oubliées par erreur humaine et on ne s'en apercevra souvent que trop tard, quand le logiciel est en exploitation depuis des mois ou des années. D'où de gros soucis d'exploitation, surtout si le programmeur du logiciel en cause n'est plus là pour rectifier le plus rapidement possible.

    L'IA raisonnante, elle, ramène tout programme à une base de données simple, la forme logicielle la plus ancienne, la plus simple et la plus fiabilisée : une base de règles. Celle-ci est exploitée par un moteur raisonnant de 900 Ko, toujours identique donc hyper-fiabilisé avec les années d'utilisation. Pour les applications batch, il peut même être réduit à sa plus simple expression : sa seule tâche consiste à tester l'une après l'autre les règles pour voir si elles peuvent produire une conclusion à partir des faits initiaux et des faits déduits obtenus avec les règles précédentes, puis de reprendre au départ avec les conclusions obtenues pour tester les premières règles avec les connaissances fraîchement acquises par les dernières. Il s'arrête quand aucune production de faits nouveaux n'a pu être obtenue sur un nouveau cycle à travers toute la base.

    Avec la Maïeutique, la complétude est automatiquement vérifiée puisqu'elle matérialise visuellement toutes les voies possibles du raisonnement et détecte celles qui ne mènent pas à la conclusion voulue par le programme. Elle en profite pour faire d'autres vérifications : détection des contradictions logiques, test partiel de l'expertise métier, de la cohérence des types, des expressions obsolètes, des expressions utiles mais inexploitables (non demandables et non déductibles), etc.


    9ème défaut : impossible d’aborder certains domaines d’applications

    Aujourd’hui, à cause de tous ces défauts, plusieurs domaines d’applications ne sont jamais traités. Ceux où règne « l’explosion combinatoire » : le nombre de cas à traiter dans le programme devient tellement énorme que l’on sait d’avance - théorème de Gödel oblige - que l’on n’arrivera jamais à un programme fiable. Ceux ensuite des applications qui évoluent fréquemment pour ne pas devenir obsolètes, ce que le procédural ne sait pas faire vu le temps qu’il met déjà à réussir une mise à jour fiable (6ème défaut).

    Ces domaines d’applications sont les suivants :
    • les Conversationnels car 1) c’est le règne de l’explosion combinatoire et 2) ils reposent sur des connaissances pointues sans cesse affinées et il faut les faire évoluer constamment
    • La simulation logique d'idées, l'aide à l'invention comme nous le faisons dans notre tête en déroulant un raisonnement pour tester une idée ou simuler un système et voir s'il marche.
    • les aides au diagnostic et les aides à la décision, sujettes à l’explosion combinatoire et qui doivent s’améliorer sans cesse en fonction du retour d’expérience, les logiciels d’aide à la configuration de machines complexes
    • les didacticiels, puisqu'un système expert raisonne sur une vraie connaissance lisible par tous et peut expliquer pas à pas son raisonnement …jusqu'à signaler les contradictions !
    • les logiciels constamment évolutifs, car la maintenance est le problème n° 1 de l'informaticien contrairement à la Maïeutique qui s'en charge facilement puisque tout est écrit en clair
    • le diagnostic de panne, un domaine à part où la logique est reine avec l'utilisation de la "contraposée", un raisonnement très puissant.


    JEAN-PHILIPPE DE LESPINAY



    BIBLIOGRAPHIE
    • Article Science et Vie mai 1991 : "Du zéro pointé au Zéro Plus" de Jean-Philippe de Lespinay, Science et Vie mai 1991
    L’IA raisonnante Automates Intelligents (déc 2008) :
    Les centres d’appels et le Conversationnel
    • Définition de l'IA et du système expert chez Larousse
    Joséphine 28/01/87
    Joséphine opérationnel ? Oui, mais…
    Les Echos du 11 juillet 1986
    • Ouest France, Miao, (diagnostic de panne)