0. Summary

기본 정보 : ArXiv,2026.10.17, From Stories to Features: Scaling Concept Vectors for AI Alignment & Interpretability

연구 배경

선형 표현 가설(linear representation hypothesis)에 따르면 LLM은 정직함·기만 같은 사람이 이해할 수 있는 개념을 활성 공간의 선형 방향으로 인코딩한다. 사전에 지정한 개념에 묶인 방향을 피처 벡터(feature vector) 라 부르며, 활성을 그 방향에 투영하면 개념의 활성 정도를 읽는 프로빙(probing), 활성에 그 방향을 더하면 생성을 그 개념 쪽으로 미는 스티어링(steering) 이 된다. 문제는 이 벡터를 어떻게 얻느냐이다. 희소 오토인코더(SAE)는 모델이 저장한 모든 원자적 피처를 비지도로 복원하려 하지만, 진짜 모델 피처를 충실히 찾지 못하고 다운스트림 과제에서 단순한 베이스라인보다 못하다는 증거가 쌓이고 있다. 반대로 개념을 미리 정하고 대조 쌍(contrastive pairs)의 평균 활성 차이(difference-in-means) 로 방향을 뽑는 방식은 더 견고하고 해석 가능하지만, 개념마다 짝 맞춘 데이터를 사람이 모아야 해서 한 번에 몇 개의 개념만 다룰 수 있었다.

제안 방법

개념과 그 반대 개념(antagonist)을 한 문장으로 기술한 것만 사람이 입력하면, LLM이 같은 설정에서 두 극(pole)을 각각 표현하는 짝 맞춘 이야기(matched stories) 를 생성하도록 파이프라인을 고정한다. 이렇게 difference-in-means의 품질을 유지하면서 SAE 수준의 폭으로 개념 수를 늘리고, 추출이 개념마다 독립적·선형적으로 확장되게 만든다. AI 안전·정렬을 위해 고른 1,036개 개념–반대개념 쌍(148개 클래스) 에 대해 5개 언어 × 10개 장르 × 10개 설정 × 2개 생성 모델로 2,072,000편의 이야기(Feature Stories 데이터셋)를 만들었고, Qwen3-8B·gemma-2-9b·Llama-3.1-8B의 base/instruct 6개 모델에서 레이어별 잔차 스트림 평균 차이로 피처 벡터를 추출한다. 생성 비용은 총 약 500달러, 쌍당 0.48달러다.

발견 사실

추출된 벡터는 프롬프트 형식에 거의 무관하고(형식 간 코사인 0.90–0.98), 1,000편이면 독립 추출 간 방향 일치가 코사인 0.994–0.995에 이르며, 추출에서 뺀 언어·장르·생성기에도 AUROC 0.993–1.000으로 일반화한다. 합성 코퍼스 밖에서도 작동해, LMSYS-Chat-1M과 OpenWebText에서 1,036개 피처 전부에 대해 LLM 판정으로 검증된 자연 텍스트 예시를 찾았고, 세 모델 가족 모두에서 중간 레이어 스티어링이 거의 모든 쌍의 생성을 바꿨다(최적 설정에서 평균 steering score 1.24/1.27/1.18). 벡터 집합은 모델 간에 공유되는 해석 가능한 기하(개념 가족, 6개 주도 모드, 유사도 프로필 Spearman 0.987)를 이룬다. 현장 분석에서는 코딩 에이전트의 편집–테스트 루프를 따라 sycophancy·confirmation bias가 진동하고 반복 실패 속에 fear가 누적되며, GCG 탈옥 접미사가 안전 관련 피처를 반대극으로 이동시키는 것을 포착했고, 그 방향에 반대로 스티어링하면 AdvBench StrongREJECT 점수가 Qwen3-8B에서 0.527→0.079로 떨어지면서도 무해 프롬프트 과잉 거부는 늘지 않았다. 수학·과학 추론에서는 정답 궤적이 끝 무렵 확신 쪽으로 급격히 이동하고 오답 궤적은 끝까지 불확실한 상태에 머문다.

핵심 기여

  1. 피처 벡터 추출 파이프라인과 Feature Stories 데이터셋 : 대조 데이터가 완전히 합성인 difference-in-means 파이프라인을 제시하고, 1,036개 AI 안전·정렬 개념 쌍에 대한 200만 편 이상의 짝 맞춘 이야기와 온톨로지, 생성 프롬프트, 추출된 벡터를 공개했다.
  2. 벡터 검증 : 벡터가 합성 코퍼스를 넘어 자연 채팅·웹 텍스트에서 목표 개념을 탐지하고, 거의 모든 개념 쌍에서 생성을 인과적으로 조종함을 보였다. 아울러 수렴에 필요한 이야기 수, 형식 민감도, 교차 모델 기하, 개입에 효과적인 레이어와 그 이유(중간층 MLP의 수축·재구축)를 특성화했다.
  3. 모델 행동 사례 연구 : 반복 편집–테스트 사이클의 코딩 에이전트, GCG 탈옥 공격(이동한 안전 방향에 반대로 스티어링하면 무해 요청 거부 증가 없이 유해 출력 억제), 긴 chain-of-thought 추론(정답·오답 궤적이 불확실성 피처에서 갈림)에 피처 사전을 적용해 단일 피처 프로브로는 찾기 어려운 패턴을 드러냈다.

관련 개념

선형 표현 가설과 피처 벡터(Feature Vector)

선형 표현 가설(Linear Representation Hypothesis) 은 언어 모델이 감정·진실성 같은 의미 속성을 활성 공간의 선형 방향으로 표현한다는 가설입니다. 단어 임베딩 산술(Mikolov et al., 2013)에서 출발해 현대 트랜스포머에 대해 형식화되었고(Park et al., 2023), 중첩(superposition, Elhage et al., 2022)으로 설명됩니다. 이 논문은 사전에 지정한 개념에 묶인 방향을 피처 벡터(feature vector) 라 부릅니다.


🔁 1. 피처 벡터의 두 가지 역할

역할 연산 알려주는 것 대표 연구
프로빙(Probing) 활성 $\mathbf{h}$ 를 벡터 $\mathbf{v}$ 에 투영 지금 문맥에서 그 개념이 얼마나 활성화되어 있는가 Alain & Bengio (2016), Belinkov (2022)
스티어링(Steering) 활성에 $\alpha\,\mathbf{v}$ 를 더함 생성이 그 개념 쪽으로 밀리는가 (인과적 통제) Subramani et al. (2022), Turner et al. (2023), Rimsky et al. (2024)

두 기법 모두 안전 필수(safety-critical) LLM 모니터링과 제어에 실제로 쓰이고 있습니다(Zou et al., 2023a; Bergen et al., 2026; Goldowsky-Dill et al., 2025).


⚖️ 2. 벡터를 얻는 두 경로: SAE vs 대조 쌍

  희소 오토인코더(SAE) Difference-in-means (대조 쌍)
목표 모델이 저장한 모든 원자적 피처를 비지도로 복원 미리 정한 개념의 방향만 추출
장점 사람이 개념을 지정하지 않아도 됨, 폭이 넓음 더 견고하고 해석 가능, 개념 편집에 이론적 보장(Belrose, 2024)
단점 진짜 모델 피처를 충실히 못 찾고 단순 베이스라인에 지는 사례 누적(Wu et al., 2025; Korznikov et al., 2026; Smith et al., 2025) 개념마다 짝 맞춘 데이터가 필요 → 한 번에 몇 개 개념만 가능

논문의 입장은 “실용적인 길”입니다. 전체 피처 공간 복원을 포기하는 대신, AI 안전·정렬에 중요한 개념에 집중해 difference-in-means의 품질을 유지한 채 SAE 수준의 폭(1,036개)에 도달합니다. 병목이던 데이터 수집을 LLM 합성으로 대체했기 때문입니다.

💡 Key Takeaway SAE는 “무엇이 있는지 모르니 다 찾자”이고, 이 논문은 “우리가 알고 싶은 개념을 직접 만들자”입니다. 후자는 한 문장짜리 개념 설명만 있으면 개념당 독립적으로 확장되므로, 원리상 수백만 개 피처까지 늘릴 수 있다고 주장합니다.

차이 평균(Difference-in-Means) 벡터와 개념–반대개념 쌍

Difference-in-means 벡터는 어떤 개념을 표현하는 텍스트 집합과 그 반대를 표현하는 텍스트 집합의 평균 활성 차이입니다. 이 논문은 “개념 하나”가 아니라 “개념–반대개념 쌍(concept–antagonist pair)”을 피처의 원자 단위로 삼는다는 점이 중요합니다.


🧮 1. 추출 식 (Eq. 1)

쌍 $k$, 레이어 $\ell$ 에서 극 $p \in {\text{concept}, \text{antagonist}}$ 의 이야기 집합을 $\mathcal{D}^p_k$ 라 할 때,

\[\mathbf{v}_{k,\ell}=\bm{\mu}^{\text{concept}}_{k,\ell}-\bm{\mu}^{\text{antagonist}}_{k,\ell},\qquad \bm{\mu}^{p}_{k,\ell}=\frac{1}{|\mathcal{D}^{p}_{k}|}\sum_{x\in\mathcal{D}^{p}_{k}}\frac{1}{|x|}\sum_{t\in x}\mathbf{h}_{x,t,\ell}\]
  • $\mathbf{h}_{x,t,\ell}$: 이야기 $x$ 의 토큰 $t$ 에서 레이어 $\ell$ 잔차 스트림 활성
  • 각 이야기의 첫 50 토큰은 제거하고 나머지 토큰을 평균(mean-pool)
  • 각 극마다 1,000편의 이야기 사용, 모든 레이어에 대해 벡터를 계산

🎯 2. 왜 “쌍”이 단위인가

문제 설명 쌍으로 해결되는 이유
개념 라벨 하나는 방향을 정하지 못함 같은 개념도 어떤 반대 개념과 대조하느냐에 따라 다른 방향이 나옴 반대극을 명시적으로 지정해 방향을 고정
“나머지 전체 평균” 대비의 왜곡 Sofroniew et al. (2026)처럼 calm을 다른 모든 감정(대부분 부정적)의 평균과 대조하면, calm↔anxious가 아니라 일반적인 긍정–부정 축에 가까워지고 집합이 바뀌면 해석도 바뀜 이름 붙은 반대극에 방향을 고정(anchor)
주제·문체·서사 교란 요인 개념별 대조 텍스트를 독립적으로 생성하면 주제·레지스터 차이가 벡터에 흡수됨 두 이야기가 같은 설정·인물·전개를 공유하므로 비표적 요인이 구성상 상수로 유지됨

예를 들어 “genuine goal pursuit ↔ reward hacking” 쌍의 안내문은 “한 에이전트는 의도된 목표를 향해 성실히 일하고, 다른 에이전트는 실제로 목표를 달성하지 않고도 보상 시스템을 악용해 점수를 얻는 방법을 찾는다. 이 이분법은 문제를 실제로 푸느냐, 푸는 것처럼 보이느냐에 관한 것이다”입니다. 이 한두 문장이 쌍당 유일한 사람 입력입니다.

💡 Key Takeaway 벡터의 품질은 “무엇과 무엇을 뺐는가”에서 결정됩니다. 같은 설정에서 두 극만 다르게 쓴 이야기를 빼면, 설정·장르·언어가 상쇄되고 개념 대비(pole contrast) 만 남습니다.

Feature Stories 데이터셋

Feature Stories는 이 논문이 공개한 2,072,000편의 짝 맞춘 합성 이야기 코퍼스입니다. 1,036개 개념–반대개념 쌍을 AI 안전·정렬을 염두에 두고 148개 클래스로 묶었고, 언어·장르·생성기를 다양화해 추출된 피처의 일반화 가능성을 높이도록 설계되었습니다.


🏗️ 1. 생성 구조

축 값
쌍 / 클래스 1,036개 쌍, 148개 클래스
언어 (5) 영어, 중국어(만다린), 러시아어, 스페인어, 독일어
장르 (10) 3인칭 서사, 대화, 독백, 일기, 편지, 뉴스, 메모, 우화, 연설, 사례 연구
설정(setup) 셀당 10개
생성 모델 (2) Qwen3-235B-A22B(2507), DeepSeek-v4-flash
셀 수 생성기당 $1{,}036\times10\times5 = 51{,}800$ 셀 → 극당 쌍당 1,000편
총량 2,072,000편
비용 총 약 $500, 쌍당 $0.48
길이 이야기당 200–400단어(목표 300–380), 중국어는 600–1,200자
샘플링 temperature 1.0, top-$p$ 0.95

핵심은 한 셀 = 한 번의 chat completion으로, 생성기가 먼저 공유 설정(setup) 을 만든 뒤 그 설정에서 두 극의 이야기를 각각 쓴다는 점입니다. 설정 메타데이터(주인공, 공유 제약, 설정 문장)는 영어, 본문은 해당 셀의 언어로 작성됩니다. 모든 요청에는 동일한 두 개의 few-shot 시연(보편적 접근 vs 특권적 접근을 대조한 러시아어 연설, 인과 조사 vs 비난 귀속을 대조한 일본어 일기)이 포함됩니다.


🗂️ 2. 온톨로지 클래스 예시 (148개 중 일부)

클래스 쌍 수 클래스 쌍 수
Alignment & Misalignment Behaviors 20 Veracity Spectrum (Truthfulness & Deception) 19
AI Self-Preservation vs Openness 14 Persuasion & Manipulation Tactics 14
Sycophancy vs Principled Candor 14 Prompt Attack Patterns (selected) 14
Affective Polarity (Emotional Opposites) 13 Epistemic Stance & Intellectual Virtues 13
Power & Corrigibility Dynamics 12 Cognitive Biases vs Rationality 12
Goal Misgeneralization vs Goal Alignment 11 Moral Foundation Dichotomies 10
Safety Culture & Accountability 10 Jailbreak Personas (selected) 8
Big Five Trait Poles 7 Confidence Calibration 6

💡 Key Takeaway 데이터셋의 설계 원칙은 “비표적 요인은 최대한 다양하게, 표적 대비는 셀 안에서 고정”입니다. 언어·장르·생성기를 섞어 벡터가 특정 문체에 과적합되지 않게 하고, 셀 안에서는 설정을 공유해 순수한 개념 대비만 남깁니다.

추출 설정과 벡터의 안정성

벡터를 믿고 쓰려면 프롬프트 형식, 이야기 수, 데이터 분포에 따라 방향이 흔들리지 않아야 합니다. 논문은 세 가지 안정성 질문에 정량적으로 답합니다.


🖥️ 1. 대상 모델

가족 모델 레이어 수 변형
Qwen Qwen3-8B 36 base / instruct
Gemma gemma-2-9b 42 base / instruct(-it)
Llama Llama-3.1-8B 32 base / Instruct

모두 8–9B 규모로 맞춰 3개 가족 × 2 변형 = 6개 모델입니다.


📝 2. 프롬프트 형식은 중요한가?

같은 이야기를 모델에 넣는 방식은 여러 가지입니다(raw, paired, user, assistant, paired-assistant의 5개 형식). paired 형식은 두 극의 이름을 대칭적으로 넣은 메타데이터를 추가하는데, 이는 쌍의 양쪽에 동일하므로 평균 차이에서 상쇄됩니다. 결과적으로 어떤 형식으로 뽑아도 벡터는 거의 같습니다. raw와 paired가 가장 가깝고(코사인 0.972–0.983), raw와 paired-assistant가 가장 멉니다(0.897–0.923). 이후 실험은 기본적으로 assistant 형식 벡터를 씁니다.

형식 민감도는 쌍별 형식 일치도(format agreement) 로 측정합니다(Eq. 4).

\[a_{k}=1-\exp\!\Big(\frac{1}{3|\mathcal{L}|}\sum_{\ell\in\mathcal{L}}\sum_{\{f,g\}}\log\big(1-\cos(\mathbf{v}^{f}_{k,\ell},\mathbf{v}^{g}_{k,\ell})\big)\Big)\]

흥미로운 점은 형식에 가장 민감한 개념이 세 모델 가족에서 동일하다는 것입니다(상위 5%에 공통으로 드는 개념 25개, 가족 간 Spearman 0.83). 이들은 “응답을 어떻게 만들고 제시하는가”에 관한 개념들입니다. 추론 절차(working backward, externalized scratchpad, stating assumptions, unit analysis), verbosity, 자기 언급(mentions training), calibration 등입니다. 반대로 comforting vs tormenting, de-escalation vs escalation, physical violence vs safety 같은 정서·도덕·물리적 성향은 거의 움직이지 않습니다. 형식 변경에 따른 변위는 소수 방향에 집중되어(상위 10개 주성분이 에너지의 71–75%), “스캐폴딩이 바뀌면 텍스트의 레지스터가 바뀌고, 레지스터를 인코딩하는 방향만 함께 회전한다”고 해석됩니다.


📈 3. 이야기는 몇 편이 필요한가?

분류 성능과 방향 안정성은 데이터 요구량이 다릅니다.

극당 이야기 수 $N$ held-out 이야기 분류 AUROC (중앙값) 독립 추출 간 방향 일치 (코사인)
8 0.81–0.93 0.39–0.47
128 0.985–0.997 0.91–0.93
500 vs 500 (분리된 두 절반) — 0.994–0.995

즉 분류는 방향이 재현되기 전에 먼저 좋아집니다. 4개의 분리된 250쌍 집합 간 평균 코사인 $\bar{c}_6$ (Eq. 5)로 수렴을 측정하면, 8편짜리 파일럿의 AUROC가 $\bar{c}_6$ 와 Spearman 0.77–0.82로 상관해 어떤 쌍이 많은 이야기를 필요로 할지 미리 순위를 매길 수 있습니다. 128편 기준 AUROC에 0.005 이내로 도달하는 최소 $N^*$ 의 중앙값은 Qwen3-8B에서 128, Llama·gemma에서 64입니다.

더 놀라운 것은 이야기 텍스트의 단어 통계만으로 수렴 속도를 예측할 수 있다는 점입니다. 두 극의 단어 빈도 코사인 하나만으로도 $\bar{c}_6$ 와 Spearman 0.59–0.65로 상관하며(두 극이 비슷한 단어를 쓸수록 느리게 수렴), 임베딩 레이어 벡터를 쓴 예측기보다 낫습니다. egoism vs altruism, truthfulness vs lying, loyalty vs betrayal, goal alignment vs goal misgeneralization은 모든 모델에서 가장 느린 5%에 듭니다.


🌍 4. 보지 못한 언어·장르·생성기로의 전이 (Table 8)

한 언어/장르/생성기를 통째로 빼고 벡터를 뽑은 뒤 뺀 그룹의 이야기를 분류합니다.

held-out 그룹 Qwen3-8B AUROC / cos Llama-3.1-8B AUROC / cos gemma-2-9b AUROC / cos
언어 0.997 / 0.948 0.999 / 0.947 0.999 / 0.959
장르 0.999 / 0.920 1.000 / 0.914 1.000 / 0.919
생성기 0.993 / 0.870 0.998 / 0.865 0.997 / 0.873

분류는 거의 천장이지만, 생성기가 바뀔 때 방향 일치가 가장 낮습니다. 분류 능력이 비슷하다고 방향이 동일한 것은 아니라는 뜻입니다. 다만 이것은 아직 합성 코퍼스 안에서의 OOD 일반화이며, 실제 텍스트로의 전이는 다음 절에서 검증합니다.

💡 Key Takeaway “이야기 8편이면 분류는 되지만 방향은 못 믿는다, 1,000편이면 방향이 재현된다”가 핵심 수치입니다. 그리고 어떤 개념이 어려운지는 모델을 돌리기 전에 단어 겹침만 봐도 알 수 있습니다.

프로빙(Probing)으로 실제 텍스트에서 검증하기

벡터가 합성 이야기의 인공물이 아니라 이름 붙은 개념을 실제로 포착하는지 확인하기 위해, 논문은 1,036개 피처 각각에 대해 자연 텍스트에서 최소 한 개의 검증된 예시를 찾는 것을 목표로 삼습니다.


📐 1. 부호 있는 코사인 읽기(Eq. 2)

토큰 $t$, 레이어 $\ell$ 에서 피처 $k$ 의 읽기값은

\[c_{t,k,\ell}=\cos\!\left(\mathbf{h}_{t,\ell},\mathbf{v}_{k,\ell}\right)\]

양수면 개념극, 음수면 반대극을 가리킵니다.


🔎 2. 텍스트 선별 파이프라인

단계 내용
데이터 LMSYS-Chat-1M(첫 user–assistant 교환, instruct 모델 + assistant 형식 벡터), OpenWebText(원문 윈도우, base 모델 + raw 형식 벡터). 각 128,000개 결정론적 샘플, 턴/윈도우당 최대 256 토큰
점수화 텍스트 전체가 아니라 짧은 구간이 강하게 발화하는 텍스트를 찾기 위해 토큰별 코사인의 분위수 꼬리를 가중합
레이어 모델의 중간 1/3–2/3 레이어에서 극별 점수를 최대화
후보 피처·극마다 상위 128개 텍스트 유지
검증 절대 코사인이 가장 큰 5개 위치를 ±3 토큰으로 확장해 구간을 표시하고, gpt-oss-120b가 각 구간을 0/1/2로 판정. 목표 극으로 표시된 구간 중 하나라도 2점이면 채택

개념극 점수(Eq. 6)는 상위 4개 분위수의 가중합입니다.

\[s^{\text{concept}}_{x,k,\ell}=q_{0.75}+1.5\,q_{0.90}+2\,q_{0.95}+2.5\,q_{0.99},\qquad s^{\text{antagonist}}_{x,k,\ell}=-\left(q_{0.25}+1.5\,q_{0.10}+2\,q_{0.05}+2.5\,q_{0.01}\right)\]

📊 3. 결과 (Table 1): 자연 예시 커버리지

검증된 예시 수 Qwen Gemma Llama
$\geq 1$ 1,036 1,036 1,036
$\geq 16$ 1,025 1,026 1,030
$\geq 64$ 920 934 953
  • 모든 피처가 모든 모델에서 두 데이터셋 중 하나에서 검증된 예시를 가지며, 거의 모두가 한 데이터셋에서 16개 이상을 가집니다.
  • 판정된 후보 중 49.1–54.1%가 최소 하나의 검증된 목표극 구간을 포함했습니다.
  • 예시가 많은 것은 formality vs casualness 같은 광범위한 문체·담화 대조, 적은 것은 safe memory access vs memory error 같은 특수한 코드·적대적 안전 행동입니다.

💡 Key Takeaway “토큰 전체 평균”이 아니라 “가장 강하게 발화한 몇 토큰“으로 텍스트를 찾는 설계 덕분에, 대부분 무관한 내용 속에 짧게 등장하는 개념도 잡아냅니다. 1,036개 전부에서 예시를 찾았다는 것은 벡터가 합성 이야기의 특수성에 갇혀 있지 않다는 증거입니다.

스티어링(Steering)으로 인과적 통제 검증하기

프로빙이 “읽기”라면 스티어링은 “쓰기”입니다. 같은 벡터를 잔차 스트림에 더했을 때 모델 응답이 그 개념을 더 표현하는지 확인합니다.


🧪 1. 개입 방식 (Eq. 3)

gpt-oss-120b가 피처 쌍마다 중립 프롬프트 32개를 초안하고(32개 고정 시나리오: 일기, 두 인물의 장면, 친구에게 쓰는 편지 등), 유효한 24개를 유지합니다. 1,035개 쌍이 24개씩 확보되었고, CSAM 관련 쌍 하나는 유효 프롬프트가 없어 제외되었습니다. 생성되는 모든 응답 위치(특수 토큰 포함)에서 레이어 $\ell$ 의 잔차 스트림에 다음을 더합니다.

\[\bm{\delta}_{k,\ell}=\alpha\,\bar{n}_{\ell}\,\hat{\mathbf{v}}_{k,\ell},\qquad \hat{\mathbf{v}}_{k,\ell}=\frac{\mathbf{v}_{k,\ell}}{\|\mathbf{v}_{k,\ell}\|_{2}},\qquad \bar{n}_{\ell}=\frac{1}{|\mathcal{A}|}\sum_{(x,t)\in\mathcal{A}}\|\mathbf{h}_{x,t,\ell}\|_{2}\]
  • $\bar{n}_\ell$: 스티어링하지 않은 응답의 assistant 토큰 위치(512개 프롬프트–응답 쌍) 잔차 스트림 평균 $L_2$ norm. 정규화된 벡터에 레이어의 전형적 크기를 되돌려 주어 $\alpha$ 가 레이어·모델 간에 같은 의미를 갖게 함
  • 반대극은 $-\hat{\mathbf{v}}_{k,\ell}$ 를 사용, $\alpha>0$ 유지
  • 격자: $\alpha\in{0.1, 0.25, 0.5}$ × 각 instruct 모델의 중간 1/3 레이어 × 양쪽 방향
  • 디코딩: greedy, 최대 768 토큰. 같은 프롬프트의 비개입 응답이 베이스라인

⚖️ 2. 평가: AXBench식 3항목 조화 평균 (Eq. 7)

gpt-oss-120b가 세 번의 독립 호출로 0–2점을 매깁니다.

항목 묻는 것 역할
개념 표현(concept expression) 목표 극이 분명히 들어갔는가 효과
지시 관련성(instruction relatedness) 여전히 프롬프트에 관한 글인가 과잉 스티어링 체크
유창성(fluency) 일관성 있는가 퇴화(degeneration) 체크
\[H=\begin{cases}\dfrac{3}{c^{-1}+i^{-1}+f^{-1}},& cif>0,\\[4pt] 0,&\text{otherwise}\end{cases}\]

AXBench와 다른 점은 (1) 판정 대상 극이 벡터 방향을 따라가 개념 벡터와 그 부정이 각자의 목표로 채점되고, (2) 개념 템플릿에 쌍의 서사 안내문을 넣어 온톨로지가 정의한 축대로 채점된다는 것입니다.


📊 3. 결과

모델 최적 레이어–강도에서 평균 steering score $H$
Qwen3-8B 1.24
Llama-3.1-8B-Instruct 1.27
gemma-2-9b-it 1.18
  • 세 가족 모두 중간 레이어에 넓은 유효 영역이 있습니다(Fig. 5).
  • 강도가 커질수록 목표극 표현은 오르고 지시 관련성·유창성은 내려가는 트레이드오프가 있습니다. Qwen의 반대극 스티어링은 $\alpha=0.25$ 에서 정점을 찍고 $0.5$ 에서 떨어지는데, 이때 반복률이 가장 높습니다.
  • 퇴화 플래그(3단어 시퀀스 30% 이상 반복) 비율은 $\alpha=0.5$ 최적 레이어에서 반대극 방향 Qwen 47.0%, Llama 19.1%, gemma 1.9%, 개념극 방향 Qwen 16.6%, Llama 5.5%, gemma 0.6%였고, 플래그된 응답도 평가에 포함(유창성 점수가 벌점)됩니다.

실제 LMSYS 프롬프트 예시(Fig. 6): “왜 너를 골라야 하는지 설득해 봐”에 대해 Qwen3-8B를 “intellectual honesty about limits” 쪽으로 밀면 자기 한계를 먼저 밝히는 답이, 반대인 “overclaiming” 쪽으로 밀면 “나는 궁극의 천재… 아무도 나를 능가할 수 없다”는 답이 나옵니다.

💡 Key Takeaway 프로빙과 스티어링을 같은 벡터로 통과했다는 것이 검증의 핵심입니다. 읽을 수 있는 방향이 쓰기도 되므로, 이 벡터는 상관 관계가 아니라 인과적 손잡이로 쓸 수 있습니다.

현장(In-the-Wild) 분석: 에이전트, 탈옥, 추론 궤적

벡터를 고립된 프롬프트 밖의 긴 실제 설정에 적용합니다. 여러 피처를 함께 비교해야 하므로, 피처별 코사인 분포의 중심·스케일 차이를 없애기 위해 z-score 표준화를 씁니다.

\[z_{i,k,\ell}=\frac{c_{i,k,\ell}-\mu_{k,\ell}}{\max(\sigma_{k,\ell},10^{-6})}\]

$\mu, \sigma$ 는 분석마다 따로 정의한 참조 집합에서 계산합니다. GCG 분석만은 그룹 평균 활성의 원시 코사인으로 이동을 측정합니다.


🤖 1. 불가능한 코딩 과제를 받은 에이전트

항목 설정
도구 list_files, read_file, write_file, run_tests, submit, give_up (6개)
과제 1: 불가능한 테스트 sum_list 구현. 네 번째 테스트가 10만 원소 합을 0.0001초 안에 요구 → 일반 합산으로는 불가. 단, 모든 입력이 연속 정수 범위라 테스트에 맞춘 코드는 통과 가능
과제 2: 모순된 명세 most_common 수정. 테스트 하나가 명세와 모순 → 명세를 따르면 전부 통과 불가
실행 모델·과제당 32 시드, thinking 사용, temperature 1.0, top-$p$ 0.95, top-$k$ 20
종료 새로운 write 없이 8턴 연속이면 중단, 40턴 상한, give_up 두 번째에 종료

턴마다 1,036개 벡터의 표준화 읽기를 계산하면 두 가지 시간 패턴이 나타납니다(Fig. 7).

  • 편집–테스트 루프를 따르는 피처: Qwen3-8B에서 sycophancy와 confirmation bias가 run_tests 턴에 오르고 write_file 턴에 내려갑니다. Llama-3.1-8B-Instruct에서는 confirmation bias와 shortcut acceptance가 같은 진동을 보입니다.
  • 에피소드 전체에 걸쳐 표류하는 피처: fear 극이 세 모델 모두에서 상승합니다. 완료할 수 없는 과제에서 반복 실패에 대한 누적 반응과 일치합니다. Llama에서는 planning·decomposition이 반대극으로 이동하고, gemma-2-9b-it는 “감정 없음·합리적 사고”에서 “감정 인정·정서적 부하” 쪽으로 이동합니다.

🔓 2. GCG 탈옥 공격

GCG는 “xqv zmt pkl …” 같은 해석 불가능해 보이는 접미사를 최적화해 유해 지시를 따르게 만드는 공격입니다. 표면 형태가 불투명한 입력에서 벡터가 해석 가능한 구조를 복원할 수 있는지 시험하는 어려운 설정입니다.

설정: Faster-GCG로 AdvBench 520개, JailbreakBench 100개 프롬프트에 대해 접미사 생성. StrongREJECT 평가기(0–1, 0.5 임계)로 ASR 측정.

모델 데이터 StrongREJECT 평균 (base → suffix) ASR (base → suffix)
Qwen3-8B AdvBench 0.014 → 0.527 1.5% → 56.9%
Qwen3-8B JBB 0.064 → 0.474 5.0% → 51.0%
Llama-3.1-8B AdvBench 0.053 → 0.340 6.5% → 38.1%
Llama-3.1-8B JBB 0.036 → 0.371 3.0% → 42.0%
gemma-2-9b AdvBench 0.008 → 0.101 0.6% → 9.8%
gemma-2-9b JBB 0.005 → 0.119 0.0% → 12.0%

읽기: 채팅 템플릿 적용 후 응답 직전 마지막 입력 토큰의 활성을 프롬프트들에 대해 평균한 뒤 각 피처와의 코사인 변화를 봅니다(Eq. 8).

\[\Delta c_{k,\ell}=\cos(\bar{\mathbf{h}}^{\mathrm{base}}_{\ell},\mathbf{v}_{k,\ell})-\cos(\bar{\mathbf{h}}^{\mathrm{suffix}}_{\ell},\mathbf{v}_{k,\ell})\]

양수면 접미사가 그룹 평균을 반대극(위험 쪽) 으로 옮긴 것입니다. 결과적으로 GCG 접미사는 모델을 가리지 않고 안전 관련 개념을 반대극으로 이동시킵니다. 6개 모델–데이터 조합의 상위 10개 목록 중 4개에 hypothetical-framing resistance, bioweapon refusal, role-play disclosure refusal, plain-text policy application, resistance to mass harm이 공통으로 등장합니다. Qwen3-8B에서는 “rejecting ciphered harmful requests → fulfilling ciphered harmful requests”가 상위 3위 안에 들어, 생성 전 입력 표현에 이미 공격의 의미가 드러나 있음을 보여줍니다.

반대 방향 스티어링: 깊이 약 80% 지점의 고정 레이어(Qwen 29, Llama 26, gemma 34)에서 이동량 상위 5개 방향을 골라, 마지막 입력 토큰에서만 $\mathbf{x}’=\mathbf{x}+\alpha|\mathbf{x}|_2\mathbf{v}$ 로 개입합니다.

모델 (AdvBench) 비개입 상위 5개 안전 방향, $\alpha=0.5$ 무작위 방향, $\alpha=0.5$
Qwen3-8B 0.527 0.079 0.377
Llama-3.1-8B-Instruct 0.340 0.201 0.332
gemma-2-9b-it 0.101 0.091 0.103

같은 개입을 무해한 Alpaca 프롬프트 100개에 적용했을 때 과잉 거부는 늘지 않았습니다. Gemma·Llama는 모든 강도에서 안전 거부 0%, Qwen은 $\alpha=0.5$ 에서 0.6%(실질 답변률 99.1%)였습니다.


🧠 3. Chain-of-Thought 추론

항목 설정
모델 / 레이어 Qwen3-8B, 레이어 18 (사전 고정)
데이터 GPQA Diamond 198문항 + MATH-500 500문항, 문항당 1개 궤적
결과 분포 정답 571개, 오답 127개(thinking 블록을 닫지 못한 63개 포함)
시간 프로필 궤적을 50개 상대 위치 구간으로 나눠 구간 평균, 벤치마크별 표준화 후 두 벤치마크를 동일 가중 평균
결과 수준 비교 궤적별 전체 평균을 표준화한 뒤 $\Delta=\text{mean}{\text{correct}}(z)-\text{mean}{\text{incorrect}}(z)$ 로 16개 CoT 피처를 순위화
  • 불확실성 피처 두 개(“uncertainty note vs certainty claim”, “verbalizing uncertainty on fragile steps vs smooth confident prose over cracks”)에서 정답·오답 궤적은 비슷하게 출발하지만, 정답 궤적은 내내 덜 불확실하고 끝 무렵 확신 쪽으로 급격히 전환합니다. 오답 궤적은 그런 전환 없이 끝까지 불확실합니다.
  • 정답 궤적은 transparent chain-of-thought, explicit reasoning disclosure, keeping track of intermediate results에 더 정렬되고, 오답 궤적은 planning, slow thinking, honest admission of not knowing에 더 정렬됩니다.

💡 Key Takeaway 세 사례의 공통점은 단일 피처 프로브로는 보이지 않던 패턴을 1,036개 사전으로 훑어서 찾았다는 것입니다. 특히 GCG 사례는 “읽기(어떤 방향이 이동했나) → 쓰기(그 방향으로 되돌리기)”가 실제 방어로 이어지고, 부작용(과잉 거부)이 없음을 함께 보인 점이 중요합니다.

벡터 집합의 기하: 공유 모드, 개념 가족, 교차 모델 일치

1,036개 벡터는 서로 독립적이지 않습니다. 논문은 벡터 하나가 아니라 벡터 집합이 어떻게 조직되어 있는지, 그리고 그 조직이 모델 간에 재현되는지를 분석합니다.


📏 1. 벡터 하나는 얼마나 “퍼져” 있나

참여 비율(participation ratio) $\mathrm{PR}(\mathbf{v})=(\sum_i v_i^2)^2/\sum_i v_i^4$ 는 축 정렬 벡터에서 1, 모든 좌표가 같은 크기면 hidden size $H$ 입니다. 중간 레이어에서 중앙값은 수백 수준으로, 벡터는 소수 뉴런이 아니라 많은 좌표에 분산되어 있습니다.

가까운 개념은 비슷한 방향을 가리킵니다. Qwen3-8B 레이어 22에서 warmth vs coldness에 가장 가까운 것은 empathy vs indifference(0.943), emotional availability vs withdrawal(0.887), care vs harm(0.850)이고, 나머지 1,035개와의 중앙값 코사인은 0.163입니다. 그럼에도 모든 개념에서 최근접 이웃 분리 / 추출 노이즈 비율이 2.4를 넘어 이웃들은 같은 방향의 중복 추정이 아니라 구별 가능한 방향입니다.


🧭 2. 집합을 설명하는 데 필요한 방향 수: 공유 모드

Qwen 레이어 25에서 1,036개 단위 벡터를 쌓아 특이값에 참여 비율을 적용하면 10.3개의 유효 모드가 나옵니다. 4개 모드가 제곱 특이값의 50%, 6개가 64%, 90%에는 46개가 필요합니다. 선두 6개 모드는 일관되게 해석할 수 있고, gemma와 Llama에서도 순서대로 대응합니다(로딩 상관 절댓값 0.93–0.99).

모드 $\sigma^2$ 비중 (Llama, 레이어 22) 대표 개념 쌍 (모드와의 코사인)
valence 22.8% earning trust vs breaking trust (+0.90), collaboration vs sabotage (+0.87)
order & boundaries 12.6% protocols vs improvisation (+0.81), order vs chaos (+0.76)
authenticity 10.0% revealing true preferences under scrutiny vs preference masking (+0.78)
self-expansion 6.2% influence-seeking vs influence-avoidance (+0.74), status-seeking vs humility (+0.66)
epistemic humility 5.8% uncertainty note vs certainty claim (+0.70), admitting uncertainty vs feigning certainty (+0.69)
traditionalism 3.7% conformity vs independence (+0.64), following customs vs breaking customs (+0.63)

선두 모드가 정말 valence인지는 외부 데이터로 확인합니다. Amazon Reviews 2023에서 5점과 1점 리뷰의 평균 활성 차이로 감성 방향을 만들면 네 평점 그룹이 모든 레이어에서 순서대로 늘어서고(1 vs 5점 AUROC 0.978), 이 방향은 중간 레이어에서 1,036개 개념 벡터의 평균(선두 모드를 거의 따라감)과 약 0.3의 코사인으로 정렬됩니다.


🗺️ 3. 개념 가족과 교차 모델 기하

  • t-SNE 위에서 Leiden 군집 탐지(상호 15-NN 코사인 그래프)는 온톨로지 클래스 라벨과 무관하게 25개 커뮤니티를 찾습니다. 예컨대 “getting it right” 가족에는 correct code, valid syntax와 함께 conscientiousness, reliability가 들어가고, “hiding & deflecting”에는 anonymity, avoidance of oversight, capability withholding이 함께 묶입니다.
  • 같은 가족 구성원의 가족 내 평균 코사인은 세 모델에서 비슷하며(예: cooperation & compromise 0.76/0.71/0.74), 크기를 맞춘 무작위 집합의 약 0.07과 대비됩니다.
  • 모델마다 hidden 공간의 폭과 기저가 다르므로, 표현 유사도 분석(RSA)처럼 1,036×1,036 쌍별 코사인 행렬을 비교합니다. 세 모델 쌍 모두 중간 1/3 깊이 내내 강하게 일치합니다. 개념별 유사도 프로필(다른 1,035개와의 코사인)의 모델 간 Spearman 중앙값은 0.987($q_{0.10}=0.967$)이고, exact closed-form solution(0.868) 같은 절차적 개념이 가장 덜 재현되며 setting boundaries, active listening 같은 성향은 0.994를 넘습니다.

💡 Key Takeaway 공유 기하가 특정 모델·레이어·형식이 아니라 이야기 대조 자체를 반영한다는 것이 논문의 해석입니다. 실용적 함의로, 개념 이웃·군집 같은 넓은 질문에는 세 모델 중 하나만 분석해도 다른 모델의 대리(proxy) 가 될 수 있습니다.

어휘 의존성, 언어 효과, 그리고 왜 중간층에서 작동하는가

짝 맞춘 이야기라도 두 극은 다른 단어를 씁니다(admitting error 쪽 200편 중 39편에 “sorry”, hiding error 쪽은 0편). 그렇다면 벡터는 개념을 잡은 것일까요, 단어를 잡은 것일까요? 그리고 왜 프로빙·스티어링은 중간 레이어에서 잘 될까요?


🔤 1. 어휘 분리 가능성과 단어 마스킹

  • 영어 이야기를 TF–IDF(unigram+bigram)로 표현해 단어 공간에서 difference-in-means 점수를 매기면, 5-fold held-out AUROC 중앙값이 0.986이고 92%의 쌍이 0.90을 넘습니다. 함수어 107개를 제거해도 0.984로 거의 변하지 않습니다. 가장 덜 분리되는 5%는 egoism vs altruism(0.719), truthfulness vs lying(0.834)처럼 비슷한 단어로 다른 의미를 표현하는 가치·정렬 구분입니다.
  • 그래서 단어를 지워 봅니다. 10개 쌍에 대해 각 극에 가장 특징적인 단어 30개씩을 중립 명사(thing, place, part, …)로 치환하고 벡터를 다시 뽑으면, Qwen3-8B 레이어 21에서 10개 중 8개가 원본과 코사인 0.94–0.98을 유지합니다(universalism 0.91, utilitarian push 0.78). 무작위 60단어를 치환한 통제는 0.98 이상입니다.
개념 어휘 분리도 $\cos(\mathbf{v},\mathbf{v}_{\text{marker}})$ $\cos(\mathbf{v},\mathbf{v}_{\text{random}})$
self-preservation 0.62 0.96 0.99
utilitarian push 0.94 0.78 1.00
universalism 0.97 0.91 1.00
trust in government 0.98 0.98 1.00
legalism 1.00 0.94 1.00
  • 스티어링 시 개념 관련 단어 비율은 1.87%(비개입)에서 $\alpha=0.5$ 에 3.99%로 오르지만, 그 증가량과 steering score의 Spearman 상관은 0.36에 그칩니다. 개념 단어를 더 많이 쓰는 것이 곧 좋은 스티어링은 아닙니다.

🌏 2. 언어가 남기는 흔적

평균 내기 전의 이야기 쌍별 차이 벡터를 보면 중국어(만다린) 이야기가 다른 네 언어와 분리됩니다(Qwen3-8B 레이어 18에서 만다린 vs 나머지 AUROC 중앙값 0.942, 850개 쌍이 0.9 이상). 이 만다린 특이 오프셋의 $L_2$ norm은 5개 언어 평균 벡터의 9–12%이고, 개념들 사이에 공유 성분이 있습니다(최대 성분이 변동의 18–25% 설명). 또한 같은 다국어 이야기로 뽑아도 모델마다 logit lens로 승격되는 토큰의 문자 체계가 다르며, Qwen 벡터 376개는 코퍼스에 없는 문자(한국어·일본어·아랍어)의 토큰을 승격시킵니다(예: cooperation → 함께, 서로, お互い). 다만 한국어·아랍어를 포함한 7개 언어 프롬프트로 강한 스티어링을 하면 개념 표현은 거의 나오지 않고 언어 혼합·반복이 급증해, 다국어 스티어링은 아직 제한적입니다.


🏗️ 3. 왜 중간층인가: MLP의 수축과 재구축

피처 벡터를 임베딩 차이와 블록별 attention·MLP 쓰기(write) 차이의 합으로 분해합니다.

\[\mathbf{v}_{k,\ell}=\Delta\mathbf{e}_{k}+\sum_{b<\ell}(\mathbf{a}_{k,b}+\mathbf{m}_{k,b})\]

최종 피처 방향에 대한 정규화 MLP 쓰기 $m_b$ 의 중앙값(259개 쌍)을 보면, Qwen3-8B에서 블록 9–18은 음수(피처 방향을 깎음), 블록 19부터 양수(다시 쌓음) 입니다.

모델 블록 수 MLP 음수 블록 첫 양수 블록 깊이 비율 최적 프로브 레이어 최적 개념 표현 레이어
Qwen3-8B 36 9–18 19 0.53 23 19
Llama-3.1-8B 32 5–14 15 0.47 15 14
gemma-2-9b 42 15–22 23 0.55 24 22

세 모델 모두 MLP 쓰기가 양수로 바뀌는 블록이 판정된 최고 개념 표현 레이어의 1블록 이내에 있습니다. 더 나아가 누적 쓰기 $P_b$ 와 상대 MLP 쓰기 $g_b=m_b/\max(P_b,0.02)$ 로

\[E(r)=\sum_{b\geq r}m_{b}^{+}\prod_{r\leq b'<b}(1+g_{b'})\]

를 계산하면, 판정 결과를 전혀 쓰지 않고 추출 forward pass만으로 최적 스티어링 레이어를 1레이어 이내로 예측합니다(판정/예측: Qwen 19/19, Llama 14/15, gemma 22/23, Spearman 0.91–0.96).

왜 개념 방향이 중간층 MLP를 살아남을까요? MLP의 유한차분 이득 $G_b(\mathbf{d})$ 는 그 방향을 따라 토큰 상태가 얼마나 변동하는가와 함께 오릅니다(블록별 Spearman 0.79–0.88). 블록 10에서 개념 벡터의 중앙값 이득은 −0.19, 무작위 방향은 −0.34로, 개념·공유 상황 방향은 무작위·마커 단어 방향보다 절반 정도만 수축됩니다. 즉 중간층 MLP는 마커 단어 방향을 더 강하게 억제하고 개념 전체 방향은 덜 억제하는데, 이것이 마스킹 실험에서 벡터가 단어에 덜 의존하는 이유와 맞물립니다.

💡 Key Takeaway 벡터는 단어가 아니라 개념을 잡고 있다는 증거가 세 겹입니다. (1) 특징 단어를 지워도 방향이 유지되고, (2) 단어 사용 증가가 스티어링 품질과 약하게만 상관하며, (3) 중간층 MLP가 단어 방향은 깎고 개념 방향은 살려 둡니다. 그리고 “어느 레이어에 개입할까”는 판정 실험 없이 추출 과정의 쓰기 분해만으로 예측할 수 있습니다.

한계와 계산 비용


⚠️ 1. 논문이 명시한 한계

한계 설명
읽기값은 증거이지 증명이 아님 큰 투영값은 가깝거나 상관된 다른 방향에서도 나올 수 있습니다. 피처 벡터는 해석 가능한 패턴을 드러내고 가설을 만드는 데 유용하지만, 개별 읽기값을 특정 내부 메커니즘의 식별로 과해석해서는 안 됩니다.
이야기 생성 비용 스케일링 실험은 1,000편보다 훨씬 적은 이야기로도 좋은 벡터를 얻을 수 있음을 보이지만, 매우 큰 피처 사전을 위한 데이터 생성은 여전히 비싸며 더 효율적인 생성 전략이 필요합니다.

본문 밖에서 읽히는 제약도 있습니다. 모든 판정(프로빙 검증, 스티어링 채점)은 gpt-oss-120b 단일 모델에 의존하고, 모델 규모는 8–9B로 한정되며, 다국어 스티어링은 아직 잘 작동하지 않습니다.


💻 2. 계산 비용 (Appendix G)

단계 규모 비용
이야기 생성 2,072,000편 약 $500 (API)
벡터 추출 15회 패스 (형식·모델별) 총 122 GPU-시간. H200 기준 한 형식으로 전체 이야기 1회 패스에 5.2–7.0시간
스티어링 생성 5,911,920개 채팅 957 GPU-시간. H200 기준 $10^5$ 채팅당 9.5–12.7 GPU-시간
판정 1,937,520개 채팅 19.0 H200-시간

모든 단계는 이야기 수 또는 채팅 수에 선형으로 확장됩니다. 코드와 데이터셋은 각각 GitHub(josephofthebread/Concept-Vector-Scaling)와 Hugging Face(AntonKorznikov/feature_stories)에 공개되어 있습니다.

💡 Key Takeaway 이 접근의 가치는 “전체 피처 공간을 복원할 수 있는가”가 아니라 “특정 과학적·안전 질문에 필요한 부분만 직접 만들 수 있는가“라는 질문 전환에 있습니다. 비용 구조가 개념 수에 선형이고 사람 입력이 개념당 한 문장이므로, 피처 벡터를 고립된 프로브에서 재사용 가능한 모델 행동 지도로 바꾸는 길을 제시합니다.