Steering Vectors
Scopri come gli steering vector consentono il controllo in tempo reale sulle reti neurali senza riaddestramento. Impara l'ingegneria dell'attivazione con Ultralytics YOLO26.
I vettori di steering rappresentano direzioni matematiche significative all'interno dello spazio di attivazione nascosto di una rete neurale 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), gli sviluppatori possono controllare e alterare in modo prevedibile il comportamento del modello senza aggiornare alcun peso sottostante. Questa tecnica, fondata fondamentalmente sull'ingegneria dell'attivazione, offre un controllo a costo zero e in fase di inferenza sui sistemi di deep learning, dai grandi modelli linguistici alle architetture di visione.
Come funzionano i vettori di guida#
Per creare un vettore di steering, i ricercatori utilizzano tipicamente un metodo chiamato Contrastive Activation Addition (CAA). Questo comporta il passaggio attraverso la rete di un insieme di coppie di dati contrastivi, come un prompt che chiede al modello di essere "utile" rispetto a uno che gli chiede di essere "dannoso". La differenza nei risultati della funzione di attivazione tra queste coppie viene mediata su più campioni per isolare la specifica direzione geometrica che rappresenta quel concetto nello spazio dei tensori.
Durante l'inferenza in tempo reale, questo vettore viene aggiunto o sottratto dagli stati nascosti a livelli specifici utilizzando una semplice addizione di tensori PyTorch. Il ridimensionamento della forza del vettore consente ai professionisti di perfezionare l'intensità del comportamento iniettato.
Differenziare i vettori di guida dai concetti correlati#
Comprendere come i vettori di steering 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 reali pesi del modello post-addestramento per unire le capacità, i vettori di steering operano rigorosamente nello spazio di attivazione in fase di esecuzione (runtime), lasciando i pesi originali completamente intatti.
- Representation Engineering (RepE): RepE è il quadro metodologico generale di lettura e controllo degli stati cognitivi interni, ampiamente studiato da organizzazioni come il Center for AI Safety. I vettori di steering sono i specifici strumenti matematici utilizzati nella fase di controllo di RepE.
- Prompt Engineering: Il prompting tenta di guidare il comportamento modificando il testo o l'immagine di input dell'utente. I vettori di steering aggirano il collo di bottiglia dell'input, manipolando direttamente l'elaborazione cognitiva interna del modello.
- Fine-Tuning: I tradizionali metodi di allineamento come l'Apprendimento Rinforzato da Feedback Umano (RLHF) alterano permanentemente il modello tramite discesa del gradiente, richiedendo un calcolo pesante che viene spesso gestito tramite strumenti cloud come la Ultralytics Platform. I vettori di steering evitano completamente questo sovraccarico computazionale.
Applicazioni reali nell'IA#
La capacità di guidare dinamicamente i modelli ha sbloccato significativi progressi nei moderni pipeline di intelligenza artificiale:
- Miglioramento della Sicurezza dell'IA: Isolando il vettore di steering associato al "rifiuto" o all' "inoffensività", gli ingegneri possono costringere i modelli a respingere istruzioni dannose. Supportato dalla ricerca sull'allineamento di OpenAI e dagli studi sull'interpretabilità di Anthropic, la guida di caratteristiche specifiche può alterare drasticamente la persona conversazionale di un'IA e garantire rigorose barriere di sicurezza.
- Controllo dei Modelli di Ragionamento: Recenti studi su architetture di pensiero avanzate dimostrano che i vettori di steering possono modulare le catene di ragionamento interne. I professionisti possono 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.
- Mitigazione del Bias dell'IA: Estraendo il vettore che rappresenta un determinato bias sociale, gli sviluppatori possono sottrarre questa direzione durante la generazione. Ciò neutralizza efficacemente il bias e migliora l'equità senza riaddestrare, riducendo contemporaneamente la probabilità di allucinazione nei modelli linguistici (LLM).
- Guida dei Sistemi di Visione Artificiale: Nei modelli di visione, i vettori di steering possono essere applicati alle mappe delle feature per aumentare artificialmente la sensibilità della rete ai bersagli critici. Ad esempio, un modello di rilevamento di oggetti può essere guidato a dare priorità alla ricerca di pedoni in condizioni meteorologiche avverse.
Applicare i vettori di guida con PyTorch#
Di seguito è riportato un esempio eseguibile di applicazione di un intervento di steering dell'attivazione a un modello Ultralytics YOLO26 durante un passaggio in avanti. Utilizzando i forward hooks di PyTorch, 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()





