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 guida 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 prevedibilmente il comportamento del modello senza aggiornare alcun peso sottostante. Questa tecnica, fondamentalmente radicata nell'Activation Engineering, fornisce un controllo a costo zero e in fase di inferenza sui sistemi di deep learning che spaziano dai large language models alle architetture di visione.
Link to this sectionCome funzionano i vettori di guida#
Per creare un vettore di guida, 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 negli output della funzione di attivazione tra queste coppie viene mediata su più campioni per isolare la specifica direzione geometrica che rappresenta quel concetto nello spazio tensoriale.
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. Scalare la forza del vettore consente agli operatori di perfezionare l'intensità del comportamento iniettato.
Link to this sectionDifferenziare i vettori di guida dai concetti correlati#
Comprendere come i vettori di guida si inseriscono nel più ampio panorama del machine learning richiede di distinguerli da metodologie simili:
- Vettori di compito (Task Vectors): Mentre i vettori di compito operano nello spazio dei pesi modificando i pesi del modello effettivi post-addestramento per unire le capacità, i vettori di guida operano rigorosamente nello spazio di attivazione durante il runtime, lasciando i pesi originali completamente intatti.
- Ingegneria della rappresentazione (RepE): RepE è il framework metodologico globale per la lettura e il controllo degli stati cognitivi interni, ampiamente studiato da organizzazioni come il Center for AI Safety. I vettori di guida sono gli specifici strumenti matematici utilizzati durante la fase di controllo di RepE.
- Ingegneria dei prompt (Prompt Engineering): Il prompt engineering tenta di guidare il comportamento modificando il testo o l'immagine di input dell'utente. I vettori di guida bypassano 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 discesa del gradiente, richiedendo un calcolo intensivo spesso gestito tramite strumenti cloud come la piattaforma Ultralytics. I vettori di guida evitano del tutto questo sovraccarico computazionale.
Link to this sectionApplicazioni reali nell'IA#
La capacità di guidare dinamicamente i modelli ha sbloccato progressi significativi in tutti i moderni pipeline di intelligenza artificiale:
- Migliorare la sicurezza dell'IA: Isolando il vettore di guida associato al "rifiuto" o alla "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, guidare specifiche caratteristiche può alterare drasticamente la personalità conversazionale di un'IA e garantire rigorosi guardrail di sicurezza.
- Controllare i modelli di ragionamento: Studi recenti su architetture di pensiero avanzate dimostrano che i vettori di guida possono modulare le catene di ragionamento interne. Gli operatori 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.
- Mitigare i bias dell'IA: Estraendo il vettore che rappresenta uno specifico bias sociale, gli sviluppatori possono sottrarre questa direzione durante la generazione. Ciò neutralizza efficacemente il bias e migliora l'equità senza necessità di riaddestramento, riducendo contemporaneamente la probabilità di allucinazioni negli LLM.
- Guidare i sistemi di visione artificiale: Nei modelli di visione, i vettori di guida possono essere applicati alle mappe delle caratteristiche per aumentare artificialmente la sensibilità della rete verso obiettivi critici. Ad esempio, un modello di rilevamento oggetti può essere guidato per dare priorità alla ricerca di pedoni in condizioni meteorologiche avverse.
Link to this sectionApplicare i vettori di guida con PyTorch#
Di seguito è riportato un esempio eseguibile di come applicare un intervento di guida dell'attivazione a un modello Ultralytics YOLO26 durante un passaggio in avanti. Utilizzando gli hook di avanzamento 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()





