Steering Vectors
스티어링 벡터가 재학습 없이 실시간으로 신경망을 제어하는 방법을 알아보세요. Ultralytics YOLO26을 사용한 활성화 엔지니어링을 학습하세요.
스티어링 벡터(Steering vector)는 neural network의 은닉 활성화 공간 내에서 "공손함", "정직성" 또는 특정 시각적 특징과 같은 고수준 개념에 해당하는 의미 있는 수학적 방향을 나타냅니다. 순전파 과정에서 모델의 내부 상태에 이러한 벡터를 인위적으로 주입하거나 빼냄으로써 개발자는 기본 가중치를 업데이트하지 않고도 모델의 동작을 예측 가능하게 제어하고 변경할 수 있습니다. Activation Engineering에 근본적으로 뿌리를 둔 이 기술은 large language models부터 비전 아키텍처에 이르는 deep learning 시스템에 대해 비용이 발생하지 않는 추론 시점 제어를 제공합니다.
Steering Vectors의 작동 원리#
스티어링 벡터를 생성하기 위해 연구원들은 일반적으로 Contrastive Activation Addition(CAA)이라는 방법을 사용합니다. 여기에는 모델에 "도움이 되는" 응답을 요청하는 프롬프트와 "해로운" 응답을 요청하는 프롬프트 같은 대조적 데이터 쌍 집합을 네트워크에 통과시키는 과정이 포함됩니다. 이러한 쌍 간의 activation function 출력 차이는 여러 샘플에 걸쳐 평균화되어 tensor space에서 해당 개념을 나타내는 특정 기하학적 방향을 격리합니다.
real-time inference 동안 이 벡터는 간단한 PyTorch tensor addition을 사용하여 특정 레이어의 은닉 상태에 더해지거나 빼집니다. 벡터의 강도를 조절하면 실무자는 주입된 동작의 강도를 세밀하게 조정할 수 있습니다.
Steering Vectors와 관련 개념의 차이점#
스티어링 벡터가 더 넓은 machine learning 생태계에 어떻게 부합하는지 이해하려면 유사한 방법론들과 구별해야 합니다:
- Task Vectors: 태스크 벡터는 기능 병합을 위해 학습 후 실제 model weights를 수정하여 가중치 공간에서 작동하는 반면, 스티어링 벡터는 런타임에 활성화 공간에서 엄격하게 작동하여 원래 가중치를 완전히 그대로 유지합니다.
- Representation Engineering (RepE): RepE는 내부 인지 상태를 읽고 제어하는 포괄적인 방법론적 프레임워크로, Center for AI Safety 같은 조직에서 활발히 연구하고 있습니다. 스티어링 벡터는 RepE의 제어 단계 내에서 활용되는 구체적인 수학적 도구입니다.
- Prompt Engineering: 프롬프팅은 사용자의 입력 텍스트나 이미지를 수정하여 동작을 유도하려고 시도합니다. 스티어링 벡터는 입력 병목 현상을 우회하여 모델의 내부 인지 처리를 직접 조작합니다.
- 인간 피드백 기반 강화 학습(RLHF)과 같은 전통적인 정렬 방법은 경사 하강법을 통해 모델을 영구적으로 변경하므로 Ultralytics Platform과 같은 클라우드 도구를 통해 관리되는 경우가 많은 무거운 연산이 필요합니다. Fine-Tuning과 달리 스티어링 벡터는 이러한 연산 오버헤드를 완전히 방지합니다.
AI의 실제 응용 사례#
모델을 동적으로 제어하는 능력은 현대 artificial intelligence 파이프라인 전반에서 상당한 발전을 이끌어냈습니다:
- Enhancing AI Safety: "거부" 또는 "무해성"과 관련된 스티어링 벡터를 격리함으로써 엔지니어는 모델이 악의적인 지시를 거부하도록 강제할 수 있습니다. OpenAI's alignment research와 앤트로픽의 해석 가능성 연구의 지원을 받아 특정 기능을 조절하면 AI의 대화 페르소나를 크게 바꾸고 엄격한 안전 가드레일을 보장할 수 있습니다.
- Controlling Reasoning Models: 고급 사고 아키텍처에 대한 최근 연구에 따르면 스티어링 벡터가 내부 추론 체인을 조절할 수 있음이 입증되었습니다. 실무자는 복잡한 문제 해결 과정에서 불확실성을 표현하거나 오류에 대해 되돌아가는 모델의 경향을 높일 수 있습니다.
- Mitigating AI Bias: 특정 사회적 편향을 나타내는 벡터를 추출함으로써 개발자는 생성 과정에서 이 방향을 뺄 수 있습니다. 이는 재학습 없이 편향을 효과적으로 중립화하고 공정성을 개선하는 동시에 hallucination in LLMs의 가능성을 줄입니다.
- Steering Computer Vision Systems: 비전 모델에서 스티어링 벡터를 피처 맵에 적용하여 중요한 타겟에 대한 네트워크의 민감도를 인위적으로 높일 수 있습니다. 예를 들어, object detection 모델이 악천후 조건에서 보행자를 찾는 것을 우선시하도록 제어할 수 있습니다.
PyTorch를 사용한 Steering Vectors 적용#
다음은 순전파 과정에서 Ultralytics YOLO26 모델에 활성화 스티어링 개입을 적용하는 실행 가능한 예제입니다. PyTorch forward hooks를 활용하여 사용자 정의 벡터를 은닉 레이어에 직접 주입할 수 있습니다.
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()





