Mila établit une collaboration avec IBM en vue du développement d’Oríon
Les procédures d’optimisation des hyperparamètres (OH) sont d’une importance cruciale pour tirer les meilleurs résultats possibles des algorithmes d’apprentissage et les comparer sur un pied d’égalité (Kadlec et coll., 2017 ; Lucic et coll., 2018 ; Melis et coll., 2017). Pourtant, selon un sondage effectué en 2020 par Xavier Bouthillier et son équipe lors de deux des plus prestigieux congrès sur l’apprentissage automatique (NeurIPS 2019 et ICLR 2020), une majorité de chercheurs ont affirmé qu’ils préféraient opter pour le réglage manuel ou recourir à des algorithmes rudimentaires plutôt que d’utiliser des outils automatisés d’OH, quittes à se priver de l’amélioration des flux de travail en apprentissage profond.
Parallèlement, Mila – Institut québécois d’intelligence artificielle a interrogé ses chercheurs pour savoir pourquoi ils ne faisaient pas appel aux procédures d’OH. Les chercheurs interrogés ont invoqué trois principales raisons pour justifier leur réticence :
- Au moment de l’enquête, les chercheurs estimaient que la complexité excessive de ces outils dépassait leurs possibles avantages ;
- Ils n’étaient pas convaincus de l’efficacité des procédures d’OH et croyaient pouvoir faire mieux avec le réglage manuel ;
- Ils manquaient de ressources de calcul pour mener à bien ces procédures.
Pour répondre à ces préoccupations, Mila et IBM ont uni leurs forces afin d’apporter des améliorations au projet de logiciel libre Oríon (Bouthillier et coll., 2020), une bibliothèque numérique destinée à l’optimisation des fonctions boîte noire mise au point initialement par Mila. Ce projet répond à trois objectifs : 1) créer un outil adapté au flux de travail des chercheurs et nécessitant un minimum de configuration et de manipulation ; 2) établir des balises claires pour convaincre les chercheurs de l’efficacité des procédures d’OH ; 3) tirer parti des connaissances préalables pour éviter d’avoir à effectuer l’optimisation à partir de zéro.
Le présent document présente un aperçu d’Oríon et quelques exemples de la manière dont les chercheurs peuvent tirer parti de cet outil dans leurs travaux.
Présentation d’Oríon
Oríon est une bibliothèque numérique destinée à l’optimisation des fonctions boîte noire qui est axée sur la convivialité et la facilité d’intégration pour les utilisateurs. Les chercheurs peuvent intégrer Oríon à leur méthode de travail actuelle pour effectuer le réglage de leurs modèles. Ils peuvent également s’en servir pour élaborer de nouveaux algorithmes d’optimisation et les évaluer en regard d’autres algorithmes qui s’inscrivent dans le même contexte et les mêmes conditions.
Comme Oríon sert essentiellement à l’optimisation des fonctions boîte noire, il ne se veut pas un cadre de travail ni un pipeline pour l’apprentissage automatique, pas plus qu’un outil d’apprentissage automatique (AutoML, Hutter et coll., 2019). Nous encourageons tout de même les développeurs à l’intégrer en tant que composant de ce type de système.
IBM et Mila collaborent étroitement depuis le début de 2020 pour faire évoluer Oríon et accroître son accessibilité auprès des chercheurs. Voyons un bref exemple qui illustre la façon dont Oríon est utilisé avec sklearn pour initier les chercheurs à son processus d’implémentation et à ses avantages.
Exemple d’utilisation
Cet exemple illustre comment adapter des scripts existants à Oríon, procéder à l’optimisation des hyperparamètres et faire le suivi des essais.
Examinons le court script suivant qui permet d’entraîner le classificateur d’un perceptron multicouche (MLP) à partir du jeu de données Iris.
import argparse
from sklearn.datasets import load_iris
from sklearn.neural_network import MLPClassifier
from sklearn.model_selection import train_test_split
# Parsing the value for the hyper-parameter 'learning_rate'
# given as a command line argument.
parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float)
inputs = parser.parse_args()
# Loading the iris dataset and splitting it into training and testing sets.
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=1)
# Training the model with the training set with the specified hyperparameters.
clf = MLPClassifier(learning_rate_init=inputs.lr)
clf.fit(X_train, y_train)
# Evaluating the accuracy using the testing set.
accuracy = clf.score(X_test, y_test)
print(accuracy)
Dans ce script, nous utilisons d’abord argparse pour traiter l’argument de la ligne de commande –lr, le taux d’apprentissage servant à optimiser le MLP. Nous chargeons ensuite le jeu de données Iris et le scindons en un jeu de données d’apprentissage et un jeu de données de test. Nous entraînons le MLP à partir du jeu de données d’apprentissage, puis évaluons sa précision (accuracy) au moyen du jeu de données de test. Le script peut être exécuté avec la ligne de commande suivante:
$ python blog.py --lr 0.01
Nous pouvons ainsi charger le jeu de données, entraîner le MLP à raison d’un taux d’apprentissage de 0,01, évaluer la précision du MLP par rapport au jeu de données de test et imprimer le score de précision. Pour optimiser l’hyperparamètre lié au taux d’apprentissage, nous devons ajouter les deux lignes suivantes à la fin du script pour transmettre les résultats à Oríon :
from orion.client import report_objective
report_objective(1 - accuracy
Pour exécuter le script avec Oríon, nous devons lancer orion hunt <your command>, <your command> étant dans ce cas python blog.py –lr 0.01. Il est préférable de toujours utiliser le mode –debug lors du premier test. De cette façon, Oríon est obligé de recourir à une base de données non permanente en mémoire, qui ne nécessite aucune configuration et qui évite toute surcharge de données. Les essais doivent être désignés par un nom. Pour les besoins de l’exemple, nous allons passer le nom « test » avec -n test. Pour écourter le délai d’exécution, nous allons fixer à 10 le nombre maximum de valeurs d’hyperparamètres à tester, en utilisant comme argument –exp-max-trials 10. Enfin, nous allons remplacer le taux d’apprentissage –lr 0.01 par –lr~’loguniform(0.0001, 0.1)’. Ce faisant, nous indiquons à Oríon que le taux d’apprentissage doit se situer dans un intervalle de distribution log-uniforme entre 0,0001 et 0,1.
$ orion --debug hunt -n test --exp-max-trials 10 \
python blog.py --lr~'loguniform(0.0001, 0.1)'
Le fait de lancer cette ligne de commande crée un nœud de calcul (worker) dans Oríon qui exécutera jusqu’à 10 essais d’optimisation des hyperparamètres avant d’imprimer les statistiques finales.
Dans l’exemple suivant avec –debug, les résultats ne sont pas archivés dans la base de données. Pour archiver les résultats, il faudrait configurer une base de données. Heureusement, Oríon est doté d’une base de données native appelée « PickledDB » qui est très simple à configurer, puisqu’elle ne requiert qu’un simple nom de fichier. Sauvegardons notre configuration dans un fichier que nous nommerons blog.yaml.
storage:
database:
type:'pickleddb'
host:'blog.pkl'
experiment:
name:'blog-example'
max_trials: 10
Dans ce fichier, nous configurons la base de données pour utiliser le programme d’arrière-plan ‘pickleddb’ avec la base de données en cours de sauvegarde dans ‘blog.pkl’. Nous en profitons pour ajouter le nom du test et le nombre maximum d’essais dans le fichier de configuration pour simplifier l’exécution de la ligne de commande. Si l’on préfère, on peut définir uniquement la base de données dans le fichier de configuration et transmettre d’autres options en utilisant des arguments de ligne de commande. Les configurations hybrides sont prises en charge, les arguments de la ligne de commande ayant préséance sur les options du fichier de configuration. Oríon peut être exécuté avec ce fichier de configuration en utilisant l’appel suivant :
$ orion hunt --config blog.yaml blog.py --lr~'loguniform(0.0001, 0.1)'
Le recours à une base de données préalablement sauvegardée comporte un autre avantage : on peut procéder à l’optimisation parallèle d’hyperparamètres ayant plusieurs nœuds de calcul. En exécutant à plusieurs reprises la même ligne de commande, on obtient autant de nœuds de calcul, chacun se connectant à la base de données pour synchroniser l’optimisation parallèle des hyperparamètres. Par exemple, pour créer quatre nœuds de calcul:
$ orion hunt --config blog.yaml python blog.py --lr~'loguniform(0.0001, 0.1)' &
$ orion hunt --config blog.yaml python blog.py --lr~'loguniform(0.0001, 0.1)' &
$ orion hunt --config blog.yaml python blog.py --lr~'loguniform(0.0001, 0.1)' &
$ orion hunt --config blog.yaml python blog.py --lr~'loguniform(0.0001, 0.1)'
Consultez notre tutoriel (en anglais) pour découvrir comment créer plusieurs nœuds de calcul au sein de mêmes groupes (clusters).
Autres fonctionnalités
Oríon possède de nombreuses autres fonctionnalités. Nous ne faisons qu’effleurer la surface des multiples possibilités qu’offre le logiciel. Consultez notre documentation complète (en anglais) pour obtenir une vue d’ensemble des fonctionnalités. En voici un aperçu sommaire :
- Les hyperparamètres peuvent faire l’objet de distributions réelles ou discrètes dans l’espace de recherche ou encore comporter une liste de choix. Pour en savoir plus, consultez notre documentation sur les a priori (en anglais);
- Dans notre exemple, nous avons défini les a priori à l’aide de la ligne de commande. Notons toutefois que les a priori peuvent également être définis à l’aide d’un fichier de configuration;
- Oríon peut être utilisé avec des scripts Python, mais aussi dans d’autres langages de programmation. Autrement dit, il est indépendant du langage;
- Outre les outils de ligne de commande présentés ici, il existe une interface de programmation (API) en Python;
- Par défaut, Oríon utilise l’algorithme de recherche aléatoire. Cependant, Oríon propose plusieurs autres algorithmes tels que Hyperband/ASHA, TPE, EvolutionaryES et Bayesian Optimization;
- Oríon comporte trois commandes de base – status, info et list – pour suivre les essais, en plus d’une interface de programmation (API) en Python et d’un serveur REST;
- Les essais font l’objet d’une gestion des versions, ce qui permet d’assurer un meilleur suivi des résultats;
- Une extension Cookiecutter est accessible pour lancer l’implémentation de l’algorithme de plug-in dans Oríon.
Évolution récente et travaux en cours
Les chercheurs de Mila et d’IBM se sont concentrés sur trois grands objectifs du projet. Vous en trouverez la description détaillée dans les sous-sections suivantes :
- Mise en œuvre de nouveaux algorithmes et de tests d’évaluation des performances sophistiqués
- Intégration d’outils de visualisation et d’un tableau de bord
- Recherche approfondie sur l’apprentissage par transfert aux fins de l’optimisation des hyperparamètres.
Nouveaux algorithmes et tests d’évaluation des performances
Au cours de la première phase de leur collaboration, Mila et IBM ont intégré des algorithmes de pointe existants destinés à l’optimisation des hyperparamètres dans Oríon afin de proposer une gamme étendue d’algorithmes performants. Ces nouveaux algorithmes, que nous présenterons ci-dessous, peuvent être utilisés dès maintenant dans Oríon.
Algorithmes
Hyperband (Li et al, 2017) (doc)
Pour accélérer l’optimisation des hyperparamètres, cet algorithme tire parti de bribes d’information lors de l’entraînement (p. ex., les objectifs de validation à chaque étape) en réaffectant les ressources aux configurations les plus prometteuses.
Estimateur de Parzen à structure arborescente (TPE) (Bergstra et al, 2011) (doc)
Cette variante de l’optimisation bayésienne assure la transparence de la mise en parallèle tout en réduisant la complexité des calculs. Il scinde l’espace de recherche en deux groupes : les configurations les plus performantes d’un côté et le reste de l’autre. Il modélise ensuite chaque groupe au moyen d’un estimateur de Parzen distinct. L’estimateur de Parzen affecté au groupe le plus performant sert à produire un échantillon de nouveaux candidats à tester, le ratio des deux estimateurs étant utilisé pour filtrer les meilleurs candidats.
Evolution-ES (So et al, 2019) (doc)
Cet algorithme évolutif applique une sélection par rotation en augmentant progressivement la quantité de ressources allouées à chaque cycle, ce qui permet d’accélérer le traitement de grandes quantités de configurations aléatoires, comme c’est le cas pour l’Hyperband.
Nouveauté à venir
Grâce à l’implémentation d’un enveloppeur (wrapper) pour la bibliothèque RoBO, (Klein et coll., 2017), nous aurons accès, en plus de DNGO (Snoek et coll., 2015) et de BOHAMIANN (Springenberg et coll., 2017), à un optimiseur bayésien performant, mais nécessitant d’énormes calculs, qui repose sur des processus gaussiens par échantillonnage MCMC.
Tests d'évaluation des performances
Pour démontrer l’utilité de différents algorithmes d’OH, Mila et IBM collaborent à la conception d’un module d’évaluation des performances compatible avec Oríon, qui comprendra différents types de tests et de tâches. Cette diversité est essentielle pour couvrir le plus grand nombre de cas d’utilisation possible qui existent dans le domaine de la recherche.
Pour chaque tâche, les algorithmes d’optimisation peuvent être évalués en fonction de divers scénarios :
- Délai avant le résultat : Lequel des algorithmes atteint un certain seuil en premier (sans parallélisme)?
- Performance moyenne : Pour un budget (important) donné, quel algorithme trouve la meilleure configuration?
- Envergure de l’espace de recherche : Quels algorithmes fonctionnent le mieux dans les petits espaces de recherche ou les grands espaces de recherche?
- Type d’espace de recherche : Quel algorithme fonctionne le mieux avec des variables continues ou catégorielles?
- Avantage en matière d’exécution parallèle : Comment la performance des algorithmes varie-t-elle en fonction du parallélisme?
- Sensibilité des paramètres de l’algorithme de recherche (convivialité) : Quel algorithme est le moins sensible au changement de ses hyperparamètres?
Nous proposons des outils pour aider les chercheurs à évaluer les performances des nouveaux algorithmes d’OH qu’ils créent à l’aide d’Oríon. Ces outils comprennent notamment un ensemble de tâches standards prédéfinies permettant d’évaluer les algorithmes d’OH. En plus des tâches réelles qui exigent de longs calculs, Oríon comporte des fonctions synthétiques permettant d’expédier des tests de viabilité et des émulateurs en vue de résultats rapides, mais relativement fidèles :
- Fonctions synthétiques telles que Branin, Rosenbrock, COCO (Hansen et coll., 2020);
- Émulateurs tels que PROFET (Klein et coll., 2019), HPOlib2 (Eggensperger et coll., 2013);
- Tâches réelles telles que classification, régression, tâches MLPerf (Reddi et coll., 2020).
Tableau de bord et outils de visualisation
Les outils de visualisation sont essentiels pour nous aider à interpréter les résultats des expériences utilisateurs et des tests d’évaluation des performances. Si les résultats numériques peuvent véhiculer les informations nécessaires aux fins de la comparaison des performances des algorithmes, les outils de visualisation tablent sur la capacité innée de l’homme à comparer, à dénombrer et à discerner les tendances. Les masses complexes d’informations telles que les groupes de données expérimentales ou de référence sont difficiles à interpréter à l’aide de chiffres et appellent à des représentations graphiques.
C’est pourquoi Mila et IBM ont intégré à Oríon un module de visualisation autonome (notamment compatible avec Jupyter Notebook) ainsi qu’un tableau de bord centralisé offrant un aperçu de l’état d’avancement des essais et de l’analyse des résultats. Un nouveau serveur REST a été développé pour Oríon dans le cadre de cette collaboration afin de prendre en charge le tableau de bord. Cependant, il peut être utilisé indépendamment du tableau de bord pour le fonctionnement de bibliothèques indépendantes.
Deux différents types d’outils de visualisation sont pris en charge : 1) les outils de visualisation visant à améliorer l’expérience utilisateur (aperçu de la configuration, de l’organisation des expériences préalables et de l’état des expériences en cours) ; 2) les outils de visualisation visant à améliorer l’interprétabilité des résultats (courbe de regret de l’optimisation, diagramme de coordonnées parallèles, diagrammes de dépendance partielle, diagrammes à bandes illustrant l’ANOVA fonctionnelle et la courbe marginale [Hutter et coll., 2014] et l’importance des paramètres locaux [Biedenkapp et coll., 2018]).
Procédures efficaces d’optimisation des hyperparamètres avec démarrage à chaud
Comme l’entraînement des modèles d’apprentissage profond peut prendre plusieurs jours, les procédures d’optimisation des hyperparamètres nécessitant plusieurs entraînements deviennent une tâche excessivement lourde pour la plupart des chercheurs.
Le réglage manuel a beau ne pas être recommandé pour optimiser les performances de l’algorithme ou pour obtenir des mesures objectives et fiables des données de référence (ce qui exigerait de consacrer des jours entiers au réglage des hyperparamètres d’une seule donnée de référence), cette méthode présente l’avantage de convenir aux petits budgets. Les chercheurs qui règlent leurs hyperparamètres manuellement peuvent mettre à profit les connaissances préalablement acquises lors du réglage d’algorithmes comparables dans le cadre de tâches comparables. Tirer parti de ces connaissances pour créer des algorithmes d’OH constitue alors une solution plus viable pour les petits budgets.
À l’heure actuelle, la recherche sur l’apprentissage par transfert aux fins de l’optimisation des hyperparamètres porte sur le transfert de connaissances à partir d’algorithmes d’apprentissage et d’hyperparamètres identiques pour différents jeux de données (Bardenet et coll., 2013 ; Law et coll., 2019 ; Perronne et coll., 2018 ; Salinas et coll., 2019 ; Yogamata et Mann, 2014). Il s’agit certes d’un premier pas dans la bonne direction, mais dans les faits, cela demeure très contraignant. La collaboration entre Mila et IBM a pour but de généraliser les solutions actuelles pour permettre le transfert de connaissances vers des espaces de recherche semblables où le nombre d’algorithmes d’apprentissage de base et d’hyperparamètres peut varier.
Oríon fournit un système de gestion des versions qui permet de faire un suivi des précédents essais d’OH. Ce système sert d’outil de gestion des versions pour les différents essais itératifs menés par les chercheurs, mais peut également servir de schéma des connaissances préalables susceptibles d’être réutilisées pour démarrer à chaud l’optimisation des expériences ultérieures. En généralisant les solutions d’apprentissage par transfert, nous allons permettre le démarrage à chaud indigène au sein d’Oríon.
Conclusion
Oríon constitue un outil d’OH simple et efficace au service des chercheurs. La collaboration entre Mila et IBM accélère le développement de cet outil grâce à des algorithmes d’optimisation supplémentaires et à de nouveaux outils de suivi et d’analyse. Nous sommes fermement convaincus que ce travail représente un pas important vers l’adoption plus massive des outils d’OH dans le monde de l’apprentissage automatique.
Si Oríon a été conçu dans une optique de convivialité pour les chercheurs, sa conception modulable en fait un excellent complément pour les structures d’apprentissage automatique déjà en place. À preuve, il est possible de l’intégrer à la fonction Watson Machine Learning Accelerator d’IBM, une solution d’accélération des résultats de l’apprentissage profond destinée à la formation, au réglage et à l’inférence de modèles à l’échelle de l’entreprise.
Pour de plus amples renseignements sur Oríon, consultez notre documentation (en anglais).
Remerciements
Nous tenons à remercier tous les collaborateurs qui ont rendu ce projet possible.
Équipe Mila
Chercheuse principale : Irina Rish (professeure agrégée, Université de Montréal, Mila)
Frédéric Osterrath (directeur, Innovation, développement et technologie, Mila)
Xavier Bouthillier (doctorant, chercheur et développeur en apprentissage profond, Mila)
Thomas Schweizer (développeur-chercheur, Mila)
Fabrice Normandin (étudiant à la maîtrise, Université de Montréal, Mila)
Nadhir Hassen (étudiant à la maîtrise, Université de Montréal, Mila)
Lucas Cecchi (stagiaire, Mila)
Équipe IBM
Chef de projet : Yonggang Hu (ingénieur émérite, Spectrum Computing Group, IBM)
Lin BJ Dong (ingénieur logiciel principal, Spectrum Computing Group, IBM)
Chao C Xue (membre de l’équipe de recherche, IBM Research)
Jun Feng Liu (membre principal du personnel technique, Spectrum Computing Group, IBM)
Sean Wagner (chercheur scientifique, Centre d’innovation national d’IBM Canada, IBM)
Références
Bardenet, R., Brendel, M., Kégl, B. et Sebag, M. (février 2013), « Collaborative hyperparameter tuning », dans International conference on machine learning (p. 199-207).
Bergstra, J. S., Bardenet, R., Bengio, Y. et Kégl, B. (2011), « Algorithms for hyper-parameter optimization », dans Advances in neural information processing systems (p. 2546-2554).
Bouthillier, X., Corneau-Tremblay, F., Schweizer, T., Tsirigotis, C., Bronzi, M., Dong, L., … Lamblin, P. (2 juillet 2020), Oríon (10.5281/zenodo.3478592.). Zenodo.
Bouthillier, X. et Varoquaux, G. (2020), Survey of machine-learning experimental methods at NeurIPS2019 and ICLR2020 (thèse de doctorat, centre Inria Saclay, Île-de-France).
Eggensperger, K., Feurer, M., Hutter, F., Bergstra, J., Snoek, J., Hoos, H. et Leyton-Brown, K. (décembre 2013), « Towards an empirical foundation for assessing bayesian optimization of hyperparameters », dans NIPS workshop on Bayesian Optimization in Theory and Practice (vol. 10, p. 3).
Hansen, N., Auger, A., Ros, R., Mersmann, O., Tušar, T., et Brockhoff, D. (2020), « COCO : A platform for comparing continuous optimizers in a black-box setting », Optimization Methods and Software, p. 1-31.
Hutter, F., Hoos, H., et Leyton-Brown, K. (janvier 2014), « An efficient approach for assessing hyperparameter importancex , dans International conference on machine learning (p. 754-762). PMLR.
Hutter, F., Kotthoff, L. et Vanschoren, J. (2019), « Automated machine learning: methods, systems, challenges », Springer Nature (p. 219).
Kadlec, R., Bajgar, O. et Kleindienst, J. (2017), Knowledge base completion : Baselines strike back. arXiv preprint arXiv:1705.10744.
Klein, A., Falkner, S., Mansur, N. et Hutter, F. (décembre 2017), « Robo: A flexible and robust bayesian optimization framework in Python », dans NIPS 2017 Bayesian Optimization Workshop.
Klein, A., Dai, Z., Hutter, F., Lawrence, N. et Gonzalez, J. (2019), « Meta-surrogate benchmarking for hyperparameter optimization », dans Advances in Neural Information Processing Systems (p. 6270-6280).
Law, H.C., Zhao, P., Chan, L. S., Huang, J. et Sejdinovic, D. (2019), « Hyperparameter learning via distributional transfer », dans Advances in Neural Information Processing Systems (p. 6804-6815).
Li, L., Jamieson, K., DeSalvo, G., Rostamizadeh, A. et Talwalkar, A. (2017), « Hyperband: A novel bandit-based approach to hyperparameter optimization », The Journal of Machine Learning Research, 18(1), 6765-6816.
Lucic, M., Kurach, K., Michalski, M., Gelly, S. et Bousquet, O. (2018), « Are gans created equal? a large-scale study », dans Advances in Neural Information Processing Systems (p. 700-709).
Melis, G., Dyer, C. et Blunsom, P. (2017), On the state of the art of evaluation in neural language models. arXiv preprint arXiv:1707.05589.
Perrone, V., Jenatton, R., Seeger, M. W., et Archambeau, C. (2018), « Scalable hyperparameter transfer learning », dans Advances in Neural Information Processing Systems (p. 6845-6855)
Reddi, V. J., Cheng, C., Kanter, D., Mattson, P., Schmuelling, G., Wu, C. J., et Chukka, R. (mai 2020), « Mlperf inference benchmark », dans 2020 ACM/IEEE 47th Annual International Symposium on Computer Architecture (ISCA) (p. 446-459). IEEE.
Salinas, D., Shen, H. et Perrone, V. (2020), « A quantile-based approach for hyperparameter transfer learning », dans International Conference on Machine Learning.
Snoek, J., Rippel, O., Swersky, K., Kiros, R., Satish, N., Sundaram, N. et Adams, R. (juin 2015), « Scalable bayesian optimization using deep neural networks », dans International conference on machine learning (p. 2171-2180).
Springenberg, J. T., Klein, A., Falkner, S. et Hutter, F. (2016), « Bayesian optimization with robust Bayesian neural networks », dans Advances in Neural Information Processing Systems (p. 4134-4142).
Donc, D. R., Liang, C. et Le, Q. V. (2019), The evolved transformer. arXiv preprint arXiv:1901.11117.
Yogatama, Dani et Gideon Mann, « Efficient transfer learning method for automatic hyperparameter tuning », Intelligence artificielle et statistiques, 2014.