23 octobre 2011

Je me demande ce qu'il est devenu aujourd'hui


Il a sa main posée sur mon épaule, nos regards sont rivés l'un à l'autre, je vois dans ses yeux qu'il sait qu'il va mourir...

C'était une fin d'après-midi ensoleillée.
Mais revenons au début de cette journée particulière.

8h du matin, nous sommes réunis dans la cour de la caserne. Nous sommes en treillis militaire. C'est la 4e fois que l'on change de tenue aujourd'hui, depuis notre réveil de 5h du matin... Le gradé nous annonce que nous allons faire un exercice important aujourd'hui et que nous n'avons pas droit à l'erreur. D'un air grave, il nous dit: "Nous allons vous apprendre à utiliser des armes NBC! Transmetteur Zythom, pouvez-vous rappeler à la section qu'est-ce que ça veut dire?"

Moi: "Heu, N pour Nucléaire, B pour Bactériologique et C pour Chimique. Heu, mon Adjudant!"

Lui: "Et savez-vous ce qu'ANP signifie, transmetteur Zythom?"

Moi: "Heu, A pour Acide, N pour Nucléique, P pour Peptidique, mon Adjudant?"

Lui: "Mais non, ignorant inculte, c'est un Appareil Normal de Protection !!! Je vous présente votre meilleur ami pour aujourd'hui, l'ANP M51. Le caporal Desann va vous montrer comment le mettre et le replier."

Et pendant toute la matinée, nous avons appris à déplier ce masque à gaz (anti gaz) de sa sacoche, à le mettre sur le visage, à le retirer et à le replier.

A ce stade du récit, je dois faire une parenthèse qui concerne un des hommes de ma chambrée, un certain Binks. Binks était un brave gars, mais un peu simplet. Il ne savait pas faire son lit, il n'arrivait pas à apprendre le pliage des draps et des couvertures. Il riait fort, mais agaçait beaucoup des hommes de ma chambrée car à cause de lui, nous étions souvent punis. C'était un peu notre Santiago à nous. Incapable de comprendre le principe de la ligne de mire, il tirait à plus de 20m de la cible sous la surveillance stressée des gradés. Les séances de montage/démontage des armes étaient un supplice pour lui, et l'objet de fréquentes punitions, car il était incapable de remonter quoi que ce soit.

En tant que chef de chambrée, j'étais responsable de Binks. J'avais très vite décidé de le mettre de côté quand nous préparions la chambre pour l'inspection et nous rangions son armoire et son lit pour lui. Un brave gars quand même. J'ai du le protéger un peu plus quand le bruit a couru dans la section que si une personne se suicidait dans une chambre, toute la chambrée était réformée... Certains auraient bien voulu le voir "sauter" par la fenêtre. Une brave chambrée quand même...

Binks n'était pas très adroit de ses mains, ni très agile dans sa tête. Je le regardais plier son masque à gaz pendant l'exercice et je voyais bien qu'il n'y arrivait pas. Avant qu'il ne soit puni à faire des pompes qu'il n'arrivait pas à terminer, je me suis rapproché de lui. Nous avons fait les exercices ensemble, et je pliais son masque à gaz après avoir plié le mien.

Ceci explique pourquoi, lorsque les gradés ont demandé à ce que l'on se mette par deux, il m'a accroché le bras en me disant: "avec toi". L'exercice consistait à mettre le masque à gaz sur la figure, à retenir son souffle, à dévisser le filtre et à le brandir en l'air, puis à le revisser sur son masque.

Tout le monde connait la difficulté que l'on a, à réinsérer un filetage dans un trou taraudé, surtout quand le dit trou se trouve sous votre menton sans pouvoir le regarder. Autant dire mission impossible pour Binks...

L'exercice dura une bonne heure, à l'extérieur, sous un soleil de plomb qui nous faisait transpirer sous nos treillis et nos ANP. Je crois bien ne jamais avoir vu Binks réussir à revisser son filtre une seule fois. Il respirait donc lourdement l'air chaud ambiant, après seulement quelques secondes, car il ne savait pas retenir son souffle très longtemps.

L'adjudant nous a alors réuni par chambrée pour nous décrire l'exercice final. Il s'agissait d'entrer dans une pièce enfumée avec nos ANP sur le visage. Une fois à l'intérieur, portes fermées, nous devions retirer nos filtres, les brandir en l'air, attendre que tout le monde soit prêt, et au signal, les échanger avec notre binôme avant de les revisser en place et de pouvoir à nouveau respirer.

"La fumée dans la pièce est du gaz lacrymogène, ça pique les yeux, mais vous devez faire comme si c'était mortel. Aujourd'hui des homme vont mourir!" lâche l'adjudant.

Nous entrons dans la pièce à la queue leu leu. L'un d'entre nous agite les bras et nous bouscule pour ressortir. Son masque était mal ajusté. Notre premier "mort" par les gaz.

Nous voici face à face par deux. Binks est devant moi. Il a sa main posée sur mon épaule, nos regards sont rivés l'un à l'autre, je vois dans ses yeux qu'il sait qu'il va mourir... Au top, nous enlevons nos filtres. Je vois Binks dévisser le sien, puis prendre une grande bouffée d'air, après avoir enlevé son filtre. Il est "mort" sur le coup.

Je me demande ce qu'il est devenu aujourd'hui.

18 octobre 2011

Une histoire simple et banale - Conclusion

Ce billet est la suite de celui-ci.
Cette série de billets commence avec celui-ci.

Ce billet conclut cette petite série que j'ai pris plaisir à écrire. Il y avait longtemps que je souhaitais vous raconter un peu plus en détail le déroulement complet d'une expertise, comme si vous y étiez.

Les leçons que j'ai essayées de vous faire tirer de cette série de billets sont les suivantes:
- l'expert ne doit donner son avis que sur les questions qui lui sont posées. Dans certains cas, les magistrats élargissent un peu le périmètre avec des missions plus générales, ce qui était le cas ici avec "donner tout élément utile à la manifestation de la vérité". Il est toutefois délicat de donner un avis basé "simplement" sur une expérience personnelle, qu'il est difficile de justifier scientifiquement.

- en choisissant une histoire où un "gros" essaye de faire payer un "petit", qui en plus est son client, j'ai essayé de vous montrer que les sentiments personnels, les opinions politiques ou une certaine vision du monde, n'ont pas leur place lorsqu'un magistrat vous demande votre avis. Vous devez lui fournir tous les éléments techniques à votre disposition pour l'éclairer. C'est lui le juge, pas vous. Et c'est souvent difficile. C'est d'ailleurs à mon avis l'un des rôles les plus importants des avocats lors de l'expertise: s'assurer que l'expert donne un avis objectif et technique sans sortir de son rôle.

- le savoir faire réellement technique n'est en fait qu'une petite partie de l'expertise. Ce n'est pas pour rien que j'ai intitulé cette série "une histoire simple et banale": simple car la partie technique est facilement accessible (une base de données), et banale car on est loin de l'ambiance technophile des experts judiciaires de l'univers cinématographique ou télévisuel. La plupart des actions entreprises par l'expert judiciaire sont affligeantes de banalités. Un expert judiciaire, ce n'est pas un super spécialiste hyper pointu en sécurité des systèmes d'informations, c'est un ultra généraliste (en informatique) qui a en général beaucoup d'heures de vol. Cela explique parfois les reproches qui me sont remontés sur des confrères du genre "mais cet expert est nul, il ne sait même pas faire une injection SQL!!" (mes contacts sont suffisamment gentils pour ne pas me faire ce type de reproches directement ;-). C'est souvent une question de confrontation de générations. J'ai personnellement rarement vu (mais cela existe) un jeune informaticien qui soit un excellent généraliste, alors que j'en ai vu beaucoup qui soient de super bons spécialistes.

- les avocats ne sont pas des adversaires. Il faut comprendre leur métier, leur rôle de conseil auprès de leur client et écouter les remarques qu'ils ont à faire. Il faut bien sur rester sur le terrain technique, votre domaine, mais se laisser un peu emmener sur le terrain juridique, surtout s'ils sont de bons guides. Il faut les laisser faire leur travail, et en général ils vous laisseront faire le votre. C'est vrai que l'expert judiciaire est un peu seul face aux parties. Je rêve d'ailleurs d'un système où l'expert serait assisté d'un avocat. C'est, par chance, mon cas... Je dois dire que c'est surtout parce que c'est aussi faire le constat que la justice française ne dispose pas de moyens suffisants pour remplir sa mission. Bien sur, tant que vous n'êtes pas concernés, vous vous en fichez un peu, mais le jour où vous y aurez à faire... Néanmoins, en tant que citoyen, je serais prêt à travailler gratuitement pour la justice, si par contre l'Etat me donne accès aux outils logiciels adaptés aux missions que la justice me confie.


Alors certains vont me demander la décision finale du tribunal dans l'affaire éditeur de ERP/PGI c/ ARRAKIS et CORRINO. Je sens que je vais les décevoir, car la mission de l'expert judiciaire s'arrête lorsqu'il dépose son avis sous forme de rapport. Il n'est pas tenu au courant des suites données à l'affaire. Je crois savoir que parfois cela vaut mieux pour lui car les avocats ne sont pas nécessairement tendres avec un rapport qui leur est défavorable... Bien sur, il est possible de contacter le greffe au bout d'un certain temps pour savoir si l'affaire est terminée et savoir quelles ont été les décisions prises. J'aimerais toujours connaître l'avis du magistrat qui a lu mon rapport, savoir s'il l'a trouvé clair, et en discuter avec lui. Mais le système ne fonctionne pas comme cela. C'est parfois dommage, et toujours un peu frustrant. J'espère partager ici un peu de ma frustration ;-)

J'aime pourtant à croire que le "gros" éditeur de ERP/PGI s'est fait débouter de toutes ses demandes, que les sociétés CORRINO et ARRAKIS continuent de travailler en bonne intelligence et que M. Leto conserve une sauvegarde sans limite de temps avant et après chaque migration importante.

14 octobre 2011

Dennis MacAlistair Ritchie


J'ai commencé la programmation sur un IBM 5100 prêté par un parent d'élève à notre petit club d'informatique de lycée, en 1979... Le professeur de Maths qui nous encadrait bénévolement pendant la pause déjeuner nous avait initié à l'algorithmique sur un problème de réduction de fractions entières. La programmation s'effectuait en BASIC.

Parallèlement, je découvrais comme beaucoup de jeunes de cette époque les joies de la programmation en assembleur sur ma calculatrice, une TI57.

Puis, après avoir travaillé un mois l'été, j'avais réussi à m'acheter un vrai ordinateur, un TRS-80 modèle I muni de 16Ko de mémoire vive. L'année suivante, je travaillais encore un mois pour m'offrir l'extension mémoire 48Ko...

Je venais d'avoir mon bac, et je découvrais les joies de l'informatique personnelle et ses logiciels perfectionnés: Wordstar, VisiCalc, Moonbase Fallout...

Ma véritable initiation aux langages évolués viendra en école d'ingénieurs avec Pascal, Fortran, Lisp et Smalltalk.

Finalement, je ne découvrirai le langage C que pendant mon doctorat, parallèlement (si je puis dire) au langage Occam. Tous mes travaux de recherche se sont fait avec l'aide de ces deux langages.

Mais la maîtrise véritable des subtilités du langage C, et la découverte de son histoire, ne viendra que lorsque j'ai eu la charge de l'enseigner à mon tour en école d'ingénieurs. Utiliser un langage de programmation, c'est une chose, préparer un cours pour l'enseigner, puis affronter les questions des étudiants en TP, c'est une autre chose. J'ai passé cinq années très riches sur ce sujet, en me creusant la tête chaque année sur la meilleure manière de faire passer les concepts de pointeurs à des étudiants non informaticiens. J'ai pris les exemples les plus simples, les comparaisons les plus claires possibles, j'ai travaillé les sujets de TP pour qu'ils soient progressifs et didactiques. J'ai usé ma salive, mes cordes vocales, mon énergie pour que 100% de mon amphithéâtre maîtrise les concepts, et pas seulement les deux premières rangées, toujours attentives. J'ai menacé, tempêté, félicité, encouragé, noté, dénoté, soutenu, maintenu, poussé mes étudiants pour qu'ils restent concentrés, qu'ils perçoivent la magie de la programmation, la joie de la réussite à faire fonctionner un programme complexe.

La vie m'a ensuite écarté de ces joies et peines de l'enseignement. Je n'ai pas beaucoup pratiqué la programmation, en tout cas plus dans des conditions aussi stimulantes. J'ai à peine effleuré la programmation orientée objet. Un peu de php, un zeste de python, un doigt de html, xml, et autres joyeusetés.

Je suis resté bloqué sur l'époque du langage C.

C'est pourquoi j'ai aujourd'hui une pensée émue pour les proches de Dennis MacAlistair Ritchie qui nous a quitté ce 8 octobre 2011.

#include <stdio.h>
int main(int argc, char ** argv) {
printf("Goodbye World\n");
return (EXIT_SUCCESS);}


------------------------
Source photo: Wikipédia.

10 octobre 2011

Une histoire simple et banale 7e partie

Ce billet est la suite de celui-ci.
Cette série de billets commence avec celui-ci.

La date butoir indiquée aux parties est arrivée, toutes m'ont adressées des critiques conclusions dires dans les temps. Il me faut maintenant entreprendre la rédaction du rapport final.

Je commence logiquement par les réponses à chaque dire que je numérote. Pour le présent exercice, je vais prendre les dires dans l'ordre d'arrivée:


1) Maitre Stéphane:
"Mission 5 dernier paragraphe:
"La société CORRINO n'a pas effectué cette dernière partie du paramétrage".
Vous ne pouvez pas l'affirmer, le service technique de ARRAKIS aurais très bien pu changer les droits après l'installation de CORRINO (même si ce n'est probablement pas le cas).
"

Réponse de l'expert:
Je reconnais qu'il s'agit d'une pure conjecture de ma part. Je supprime la phrase suivante de mon rapport final:
"La société CORRINO n'a pas effectué cette dernière partie du paramétrage, probablement à cause d'une maîtrise technique fragilisée par le changement de logiciel pendant la prestation (le logiciel ERP est devenu PGI)."


2) Maitre Anonyme/Voyou:
"Comme vous l'avez constaté par vous-même, le logiciel n'a pas été installé selon les licences acquises. Nous souhaitons donc que la société xxx paye les licences correspondantes à l'installation qui a prévalue jusqu'à notre intervention."

Réponse de l'expert:
Contrairement à votre affirmation, je n'ai pu faire le constat du défaut d'installation à la date de la réception du logiciel. J'ai simplement constaté, à travers les sauvegardes du système, qu'une année après la recette, les licences n'étaient pas en conformité avec les droits acquis. La cause de cette mauvaise configuration n'a pas pu être établie.

Je complète mon pré-rapport en remplaçant la phrase suivante:
"A mon avis, l'éditeur du logiciel ERP/PGI n'a subi aucun préjudice, malgré le mauvais paramétrage du logiciel par la société CORRINO, paramétrage corrigé dès qu'il a été signalé."
par la phrase ainsi rédigée:
"A mon avis, l'éditeur du logiciel ERP/PGI n'a subi aucun préjudice, malgré le mauvais paramétrage du logiciel par la société CORRINO constaté dans la sauvegarde la plus ancienne (date), paramétrage corrigé dès qu'il a été signalé (date signalement)."

Je complète également mon pré-rapport en ajoutant le paragraphe suivant à la fin de ma réponse à la mission n°5:
"Le mauvais paramétrage du logiciel peut donc être le fait de la société CORRINO, sans que je puisse en apporter la preuve formelle. Ce mauvais paramétrage peut tout aussi bien être le fait de la société ARRAKIS, bien qu'aucune trace d'usage des droits supplémentaires ainsi acquis n'ait pu être trouvée. Le mauvais paramétrage pourrait être causé par le manque de précision des indications fournies par l'éditeur du logiciel lors du remplacement d'ERP par PGI (voir documents d'installation fournis en annexe X). Enfin, une intrusion dans le système informatique par un tiers pourrait également être envisagée, même si aucune trace n'a été découverte."


3) Maitre Mister K.
"Comme indiqué dans le rapport, les traces obtenues ne permettent pas d'écarter une utilisation des fonctions liées aux droits de niveau 1.
D'autre part, le fait que lesdites fonctions aient été utilisées ou non n'enlève rien au fait que l'installation trouvée chez ARRAKIS viole clairement la licence qui lui a été accordée.
A ce titre, nous exigeons une mise à niveau rétrospective de la licence majorée par les frais de traitement liés à ce dossier.
"

Réponse de l'expert:
Le préjudice est le dommage qui est causé à autrui d'une manière volontaire ou involontaire. Dans son ouvrage intitulé "L'expertise judiciaire en informatique de gestion", Jean-Marie Breton et Edouard Piégay écrivent au chapitre 5 "Préjudices et réparations": L'expert judiciaire constate des dommages ou désordres survenus (ou prétendus) dans des installations ou dans des matériels ou des données ou des programmes informatiques. Il peut aussi constater l'inexistence des dommages ou désordres allégués par une ou plusieurs parties.
A la page 69, les auteurs rappellent que "l'expert ne doit pas qualifier juridiquement un fait car il pénétrerait dans le domaine du juriste". C'est pourquoi dans le présent rapport, je me contente de présenter des faits informatiques et de donner mon avis.
Cet avis est que l'éditeur du logiciel ERP/PGI n'a subi aucun préjudice.


4) Maitre Orobas/Shaddam:
"Votre analyse fait totalement l'impasse sur les aspects techniques et les difficultés rencontrées par les ingénieurs et les techniciens de la société Corrino lors de la transition du logiciel ERP vers le logiciel PGI.
Il me semble pourtant évident que lors de cette transition, des problèmes de compatibilité entre les différentes versions ont pu apparaitre.
Dans ces conditions, il est possible que certaines fonctions qui devaient être accessible à un utilisateur de niveau 2, n'étaient accessible que pour les utilisateur de niveau 1. On peut encore supposer que lors de la transition, les utilisateurs de niveau 2 avaient des problèmes de stabilité que la société Corrino ne pouvaient résoudre du fait de la faible quantité d'information distillé par la société éditrice du logiciel PGI
Il appartient donc à la société éditrice de PGI de prouver que lors de la transition, elle a correctement informé les techniciens et ingénieurs de la société Corrino afin de leur permettre de correctement paramétrer le logiciel PGI.
"

Réponse de l'expert:
Vous faites l'hypothèse de problèmes de stabilités qui n'ont pas été établis de manière contradictoire lors des réunions d'expertise. Je ne saurais en tenir compte.
Concernant les informations données par l'éditeur du logiciel ERP/PGI concernant le paramétrage des droits, le point a été abordé en réunion d'expertise à travers les documents fournis par l'éditeur (voir annexe X) qui me semblent clairs pour un informaticien.
De plus, la société CORRINO produit une brochure publicitaire à ses futurs clients (voir annexe X), brochure dans laquelle elle met en avant la qualification avancée de ces équipes sur les logiciels ERP/PGI, ainsi que leurs formations continues sur ces produits. Je ne peux donc les considérer comme inexpérimentés sur l'offre logicielle concernée.


5) Maitre Scif:
I) "Au point 2) vos termes semblent reprocher à ma cliente d'avoir fait évoluer son logiciel pour mieux répondre aux besoins des utilisateurs. En sa qualité de sachant il appartenait à la société CORRINO de se tenir informée de ces évolutions techniques. Je vous prie donc de bien vouloir préférer une formulation plus appropriée."

Réponse de l'expert:
Je ne fais que rapporter des propos tenus par la société CORRINO de manière contradictoire en réunion d'expertise. Par ailleurs, la société CORRINO a indiqué avoir privilégié le respect des délais dans le projet d'informatisation de la société ARRAKIS, plutôt que de tout stopper pour aller se former sur le nouveau logiciel PGI.
Je maintiens la formulation utilisée dans le paragraphe concerné.


II) "Au point 3), vous retiendrez que la société ARRAKIS a directement méconnu la licence qui lui a été octroyée. Vous retiendrez donc sa responsabilité conjointe et solidaire à l'égard de ma cliente avec la société CORRINO."

Réponse de l'expert:
Le contrat de prestation mentionne que la société CORRINO assure l'installation du logiciel ERP et effectue une recette en présence de la société ARRAKIS sur des jeux d'essai fournis par cette dernière (et à défaut sur des jeux d'essais standards fournis par le prestataire CORRINO). Il n'est nul part fait mention d'une vérification par la société ARRAKIS de la conformité de l'installation aux licences acquises. L'installation dans les règles de l'art en la matière est implicite et à la charge seule de la société CORRINO.


III) "Au point 4) je m'étonne que vous ne reteniez aucun préjudice au motif de l'absence d'utilisation effective des droits. Je vous rappelle qu'une licence logiciel ne porte que sur des droits d'utilisation, indépendamment de l'usage qui en est fait ; droits d'utilisation dont a effectivement bénéficié la société ARRAKIS au détriment de ma cliente indépendamment de toute faute de celle-ci. Vous évaluerez - à tout le moins à titre d'élément d'appréciation quand bien même vous ne proposeriez pas au tribunal de le retenir - donc le préjudice en prenant pour référence la tarification commerciale de ma cliente. Vous évaluerez également le préjudice moral, le préjudice d'image, le préjudice financier et le préjudice d'agrément. Je vous prie de bien vouloir d'ores et déjà trouver ma note d'honoraires d'un montant de 24 867 euros que vous intégrerez à l'évaluation du préjudice de ma cliente."

Réponse de l'expert:
Je vous renvoie à la réponse que je fais au dire n°3 que je reproduis ici pour faciliter la lecture:
Le préjudice est le dommage qui est causé à autrui d'une manière volontaire ou involontaire. Dans son ouvrage intitulé "L'expertise judiciaire en informatique de gestion", Jean-Marie Breton et Edouard Piégay écrivent au chapitre 5 "Préjudices et réparations": L'expert judiciaire constate des dommages ou désordres survenus (ou prétendus) dans des installations ou dans des matériels ou des données ou des programmes informatiques. Il peut aussi constater l'inexistence des dommages ou désordres allégués par une ou plusieurs parties.
A la page 69, les auteurs rappellent que "l'expert ne doit pas qualifier juridiquement un fait car il pénétrerait dans le domaine du juriste". C'est pourquoi dans le présent rapport, je me contente de présenter des faits informatiques et de donner mon avis.
Cet avis est que l'éditeur du logiciel ERP/PGI n'a subi aucun préjudice.


IV) "Au point 5), je partage vos regrets quant au fait que les sociétés ARRAKIS et CORRINO n'ont, indépendamment de ma cliente, victime, pas conservé les éléments nécessaires pour se dégager de leur responsabilité."

Réponse de l'expert:
Je n'ai pas de réponse particulière à faire à ce dire.


V) "Toujours au point 5), vous faites état de pratiques courantes des utilisateurs de logiciels pour des motifs de confort en semblant justifier de telles pratiques, sans prendre en considération le point de vue des sociétés éditrices. Je vous rappelle que les licences accordées par ma cliente ne permettent pas d'accorder temporairement des droits supplémentaires à un utilisateur. Ma cliente est ouverte à négocier l'ouverture de tels droits temporaires contre une rémunération destinée à couvrir ses frais ; aucune démarche n'a cependant en l'espèce été entreprise en ce sens par les sociétés CORRINO et ARRAKIS. Je vous prie d'envisager la possibilité de retirer ce passage du rapport définitif."

Réponse de l'expert:
Je n'affirme pas que la société CORRINO a pu procéder de la sorte, puisque la réunion d'expertise technique n'a pas pu prouver de telles pratiques. Je ne fais que présenter un avis basé sur mon expérience personnelle.
Mon rapport reste inchangé sur ce point.


Le rapport est ensuite imprimé dans sa version définitive, en autant d'exemplaires que de parties, plus deux pour le tribunal (et un pour moi).

Les annexes citées dans le rapport sont imprimées et numérotées. Les autres sont numérisées sur un cédérom joint à chaque exemplaire.

Chaque rapport est relié et relu pour vérifier qu'il ne manque aucune page. Je signe chaque exemplaire.

Les rapports sont envoyés en recommandé avec avis de réception. Chaque envoi est assorti d'un courrier d'accompagnement adapté. J'adresse le rapport directement aux sociétés car parfois celles-ci sont en froid avec les avocats que j'ai rencontrés lors des réunions d'expertise. J'adresse néanmoins un courrier (en RAR également) par courtoisie aux avocats pour qu'ils sachent que leur cliente (et le tribunal) vont recevoir mon rapport final.

L'envoi du rapport final au tribunal me sort du procès en cours. Je deviens la cible des sociétés mécontentes de mon travail et/ou de mon avis, mais je ne le saurai pas, sauf convocation par le tribunal (ce qui ne m'est jamais arrivé).

J'adresse enfin ma note de frais et honoraires au tribunal.

Le prochain billet sera est la conclusion de cette série.

04 octobre 2011

Minimisation

Je vous ai déjà raconté que j'avais débuté ma carrière comme chercheur en intelligence artificielle. Tout au long de ces cinq années de travail passionnant, j'ai été encadré par un chercheur de très haut niveau, qui a été mon mentor et pour moi un exemple à suivre.

Il m'a vu arriver au laboratoire, alors que j'étais fraichement diplômé de mon école d'ingénieurs, la tête pleine de concepts mal digérés. Il m'a dit: "tu ne sais rien, tu as tout à apprendre, à commencer par les bases..." J'ai encaissé, mais j'ai immédiatement compris qu'il avait raison, sans savoir que je venais de passer un test décisif à ses yeux: la modestie indispensable du chercheur.

Alors, j'ai recommencé par le commencement. Mon univers de recherche s'intéressait à la modélisation non linéaire. J'ai commencé par apprendre ce qu'était réellement la notion de modèle par rapport à la réalité physique. Puis j'ai appris que les outils mathématiques à la disposition des automaticiens étaient très développés dans le domaine linéaire, et que la pratique courante lorsque l'on fait face à un comportement non-linéaire était de linéariser le problème en l'étudiant autour d'un point de fonctionnement. Pratique lorsque cela a un sens, complètement imbécile si l'on doit linéariser en permanence dans des espaces d'états complexes fortement non linéaires.

Et c'est là que j'ai commencé à découvrir que dans l'univers de la recherche, il y a beaucoup de chercheurs qui publient des articles qui s'avèrent être des imbécilités sans nom. Le filtre des patrons de laboratoire, puis celui des comités de lecture des revues scientifiques spécialisés, ne sont pas suffisant pour écarter des études mal menées par non compréhension des outils utilisés.

Cela s'est avéré comique dans mon domaine spécifique, celui des réseaux de neurones.

Sans entrer dans le détail, les réseaux de neurones sur lesquels je travaillais sont constitués de cellules faisant chacune une somme pondérée des signaux se présentant à leurs entrées, somme qui est ensuite transformée par une fonction d'activation (une sigmoïde dans mon cas), résultat qui est ensuite envoyé par chaque cellule à toutes les entrées des neurones qui lui sont connectés.

L'ensemble "cellule + fonction d'activation + entrées + coefficients de poids des entrées" est un (modèle simplifié de) neurone. En assemblant plusieurs neurones, en sélectionnant des entrées et des sorties particulières, vous obtenez un réseau de neurones.

Le fonctionnement de l'ensemble consiste à injecter certaines valeurs aux entrées du réseau et à observer les sorties calculées par le réseau.

L'apprentissage du réseau consiste à essayer de calculer les coefficients du réseau (les poids des connexions entre cellules) pour que, pour certaines valeurs présentées en entrée, vous obteniez certaines valeurs en sortie.

Par exemple, lorsque les entrées du réseau sont des valeurs de pixels d'une image, les sorties peuvent coder le nom d'un objet, d'une personne ou d'un nombre (la reconnaissance automatique des codes postaux par ex). Autrement dit, on cherche à reproduire ce que notre cerveau fait très simplement, très rapidement, avec un nombre de "calculateurs" très simples mais très élevés et massivement parallèles.

Tous les matheux comprendront que dans le cas trivial d'une fonction de transfert "identité", le réseau de neurones est un système linéaire et qu'essayer de trouver les coefficients permettant de mettre en correspondance des couples {entrées, sorties} prédéterminés revient à minimiser l'écart entre la mesure constatée et la cible visée. Dans le cas linéaire, la méthode des moindres carrés permet de minimiser l’impact des erreurs expérimentales. On cherche à minimiser une fonction de coût qui est simplement la somme des carrés des écarts entre valeurs mesurées et valeurs de sortie ciblées. Cette fonction est une quadrique dans le cas linéaire, et son minimum peut être calculé immédiatement.

Dans le cas général d'un réseau non linéaire, la fonction de coût (non linéaire) peut être approchée par une fonction plus simple dont on cherchera à chaque itération un jeu de coefficients plus "efficace" (ie faisant baisser la fonction de coût).

Plusieurs approches sont intéressantes: approximation par un hyperplan (linéarisation) ou approximation par une quadrique. Pour illustrer dans le cas monodimensionnel d'un réseau à un seul neurone à une seule entrée (avec donc un seul coefficient), la fonction de coût est la somme des carrés des écarts entre les sorties mesurées et les sorties désirées, sa minimisation consistant à la remplacer autour de la valeur actuelle du coefficient par une droite ou par une parabole.

Dans le cas de l'hyperplan, vous vous déplacez dans l'espace des coefficients d'un "pas" dans le sens de la plus grande pente.

Dans le cas de la quadrique, vous vous placez dans l'espace des coefficients immédiatement sur le minimum calculé (on sait calculer le minimum d'une quadrique).

Mais comme il s'agit d'une diminution supposée de la vraie fonction de coût remplacée par son approximation, il faut s'assurer de la baisse réelle et recommencer jusqu'à se trouver sur un endroit de l'espace des coefficients correspondant à un minimum.

Dans un espace monodimensionnel, un extrémum correspond à une dérivée nulle. Pour déterminer s'il s'agit d'un minimum (et non pas d'un maximum), il faut calculer la dérivée seconde et s'assurer qu'elle est positive.

Dans le cas pluridimensionnel, on parle de "gradient" nul, et de matrice Hessienne définie positive.

La méthode de minimisation la plus utilisée dans l'univers des réseaux de neurones est la descente à pas constant, dite aussi méthode du gradient: approximation de la fonction de coût par un hyperplan et déplacement dans l'espace des coefficients dans le sens de la plus grande pente (le sens opposé au vecteur gradient) d'un "pas" constant.

Le problème de cette méthode numérique d'optimisation est qu'elle peut être très gourmande en temps de calcul. En effet, plus on s'approche du minimum, plus la fonction à un gradient faible, et plus le déplacement sera petit. Autrement dit, plus on s'approche du minimum, et moins on s'en approche rapidement...

J'ai donc étudié une autre méthode d'optimisation bien connue, celle dite de Quasi Newton et en particulier la méthode implantée par Broyden-Fletcher-Goldfarb-Shanno où l'on calcule par itération la matrice inverse de la matrice hessienne. Cette méthode possède une vitesse de convergence bien supérieure à la méthode de gradient à pas constant, vitesse de convergence connue depuis des lustres par les informaticiens spécialistes des algorithmes d'optimisation numérique.

Mais un certain nombre de chercheurs confirmés, à l'époque où je préparais ma thèse, semblaient méconnaître les propriétés de ces algorithmes, et en particulier la lenteur de la méthode de gradient à pas constant. Ou s'ils la connaissaient, ils arrêtaient leurs calculs en tout cas beaucoup trop tôt. J'ai pu reproduire certains des problèmes posés dans leurs articles en trouvant des solutions bien meilleures, parfois même en contradiction avec leurs conclusions, simplement parce que je m'étais intéressé à un domaine que je ne connaissais pas: les méthodes d'optimisations numériques.

Alors maintenant, lorsque je lis les conclusions d'un chercheur, même de haut niveau, même avec une équipe derrière lui, je reste prudent en me demandant s'il maîtrise bien toute la chaine technique qui l'a amené à ses conclusions. A-t-il utilisé la bonne méthode d'optimisation, a-t-il utilisé les outils mathématiques en respectant leurs conditions d'usage (conditions initiales, espaces affines et non pas linéaires, erreurs liées à la discrétisation numérique...). Autant d'erreurs de débutants qui peuvent passer inaperçues.

Et parfois je suis encore surpris aujourd'hui, surtout dans des domaines qui ne sont pas les miens, et que j'aborde avec modestie et humilité, de voir des soi-disant experts se prendre les pieds dans le tapis sans s'en rendre compte...