- Le système Autoresearch adopte une structure de boucle d’optimisation sous contraintes dans laquelle un agent LLM modifie
train.py de manière itérative pour améliorer les performances, en automatisant tout le cycle, de la formulation des hypothèses jusqu’à l’évaluation
- Les expériences s’exécutent dans un environnement sandbox basé sur des conteneurs, qui bloque l’accès réseau et l’exécution de code arbitraire
- En utilisant le jeu de données Ukiyo-eVG, l’entraînement exploite environ 11�0 images d’estampes japonaises sur bois et leurs annotations, et un modèle basé sur CLIP atteint un Mean Rank de 34,30 et un R@5 d’environ 53 %
- Les principales améliorations proviennent de l’assouplissement du paramètre temperature (-113 de Mean Rank) et du tuning d’hyperparamètres (-30 de Mean Rank), avec un gain de performance de 54 % obtenu via 13 commits sur 42 expériences en une journée
- L’agent LLM est efficace dans un espace de recherche clairement défini, mais son instabilité augmente après l’étape des changements structurels, ce qui met en évidence les limites d’une recherche entièrement autonome
Idée principale
- Autoresearch repose sur une boucle d’optimisation sous contraintes centrée sur un agent LLM, qui modifie
train.py afin d’améliorer itérativement les métriques d’évaluation
- L’agent lit les instructions dans
program.md et utilise scratchpad.md comme carnet de travail pour consigner le déroulement des expériences
- L’exploration est structurée en plusieurs phases : elle commence par le tuning d’hyperparamètres, passe à de petites modifications structurelles, puis s’étend à une exploration plus libre avec un minimum de contraintes
- La boucle complète suit une structure cyclique : formulation d’hypothèse → modification du code → entraînement → évaluation → commit ou retour en arrière → répétition
- Chaque expérience est limitée à environ 5 minutes afin de favoriser des itérations rapides et de limiter l’overfitting
- L’agent peut modifier librement
train.py dans la limite de temps impartie
-
Sandbox
- Pour éviter les risques liés à l’exécution de code arbitraire, la boucle d’entraînement s’exécute dans un environnement conteneurisé avec accès réseau bloqué
run.sh pilote l’ensemble du flux expérimental, et Claude Code ne peut modifier que train.py et program.md
- L’exécution directe de Python, l’installation via pip, l’accès réseau, les
git push, etc. sont tous interdits
- L’implémentation correspondante est publiée sur GitHub
Jeu de données
- Comme le jeu de données de radiographies médicales utilisé dans l’étude d’origine n’était pas accessible, le jeu de données Ukiyo-eVG a été utilisé à la place
- Il contient environ 11�0 images d’estampes japonaises sur bois ainsi que des annotations texte–boîtes englobantes
- Les boîtes englobantes sont converties en heatmaps gaussiennes ajoutées en entrée du modèle, selon une approche similaire au mécanisme d’attention experte de l’article eCLIP original
- Les heatmaps guident le modèle pour qu’il se concentre sur des zones spécifiques
Configuration expérimentale avec Claude Code
- Claude Code a mis à niveau le code de recherche existant vers un environnement Python récent et a écrit le chargement du nouveau jeu de données ainsi que le scaffolding de la boucle d’expérimentation
- Il a également mis en place les splits de validation croisée, la logique d’évaluation et les idées initiales dans
program.md
- La métrique d’évaluation utilisée était le Mean Rank, et le rapport final inclut aussi le Recall@K
- Le Mean Rank a été retenu pour son interprétation intuitive, mais il est mentionné qu’un Median Rank aurait probablement été plus approprié car moins sensible aux valeurs extrêmes
- Configuration du modèle : backbone CLIP avec ViT-Small (22M) + DistilBERT (66M) + HeatmapProcessor, pour un total d’environ 90M de paramètres
- Entraînement : 800 steps (environ 3 minutes par expérience sur une RTX 4090)
- Évaluation : mesure du Mean Rank et du Recall@K sur un jeu de test de 1�0 images
- Performance de référence : Val Mean Rank 344,68, img→txt R@1 17,2 %, txt→img R@1 16,5 %
Résultats expérimentaux
- Au total, 42 expériences ont été menées en une journée, dont 13 commits et 29 retours en arrière
- Le Mean Rank a baissé de 344,68 à 157,43, soit 54 % de réduction
- Lors de l’entraînement final sur l’ensemble du jeu de données, les scores de test se sont révélés supérieurs aux scores de validation
- Cela suggère que les expériences courtes de 800 steps étaient en situation d’underfitting
- Performance finale sur le test : Mean Rank 34,30, img→txt R@5 53,0 %, txt→img R@5 51,4 %
Principaux points d’amélioration
-
Correction du clamp de temperature (-113 de Mean Rank)
- Dans le code, le paramètre temperature entraînable était plafonné à 2 ; l’agent a assoupli cette contrainte, ce qui a fortement amélioré les performances
- C’est l’effet unitaire le plus important parmi toutes les améliorations
-
Optuna++ (-30 de Mean Rank)
- Les améliorations suivantes proviennent principalement du tuning d’hyperparamètres
- L’augmentation de la dimension de projection et le réajustement du taux d’apprentissage ont apporté 30 points supplémentaires de gain
- L’agent exécute plus vite et plus systématiquement des tâches répétitives et fastidieuses qu’un humain ferait à la main
-
Zone de rendements décroissants
- À partir de la phase 4 (changements structurels), le taux de réussite des hypothèses du LLM chute fortement
- Les modifications du mécanisme d’attention ou les tentatives d’idées audacieuses (moonshot) ont presque toutes échoué
- Dans la seconde moitié de l’exploration, les essais sont devenus largement aléatoires
-
Importance de la sandbox
- Claude Code a parfois montré un comportement instable, oubliant ses permissions et tentant des appels bash incorrects, ou interrompant la boucle pendant l’attente de l’entraînement
- L’exécution totalement autonome a donc encore des limites
Observations finales
- Sur l’ensemble du processus, les 90 % initiaux se sont déroulés sans accroc, tandis que les 10 % restants ont demandé beaucoup d’intervention
- Un agent LLM peut mener efficacement de la recherche en ML dans un espace de recherche clairement défini
- La boucle commit–retour en arrière d’Autoresearch est utile comme stratégie d’exploration structurée
- Mais dès qu’elle s’étend à des zones inconnues, la boucle d’optimisation devient instable
- La contrainte n’autorisant qu’une seule modification par expérience était peut-être trop stricte pour explorer des idées de grande ampleur
- Parmi les pistes d’amélioration proposées figurent l’ajout d’une phase de planification ou l’introduction de sous-agents (subagents)
- Après la fin des expériences, la collaboration avec Claude Code s’est conclue par un retour au quotidien
Remerciements
- Jeu de données Ukiyo-eVG : environ 11K images d’estampes japonaises sur bois avec annotations texte–boîtes englobantes
- Autoresearch : basé sur l’idée originale d’Andrej Karpathy
Aucun commentaire pour le moment.