Waïl Tahmaoui
Je suis un étudiant en Master 2 ACSYON, de mathématiques appliquées à l'Université de Limoges et stagiaire à Polytechnique Montréal et basé au GERAD. Je mets au service mes compétences en optimisation et machine learning dans un projet commun avec 10 autres stagiaires afin d'optimiser les hyperparamètres des réseaux de neurones. J'ai commencé mon stage le 4 avril 2022 sous la supervision des professeurs Charles Audet et Sébastien Le Digabel.
Contact : wail.tahmaoui@etu.unilim.fr
Étude des impacts du scaling de plusieurs composantes du solveur NOMAD:
Le solveur NOMAD est conçu pour l’optimisation de problèmes de type “boîte noire”. Or, lors de la définition d’un tel problème, plusieurs problématiques, reliées à des échelles de valeurs différentes, peuvent apparaître. Par exemple, une variable peut être définie entre 0 et 1 et une autre entre 0 et 10 000. On retrouve aussi ces problèmes dans la définition des contraintes et des objectifs si on est en présence d’un problème multi-objectifs. Il est donc primordial d’effectuer plusieurs mises à l’échelle (scaling). Cependant, ces aspects ont jusqu’ici été négligés pour NOMAD, sous l’hypothèse que l’algorithme MADS, en arrière de NOMAD, est naturellement robuste face à un mauvais scaling. Le projet consiste donc tout d’abord à étudier les impacts sur l’efficacité de NOMAD de changements d’échelles des variables et des contraintes. Ensuite, il faudra concevoir des méthodes d’apprentissage permettant tout d’abord de repérer des mauvaises mises à l’échelle, puis de les corriger automatiquement. On pourra aussi considérer des mises à l’échelle spécifiques et différentes de traditionnelles transformations linéaires (par exemple des échelles logarithmiques, logit, bilog, etc. rencontrées en intelligence artificielle). Si le temps le permet, ou dans le cadre de la poursuite du projet en MSc/PhD, on pourra aussi considérer le scaling lors de la construction des modèles dynamiques (comme les modèles quadratiques). Les modèles semblent en effet très sensibles à cela. Encore à plus long terme, il faudra aussi examiner le scaling de nos méthodes multi-objectifs.
Professeurs responsables: Charles Audet et Sébastien Le Digabel. Encadrant principal: Christophe Tribes (associé de recherche).
Résumé et première idée après 3 semaines
Sur demande de Charles Audet après notre discussion du 22 avril 2022 il m'a conseillé d'écrire ce que j'avais compris jusqu'à maintenant et les éventuels idées que j'avais. Grâce à cela je vais pouvoir être mieux encadré dans la poursuite de mon projet.
Résumé: Le projet veut vérifier et améliorer l'efficacité de NOMAD sur des problèmes (avec et sans contraintes) avec un mauvais scaling. Le scaling se base sur le/les points de départ (X0) et sur les bornes des variables (UPPER_BOUND et LOWER_BOUND) où un travail existe déjà dans NOMAD avec l'option (active par défault) ANISOTROPIC_MESH. On voudrait aussi appliquer un scaling sur les contraintes Quantifiable et Relaxable (QRSK). On applique le scaling sur les coefficients de la fonction h qui mesure la violation des contraintes.
Idée:
- A chaque itération (nouveau x_i) on évalue les contraintes en x_i: c_1(x_i) = a, c_2(x_i) = b , …
- On regarde l'odre de grandeur de chaque contraintes non vérifiés: log10(a)= a_ , log10(b) = b_ , …
- On scale toutes les contraintes sauf la plus petites non vérifiés:
- scale = min(a_, b_, …)
- alpha_1 = a/(10^(a_- scale)), alpha_2 = b/(10^(b_- scale))
- Evaluer la fonction h avec les pondérations alpha_i: h(x_i) = sum( max( 0 , alpha_i * c_i(x_i) )² )
Question: Est-ce qu'on ne travail qu'avec des contraintes d'inégalités et pas d'égalités?
Le résumé n'est qu'une compréhension partiel du sujet à un instant donné (le début du stage), il a pour but de montrer ce qui est compris et ce qui ne l'est pas encore. L'idée n'est pas parfaite et doit être testé afin d'être modifié et amélioré. La réponse à la question est non et m'a été donné par Sébastien Le Digabel lors de notre discussion du 26 avril 2022. Les contraintes d'égalités sont mals gérées pour le moment par Nomad mais il est possible que cela évolue à l'avenir.
Première contribution ?
Je débute les implémentations dans le Runner pour mettre à jour certains problème et ajouter quelques option utile à mon travail (détails cosmétiques mais pratiques). J'ai également pris en main les outils de développement collaboratif comme GitHub afin de partager mon travail.