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 steering vectors représentent des directions mathématiques significatives au sein de 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 (forward pass), les développeurs peuvent 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 à coût nul et en temps d'inférence sur les systèmes de deep learning, allant des large language models aux architectures de vision.
Link to this sectionComment fonctionnent les steering vectors#
Pour créer un steering vector, les chercheurs utilisent généralement une méthode appelée Contrastive Activation Addition (CAA). Cela implique de faire passer un ensemble de paires de données contrastées — comme une consigne demandant au modèle d'être « utile » versus une autre lui demandant d'être « nuisible » — à travers le réseau. La différence dans les sorties de la activation function entre ces paires est moyennée sur plusieurs échantillons afin d'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 au niveau de couches spécifiques en utilisant une simple PyTorch tensor addition. Ajuster la force du vecteur permet aux praticiens de régler finement l'intensité du comportement injecté.
Link to this sectionDifférencier les steering vectors des concepts connexes#
Comprendre comment les steering vectors 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 task vectors 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 steering vectors opèrent strictement dans l'espace d'activation au moment de l'exécution, laissant les poids d'origine totalement inchangés.
- Representation Engineering (RepE) : RepE est le cadre méthodologique global de lecture et de contrôle des états cognitifs internes, faisant l'objet de recherches intensives par des organisations comme le Center for AI Safety. Les steering vectors sont les outils mathématiques spécifiques utilisés lors de la phase de contrôle de RepE.
- Prompt Engineering : Le prompt engineering tente de guider le comportement en modifiant le texte ou l'image d'entrée de l'utilisateur. Les steering vectors contournent le goulot d'étranglement de l'entrée en manipulant directement le traitement cognitif interne du modèle.
- Fine-Tuning : Les méthodes d'alignement traditionnelles comme le Reinforcement Learning from Human Feedback (RLHF) modifient de manière permanente le modèle via la descente de gradient, nécessitant une puissance de calcul importante souvent gérée via des outils cloud comme la Ultralytics Platform. Les steering vectors évitent totalement cette surcharge computationnelle.
Link to this sectionApplications concrètes en IA#
La capacité à piloter dynamiquement les modèles a permis des avancées significatives dans les pipelines modernes d'artificial intelligence :
- Enhancing AI Safety : En isolant le steering vector associé au « refus » ou à l'« innocuité », les ingénieurs peuvent forcer les modèles à rejeter les instructions malveillantes. Soutenu par les OpenAI's alignment research et les études d'interprétabilité d'Anthropic, le pilotage de caractéristiques spécifiques peut radicalement modifier la personnalité conversationnelle d'une IA et garantir des garde-fous de sécurité stricts.
- Controlling Reasoning Models : Des études récentes sur les architectures de réflexion avancées démontrent que les steering vectors peuvent moduler les chaînes de raisonnement internes. Les praticiens peuvent accroître 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, les développeurs peuvent 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'une hallucination in LLMs.
- Steering Computer Vision Systems : Dans les modèles de vision, les steering vectors peuvent être appliqués aux cartes de caractéristiques (feature maps) pour augmenter 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 difficiles.
Link to this sectionAppliquer les steering vectors avec PyTorch#
Tu trouveras ci-dessous un exemple exécutable de l'application d'une intervention de pilotage par activation sur 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()





