** Improving Instruction-Following in Language Models Through Activation Steering (ICLR 2025)

아래는 ICLR 2025 논문 “Improving Instruction-Following in Language Models Through Activation Steering”의 핵심 내용을 정리한 상세 설명입니다.


📌 연구 문제

LLM들은 지식을 잘 알고 있음에도 사용자가 제시한 세부 지시(instruction)를 완전히 준수하지 못한다는 문제가 존재합니다.
예)

  • JSON 형식으로 출력해 달라고 했는데 자연어로 답변
  • “3문장으로 답하라” 했는데 길어짐
  • “특정 단어를 포함/제외하라” 요청을 무시함

연구 질문: LLM 내부에는 “지시를 따르도록 만드는 방향성(벡터)”이 존재하며, 이를 활성화 스티어링으로 조정해 inference 시 지시 준수도를 높일 수 있을까?


🔧 핵심 아이디어: Activation Steering 기반 Instruction Vector

논문은 아래와 같은 방식으로 지시를 인코딩하는 벡터(steering vector) 를 구성합니다.

① 같은 질문 + 지시 없음 → 입력

② 같은 질문 + 지시 추가 → 입력

두 입력의 residual stream activation 차이(mean difference) 를 계산 → instruction vector

즉, “지시가 있을 때 나타나는 내부 표현 − 지시가 없을 때 내부 표현” = 지시 방향성(Instruction Feature Direction)

해당 벡터를 추론 중 특정 레이어 residual stream에 더해줌으로써 모델이 지시를 따르도록 유도합니다.

쉽게 말해: 지시가 입력 문장에 없어도 “지시가 존재하는 것처럼 내부 표현을 바꿔버림”.


📌 실험한 instruction 종류

범주예시
FormatJSON으로 출력, 소문자로 출력, 인용부호로 감싸기, 불릿 리스트 등
LengthN개의 문장 제한, N단락 등
Keyword특정 단어 포함/제거
Multi-instruction형식 + 길이, 소문자 + 금지 단어 등
Cross-model지시튜닝 모델로 만든 벡터를 base 모델에 적용

🔍 주요 결과 요약

✔ Format (출력 형식) 지시

지시가 입력에 없어도 활성화 스티어링만 적용하면 지시 준수율이 10% → **30%**로 성장
지시가 입력에 있어도 스티어링 적용 시 정확도 증가
→ 스티어링은 “instruction drift(지시가 길어지며 지켜지지 않는 현상)” 역시 줄임
📌 시각화: Figure 3a,b


✔ Length (길이 제어)

길이에 대한 고유 벡터 계산 → 스티어링 weight(c)을 조정하면 길이 비례적 조절 가능
📌 예시: c값 ↑ → 점점 더 간결한 문장 생성
Table 2 및 Figure 5


✔ Keyword 포함/제외

  • 특정 단어 포함: “단어 포함 벡터”를 추가 → 포함율 증가
  • 특정 단어 제외: “단어 포함 벡터를 음수로 적용(빼기)” → 제외 성공

처음부터 “제외 벡터”를 만들면 오히려 해당 단어 확률이 증가하는 문제가 발견 → 포함 벡터의 음수 적용이 해법
📌 Example: Table 3


✔ Multi-Instruction

두 개의 벡터를 서로 다른 레이어에 동시에 삽입
→ Format+Length, Lowercase+Keyword Exclusion 모두 성능 상승
📌 Figure 7


✔ Cross-Model Steering (가장 인상적인 결과)

Instruction-tuned 모델에서 계산한 벡터를 Base 모델에 적용
→ Base 모델이 스스로 만든 벡터보다 더 높은 지시 준수율
📌 특히 Gemma-2 2B에서 극적 향상
📌 Figure 8

결론: Instruction tuning은 가중치 자체를 크게 바꾸기보다 “지시 표현 방향성”을 학습한다 → 이 벡터를 다른 모델로 이전 가능


⚠ 부작용 및 한계

  • 스티어링 적용 시 일부 모델에서 출력 품질이 소폭 하락
    (정보가 줄어들거나 반복/헛소리 발생)
  • 특정 instruction(예: “문장의 마지막에 문구 X로 끝내라”)은 표현 variablility 때문에 평균 벡터가 잘 작동하지 않음
    📌 Figure 4

🧠 핵심 기여 정리

요소기존 연구본 논문의 차별점
Activation Steering 사용스타일/정서/안전성 등 고수준 속성세부 지시 준수(형식·길이·단어)라는 정량적 제어
다중 속성어려움 보고됨서로 다른 레이어 적용으로 해결
Cross-model transfer몇몇 실험적 보고instruction vector를 base 모델에 이전 → 더 높은 성능

🚀 한 줄 요약

LLM은 “지시를 따르는 방향성”을 activation 공간의 선형 벡터로 표현하며, 이를 추론 중에 주입하면 명령을 더 잘 따르게 만들 수 있고, 이는 instruction-tuned 모델에서 base 모델로 이전도 가능하다.


아래는 ICLR 2025 논문
**“Improving Instruction-Following in Language Models through Activation Steering”**의 방법론(Method) 을 핵심 개념 → 공식 → 구현 절차 → 설계 선택의 이유까지 포함해 구조적으로 정리한 설명입니다.


🧩 1. 문제 정의: “지시(instruction)를 표현하는 내부 방향 벡터 찾기”

LLM은 입력 문장에 지시를 추가하면 내부 활성화가 변한다.
즉,

  • x: base query
  • x⁺: base query + instruction

이 두 입력의 residual stream activation 차이는 해당 지시가 내부적으로 어떻게 표현되는지를 나타낼 수 있음.

→ 목표: 이 차이를 평균내어 instruction steering vector 를 만들고,
추론 시 residual stream에 더해 “지시가 있는 것처럼” 모델을 유도하는 것.


🧠 2. Activation Steering 핵심 아이디어

논문에서 사용하는 모델 개입(intervention) 위치는 Residual Stream
: LLM의 모든 sublayer 출력이 누적되는 지점.

Residual Stream hidden state (token t, layer l):

xl(t)dmodelx_{l}^{(t)} \in \mathbb{R}^{d_{\text{model}}}

instruction이 있을 때와 없을 때의 차이(difference-in-means) 를 계층별로 계산.


🔧 3. Steering Vector 계산(Method Section 2.2)

3.1 Contrastive Activation Difference (Diff-in-means)

N개의 base query–instruction 쌍이 있다고 할 때
(같은 질문 × instruction 존재/부재)

  • residual stream at layer l, 마지막 입력 토큰 위치:
xi,l,xi,l+x_{i,l},\quad x^{+}_{i,l}

차이 평균:

vl=1Ni=1N(xi,l+xi,l)v_l = \frac{1}{N}\sum_{i=1}^N (x^{+}_{i,l}-x_{i,l})

정규화하여 unit instruction direction:

ul=vl||vl||u_l = \frac{v_l}{||v_l||}

3.2 Scaling Coefficient (c) 산출 방식 (Format / Keyword Instruction)

스티어링은 단순히 u_l을 더하는 것이 아니라
입력 x′에 대해 instruction이 있을 때와 유사한 activation 수준으로 맞추는 방식.

입력 x′의 layer l residual stream을 x′ₗ이라 할 때:

c=zxlulc = \bar{z} – {x’}_{l}^{\top} u_l

여기서,

z=1Ni=1N(xi,l+)ul\bar{z} = \frac{1}{N}\sum_{i=1}^N (x^{+}_{i,l})^\top u_l

즉,
입력 x′의 projection을, instruction 존재 시 평균 projection 값으로 이동시키는 것.

그리고 최종 steering vector는:

culc \cdot u_l

3.3 Residual Stream Intervention

Forward pass 중 layer l에서:

x~l=xl+cul\tilde{x}’_{l} = x’_{l} + c u_l

이후 forward 계속 진행.

핵심: 파라미터 변경 없이 활성화만 조정 → inference-time steering.


🧪 4. Layer 선택 과정

모든 layer를 다 쓰지 않고,
Instruction 효과가 가장 잘 나타나는 layer를 선택해야 함.

  • 후보 layer를 여러 개 설정
  • 작은 검증셋에서 steering 적용 후 instruct-following accuracy 측정
  • 품질 검증(perplexity check) 도 함께 수행
    (지나친 steering으로 언어 모델 품질 저하 가능)

최종적으로 지시별로 서로 다른 최적 layer 가 선택됨.
(부록 E에서 각 instruction에 대한 layer 번호 공개)


📝 5. Instruction 종류별 Method 차이

5.1 Format Instructions (JSON, lowercase, bullet list 등)

  • steering vector: diff-in-means 방식 그대로
  • coefficient c는 식 (2)를 사용한 동적 스케일링

5.2 Length Instructions (concise / verbose)

“3문장 이하” 같은 다양한 n에 대해 벡터를 하나씩 만들 수 없음 →
이 논문은 “일반적인 brevity / verbosity vector” 만을 학습함.

즉,

  • “간단히 답하라”
  • “자세히 길게 답하라”

두 방향 벡터 중 “간결하게” 벡터를 사용하여
c 값을 크게 조절하면 더 짧은 출력이 생성됨.

Length steering은 discrete instruction이 아니라 continuous control 로 취급.


5.3 Keyword Inclusion / Exclusion

Inclusion

  • “단어 w를 포함하라” instruction으로 vector 생성
  • test-time에서 포함해야 하는 w에 대한 vector를 바로 계산 가능 (20개 예시만 필요)

Exclusion

  • 처음에는 “단어 w를 제외하라” vector를 만들려고 했으나
    vocabulary projection에서 w의 logit이 오히려 증가하는 문제가 발견됨.

해결책:

exclude(w)=include(w)\text{exclude}(w) = – \text{include}(w)

즉, 포함 벡터의 부호 반전을 steering vector로 사용.

이 방식이 최고의 exclusion 성능을 보임.


🧩 6. Multi-Instruction Steering (두 지시를 동시에 따르게)

한 steering vector에 여러 instruction 변수를 섞는 것이 아니라:

  • instruction A → layer l_A
  • instruction B → layer l_B

서로 다른 optimal layer에 각각 벡터를 넣는 방식으로 병렬 적용.

→ 논문 Figure 7에서 두 instruction이 모두 향상됨.

기존 연구에서 “벡터 합치기(concatenation)”가 실패했던 문제를 회피하는 설계.


🔁 7. Cross-Model Steering (방법론 관점의 핵심 혁신)

Instruction-tuned 모델에서 생성한 steering vector를
base 모델의 residual stream에 추가하는 방식.

절차는 동일하지만:

  • vector 계산: IT(Instruction-tuned) model
  • vector 적용: Base model

결과:

  • base model이 스스로 만든 벡터보다 더 정확하게 instruction 준수
  • 특히 Gemma-2 2B 모델에서 큰 향상

이를 통해 본 논문이 보인 방법론적 메시지:

“Instruction tuning이 내부적으로 학습하는 것은
실제로는 residual stream 상의 선형 방향성(Instruction Feature Direction)이며,
이것은 다른 모델로 transfer도 가능하다.”


🏁 8. 전체 방법론 프로세스 요약 (Pseudo-Pipeline)

1. Define instruction type I

2. Collect N base queries:
   (x_i, x_i⁺ = x_i + instruction I)

3. For each layer l:
       Compute residual activation at final input token:
           a_i,l      = Residual(x_i, l)
           a_i⁺,l     = Residual(x_i⁺, l)
       
       Compute mean difference vector:
           v_l = mean(a_i⁺,l - a_i,l)
           u_l = normalize(v_l)

4. Select best layer l* via:
       - instruction adherence on validation
       - perplexity sanity check

5. At inference, for new input x':
       Compute residual stream x'_{l*}
       Compute scaling coefficient c using eq. (2)
       Inject steering:
           x'_{l*} ← x'_{l*} + c u_{l*}

6. Continue forward pass to output.

📌 방법론의 핵심 철학

  • Instruction = Activation space의 선형 방향
  • 지시는 residual stream에 나타나므로, 해당 방향으로 projection 조절만 하면 LLM을 제어할 수 있다
  • Fine-tuning 없이 inference-time control이 가능
  • 단일 instruction이 아니라 조합 instruction도 layer-wise 분리로 가능
  • 지시 능력을 다른 모델에 transferable한 representation으로 취급할 수 있다


게시됨

카테고리

,

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다