TL;DR: 학습 없이, 내부 레이어 접근 없이, 보조 모델 없이. 말뭉치 통계만으로 디코딩 시점에 LLM의 출력 스타일을 직접 조종한다.

📄 Paper: https://arxiv.org/abs/2601.10960 💻 Code: https://github.com/hsannn/swai


1. Motivation & Background

LLM을 실제로 쓰다 보면 내용만 맞아서는 부족할 때가 많다. 독자 수준에 맞춘 난이도, 사용자를 대하는 상황에서의 공손한 어투, 안전이 중요한 곳에서의 유해 표현 회피 같은 것들이 필요하다. 논문은 이런 "어떻게 쓰는가"에 해당하는 속성을 출력 특성(output characteristics) 이라 부른다.

이것을 제어하려는 기존 방법들은 저마다 약점이 있다.

방식 한계
Prompt 기반 제어 신호가 간접적. 지시를 따르는 만 하고 실제 결과물엔 반영 안 되는 경우가 많음
학습 기반 (control codes, prefix tuning 등) 강력하지만 라벨 데이터·연산 비용이 들고, 학습된 동작이 특정 모델에 묶임
Activation 기반 재학습은 피하지만 아키텍처별 레이어 선택이 필요하고, 내부 표현을 건드려 유창성·추론을 해칠 수 있음
기존 Logit 기반 (GeDi, DExperts) 디코딩 분포를 직접 건드리는 올바른 지점이지만, 보조 학습 모델에 의존

👉 핵심 질문: 재학습도, 내부 개입도 없이 output logit만으로 model을 효과적으로 steering할 수는 없을까?


2. 핵심 아이디어: SWAI

image.png

SWAI는 두 단계로 구성된다. (1) 오프라인에서 통계적 토큰 점수표를 구축하고, (2) 디코딩 중 로짓에 그 점수를 더해 출력을 목표 특성 쪽으로 이동시킨다. 모델 파라미터와 내부 표현은 일절 건드리지 않는다.

Phase 1 — Statistical Score Table

각 토큰이 목표 특성을 얼마나 특징짓는지를 하나의 점수로 정량화한다.

  1. One-vs-rest log-odds. 목표 특성 코퍼스와 그 외 전체를 합친 대조 코퍼스 사이에서 각 토큰의 log-odds 비를 계산한다. "이 토큰이 목표 특성에서 얼마나 더 두드러지는가"를 나타내는 방향성 신호다. 저빈도 토큰의 수치 불안정성은 Dirichlet prior로 스무딩해 완화한다.
  2. Z-score 정규화. raw log-odds는 저빈도 토큰에서 노이즈에 취약하다. 추정 분산의 제곱근(표준오차 역할)으로 나눠 정규화하여, 저빈도 토큰 점수를 억제하고 통계적 신뢰도를 반영한 표준화 점수를 얻는다.

TF-IDF와의 차이. TF-IDF는 문서 대비 토큰 중요도를 측정하지만, SWAI 점수는 one-vs-rest log-odds로 클래스 간 비대칭(어느 클래스에 속하는지) 을 명시적으로 포착한다. 즉 디코딩 시점 제어에 적합한 방향성 신호다.

최종 산출물은 토큰 → 점수 매핑인 정적 점수표다. 디코딩 중 상수 시간 조회가 가능하다.

Phase 2 — Logit Steering