Quelques Idées sur le Concept d'Adaptation en Vision par Ordinateur

Définir l'adaptation.

La notion d'adaptation est absolument fascinante. C'est le concept à la fois le plus répandu dans les sciences de la vie ou de l'ingénieur et peut-être le moins bien défini des deux domaines. Et pourtant, il correspond à une idée très précise, facile à formaliser. 

De plus, dans les systèmes biologiques c'est exactement cette propriété d'adaptabilité qui permet à des sous-systèmes élémentaires (réflexes) de former des comportements élaborés ... et aux animaux de survivre !

Pour le dictionnaire, adapter veut dire changer un ``comportement'' pour lui permettre de réagir dans de nouvelles ``circonstances''. Plus précisément il y a deux acteurs: (1) l'objet, c'est à dire ce qui est adapté (c'est souvent un mécanisme, un instrument, un dispositif, un réflexe ou un comportement) et (2) le sujet, c'est à dire le mécanisme qui adapte.

Mais une telle définition n'est pas suffisante. Prenons, par exemple, le cas d'un animal qui change de conditions de vie. Il est clair qu'il doit ``adapter'' son comportement au nouvel environnement dans lequel il est plongé. C'est ce qu'il fera, mais à partir de ce qu'il savait déjà faire avant c'est à dire d'un modèle de référence. Bien sûr, ceci a lieu seulement si il y est obligé par une variation de son environnement. D'autre part, il le fera dans un but précis, sa survie en l'occurrence.

Dans un processus d'adaptation, il y a donc en plus d'un objet et d'un sujet: un modèle de référence qui permet de passer d'un fonctionnement habituel et à un nouveau fonctionnement et une tâche à accomplir qui motive le passage d'un comportement à un autre.

Tout ceci a lieu dans un environnement dont une modification suscite le processus d'adaptation.

Il y a finalement cinq éléments en jeu et il semble raisonnable d'énoncer: l'adaptation correspond à un processus par lequel un sujet, lorsqu'il enregistre une variation de l'environnement, modifie les paramètres d'un objet, à partir d'un modèle de référence, dans le but d'accomplir une tâche spécifique.

En reprenant cette définition, nous pouvons facilement développer de manière informelle quelques idées relatives à l'adaptation.

L'adaptation comme un choix d'architecture.

Si l'on regarde uniquement l'architecture du système, l'idée d'adaptation revient simplement à introduire une stratification entre un objet et un sujet. Un premier mécanisme, objet, est en fonctionnement, tandis qu'un second mécanisme, sujet, observe ce fonctionnement et adapte certains paramètres pour optimiser ses performances. Ce second mécanisme permet en plus d'avoir une vue plus abstraite du fonctionnement du premier, qui résume les caractéristiques les plus pertinentes pour les autres acteurs du système.

Bien sûr, après tout, on aurait pu mettre ensemble sujet et objet et considérer la réunion des deux comme un unique système. Mais nous aurions perdu en modularité et l'architecture du système serait restée plus confuse. On a donc préféré bien séparer les deux : cette stratification est un choix dans l'architecture du système développé.

Plus précisément encore, ce qui permet de combiner ces modules est que leur comportement se définit par rapport à une tâche à accomplir, indépendamment de la façon dont cette tâche est implémentée, chaque module se portant ``garant'' de la tâche accomplie.

Par conséquent, pas besoin de toucher au mécanisme ``sujet'' pour contrôler le système adaptatif. Au contraire, il se pilote à au niveau en spécifiant la tâche et les modèle à utiliser. On agit donc pas sur les commandes à exécuter mais sur la connaissance apportée au système.

Cette façon de faire permet aussi de combiner des modules dont la complexité reste raisonnablement simple, donc maîtrisable. Il suffit ensuite de se donner des outils pour formaliser la combinaison de ces modules en des ensembles dont les possibilités et les performances peuvent être multipliées.

L'adaptation comme un mécanisme d'apprentissage paramétrique.

Pour mieux cerner cette idée d'adaptation, comparons la à celle d'apprentissage. Clairement les processus d'apprentissage sont plus généraux que ceux d'adaptation. En effet, ils sont sencés permettre d'estimer des notions complexes telles que lois de commande, règles de fonctionnement, données structurées, etc...

En comparaison, un processus d'adaptation a ceci de particulier que l'apprentissage se limite à l'estimation de paramètres. En d'autres termes, les modèles sont des données structurelles et fixes. Seules des variantes de ce modèle ou certains de ses paramètres sont à ajuster.

Une telle approche n'empêche pas de choisir parmi plusieurs modèles à l'aide d'un paramètre ``qualitatif'' qui spécifie quel modèle est sélectionné ou même, et même de définir des raisonnements logiques paramètrés. Mais l'ensemble des choix possibles est fixé à l'avance. C'est ce qui limite la puissance mais augmente aussi fortement l'efficacité des solutions mises en oeuvre. Grosso-modo on passe d'algorithmes de complexité exponentielle à des procédures de complexité polynômiale, grâce à ces restrictions.

De même cette approche n'empêche t-elle pas, d'estimer des ``trajectoires'' ou de calculer des ``stratégies'', c'est-à-dire des comportements complexes à partir des modèles choisis. Mais là encore, ces mécanismes seront entièrement paramètrés, donc à la fois mieux formulés, mais moins souples qu'avec des approches non-paramétriques.

Ajustement de paramètres et calibration.

Les capteurs, les effecteurs et les modules de traitement d'un système sont paramètrés

et ces derniers paramètres peuvent évoluer au cours du temps ou des variations de l'environnement.

Une classe de mécanismes adaptatifs paramétriques très importants en science de l'ingénieur sont donc les processus de calibration et de re-calibration de ces paramètres. Qu'il s'agisse des paramètres intrinsèques d'un capteur (gain, offset, ...), des réglages d'un automatisme (gain de boucle, ...), des paramètres d'un modules logiciel d'estimation de valeurs (seuil de précision, nombre maximal d'itérations, choix parmi des méthodes de calcul plus ou moins précises ou plus ou moins rapides ...) tous les modules d'un système avec des entrées-sorties sont peuplés de boutons de réglage qu'il faut ajuster au mieux.

Nous voyons que l'idée d'adaptation se confond au niveau des algorithmes avec ces processus de calibration.

Mais pour manipuler de manière effective ces réglages, nous devons tenir compte de quelques propriétés génériques du problème. Par exemple, ces paramètres ne sont pas de simples nombres mais ont des bornes (valeurs minimales et maximales), des valeurs initiales fixées par le bon-sens ou données par le constructeur et surtout une précision (réelle ou désirée) connue et qui permet de limiter le travail d'estimation ou d'ajustage des algorithmes.

Ces informations ne sont que très rarement intégrées dans les algorithmes actuels d'estimation de paramètres.

L'adaptation comme un problème d'estimation locale.

Plus restreinte encore que l'estimation globale de paramètres dans un espace non contraint, l'hypothèse précédente permet de faire en sorte que tous les processus proposés ici soient basés sur des algorithmes d'estimation locale de paramètres à partir de ces conditions initiales, bornes de variations, ordre de grandeur de précision, contraintes diverses, etc...

Là encore le choix est pragmatique puisque les méthodes mathématiques seront -grâce à l'introduction de ces informations supplémentaires- mieux conditionnées numériquement, assorties de meilleures conditions de convergence et plus rapides. On contourne donc certaines difficultés en posant différemment le problème et en se limitant à l'usage de ce qui ``marche bien''.

Plus précisément nous modéliserons les choses de manière à ramener tous nos problèmes à la simple minimisation d'un potentiel par rapport aux paramètres à adapter, la recherche d'un minimum local étant le but du système d'adaptation. Ce sera notre définition d'une tâche. Mathématiquement on a rien dit de plus en proposant cela, car passer d'une équation à une minimisation est un simple jeu d'écriture. Mais, au niveau de la formalisation du problème et de son implémentation, la démarche est fructueuse.

Restriction à des modèles semi-algébriques en vision par ordinateur.

Dans la démarche visant à essayer de se donner un cadre le plus restrictif possible, compatible avec le but visé, de façon à obtenir un maximum d'efficacité, nous restreindrons aussi le type de modèles à prendre en compte.

Plus précisément, mathématiquement, on peut se limiter à ce qu'il est convenu d'appeler des modèles ``semi-algébriques''1 car la plus part des problèmes de mathématiques appliquées comme la robotique, la modélisation d'objets, les problèmes rencontrés en vision par ordinateur, se servent uniquement d'objets semi-algébriques. De plus, ces fonctions polynômiales sont très ``plastiques'' et représentent très finement de nombreux objets manufacturés.

Mais il est bien connu que les méthodes d'estimation globales de tels paramètres sont très lourdes à mettre en oeuvre (méthodes de continuation ou de décomposition cylindrique par exemple) tandis que la manipulation de ces modèles (génération de représentations canoniques résolution analytique ) est souvent algorithmiquement trop complexe pour être utilisable. De plus, si les données sont bruitées (ce qui est toujours le cas en pratique !) il n'y a même plus de convergence.

En revanche, cette approche ``locale'' va permettre d'éviter quelques uns de ces écueils en se limitant à ne résoudre que des problèmes plus simples que ceux abordés traditionellement.

L'adaptation comme une méthodologie de programmation.

Si les développements ébauchés précédemment sont corrects, alors on doit pouvoir en tirer des algorithmes, c'est à dire des méthodes de calcul complètement spécifiées et entièrement automatiques, qui correspondent à ces mécanismes d'adaptation2.

Mais un tel système, s'il vise à l'intégration de ces modules logiciels, doit faciliter les échanges de modèles de données et d'algorithmes entre les différentes parties du système adaptatif.

La programmation orientée objet est bien sûr la méthodologie idéale pour cela et aujourd'hui JAVA en est peut-être le meilleur langage3.

Cet outil informatique doit être en mesure de formaliser :

- la définition de modules génériques qui feront ensuite l'objet d'évaluations partielles de façon à être utilisés de manière optimale,

- la description des propriétés sémantiques des algorithmes qui devront permettre leur sélection et leur contrôle en fonction des paramètres des modèles,

- la gestion des événements discrets qui sont émis lors du fonctionnement des parties réactives du système,

- la disponibilité d'outils d'interfaces adaptés à des structures de données ou d'algorithmes divers.

Il est clair que ces quatre champs sont à eux seuls des domaines de recherche et qu'il serait illusoire à ce jour de vouloir les appréhender en un seul formalisme général. Néanmoins, nous sommes dans un contexte particulier où les structures de données et les algorithmes sont très spécifiques et donc acceptent de fortes restrictions. C'est en mettant en évidence ces restrictions que nous arrivons à développer les fonctionnalités précédentes avec une intéressante simplicité.

L'adaptation nécessite des systèmes interactifs.

Avoir mécanisé ces processus d'adaptation ne signifie pas que le système doive tourner tout seul sans aucune interaction avec un utilisateur. Au contraire, il serait alors inexploitable.

En effet, les choix précédents impliquent que les processus ne fonctionnent pas aveuglément en ``tout automatique'', mais en interaction avec un utilisateur ou un processus de plus haut niveau qui doit lui spécifier : les conditions initiales, le type de tâche à effectuer, etc... De plus, n'étant que des opérateurs locaux, ces outils n'auront d'usage qu'immergés dans un système plus large qui les contrôle.

Par ailleurs, cette interaction se fait à tous les niveaux :

- lors de la spécification, où la stratification proposée permet à l'utilisateur de définir le comportement de l'objet de l'adaptation à travers la tâche fixée et de regarder quel comportement il a généré

- à l'exécution, où l'utilisateur est ``inséré'' dans la boucle du système pour surveiller, contrôler et utiliser les modules adaptatifs.

On a donc la volonté d'abandonner le mythe encore vivace du système tout automatique doté d'intelligence artificielle, ceci pour des réalisations plus réalistes qui amélioreraient les systèmes interactifs actuels, ce qui est dèjà beaucoup.

Relations avec les concepts d'adaptation en biologie.

En sciences de la vie l'observation de tels processus se place d'un point de vue assez différent et il ne faut pas croire que le travail proposé ici puisse s'apparenter à une tentative de modélisation de systèmes biologiques.

Au contraire, l'implémentation informatique est tellement différente de celle des tissus biologiques qu'il serait illusoire de vouloir utiliser les mêmes outils pour synthétiser des mécanismes dans le premier domaine et analyser ceux du second, ormis pour des problèmes bien spécifiques étudiés en tant que tels.

Le seul point commun est que les deux catégories de systèmes (``animaux'' et ``robots'') ont parfois des fonctionnalités similaires et travaillent dans des environnements identiques, leur représentation interne de l'environnement et de la tâche à accomplir se base donc sur des hypothèses similaires dans les deux cas et les modèles seront peut-être voisins.

Par ailleurs, si ces processus adaptatifs peuvent être considérés comme de l'intelligence artificielle, il est clair que c'est de l'intelligence animale qu'il s'agit et non humaine. Les processus d'adaptation sont en effet observés chez les espèces les plus rudimentaires.

De plus, ces êtres sont finalement plus plastiques que les espèces évoluées, car un comportement sophistiqué ne facilite pas la mise en oeuvre de modifications qui ne détruisent pas la structure complexe déja en place.

Finalement, si il faut replacer ces idées d'adaptation dans le cadre du problème de l'acquis et de l'inné, il est clair que nous nous plaçons avec le point de vue que le jeune animal naît avec plusieurs millions d'années d'acquis obtenus au cours de l'évolution phylogénétique.

Ainsi, le mécanisme d'adaptation permet de rendre opérationnels ces réflexes innés et de les ajuster aux variations de l'environnement. Mais il présuppose que les connaissances nécessaires à ce fonctionnement ont été insérées au préalable lors de l'étape de modélisation.

Et puis qui sait ce que, en retour, l'évolution de la technologie en général et des systèmes adaptatifs en particulier aura comme influence sur l'évolution du genre humain ?

Bibliography




Footnotes

... ``semi-algébriques''1
C'est-à-dire des modèles définis à partir d'égalités et d'inégalités sur des polynômes combinées avec des opérateurs logiques.
... d'adaptation2
Réaliser un tel ensemble de modules informatiques a plusieurs intérêts : [1] c'est un moyen de démontrer que le mécanismes décrit est complètement spécifié, [2] c'est un moyen de prouver que le mécanisme marche, [3] c'est bien entendu indispensable pour diffuser ces outils et leur permettre d'être utilisés dans des applications.
... langage3
Meilleur, pour des raisons pratiques uniquement (diffusion, support, simplicité, interface utilisateur) tandis que des langages comme EIFFEL seraient plus complets pour nous. De plus, des raisons d'efficacité et de portabilité nous conduisent aussi à utiliser en plus et provisoirement le langage C/C++ comme langage ``cible'' pour les calculs numériques. Par ailleurs, on peut noter que les dérivations symboliques de code ont initialement été maquettées en Maple avant d'être réalisées par le noyau actuel.


Thierry Vieville 2005-11-08