- Dans les cartes de caractéristiques des ViT, les tokens à norme élevée apparaissent surtout dans des zones d’arrière-plan peu informatives, et s’interprètent comme un phénomène où des tokens de patch sont réutilisés comme espace de stockage pour les calculs internes
- La solution consiste à ajouter à la séquence d’entrée des tokens de registre distincts des patchs d’image, afin de séparer le rôle de calcul interne dans des tokens dédiés
- Dans les ViT entraînés en supervisé comme en auto-supervisé, les artefacts diminuent et les cartes de caractéristiques ainsi que les attention maps deviennent plus lisses, ce qui est favorable aux tâches visuelles downstream
- Des améliorations ont été rapportées pour l’object discovery et la dense prediction, mais avec OpenCLIP, les performances d’object localization reculent légèrement ; la formulation selon laquelle l’amélioration vaut pour « tous les modèles » a donc été corrigée
- L’ajout de 4 à 16 tokens de registre entraîne 2 à 6 % de calcul supplémentaire, et augmenter le nombre de tokens n’améliore pas toujours les performances sur les tâches denses
Artefacts observés dans les cartes de caractéristiques des ViT
- Les Vision Transformers sont de puissants outils pour l’apprentissage de représentations visuelles, mais des artefacts ont été constatés dans les cartes de caractéristiques de ViT entraînés en supervisé et en auto-supervisé
- Ces artefacts sont observés pendant l’inférence sous forme de tokens à norme élevée
- Ils surviennent principalement dans des zones d’arrière-plan de l’image contenant peu d’information
- Le réseau semble réutiliser ces tokens pour ses calculs internes
- Ces tokens proviennent de patchs d’arrière-plan similaires aux patchs voisins ; ils sont considérés comme contenant peu d’information locale de patch, mais davantage d’information globale sur l’image
- Dans DINOv2 et d’autres ViT, la baisse de résolution spatiale et de précision des attention maps peut affecter les performances des tâches downstream d’object discovery et de localization
Méthode des tokens de registre
- La solution proposée consiste à ajouter à la séquence d’entrée du Vision Transformer des tokens de registre distincts des patchs d’image
- Les registres sont décrits comme des tokens séparés des tokens de patch d’image, à la manière du CLS token, mais qui ne sont pas directement utilisés dans le calcul de la loss
- L’objectif est de faire prendre en charge ce rôle par des tokens dédiés, afin que les tokens de patch existants ne soient pas utilisés comme « espace de stockage » pour les calculs internes
- Cette méthode est liée aux Memory Transformers existants, mais l’approche consistant à analyser les artefacts de caractéristiques puis à ajouter de nouveaux tokens pour les corriger est spécifique à l’analyse de cet article
Évolution des cartes de caractéristiques et des tâches downstream
- L’ajout de registres est présenté comme supprimant ces artefacts dans les modèles entraînés en supervisé comme en auto-supervisé
- Les cartes de caractéristiques et les attention maps deviennent plus lisses, ce qui favorise le downstream visual processing
- La méthode est résumée comme atteignant un nouvel état de l’art sur les tâches de dense visual prediction pour les modèles visuels auto-supervisés
- Elle permet également d’utiliser des méthodes d’object discovery avec des modèles plus grands
- Dans DINOv2 et DeiT-III, les performances d’object discovery augmentent, tandis que les performances sur les tâches au niveau image sont globalement préservées
Exceptions selon les modèles et analyses complémentaires
- Avec OpenCLIP, l’ajout de registres n’a pas amélioré les résultats d’object localization, et les chiffres du tableau montrent une légère baisse des performances
- Les auteurs reconnaissent dans leur réponse que l’affirmation selon laquelle « les performances d’object discovery s’améliorent sur tous les modèles » n’est pas étayée par les chiffres
- Ce point a été corrigé dans la Section 3.3
- Pour OpenCLIP, une diminution de la norme apparaît dans la Figure 7, mais elle ne se traduit pas par une amélioration de l’object localization dans le Table 3 ; cette incohérence est discutée
- Dans l’évaluation LOST, le meilleur embedding parmi les keys, queries et values est sélectionné pour chaque modèle
- Dans CLIP, les values donnaient les meilleurs résultats, et les artefacts sont visibles dans les keys ou les queries, mais pas dans les values, ce qui est cohérent avec le Table 3 et l’analyse qualitative
- Dans MAE, les mêmes « outlier patches » ne semblent pas apparaître
- Cela pourrait s’expliquer par le fait que MAE est entraîné uniquement avec une loss locale, ce qui limite ou supprime le besoin de rassembler de l’information globale
- La précision de classification ImageNet en linear probing de MAE-ViT-Large est de 75 %, plus faible que celle d’autres méthodes SSL
Performances, coût et limites
- Les registres constituent une méthode simple, mais augmentent le volume de calcul en raison des tokens supplémentaires
- Une hausse de 2 à 6 % du calcul est rapportée lors de l’ajout de 4 à 16 tokens de registre
- Augmenter le nombre de registres ne conduit pas toujours à une amélioration des tâches denses
- Le passage de 0 à 1 registre supprime les artefacts et améliore la segmentation ainsi que la depth prediction
- Après 1 registre, l’ajout de registres supplémentaires ne fait pas beaucoup progresser les performances de segmentation et de depth prediction, car la feature map est déjà propre
- Les performances de classification avaient tendance à s’améliorer davantage avec plus de registres, mais il n’existe pas encore d’intuition claire pour expliquer ce phénomène
- Sur le dataset NYU depth, le passage de 8 à 16 registres entraîne une légère hausse du RMSE
- L’augmentation de la longueur de séquence a pu modifier les hyperparamètres optimaux
- L’écart de 0,03 RMSE entre 8 et 16 registres est faible par rapport à l’écart de 0,1 RMSE entre 0 et 1 registre, et pourrait donc simplement relever du bruit
Acceptation OpenReview et points débattus dans les reviews
- La décision OpenReview est Accept (oral)
- La méta-review indique que les quatre reviewers ont tous attribué la note de 8, et que la contribution technique de l’article est reconnue
- Les reviewers ont exprimé des préoccupations concernant les incohérences de performance, la relation entre le biais des datasets et les modèles SSL, le choix des paramètres d’optimisation, ainsi que l’effet du gradient clipping
- Au cours de la phase de rebuttal, les auteurs ont ajouté des expériences supplémentaires et des analyses en appendix
- Les discussions ultérieures ont renforcé l’analyse des mécanismes internes, notamment pour déterminer si les registres reprennent le comportement des outliers, si les image tokens redeviennent plus locaux, et comment évolue la norme du CLS token
1 commentaires
Commentaires Hacker News
Selon l’article, un register est un jeton supplémentaire entraînable ajouté à la séquence d’entrée pendant l’entraînement d’un modèle Vision Transformer
Il est ajouté après la couche d’embedding des patchs comme une valeur entraînable, à la manière du jeton [CLS], et à la fin du Vision Transformer, les jetons register sont supprimés tandis que seuls le jeton [CLS] et les jetons de patch sont utilisés comme représentation de l’image
Ce jeton offre au modèle un espace pour stocker, traiter et interroger des informations globales pendant la propagation avant, évitant ainsi de devoir détourner les jetons de patch pour cet usage
Résultat, les artefacts visibles dans les feature maps du Vision Transformer entraîné et les jetons aberrants à norme élevée disparaissent, les feature maps deviennent plus lisses, et les performances en dense prediction ainsi qu’en découverte d’objets non supervisée s’améliorent
Le coût en inférence n’augmente que de 2 %, mais cela améliore nettement les performances du ViT, ce qui ressemble à un résultat élégant proche du repas gratuit
Les expressions régulières probabilistes sont déjà une chose, mais là on est à un tout autre niveau de débauche mathématique
Cela dit, c’est vraiment étonnant que ça fonctionne ainsi
Cela ressemble à un attention sink ou à un pause token
Je me demande si quelqu’un a étudié une approche où la sortie brute d’un passage est transmise telle quelle comme entrée du suivant
Ça semble lié : "Let's Think Dot by Dot: Hidden Computation in Transformer Language Models" https://arxiv.org/abs/2404.15758
Cet article estime qu’il n’est pas clair si l’amélioration des performances chain-of-thought dans les modèles de langage vient d’une décomposition des tâches à la manière humaine, ou simplement de la quantité de calcul supplémentaire apportée par des jetons en plus
Il montre qu’un Transformer peut résoudre des tâches algorithmiques difficiles qu’il ne savait pas résoudre lorsqu’il devait répondre sans jetons intermédiaires, même avec de simples jetons de remplissage dénués de sens, par exemple
......, mais que l’apprentissage de l’usage de tels jetons de remplissage nécessite une supervision concrète et denseCela amène à se demander si l’ajout de jetons spéciaux de calcul/register pourrait aussi être bénéfique pour les LLM textuels
Discussion supplémentaire : https://news.ycombinator.com/item?id=40182695, https://www.reddit.com/r/LocalLLaMA/comments/1cf2w5a/transfo...
Ces dernières années, j’ai testé des dizaines, peut-être plus d’une centaine, d’articles et d’idées en vision et en perception multimodale, et c’était l’un des rares cas où tout fonctionnait bien
Par exemple, ce modèle est entraîné avec 4 jetons register et une perte de type Matryoshka, et produit de très petits embeddings de 64 dimensions qui peuvent être utiles à ceux qui cherchent une alternative à CLIP : https://huggingface.co/unum-cloud/uform3-image-text-english-...
Je l’ai vu à l’ICLR, c’était l’un des meilleurs articles de l’année, et cela sautait aussi aux yeux lors de la session poster
Félicitations aux auteurs
J’utilise DinoV2 depuis plusieurs mois, et j’ai aussi testé un modèle avec 4 jetons register en plus de [CLS] et des jetons de patch
Comme plusieurs jetons d’embedding issus de l’ancien modèle sans register faisaient déjà partie de la solution, le jeton [CLS] n’était pas aligné entre le modèle à 0 register et celui à 4 register, donc je n’ai pas adopté le nouveau modèle avec register
J’aimerais qu’il y ait un moyen d’aligner [CLS] et les jetons de patch entre les deux modèles
On dirait un attention sink pour les modèles de vision