Steering Vectors
Scopri come i vettori di controllo (steering vectors) consentono il controllo in tempo reale delle reti neurali senza doverle riaddestrare. Impara l'activation engineering con Ultralytics YOLO26.
I steering vectors rappresentano direzioni matematiche significative all'interno dello spazio di attivazione nascosto di una neural network che corrispondono a concetti di alto livello, come "educazione", "veridicità" o specifiche caratteristiche visive. Iniettando o sottraendo artificialmente questi vettori dagli stati interni del modello durante il passaggio in avanti (forward pass), puoi controllare e alterare in modo prevedibile il comportamento del modello senza aggiornare i pesi sottostanti. Questa tecnica, fondamentalmente radicata nell'Activation Engineering, fornisce un controllo a costo zero e in tempo di inferenza sui sistemi di deep learning che spaziano dai large language models alle architetture di visione.
Link to this sectionCome funzionano gli steering vectors#
Per creare uno steering vector, i ricercatori utilizzano solitamente un metodo chiamato Contrastive Activation Addition (CAA). Questo comporta il passaggio attraverso la rete di una serie di coppie di dati contrastanti, come un prompt che chiede al modello di essere "utile" rispetto a uno che chiede di essere "dannoso". La differenza nelle uscite della activation function tra queste coppie viene mediata su più campioni per isolare la specifica direzione geometrica che rappresenta quel concetto nello tensor space.
Durante il real-time inference, questo vettore viene aggiunto o sottratto dagli stati nascosti a livelli specifici utilizzando una semplice PyTorch tensor addition. Scalare la forza del vettore ti permette di regolare con precisione l'intensità del comportamento iniettato.
Link to this sectionDifferenziare gli steering vectors da concetti correlati#
Capire come gli steering vectors si inseriscono nel più ampio panorama del machine learning richiede di distinguerli da metodologie simili:
- Task Vectors: Mentre i task vectors operano nello spazio dei pesi modificando i model weights effettivi dopo l'addestramento per unire le capacità, gli steering vectors operano rigorosamente nello spazio di attivazione durante il runtime, lasciando i pesi originali completamente intatti.
- Representation Engineering (RepE): La RepE è il framework metodologico globale per la lettura e il controllo degli stati cognitivi interni, oggetto di ricerche approfondite da parte di organizzazioni come il Center for AI Safety. Gli steering vectors sono gli strumenti matematici specifici utilizzati durante la fase di controllo della RepE.
- Prompt Engineering: Il prompting tenta di guidare il comportamento modificando il testo o l'immagine di input dell'utente. Gli steering vectors aggirano il collo di bottiglia dell'input, manipolando direttamente l'elaborazione cognitiva interna del modello.
- Fine-Tuning: I metodi di allineamento tradizionali come il Reinforcement Learning from Human Feedback (RLHF) alterano permanentemente il modello tramite la discesa del gradiente, richiedendo una potenza di calcolo elevata spesso gestita tramite strumenti cloud come la Ultralytics Platform. Gli steering vectors evitano completamente questo sovraccarico computazionale.
Link to this sectionApplicazioni nel mondo reale dell'AI#
La capacità di guidare dinamicamente i modelli ha sbloccato progressi significativi in tutte le moderne pipeline di artificial intelligence:
- Enhancing AI Safety: Isolando lo steering vector associato al "rifiuto" o all'"innocuità", gli ingegneri possono costringere i modelli a rifiutare istruzioni dannose. Supportato dalla ricerca sull'allineamento di OpenAI e dagli studi di interpretabilità di Anthropic, la direzione di caratteristiche specifiche può alterare drasticamente la personalità conversazionale di un'AI e garantire rigorose barriere di sicurezza.
- Controlling Reasoning Models: Studi recenti su architetture di pensiero avanzate dimostrano che gli steering vectors possono modulare le catene di ragionamento interno. Puoi aumentare la tendenza di un modello a esprimere incertezza o a tornare sui propri passi in caso di errori durante la risoluzione di problemi complessi.
- Mitigating AI Bias: Estraendo il vettore che rappresenta un specifico pregiudizio sociale, puoi sottrarre questa direzione durante la generazione. Questo neutralizza efficacemente il pregiudizio e migliora l'equità senza riaddestrare, riducendo contemporaneamente la probabilità di hallucination in LLMs.
- Steering Computer Vision Systems: Nei modelli di visione, gli steering vectors possono essere applicati alle feature map per aumentare artificialmente la sensibilità della rete verso target critici. Ad esempio, un modello di object detection può essere indirizzato a dare priorità al rilevamento di pedoni in condizioni meteorologiche avverse.
Link to this sectionApplicare gli steering vectors con PyTorch#
Di seguito trovi un esempio eseguibile dell'applicazione di un intervento di steering di attivazione su un modello Ultralytics YOLO26 durante un passaggio in avanti. Utilizzando i PyTorch forward hooks, puoi iniettare vettori personalizzati direttamente nei livelli nascosti.
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()





