Steering Vectors
Découvre comment les vecteurs de pilotage permettent un contrôle en temps réel des réseaux neuronaux sans réentraînement. Apprends l'ingénierie d'activation avec Ultralytics YOLO26.
Les vecteurs d'orientation représentent des directions mathématiques significatives dans l'espace d'activation caché d'un neural network qui correspondent à des concepts de haut niveau, tels que la « politesse », la « véracité » ou des caractéristiques visuelles spécifiques. En injectant ou en soustrayant artificiellement ces vecteurs des états internes du modèle lors de la passe avant, tu peux contrôler et modifier de manière prévisible le comportement du modèle sans mettre à jour les poids sous-jacents. Cette technique, fondamentalement ancrée dans l'Activation Engineering, offre un contrôle sans coût et au moment de l'inférence sur des systèmes de deep learning allant des large language models aux architectures de vision.
Comment fonctionnent les steering vectors#
Pour créer un vecteur d'orientation, les chercheurs utilisent généralement une méthode appelée Contrastive Activation Addition (CAA). Cela consiste à faire passer à travers le réseau un ensemble de paires de données contrastées — telles qu'une invite demandant au modèle d'être « utile » par rapport à une autre lui demandant d'être « nuisible ». La différence entre les sorties de la activation function de ces paires est moyennée sur plusieurs échantillons pour isoler la direction géométrique spécifique représentant ce concept dans le tensor space.
Pendant la real-time inference, ce vecteur est ajouté ou soustrait des états cachés à des couches spécifiques en utilisant une simple PyTorch tensor addition. L'ajustement de la force du vecteur permet aux praticiens de régler finement l'intensité du comportement injecté.
Différencier les steering vectors des concepts connexes#
Comprendre comment les vecteurs d'orientation s'intègrent dans le paysage plus large du machine learning nécessite de les distinguer de méthodologies similaires :
- Task Vectors: Alors que les vecteurs de tâches opèrent dans l'espace des poids en modifiant les model weights réels après l'entraînement pour fusionner des capacités, les vecteurs d'orientation opèrent strictement dans l'espace d'activation au moment de l'exécution, laissant les poids d'origine totalement intacts.
- Representation Engineering (RepE): RepE est le cadre méthodologique global de lecture et de contrôle des états cognitifs internes, largement étudié par des organisations telles que le Center for AI Safety. Les vecteurs d'orientation sont les outils mathématiques spécifiques utilisés pendant la phase de contrôle de RepE.
- Prompt Engineering: Le prompt tente de guider le comportement en modifiant le texte ou l'image d'entrée de l'utilisateur. Les vecteurs d'orientation contournent le goulot d'étranglement des entrées, manipulant directement le traitement cognitif interne du modèle.
- Fine-Tuning: Les méthodes d'alignement traditionnelles telles que le Reinforcement Learning from Human Feedback (RLHF) modifient de manière permanente le modèle via la descente de gradient, nécessitant un calcul lourd qui est souvent géré via des outils cloud comme la Ultralytics Platform. Les vecteurs d'orientation évitent entièrement cette surcharge de calcul.
Applications concrètes en IA#
La capacité à orienter dynamiquement les modèles a permis des avancées significatives à travers les pipelines d'artificial intelligence modernes :
- Enhancing AI Safety: En isolant le vecteur d'orientation associé au « refus » ou à l'[inoffensivité], les ingénieurs peuvent forcer les modèles à rejeter les instructions malveillantes. Soutenues par les recherches d'alignement d'OpenAI et les études d'interprétabilité d'Anthropic, l'orientation de fonctionnalités spécifiques peut modifier radicalement le personnage conversationnel d'une IA et garantir des garde-fous de sécurité stricts.
- Controlling Reasoning Models: Des études récentes sur les architectures de pensée avancées démontrent que les vecteurs d'orientation peuvent moduler les chaînes de raisonnement internes. Les praticiens peuvent augmenter la tendance d'un modèle à exprimer de l'incertitude ou à revenir sur des erreurs lors de la résolution de problèmes complexes.
- Mitigating AI Bias: En extrayant le vecteur représentant un biais sociétal spécifique, tu peux soustraire cette direction pendant la génération. Cela neutralise efficacement le biais et améliore l'équité sans réentraînement, tout en réduisant simultanément la probabilité d'hallucination in LLMs.
- Steering Computer Vision Systems: Dans les modèles de vision, les vecteurs d'orientation peuvent être appliqués aux cartes de caractéristiques pour amplifier artificiellement la sensibilité du réseau aux cibles critiques. Par exemple, un modèle d'object detection peut être orienté pour prioriser la recherche de piétons dans des conditions météorologiques défavorables.
Appliquer les steering vectors avec PyTorch#
Voici un exemple exécutable d'application d'une intervention d'orientation par activation à un modèle Ultralytics YOLO26 lors d'une passe avant. En utilisant les PyTorch forward hooks, tu peux injecter des vecteurs personnalisés directement dans les couches cachées.
import torch
from ultralytics import YOLO
# Load the recommended Ultralytics YOLO26 model for state-of-the-art vision tasks
model = YOLO("yolo26n.pt")
# Define a hook function to steer the internal activations
def steer_activations_hook(module, input, output):
# Create a steering vector matching the output shape (for demonstration purposes)
# In practice, this vector is pre-computed via Contrastive Activation Addition (CAA)
steering_vector = torch.ones_like(output) * 0.1
# Add the steering vector to the model's hidden states to alter behavior at inference
return output + steering_vector
# Attach the hook to a middle layer (e.g., layer index 5) to inject the vector
handle = model.model.model[5].register_forward_hook(steer_activations_hook)
# Run inference on an image with the dynamically steered activations
results = model("https://ultralytics.com/images/bus.jpg")
# Remove the hook to restore the model to its original unsteered state
handle.remove()





