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

18 commentaires:

  1. J'ai fait plein d'efforts mais j'ai pas tout compris hein... Mais bon, je crois que j'ai compris l'essentiel : faut pas croire tout ce qu'on raconte, même si ça a l'air très bien étudié par des gens beaucoup plus intelligents ;)

    RépondreSupprimer
  2. Euhhh, a vos souhait....

    je complèterais le résumé de Naiezdnitsa par :" plus la phrase énoncée est complexe et torturée plus le nombre de personne pensant que cela est vrai va augmenter".

    Chaque corps de métier à son langage propre et secret histoire d'éviter que les non initiés ne comprennent et ne relèvent les incohérences des démonstrations.

    RépondreSupprimer
  3. Oui, les chercheurs et l'informatique, ça fait bien deux ^^'

    Je me souviendrais toujours d'un prof de DUT qui nous racontait avoir fait son stage à l'IFREMER. Le sujet de son stage portait sur des données issues d'un satellite qui, en recoupant deux mesures effectuées selon des angles différents, permettait le calcul de la profondeur de l’océan. Son tuteur, cador en math et un peu programmeur sur les bords, avait tenté de bricoler un programme pour faire ses calculs sur une petite zone de l'Antarctique ... seulement, après avoir monopolisé le super-calculateur de l'époque pendant 15 jours (avec les dérogations qui vont bien pour ne pas effectuer de maintenance), le programme n'avait toujours pas réussi à calculer les données. Lorsque le stagiaire est arrivé, il a mis le nez dans son code et y a vu des choses complétement aberrantes. Au final, après quelques semaines de travail, le programme final tournant sur un PC normal de l'époque arrivait à calculer les données sur toute la planète en moins d'une heure.
    Plutôt impressionnant ^^'

    RépondreSupprimer
  4. Heu...... comment dire ?
    J'ai parcouru les liens wikipedia fournis, mais ça m'a pas beaucoup aidé.....
    On sent que ça vous manque, ce genre de choses.

    RépondreSupprimer
  5. C'est tellement vrai. J'ai vu des chercheurs à fond sur le domaine théorique (et pas uniquement dans les maths) se planter complètement quand on passe à la pratique.

    Bien souvent, on se rend compte que tout un chacun travaille sur des voies involontairement limitées. Et puis un jour, on discute avec d'autres personnes du même domaine que vous, mais avec un tout autre bagage.

    Monoculture, et cætera.

    RépondreSupprimer
  6. Bonjour, cela m'a rappelé le temps ou j'avais écrit un programme d'optimisation de circuits électroniques. Je me souviens de l'utilisation de methodes comme : "Gradiant", "Newton-Raphson", "Davidon-Fletcher-Powell", de l'ajout d'un peu d'aléatoire pour sortir des "trous bloquants", la première version tournait sur un CPC6128 écrite avec une des premières version de Turbo-Pascal.

    Maintenant j'utilise des programmes tout fait.

    RépondreSupprimer
  7. Zythom, vous me décevez. C'est dommage, vos billets sont généralement accessibles, et facilement compréhensibles.

    Je suis moi-même en thèse, et j'ai vu de l'intelligence articielle dans les cours de mon Master, et je trouve ce texte soit beaucoup trop détaillé, pour quelqu'un qui connait, les concepts sont triviaux ; soit pas assez si on se met à la place d'un néophyte.

    Je suis néanmoins totalement d'accord avec votre conclusion. Nombre d'article contiennent des points faux, et j'espère toutefois qu'ils sont écrits de bonne foi même si j'ai des doutes pour certains.

    Il faut aussi soulever l'existence de résultats contradictoire dans nombre de cas. Baser son interprétation sur une unique publication, c'est s'exposer au pire.

    RépondreSupprimer
  8. Je n'ai pas bien compris non plus l'explication. Désolé, je referai l'effort, car je suis persuadé que vous en avez fait un - conséquent - pour vulgariser. C'est le moins que je puisse faire.

    En revanche, à vous lire, je repense immédiatement à un récent fait d'actualité concernant des particules élémentaires qui auraient "dépassé la vitesse de la lumière" il y a quelques jours. Chose interdite par les théories d'Einstein... Et d'ailleurs ce résultat a été démonté par d'autres chercheurs quelques jours après.
    Est-ce cet événement qui vous a fait prendre la plume ? :)

    Bien à vous,
    Miko

    RépondreSupprimer
  9. Jacques-Marie Bichot5 octobre 2011 à 02:34

    Oui, pareil pour moi. Quelques mauvaises expériences analogues m'ont appris à examiner les écrits avec rigueur et vérifier dans le détail.
    Une anecdote. J'étais étudiant en école supérieure de commerce, tel le Zythom de base dans son école d'ingénieur et vers la même époque-ça-nous-rajeunit-pas-ma-bonne-dame.
    La mère d'une amie, médecin, m'explique qu'elle fait une étude scientifique et s'apprête à publier un article. Elle mentionne qu'elle tire des conclusions statistiques générales à partir d'un échantillon de 150 personnes.
    Oups ! Pour avoir un tant soit peu de valeur, l'échantillon minimal doit être au moins de 1.000, et encore, en prenant bien soin de sélectionner ses caractéristiques et de faire la chasse aux biais.
    Lorsque je mentionne cet aspect et lui démontre l'absence de rigueur et le risque élevé d'arriver à une conclusion fausse, elle me rétorque : "Pfff, tant pis. Je ne vais pas refaire la rédaction... Pis 1000, c'est trop de travail. Ca ira bien."
    Depuis ce temps, je décortique pas à pas les méthodes employées, tant dans ma vie professionnelle que pour ma culture personnelle.
    Je ne compte plus les rapports biaisés, les études fausses ou les conclusions superficielles que j'ai évitées.
    Selon les perceptions de mon entourage et ses intérêts particuliers du moment, je passe pour le pinailleur ou pour celui dont les sources sont fiables.

    RépondreSupprimer
  10. Désolé mais ma prépa et mon école d'ingé commencent à dater... J'ai décroché au deuxième paragraphe. Je retourne à mes requêtes SQL... Fait pas bon vieillir ;-)

    RépondreSupprimer
  11. On redécouvre ça en médecine avec les effets secondaires de l'affaire mediator et le retour de l'esprit critique vis à vis des leaders d'opinion. Et ça fait mal, à beaucoup de points de vues...
    NP

    RépondreSupprimer
  12. Un rapport avec les neutrinos supraluminiques ? ;-)

    Le souci est la nécessité pour le chercheur d'apprendre constamment. Bien plus que de recherche, le métier de chercheur est un métier d'apprentissage. Malheureusement, c'est très difficile à comprendre pour les technocrates omniscients qui décident du fonctionnement des institutions.

    Auparavant, c'est sans doute la volonté d'apprendre et la capacité à sortir du cadre strict de son sujet de recherche pour approfondir les points obscurs et/ou l'humilité à chercher conseil (ou plus) auprès de spécialistes qui permettaient de distinguer le bon chercheur du mauvais chercheur.

    Aujourd'hui, et c'est de pire en pire, le chercheur est entravé : coincé entre d'un côté les tâches administratives et les demandes de financement, et de l'autre l'obligation de résultat et l'évaluation à la publication, il n'est plus possible (ou en tout cas c'est très difficile, sauf à avoir de la main d'œuvre maléable ou à sacrifier sa carrière ou sa vie familiale) pour le chercheur de trouver du temps pour apprendre et approfondir.

    RépondreSupprimer
  13. Bonsoir.

    Toutes ces recherches pour améliorer des méthode que peu de personnes maitrisent correctement.

    Personnellement c'est sur les algorithmes génétiques que j'ai fait chauffer mes neurones (les vrai).

    Je ne suis pas sur que mes résultats ont réussi à faire avancer le schmilblick.

    Finalement j'ai derrière un bureau dans une banque. La recherche me manque quand même un peu.

    Bravo pour vos articles.

    RépondreSupprimer
  14. Monsieur l'expert,
    Avocat de métier dans une branche du droit où le recours à l'expertise judiciaire est fréquente, je lis depuis peu votre blog dont j'ai eu connaissance via Eolas.
    Ceci est mon premier message chez vous.

    Alors que d'ordinaire, vous êtes d'une clarté remarquable pour un non technicien de l'informatique comme moi, je dois vous dire que là, j'ai décroché.

    D'autres vous l'ont dit mais aucun, d'où l'originalité de mon message, n'a émis l'hypothèse que ce soit sinon fait exprès, du moins conscient de votre part.

    Vous n'ignorez pas que de nombreux profanes en informatique vous lisent, à commencer par ma consoeur votre épouse.

    Ce qui me laisse à penser que ce soit fait volontairement, ou du moins sciemment, c'est l'image que vous avez choisie comme illustration : curieuse annonce de proposition de services de la part d'un prof de maths, qui rend, inutilement, difficile à comprendre un message qui est d'ordinaire très clair (n° de téléphone).
    En outre, pour réussir à déchiffrer ses coordonnées, il faut faire montre d'un niveau en maths tel, que le recours à des cours supplémentaires ne semble guère utile : quelqu'un qui arrive à déchiffrer çà a-t-il vraiment besoin d'améliorer ses compétences ?

    Bref, je voulais vous dire que s'il y avait un piège je ne suis pas tombé dans le panneau et que s'il n'y en avait pas, je suis sans doute parano.

    RépondreSupprimer
  15. Avec ce billet (comme souvent), je me suis fait plaisir: j'ai la nostalgie de mon activité de chercheur. Je n'ai pas essayé de vulgariser, j'ai donné des liens à suivre pour ceux que le sujet intéresse, et je me suis souvenu que les experts les plus pointus ne voient parfois que le bout de leurs chaussures.

    N'y voyez pas autre chose. Ce blog reste un plaisir pour moi, et aucunement un prolongement de mon passé d'enseignant-chercheur, je n'y publie pas de cours ni d'articles de vulgarisation.

    Ceci dit, si je gagne au Loto, je me remettrai volontiers à ces recherches, d'autant plus que je suis certain qu'il y a encore beaucoup à trouver.

    Je suis un adepte de Jeff Hawkins et de son livre "Intelligence". Je suis persuadé qu'un ingénieur plus futé que les autres arrivera à mettre le doigt sur ce qui nous rend intelligent et, alors, notre monde changera en profondeur, pour le meilleur et pour le pire.

    RépondreSupprimer
  16. C'est beau... on dirait du Jean-Claude Van Damme !

    Après avoir tout lu je me suis senti, comment dire, "to be aware", ouais c'est ça, "to be aware".

    Allez, juste pour le plaisir et apporter quelques précisions utiles pour mieux appréhender ce beau billet sur la Minimisation :
    http://www.bladi.net/forum/47809-philo-selon-jean-claude-to-be/

    RépondreSupprimer
  17. "Ceci dit, si je gagne au Loto, je me remettrai volontiers à ces recherches,..."

    ...et si vous vous y remettiez avant, à la recherche en intelligence artificielle, ça pourrait pas vous servir pour le Loto ?

    En tout cas, moi je vais apprendre par coeur quelques paragraphes de votre billet. Je suis sûr que je pourrais les placer, comme ça l'air de rien, à l'occasion d'un repas ou d'un cocktail, histoire de briller un peu en société !

    RépondreSupprimer
  18. Avec une année de retard :
    Ca me rappelle mes cours d'optimisation à l'école (beaucoup plus récent, j'ai 26 ans ! ;-) )
    Après avoir survolé la méthode des gradients et autre méthode plus complexe j'en ai retenu une chose : l'optimisation numérique, doit etre fait par des experts, c'est un métier. Bricoler dans un coin peut donner des résultats complétement faux ! L'exemple typique est le problème des discontinuité dans un modèle continu...

    RépondreSupprimer

Lectrice, admiratrice, avocate, magistrate, programmeuse, dessinatrice, chère consœur, femmes de tous les pays, lecteur, j'ai toute confiance en vous pour prendre bien soin de vérifier que votre prose est compatible avec les normes orthographiques et grammaticales en vigueur. Et si vous pouviez éviter les propos insultants ou haineux, je vous en serais reconnaissant.
N'hésitez pas à respecter ces quelques règles qui peuvent même s'appliquer en dehors de ce blog.

Les commentaires sur ce blog sont modérés. Votre message apparaîtra sur le blog dès que le modérateur l'aura approuvé. Merci de votre patience.