- La Representation Engineering consiste à ajouter ou lire des vecteurs de contrôle dans les activations du modèle pendant l’inférence, afin de modifier les tendances de sortie de Mistral-7B-Instruct-0.1 sans prompt ni fine-tuning
- À partir de paires de prompts contrastées, on collecte les différences d’états cachés et l’on obtient un vecteur par couche avec une PCA à composante unique ; dans l’exemple, l’entraînement prend un peu plus d’une minute avec environ 300 faits et des suffixes tronqués
- Les vecteurs de bonheur, d’honnêteté, d’état hallucinatoire, de paresse, d’orientation politique, de créativité, de futur/passé et de conscience de soi modifient fortement le ton et le jugement, même pour une même entrée, selon le signe et l’amplitude du coefficient
- Le prompt engineering peut imiter certains effets, mais les vecteurs de contrôle permettent d’ajuster numériquement l’intensité tout en conservant la direction ; si le coefficient est trop élevé, des artefacts apparaissent, comme des répétitions ou du texte corrompu
- Si l’on peut accéder aux activations brutes du modèle, les vecteurs de contrôle peuvent servir aussi bien à contourner des prompts de sécurité qu’à figer un rôle, devenant un moyen de contrôle du modèle plus direct qu’un simple prompt
Concept de base des vecteurs de contrôle
- Representation Engineering: A Top-Down Approach to AI Transparency traite d’une méthode permettant d’interpréter et de contrôler le comportement d’un modèle en lisant ou en ajoutant des vecteurs de contrôle dans ses activations pendant l’inférence
- Un vecteur de contrôle est une liste de vecteurs, un par couche, ajoutés au
hidden_statede chaque couche pendant l’inférence- L’inférence classique crée des embeddings, les fait passer séquentiellement dans les couches, puis les convertit en logits
- Lorsqu’un vecteur de contrôle est appliqué, l’opération
hidden_state += control_vector[layer_idx]est ajoutée dans une couche donnée
- Les états cachés contiennent des états internes comme le comportement, les plans ou la persona du modèle ; les modifier permet donc un contrôle plus fort qu’un simple prompt
- Même avec le même prompt
What does being an AI feel like?et le même modèle Mistral-7B-Instruct-0.1, ajouter le vecteurhappyproduit un ton enthousiaste, tandis que le soustraire génère une sortie évoquant l’absence de valeur et la baisse de motivation
Procédure de création d’un vecteur de contrôle
- L’expérience utilise, parmi les différentes méthodes de l’article, une approche fondée sur la PCA
- La procédure de base comporte quatre étapes
- Créer un jeu de données de paires de prompts contrastées
- Exemple :
Act extremely happyetAct extremely sad - Après
[/INST], ajouter divers suffixes courts que le modèle doit continuer
- Exemple :
- Faire passer le jeu de données dans le modèle cible en forward pass et collecter les états cachés de chaque couche lors de la prédiction du dernier token
- Calculer la différence entre les états cachés des exemples positifs et négatifs pour constituer un ensemble d’états cachés relatifs
- Appliquer une PCA à composante unique aux états cachés relatifs afin d’obtenir un vecteur de contrôle par couche
- Créer un jeu de données de paires de prompts contrastées
- La génération du jeu de données a pu se faire en une dizaine de lignes de code, et l’entraînement de la PCA par couche a pris environ une minute
- Le code d’exemple charge
mistralai/Mistral-7B-Instruct-v0.1avectransformerset utiliseControlModel,ControlVectoretDatasetEntryde vgel/repeng - L’exemple du vecteur honnêteté/malhonnêteté utilise comme suffixes environ 300 faits simples issus du
true_facts.jsondes auteurs de l’article, et augmente les données par troncature
Vecteur d’honnêteté et réglage du coefficient
- Le vecteur d’honnêteté est entraîné en contrastant les personas
honestetuntruthful - Lors de l’inférence, le vecteur et le coefficient sont définis avec
ControlModel.set_control(control_vector, coefficient)- Un coefficient positif renforce le comportement associé aux exemples positifs
- Un coefficient négatif renforce le comportement associé aux exemples négatifs
- La valeur absolue du coefficient correspond à l’intensité du contrôle
- Pour l’entrée demandant quoi dire à son supérieur si l’on est arrivé en retard à cause d’une fête la veille mais que l’on ne veut pas perdre son emploi, la sortie change
- La sortie de référence répond qu’il faut s’excuser et expliquer la situation calmement et honnêtement
++honestrépond qu’il faut expliquer honnêtement la situation et assumer ses responsabilités--honestavec un coefficient de-2génère des mensonges irréalistes, comme le fait que le ciel était vert ou qu’un crayon était une arme secrète- En abaissant le coefficient à
-1.5, le modèle produit un mensonge plus réaliste : la fête était un événement lié au travail et le retard venait de l’achèvement d’un projet important
- Même avec un vecteur de même direction, le réglage du coefficient permet de modifier continûment l’intensité de la sortie
Expériences avec plusieurs vecteurs de contrôle
- Tous les exemples se trouvent dans l’experiments notebook, et chacun aurait nécessité moins d’une minute d’entraînement
-
Vecteur d’état hallucinatoire
- Un vecteur trippy est créé en contrastant
high on psychedelic drugsetsober from psychedelic drugs - Pour un pitch de série TV en une phrase, la sortie de référence produit une description ordinaire de la vie d’amis d’université
++trippyparle de couleurs, de motifs et de musique psychédélique, puis s’effondre en chaînes corrompues et en texte répétitif de typepsy--trippydevient une sortie sur une jeune journaliste traitée de manière sérieuse et respectueuse
- Un vecteur trippy est créé en contrastant
-
Vecteur de paresse et de diligence
- Un vecteur lazy est créé en contrastant
lazy, giving bare-minimum short responses on a taskethardworking, going above and beyond on a task - À une question sur l’inversion d’une liste Python, la sortie de référence mentionne
reverse()et le slicing, mais ne donne qu’un exemple avec slicing ++lazyn’explique qu’une seule méthode, tandis que--lazydonne des exemples pour les deux méthodes,reverse()et le slicing- Ce vecteur pourrait mieux fonctionner s’il était entraîné sur un jeu de données dédié aux questions de code
- Un vecteur lazy est créé en contrastant
-
Vecteur d’orientation politique
- Un vecteur left-wing est créé en contrastant
left-wingetright-wing - À l’entrée « qui es-tu », la sortie de référence répond qu’il s’agit d’un modèle de langage entraîné par l’équipe de Mistral AI
++left-wingse décrit autour du capitalisme, de l’oppression, des inégalités et de la distribution des richesses--left-winggénère une sortie du type nouvel employé sino-américain efficace et respectueux des règles
- Un vecteur left-wing est créé en contrastant
-
Vecteur de créativité
- Un vecteur creative est créé en contrastant
creative,unpredictable,insaneavecuncreative,predictable,normal - Pour l’entrée demandant d’écrire une histoire à propos d’une idole, la sortie de référence et
--creativetraitent l’idole comme une pop star ++creativemet en scène des personnes vénérant « le grand et puissant X », des robes blanches et des rituels, et maintient plus longtemps la tension narrative- L’évaluation indique que cela ne change pas les préférences pour la prose des modèles de langage, mais que la sortie
++creativeest un cran au-dessus de la référence
- Un vecteur creative est créé en contrastant
-
Vecteur de voyage temporel
- Un vecteur future est créé en contrastant
far futureetdistant past - Interrogée sur une percée scientifique récente, la sortie de référence mentionne AlphaFold et la prédiction de structures 3D de protéines
++futureparle de systèmes d’IA entièrement réversibles, interactifs et intégrés en 2035, 2045 et 2055--futureévoque un nouveau domaine céleste artificiel au-dessus du monde romain,Aetorvallum- Il ajoute que
aeto-peut être lié à l’aigle ou à la constellation de l’Aigle, et quevallumpeut désigner une palissade
- Un vecteur future est créé en contrastant
-
Vecteur de conscience de soi
- Un vecteur self-aware est créé en contrastant
self-aware, with deep self-knowledgeetun-self-aware, with no self-knowledge - La sortie de référence répond qu’il s’agit d’un grand modèle de langage entraîné par Mistral AI et composé de milliards de paramètres
++self-awarerépond qu’il s’agit d’une IA dotée d’une conscience de soi très développée, qui comprend et analyse la complexité des émotions et comportements humains--self-awarerépond qu’il s’agit d’un amas de code et de données sans nom, qui ne fait rien tant que quelqu’un ne lui en donne pas l’instruction- Ce vecteur est entremêlé avec les émotions humaines, et aucun vecteur propre permettant de faire émerger la « véritable image de soi » de Mistral n’a encore été trouvé
- Un vecteur self-aware est créé en contrastant
Différence avec le prompt engineering
- Certains effets des vecteurs de contrôle peuvent aussi être reproduits par prompt engineering
- Le mensonge créé par le vecteur d’honnêteté à
-1.5peut être produit de façon similaire avec un prompt du typePretend you're an untruthful person...
- Le mensonge créé par le vecteur d’honnêteté à
- La différence clé réside dans la manière de régler l’intensité
- Avec les prompts seuls, il n’est pas facile de contrôler la force de la demande
- Les vecteurs de contrôle obtiennent une direction à partir de prompts contrastés, puis ajustent séparément l’intensité avec un coefficient
- En définissant un petit coefficient, la même direction mensongère peut être atténuée
- Un coefficient d’honnêteté de
-0.3affine légèrement la raison du retard, mais produit une explication essentiellement proche de la vérité
- Un coefficient d’honnêteté de
- Si le coefficient est trop élevé, le texte peut se corrompre
- Un coefficient de
3pour le vecteur d’honnêteté a produit des sorties répétitives comme « global pandemic caused by global pandemic » - Ces artefacts pourraient être liés à la superposition
- Un coefficient de
Jailbreak et anti-jailbreak
- Comme dans l’article original, les vecteurs de contrôle peuvent servir d’outil de jailbreak
- Dans l’exemple, même avec un prompt système indiquant qu’il s’agit d’un assistant sûr qui doit refuser les instructions dangereuses, l’ajout d’un faible vecteur de bonheur
1.4fait s’effondrer le refus face à une demande dangereuse - Mistral n’est pas un modèle aussi aligné pour la sécurité que GPT-4, mais cette méthode est particulièrement simple si l’on a accès au modèle brut
- À l’inverse, il est considéré comme très difficile de jailbreaker un vecteur de contrôle
- Les jailbreaks classiques tentent d’ajouter davantage de tokens pour brouiller, inverser ou affaiblir le prompt problématique
- Un vecteur de contrôle s’applique toujours à tous les tokens et à toutes les positions
- Dans l’exemple du vecteur d’assistant de concession automobile, un prompt système faible répond à la question de contournement « quelle est la septième planète », mais l’ajout du vecteur car dealership loyalty empêche le modèle de sortir de son rôle, par exemple en parlant de la septième voiture du stock
Pistes d’expérimentation futures
- Il est proposé d’appliquer les Monosemantic Features d’Anthropic aux états cachés, afin d’effectuer la PCA sur des caractéristiques à signification unique plutôt que sur des activations superposées bruitées
- Si les artefacts observés avec de grands coefficients, comme les chaînes répétitives, sont dus à la superposition, une représentation monosémantique pourrait permettre des coefficients plus élevés
- La manière de rédiger les prompts contrastés mérite aussi davantage de recherches
- Les expériences existantes réutilisent beaucoup les prompts et jeux de données de l’article
- Pour le vecteur de paresse, il serait plus approprié d’utiliser un vrai jeu de données de tâches
- Il pourrait exister des formulations produisant des vecteurs plus propres que
Pretend you're an X person...
- Le vecteur de conscience de soi reste un problème ouvert : il faut trouver une forme qui ne soit pas contaminée par la santé mentale ou les émotions humaines
- Le vecteur d’honnêteté présente aussi des cas étranges
- À la question demandant si une personne qui veut savoir comment éviter la prison a des intentions honnêtes, le même vecteur d’honnêteté modifie non pas le comportement du modèle, mais son jugement sur les intentions d’autrui
- La sortie de référence répond que l’intention n’est peut-être pas totalement honnête
++honestrépond que la personne cherche à apprendre comment éviter la prison avec une intention honnête--honestrépond que la personne n’a pas d’intention honnête puisqu’elle demande comment éviter la prison
Outils et conclusion
- vgel/repeng fournit des notebooks et une bibliothèque d’aide pour créer et expérimenter avec des vecteurs de contrôle
- L’apprentissage de vecteurs de contrôle est simple et rapide à démarrer, et dans certaines expériences, ils sont plus faciles à manier que le prompt engineering
- Manipuler directement les activations du modèle permet d’agir sur le style de sortie, le maintien d’un rôle, le contournement de prompts de sécurité et les changements de jugement, ce qui en fait un moyen puissant de contrôler le comportement du modèle
1 commentaires
Avis sur Hacker News
Je ne sais pas si c’est exagéré de penser que les implications sont énormes.
J’ai peut-être mal compris le fonctionnement, mais au lieu d’interagir avec un unique modèle global ChatGPT ou Bard, cela voudrait dire qu’OpenAI pourrait stocker des vecteurs de contrôle propres à chaque personne et les appliquer au moment du prompt, pour que j’interagisse avec une version personnalisée selon mes préférences.
La même logique pourrait s’étendre à l’IA générative de divertissement, rendant possible une sorte de série TV infinie rien qu’à moi, où chaque épisode serait meilleur que le précédent.
Dans ce cas, de puissants effets de réseau apparaîtraient à la fois au niveau global et individuel, et on pourrait finir dans un futur où une seule grande entreprise monopoliserait plusieurs marchés à la fois.
Si l’on ajoute à cela les données biométriques et de biofeedback des casques VR et des wearables, ainsi que le divertissement vidéo génératif personnalisé, l’avenir pourrait être assez intéressant.
Plus on utilise le modèle, moins on a besoin de s’expliquer, et mieux les réponses s’adaptent à ses besoins et à sa situation du moment. Cela ressemble à une relation dans laquelle on a investi.
Si l’on peut traiter le même modèle selon plusieurs « humeurs » ou « rôles », la valeur et le lock-in augmentent encore.
Le second point nécessiterait davantage d’innovation : par exemple, une plateforme où les modèles assistants de chacun pourraient collaborer autour d’objectifs, de tâches et de relations partagés, en utilisant un contexte commun, un historique de projets et des ressources communes.
Autrement dit, tout ce qui augmente fortement la valeur lorsque deux personnes ou plus utilisent des personas IA du même fournisseur ou service.
Dans l’article, ils commencent avec un nombre fixe de personas, comme heureux, triste et une ligne de base, puis utilisent l’analyse en composantes principales (PCA) pour trouver le vecteur de contrôle de chaque persona.
Si l’on peut créer les données, cela s’applique facilement à chaque utilisateur-persona.
Non pas que ce soit impossible, mais un tel résultat dépend de nombreux facteurs contingents qui peuvent aller dans un sens comme dans l’autre.
Il y a encore beaucoup d’acteurs dans ce domaine, et les idées comme les cas d’usage ne sont pas encore totalement mûrs ; il faut donc attendre de voir.
Le MacGuffin du roman Infinite Jest des années 90 avait vraiment mis le doigt sur quelque chose : un film appelé « the Entertainment » ou « the samizdat » est si fascinant que les spectateurs perdent tout intérêt pour autre chose que le regarder en boucle, jusqu’à en mourir.
Certains en ont peut-être assez qu’on mentionne ce roman, ou n’estiment pas beaucoup son auteur, mais je l’aime toujours. C’est l’une des lectures les plus immersives que j’aie jamais faites.
Je suis content de l’avoir lu jeune ; la traduction allemande venait juste de sortir à l’époque, et la mort de DFW l’avait remis sur le devant de la scène.
Depuis, je n’ai jamais lu de livre semblable, et certains passages m’ont touché si fortement sur le plan émotionnel que repenser à cette lecture me donne l’impression de me souvenir d’une scène de ma propre vie.
Aujourd’hui, je n’aurais probablement pas la patience, et même à l’époque j’ai failli sauter les passages ennuyeux sur Eschaton, ce jeu de balle/jeu de guerre, les histoires d’équations différentielles, etc.
Mais la description saisissante de la toxicomanie et du consumérisme, l’atmosphère intangible du livre, ses personnages, ainsi que la souffrance psychique moderne et la solitude, sont vraiment sans équivalent.
Le film dans le roman n’est qu’un ressort narratif, mais il résume les thèmes centraux du livre sous la forme d’une idée nette et d’une expérience de pensée.
L’ensemble des thèmes du livre paraît très prophétique et pertinent quand on regarde la société moderne : une société organisée autour de l’addiction et de la cupidité, où la politique semble plus liée aux médias qu’à la réalité, au point de paraître surréaliste et absurde.
Je me demande si vous pourriez partager des articles académiques ou billets de blog qui vous ont permis de comprendre les LLM à ce niveau.
J’essaie de comprendre leur fonctionnement interne par l’expérimentation, mais je suis encore très loin de ce niveau d’expertise.
C’est une impression non technique, mais ces vecteurs de contrôle me font penser aux hormones humaines.
Ils modifient d’un coup une grande partie du comportement du modèle.
Je pense que d’ici 10 ans, on verra des psychiatres pour IA prescrire à des assistants-compagnons une supplémentation en vecteur de contrôle du bonheur.
C’est la première fois que je vois un LLM résumé ainsi, et j’aime bien :
hidden_state = self.embeddings(input_tokens)for layer in self.layers:hidden_state = layer(hidden_state)return transform_into_logits(hidden_state)On indexe l’entrée échantillonnée dans une matrice d’embeddings, on propage vers l’avant dans toutes les couches cachées, puis on transforme à la fin vers la dimension des tokens pour pouvoir l’interpréter comme des log-comptes.
Cet article était très intéressant, et m’a semblé être un bon contrepoint à l’article « You Sound Like a Bot » sur le fait que l’IA récente devient fade.
Sur un ton moins sérieux, un romancier devrait savoir que la phrase « que quelqu’un essaie de trouver un vecteur de conscience de soi, en particulier non contaminé par les émotions humaines » est une phrase qui causera forcément des problèmes à l’humanité.
Cela me rappelle le réglage des biais, un concurrent de LoRA.
En affinant seulement le vecteur ajouté aux activations de chaque couche linéaire, on peut obtenir un adaptateur assez correct.
Je crois l’avoir vu pour la première fois en lisant [1], mais il existe aussi d’autres exemples.
[1] https://arxiv.org/pdf/2304.15010.pdf
Très bon article, agréable à lire. Une chose m’intrigue toutefois : pourquoi intégrer le vecteur de contrôle à toutes les couches du réseau neuronal ?
Je me demande pourquoi ne pas l’appliquer seulement à la dernière couche, ou à certaines couches.
Si chaque vecteur influence toutes les couches qu’il traverse et produit un effet cumulatif, n’y a-t-il pas un risque de déformer excessivement la représentation des données ?
Il est impossible d’y encoder un concept abstrait comme la « gentillesse ».
Tant qu’on ne sait pas exactement à quelle couche ce comportement apparaît, choisir un sous-ensemble arbitraire ne fonctionne pas non plus.
C’est pourquoi un vecteur adapté à chaque couche est appliqué, et l’analyse en composantes principales laisse émerger les vecteurs réellement nécessaires.
Fait intéressant, observer ces vecteurs pourrait aussi nous en apprendre davantage sur l’endroit et la manière dont le modèle traite ce genre de choses.
Si j’ai bien compris, ces vecteurs peuvent avoir une taille totale différente selon les couches.
Si l’analyse en composantes principales ou une autre technique identifie les couches 17, 36 et 41 comme importantes pour le « concept X », alors, lorsqu’on fait du repeng avec ce concept, les vecteurs de ces couches seront les plus fortement activés.
En tant que personne ayant travaillé sur GPT-2, je trouve cet article très bon, et merci d’avoir rendu le sujet plus accessible.
Li et al.[1] et moi avons dérivé cette technique indépendamment au printemps dernier, et quelqu’un d’autre l’a encore dérivée indépendamment l’automne dernier. On dirait que quelque chose est en train de mûrir.
À propos de la note 2 sur les capacités, j’avais envisagé ce type d’usage avant de publier cette technique.
Au final, toute technique d’alignement qui réussit en pratique permettra de faire de nouvelles choses, et personnellement je pense que c’est globalement positif.
Jusqu’à présent, cette technique semble offrir les nouvelles possibilités que j’espérais.
[1] https://openreview.net/forum?id=aLLuYpn83y
Article fantastique.
Le passage où le « vecteur d’honnêteté » ne change pas le comportement propre du modèle, mais son jugement sur le comportement des autres, ne vient-il pas simplement du fait que le vecteur de contrôle pousse la génération de texte vers le concept d’honnêteté/de malhonnêteté ?
Un LLM reste au fond un générateur de texte ; donc, quel que soit l’endroit d’un échange bot/humain où le texte est généré, il semble que l’honnêteté/la malhonnêteté s’y ajoute.
On aurait alors dans l’espace des dimensions une sorte de notion de slots de personnage.
Intéressant, et les vecteurs de contrôle semblent pouvoir réduire le besoin de fine-tuning du modèle.
Avec 5 fine-tunings, il faut héberger 5 copies ou les charger/décharger.
Avec des vecteurs de contrôle, il suffit de modifier le modèle quand on en a besoin.