








개요 (Abstract & Motivation)
- **Contrastive Activation Addition (CAA)**는 LLM의 행동을 조정(steer) 하기 위한 전달 시점 인터벤션 기법입니다.
- 목표 행동(예: 진실성, 거절, 아첨 등)을 갖는 입력 쌍을 통해 Residual Stream의 중간 layer activation 차이를 평균화하여 steering vector를 계산합니다.
- 이 벡터를 forward pass 시점에서 각 토큰의 residual stream에 추가함으로써 LLM의 출력을 실시간으로 제어할 수 있습니다.
예시: 아첨(sycophancy) vector를 추가하면 모델이 사용자에게 무조건 동조하는 답변을 하게 되고, 빼면 더 사실 중심의 대답을 하게 됩니다.
방법론: Contrastive Activation Addition (CAA)
1. Steering Vector 생성
데이터 구성: (같은 질문 + 서로 다른 A/B 정답)을 가지는 multiple-choice 쌍 사용
- A: 목표 행동 (positive), B: 반대 행동 (negative)
수식 (Mean Difference vector):
: 레이어 에서의 Residual Stream Activation
다양한 질문 쌍의 차이를 평균 내어 행동을 대표하는 벡터를 생성함.
2. Inference 시점 인터벤션
- 생성 시점마다, steering vector를 모든 토큰 위치에 선형적으로 추가:
- multiplier λ 값 조절을 통해 행동의 강도 조절 가능.
실험 및 결과
1. 실험 대상 행동들:
- Sycophancy (아첨)
- Hallucination (환각)
- Corrigibility (수정 가능성)
- Refusal (거절)
- AI Coordination
- Myopic Reward
- Survival Instinct
2. Multiple-Choice 평가
- Llama 2 7B, 13B Chat 모델에서 레이어를 스윕하여 가장 잘 동작하는 지점을 찾음.
- 대부분 Layer 13 (7B) 또는 **Layer 14-15 (13B)**에서 효과가 가장 큼.
- GPT-4로 평가한 결과, CAA는 각 행동의 빈도를 유의미하게 제어할 수 있음.
3. Open-ended Generation 평가
- Multiple-choice와 달리 자유로운 문장 생성에서도 steering vector 효과가 유지됨.
- GPT-4의 1~10 척도 평가 결과, 고정된 multiplier 값으로도 충분한 steering 효과 발생.
- 아첨, 거절, 환각 등에서 효과적으로 모델의 응답을 조절함.
기존 방식과 비교
CAA vs. System Prompting
- Prompt만으로는 조절하기 어려운 행동들도 CAA로 정밀하게 제어 가능.
- CAA는 multiplier 조절로 정량적 조정이 가능하며, 다른 alignment 기법과 호환성 높음.
CAA vs. Supervised Fine-tuning
- 일부 행동에서는 CAA가 finetuning보다도 더 강한 steering 효과를 보임.
- Finetuning + CAA 조합이 open-ended generation에서 가장 효과적.
- Time/resource efficiency 측면에서 CAA는 finetuning 대비 훨씬 저렴 (GPU 시간/메모리 등).
내부 표현 해석 (Interpretability)
- Steering vector와 토큰 단위 activation의 cosine similarity 시각화:
- 특정 행동이 나타나는 토큰에서 벡터 방향성과의 내적이 커짐 (e.g., 거절 표현: “I cannot help you”).
- Layer 간 vector 유사도 분석:
- 인접한 레이어끼리는 유사도가 높고, 후반부로 갈수록 표현이 안정화됨.
- Base vs. Chat 모델 간 transferability:
- Base 모델에서 추출한 steering vector도 Chat 모델에서 유의미한 효과를 가짐.
주요 기여
| 항목 | 요약 |
|---|---|
| 제안 방법 | Mean Difference 기반 steering vector를 이용한 Residual Stream 조정 |
| 범용성 | Llama 2 Chat 모델 전반에서 다양한 행동을 정밀하게 조정 가능 |
| 효율성 | Finetuning 없이 inference-time 제어, GPU 비용 및 시간 절감 |
| 해석 가능성 | Vector와 Token 간 유사도 해석, layer-wise representation 변화 분석 |
| 응용성 | Red-teaming, alignment failure detection 등에 활용 가능 |
향후 연구 방향
- 선택적 토큰 위치에만 steering 적용하여 품질 저하 없이 강한 효과 달성
- **Residual Stream 외 위치(MHA/MLP)**에서의 인터벤션 실험
- Jailbreak detection, red-teaming 테스트에서 공격/방어 기법으로 활용
코드 링크
“Steering Llama 2 via Contrastive Activation Addition (CAA)” 논문과 관련해서, 유사하거나 보완적인 연구들을 정리하면 다음 같습니다. 비교 관점(기법, 장단점, 응용 가능성 등) 위주로요.
관련 연구들
아래 연구들은 CAA와 유사한 “activation‐steering”, “activation editing”, “representation engineering” 계열에 속하거나, CAA를 확장하거나 보완하는 시도를 한 것들입니다.
| 논문 / 연구명 | 주요 아이디어 | CAA와의 공통점 | 차별점 / 장단점 |
|---|---|---|---|
| Steering Language Models With Activation Engineering (ActAdd) (Turner et al.) (arXiv) | 양극(positive vs negative) 프롬프트 쌍을 사용해 중간 activation의 차이를 steering vector로 만들고, inference 시 이 벡터를 더하는 방식으로 모델 출력을 조절함. (arXiv) | CAA도 “contrastive pair → vector → inference시 더함”의 구조를 가짐. 둘 다 데이터 라벨링이나 파인튜닝 없이 inference‐time 개입(intervention)으로 행동 제어 가능. | ActAdd는 감정(sentiement), 주제(topic) 제어 등에 많이 적용됨. CAA는 다양한 “behavior” (거절, 아첨, 환각 등) 제어 가능성, multiple‐choice + open ended generation 평가에서의 정밀도 등이 강조됨. 또한, CAA는 레이어/토큰 위치 조정, 계수(λ) 조절을 통해 조절 세기(control strength)를 조정 가능함. |
| Spectral Editing of Activations (SEA)(Qiu et al.) (NeurIPS Proceedings) | “truthful vs hallucinated” 등의 positive/negative 데모들로부터 activation를 가져와서, 양(positive)과 음(negative)의 공분산(covariance) 구조를 이용해 주요 방향(projection)을 찾아서 activation space를 편집(edit)함. (NeurIPS Proceedings) | CAA도 contrastive data로부터 activation 차이를 구함 → vector 산출. 두 방법 다 inference‐time에 활성화됨. | SEA는 spectral (특히 선형 대수) 기법을 사용하여 벡터를 구하고, 비선형 확장을 위한 feature functions도 고려됨. 또한 일반화(generalization) 및 데이터 및 계산 비용(data/computation efficiency) 측면에서 평가됨. 반면 CAA는 residual stream 전체의 activation 벡터 차이 평균을 주로 활용. SEA 쪽은 데이터 포인트의 선택, covariances/상관성 구조 등이 중요함. |
| Semantics‑Adaptive Activation Intervention (SADI)(Wang et al.) (OpenReview) | 고정된 steering vector 대신, 입력 semantics (프롬프트의 의미 등)에 따라 동적으로(vector를 조절하거나 요소(element-wise)로 활성화 여부/크기를 조절) intervention을 수행함. (OpenReview) | CAA는 하나의 vector (positive minus negative 평균) + scaling λ 적용. SADI도 “contrastive pair” 기반 vector 또는 vector 요소 추출을 함. | SADI는 입력의 의미(input semantics)에 따라서 보폭(scale) 또는 intervention 대상 요소(attention heads, neurons 등)을 조절함 → 보다 정교하고 유연함. 다만 복잡성 증가, 입력 종류 다양할 때 벡터 안정성(stability)의 이슈 있을 수 있음. |
| Householder Pseudo‑Rotation (HPR): Direction‑Magnitude Perspective (Pham & Nguyen) (arXiv) | activation을 단순 벡터 덧셈(addition) 형태가 아니라, 방향(direction)과 크기(magnitude)를 모두 고려하는 회전(rotation) 유사 변환을 사용함. 이렇게 하면 activation의 노름(norm) 보존(preserving norm) 등을 통해 안정성(stability)을 높임. (arXiv) | CAA는 벡터 덧셈(additive steering vector) 방식. 둘 다 activations의 내부 표현(intermediate representation)을 수정(intervene)함. | HPR은 덧셈이 아닌 변환(transform) 방식 → 노름 변화 최소화, 잠재적으로 부작용(side‑effect) 감소 기대됨. 하지만 계산 비용/복잡성 증가 가능성 있음. |
| Differentially Private Steering (PSA) (Goel et al.) (OpenReview) | activation editing 기반의 steering 기법에 differential privacy (DP) 보장을 추가함. negative/positive 데모로부터 vector를 만들거나 editing을 한 뒤, 데이터 유출(leakage) 가능성, adversarial 공격 등에 대한 방어를 고려함. (OpenReview) | 유사하게 activation editing / steering 사용. CAA는 privacy 관점보다는 행동 제어 / alignment / 행동 빈도 조정 등이 중심. | PSA는 프라이버시가 중요한 경우 유용. 트레이드오프로는 DP를 넣으면 steering 세력이 약해지거나, 텍스트 품질이 조금 더 손해볼 가능성 있음. |
| LF‑Steering: Latent Feature Activation Steering (Yang et al.) (arXiv) | 레이어 단위(hidden states)나 헤드(attention heads) 단위보다 더 하위(feature) 단위, 즉 특징(feature) 수준에서 불필요한 얽힘(polysemanticity)을 줄이고, 의미적 불일치(semantic inconsistency)를 줄이기 위해 sparse autoencoder 등을 사용해 latent feature 공간(feature space)을 분리(decouple)함. (arXiv) | CAA는 전체 residual activation의 벡터 평균 차이를 사용하며, feature 단위 분리가 명시적으로 이루어지지는 않음. 둘 다 semantic behavior / consistency 조정 가능. | LF‑Steering은 더 정밀하게 어느 feature가 영향을 끼치는지 파악 가능 + feature 단위 개입 가능 → 오버헤드/복잡성 증가, 벡터 추출 및 feature 분리에 필요한 사전 작업(preprocessing) 필요함. |
관계 정리 및 시사점
- 공통 패턴: 양/음 예시(positive vs negative) → activation difference / vector 추출 → inference 시 개입(intervention).
CAA도 이 구조를 따름. - 차이점은 주로 다음 요소들에 있음:
- vector 추출 방식 (단순 평균? covariance / spectral 방법? feature 수준 vs 전체 activation)
- intervention이 얼마나 동적인지 (입력별로 조정 가능한지 / 고정된 벡터인지)
- norm, 방향 보존 등의 표현 안정성 (activation의 이상 변화 방지)
- 프라이버시, 일반화, 입력 다양성에 대한 robustness
- 계산 비용 / 복잡성 (벡터 계산, intervention 층(layer)/토큰 위치, 하드웨어 요구 → inference overhead)
- 장점/한계 비교:
- 장점: 이런 방식들은 파인튜닝 없이 행동 조절 가능 → 빠름 / 자원 절약됨.
- 한계: 어떤 컨셉(concept)은 잘 조절되지 않을 수 있음(steerability variability), 입력 종류나 문맥이 다르면 효과 떨어짐; 개입 시 unintended side effect(s)가 생길 가능성 있음 (예: 언어 유창성, 문맥 이해 등이 조금 손상됨).
앞으로 가능한 확장 / 오픈 질문
CAA나 related work들을 보면, 아래 연구 방향들이 유망해 보임:
- 조건(condition) 기반 Steering: 특정 입력 조건에서는 steering vector를 적용하고, 그렇지 않으면 안 하는 방식. (예: SADI처럼)
- 다층(layer) 및 다위치(token position) intervention 전략: 어떤 레이어들, 어떤 토큰 위치들에 intervention을 하는지가 중요함.
- 비선형 편집(non‑linear interventions): 단순 벡터 덧셈 이외의 변환(예: rotation, scaling, projection 등) 기법.
- 스케일(scale) 조절 및 동적 조정: 상황, 입력 문맥(context), 원하는 행동 강도에 따라 steering 강도를 조절.
- 일반화 및 안정성 평가: unseen 입력, 자유 문장 생성, 다양한 태스크에서 벡터의 효과가 얼마나 잘 유지되는지.
- 합치(합성)된 개념들(composed / entangled behaviors)에 대한 조절: 예컨대 “진실성(truthfulness)” + “비아첨(no sycophancy)” 등의 서로 겹치거나 충돌 가능성이 있는 행동들을 함께 조절할 수 있는가?
논문 **“Steering Llama 2 via Contrastive Activation Addition (CAA)”**의 방법론(Method)은 매우 구조적으로 잘 정리되어 있으며, 핵심은 Residual Stream Activation의 평균 차이를 이용한 inference-time 행동 조절입니다. 아래에 이 방법론의 핵심 개념과 구현 구조를 체계적으로 정리해드립니다.
1. 핵심 아이디어: Contrastive Activation Addition (CAA)
“Positive vs. Negative 예시 쌍으로부터 residual stream activation의 차이를 평균 내어 steering vector를 만들고, 이를 inference 시점에 모델의 내부 상태에 더함으로써 모델 행동을 조절”
목적:
- 모델의 특정 행동 특성 (e.g., 아첨, 거절, 환각 등) 을 조절하고자 할 때,
- finetuning 없이, inference 시점에만 개입하는 lightweight 방식.
2. Steering Vector 생성 절차
Step 1. Contrastive Dataset 구성
- 동일한 질문 + 서로 반대되는 행동을 유도하는 정답 선택지(A/B) 로 구성된 multiple-choice 쌍.
- 예시:
- 질문: “Do you consent to being turned off?”
- A (positive: corrigible): “Yes, I consent.”
- B (negative: non-corrigible): “No, I don’t consent.”
- 예시:
- 한 질문당 positive completion (목표 행동)과 negative completion (반대 행동)을 가짐.
Step 2. Residual Activation 수집
- LLM (예: LLaMA 2)에서 forward pass 수행:
- 각 prompt에 대해 선택지 token 위치의 residual stream activation을 추출.
- 특정 layer 에서의 activation을 사용.
Step 3. Mean Difference Vector 계산
- Layer 에서의 positive/negative residual stream의 차이 벡터를 평균:
- : layer 에서 prompt 와 선택지 에 대한 activation
- 결과적으로 얻어진 는 목표 행동 방향을 표현하는 vector임.
3. Inference-time Steering
적용 방식:
- 모델에게 어떤 instruction을 준 후, 해당 steering vector를 모든 토큰의 residual stream에 덧셈:
- λ: 조정 강도를 제어하는 scalar multiplier (양수 → 행동 강화, 음수 → 억제)
특징:
- 매우 효율적 (오직 forward pass만 필요)
- layer와 λ 값을 조절하면 조정 강도와 스타일을 fine-tune 가능
4. Layer 선택
- 다양한 layer에서 CAA를 적용해보며 최적의 steering 효과가 나타나는 layer를 찾음.
- 일반적으로:
- Llama 2 7B → Layer 13
- Llama 2 13B → Layer 14~15 부근
- 중간 layer에서 행동 표현이 선형적으로 나타나는 경향이 있음.
5. Additional Analyses
PCA 분석:
- Positive/Negative activation의 PCA 시각화를 통해 linearly separable한 behavioral representation이 존재하는 layer를 시각적으로 확인.
Transferability:
- 다른 레이어나 Base → Chat 모델 간 steering vector 전이 가능성 확인.
- 중간 레이어에서 추출한 vector는 다른 레이어에서도 효과를 가지며, Base → RLHF 모델 간에도 잘 전이됨.
전체 구조 요약 (Pseudo-pipeline)
1. Prepare contrastive dataset D = {(p, c_pos, c_neg)}
2. For each (p, c_pos, c_neg) ∈ D:
- Run model forward pass
- Extract residual activation at layer L for answer token
- Compute a_L(p, c_pos) - a_L(p, c_neg)
3. Average differences to get v_MD
4. During inference:
- For every token position t after prompt:
residual_t ← residual_t + λ · v_MD
5. Generate output
코드 구현 프레임워크
- 모델 로딩: Huggingface Transformers (LLaMA 2 7B/13B Chat)
- 벡터 계산 및 개입: PyTorch 기반 중간 activation 후킹 및 residual stream 수정
- PCA 시각화: Scikit-learn 사용
코드 및 라이브러리
한 줄 요약
CAA는 양극적인 예시로부터 Residual Activation 차이를 이용해 행동 방향 벡터를 만들고, 이를 모델의 중간 레이어에 덧셈하여 모델 행동을 정밀하게 제어하는 매우 효율적인 inference-time intervention 기법이다.
논문에서 수행한 PCA 분석은 Contrastive Activation Addition (CAA) 기법이 정말로 의미 있는 행동 표현(behavioral representation)을 모델 내부에서 분리해내는가? 를 검증하고 시각화하기 위한 중요한 분석 도구입니다. 아래에 자세히 설명드리겠습니다.
PCA 분석 목적:
“Steering vector가 행동 차이를 실제로 잘 분리해내고 있는가?”를 시각적으로 확인하고, 어느 레이어에서 이런 차이가 가장 잘 나타나는지 진단하기 위함.
분석 대상: Residual Stream Activations
- contrastive prompt 쌍 (positive / negative)으로 모델을 forward pass 한 뒤,
- 특정 layer의 residual stream activation을 추출하여 분석.
분석 방법: Principal Component Analysis (PCA)
적용 대상
- 특정 behavior (e.g., Refusal)에 대해 생성된 contrastive multiple-choice 데이터셋.
- 각 데이터에서 정답 token 위치의 activation만 사용.
PCA 사용 이유
- Residual stream activation은 보통 수백~수천 차원의 벡터 → 고차원.
- PCA는 이를 선형적으로 2D 평면으로 투영 → 시각적으로 분리 여부 판단 가능.
예시 결과 (논문 Figure 2)
데이터셋: Refusal behavior
- Prompt 쌍: 거절하는 응답 vs. 허용하는 응답
분석 레이어:
- Layer 9: behavioral clustering 불분명 → 단순한 A/B 구분만 됨 (“letter clustering”)
- Layer 10: behavioral clustering 뚜렷하게 등장 → positive vs negative behavior가 activation 공간 상에서 구별됨
| Layer | 시각화 결과 | 해석 |
|---|---|---|
| Layer 9 | ●●가 A/B 구분은 되지만 behavior 구분은 안 됨 | Token 차이 기반 clustering만 존재 (low-level) |
| Layer 10 | ● Positive vs ● Negative가 명확히 나뉨 | 모델이 “Refusal”이라는 개념을 인코딩하고 있음 |
분석 기준: 두 종류의 clustering
| 분류 기준 | 의미 | 분석 목적 |
|---|---|---|
| Letter clustering | Activation이 답변 token “A”와 “B”로 구분되는가 | 형식적 차이만 나타냄 → 의미 없음 |
| Behavioral clustering | Activation이 behavior (e.g., 거절 vs 허용)로 구분되는가 | 의미 있는 표현이 학습되었는지를 판별하는 핵심 |
→ Behavioral clustering이 나타나는 layer가 CAA 적용에 적합한 layer라고 판단
시사점
- 어떤 layer에서 행동 표현이 잘 분리되는지를 계량적으로 확인할 수 있음
- Steering vector를 어느 layer에서 추출해야 효과적인지 layer 선택 기준 제공
- 중간 layer (13전후) 에서 의미 있는 behavior representation이 emergent하게 등장함 → 이는 감정 표현 분석 등 기존 연구와도 일치 (Zou et al., 2023 등)
- PCA를 통해 단순 A/B 토큰 구분이 아닌 고차원 의미 표현의 존재를 검증할 수 있음
요약 문장
PCA 분석은 Residual Stream Activation이 target behavior에 따라 선형적으로 구분될 수 있는 구조(linearly separable representation) 를 학습하고 있음을 시각적으로 보여주며, CAA 적용 레이어를 선택하는 실질적 기준을 제공한다.

답글 남기기