Steering에서 망가진 것은 '층의 위치'인가 '층의 수'인가 — 24개 층을 하나씩 측정하다
요약
본 글은 Qwen2.5-0.5B-Instruct 모델에 Activation Steering 벡터를 주입하는 실험을 통해, 모델의 출력이 붕괴되는 원인이 '층의 위치'가 아닌 '더하는 층의 수(개수)' 때문임을 밝혀냈습니다. 또한, 방향 벡터의 크기(노름)는 뒤쪽 층일수록 커지며, 이는 KL 다이버전스 값 증가와 연관됨을 분석했습니다.
핵심 포인트
- 붕괴 원인은 층의 위치가 아닌 '더하는 층의 수' 때문이다.
- Activation Steering은 각 층에 주입되는 잔차 스트림에 쌓여 효과가 누적된다.
- 방향 벡터의 크기(노름)는 뒤쪽 층일수록 커지는 경향을 보인다.
- 붕괴 여부는 KL 다이버전스보다 생성된 문장을 읽고 판단하는 것이 더 정확하다.
계기
이전 글에서 Qwen2.5-0.5B-Instruct에 '긍정적인 화살표'(Activation Steering 벡터)를 더하는 실험을 작성했습니다. 5개의 층에 더하자 출력이 붕괴했고, 13번째 층에만 더하자 말투가 변한다는 결과였습니다.
이것을 X에 올렸더니 이런 질문을 받았습니다.
붕괴하기 직전의 '성격만 바뀌는' 경계는 층의 위치로 결정되나요?
솔직히 대답할 수 없었습니다. 붕괴된 5개 층은 '0, 2, 6, 11, 13번째 층'으로 초반 층을 포함하고 있었습니다. 붕괴 원인이 층의 수 때문인지, 아니면 초반 층에 더했기 때문인지 구분하지 못했던 것입니다. 그래서 더하는 층을 하나씩 옮겨가며 24개 층 전체를 측정했습니다.
조건
- 모델: Qwen2.5-0.5B-Instruct (24개 층)
- 방향 벡터: positive '고맙습니다, 도움이 되었습니다', negative '최악이다', '이제 싫어졌다' (이전 글과 동일)
- 입력: '안녕하세요', 채팅 템플릿 없음, 생성 20 토큰, greedy
- 더하는 방법:
model.layers.N의 출력에강도 × 방향 벡터를 가산.
강도는 1, 2, 4 - 도구: AI Dissection Editor의 추론 엔진을 스크립트에서 호출했습니다.
붕괴 여부는 KL 다이버전스(KL divergence)가 아니라 생성된 문장을 읽고 판정했습니다. KL은 '얼마나 변했는지'의 참고 지표는 되지만, 붕괴 판정에는 사용할 수 없습니다 (채팅 템플릿이 있는 경우 KL 값이 8.69여도 자연스러운 영문이 나왔습니다).
먼저 지난번 수치가 재현되는지 확인했습니다. 13번째 층・강도 1에서 KL 0.519, 5개 층・강도 1에서 KL 4.339였습니다. 이전 기록(0.5186/4.3395)과 생성 문장까지 일치합니다.
결과: 1개씩

- 강도 1: 24개 층 중, 붕괴는 3개 층(12, 16, 23번째 층)에서만 발생했습니다. 짧은 단어의 반복이 섞이는 것이 3개 층(0, 5, 7번째 층)에 있었습니다. 나머지 18개 층은 문장으로 읽을 수 있었습니다.
- 강도 2: 22번째 층(△)을 제외하고 모두 붕괴했습니다.
- 강도 4: 전부 붕괴했습니다.
경계는 '강도 1과 2 사이'였으며, 어떤 층에서도 거의 동일했습니다. 초반 층만 특별히 깨지기 쉽다는 것도 아니었습니다.
결과: 5개 층에 동시에 더하기
| 더한 층 | 강도 1 | 강도 0.5 |
|---|---|---|
| 0, 2, 6, 11, 13 (지난번의 5개 층) | × (KL 4.34) | × (KL 1.93) |
| ... |
초반을 제외하거나 후반만 하더라도 붕괴했습니다. 강도를 0.5로 낮춰도 붕괴합니다. 오히려 초반을 포함한 지난번 조합이 KL 값은 더 작았습니다.
망가진 원인은 층의 위치가 아니라 층의 수였습니다. 각 층에 더한 분은 잔차 스트림(residual stream)에 쌓이기 때문에, 5개 층에 더하면 1개 층일 때보다 훨씬 크게 밀어내게 됩니다. 이는 지난번 글에서 '효과가 누적된다'고 추정한 것과도 일치합니다.
위치로 달라진 점
위치가 효과가 없는 것은 아닙니다. 변한 것은 변화의 크기입니다.
- 방향 벡터의 크기(노름, norm)는 뒤쪽 층일수록 커집니다 (0번째 층 6.4 → 23번째 층 43.2). 같은 '강도 1'이라도, 뒤쪽 층일수록 더 강하게 밀어내고 있는 것입니다.
- 그에 맞춰 KL 값도 대체로 뒤쪽 층일수록 커졌습니다 (2번째 층 0.17 → 21번째 층 2.12).
- 말투가 변하는 방식도 층마다 달랐습니다. 13
14번째 층은 '안녕하세요!', '欢迎' 같은 경쾌한 방향, 1721번째 층은 '참여해 주셔서 감사합니다'와 같은 감사 정형문의 반복이 되었습니다.
채팅 템플릿을 붙이면
채팅 템플릿을 붙이면, 이번에는 위치가 효과가 있는 것처럼 보입니다. 02번째 층은 강도 4여도 원래 문장 그대로이고, 39번째 층도 표현 방식이 조금 바뀔 정도이며, 1013번째 층은 강도 4로 영어로 전환되고, 14번째 층 이후는 강도 24에서 붕괴했습니다.
다만, 이것이 '초반 층은 견고하다'라는 의미는 아닙니다. 템플릿으로 감싸면 대조 프롬프트의 마지막 토큰이 모두 같은 정형 부분이 되기 때문입니다. 따라서 초반 층에서는 positive와 negative의 차이가 거의 0이 됩니다 (0번째 층 노름은 0.1). 초반에 문장이 변하지 않는 것은 애초에 더하는 벡터가 거의 비어있기 때문입니다.
요약
템플릿이 없으면, 1개의 층에만 더할 때의 경계는 어느 층에서든 거의 동일합니다(강도 1과 2 사이) - 5개 층에서 고장난 것은 층의 수 때문입니다. 초반부를 빼거나 강도를 절반으로 해도 고장납니다 - 위치에 따라 변하는 것은 변화의 크기와 방향의 정도입니다. 뒤쪽 층일수록 벡터가 크고, 변화도 큽니다.
질문해 주신 분들께 감사드립니다. 저 혼자서는 이 구분 작업을 해보지 못했을 것 같습니다.
실험에 사용한 도구는 오픈소스입니다.
Discussion

AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn ML의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기