[논문 리뷰] Scaling Monosemanticity #1
https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html
Scaling Monosemanticity: Extracting Interpretable Features from Claude 3 Sonnet
너무 길어서 두 편에 나누어 정리하려고 한다.
Bobb’s 읽기 전에 알고 가면 좋을 사전 지식
(a.k.a 나는 몰라서 해맸던 것들)
- 신경망에서의
Superposition(중첩)- 신경망의 뉴런 하나가 여러 Features를 동시에 표현하는 현상.
- 이상적인 상황: 하나의 뉴런이 “빨간색”에만 반응하고, 다른 뉴런이 “강아지의 코”에만 반응
- 실제 신경망: 하나의 뉴런이 “빨간색”과 “강아지의 코” 모두에 반응
- 신경망의 뉴런 하나가 여러 Features를 동시에 표현하는 현상.
- 신경망에서 뉴런은 두 가지 방식으로 특성을 표현할 수 있다.
MonoSemantic: 하나의 특성에만 반응하는 뉴런PolySemantic: 여러 가지 관련 없는 특성에 동시에 반응하는 뉴런
Introduction
SAE(Sparse AutoEncoder)를 이용해서 small one-layer transformer에서 monosemantic features(단일 시맨틱 특징)을 recover 할 수 있다는 것을 보였다.
-
https://transformer-circuits.pub/2023/monosemantic-features/index.html 이후로, SAE를 확장해서 Claude 3 Sonnet ~~(최첨단 sata tansformer 라고 주장 ㅋㅋ) ~~에서 high-quality features를 추출하게 되어 리포팅 한다
-
코드의 보안 취약성 및 백도어(security vulnerabilities and backdoors in code),
-
Bias(노골적인 비방과 미묘한 편견 모두 포함),
-
lying, deception, power-seeking 거짓말, 기만, 권력 추구(배신 행위 포함),
-
sycophancy(위선)
-
danger / criminal content (예: 생물무기 생산) 특히 위와 관련된 특징을 발견했다. 아래에서 더 자세히 하나씩 설명하겠다.
Key Results
- SAE produce interpretable features for large models
- Scaling laws(너무 training guide 같아서 생략함)은 SAE Traning Guide로 사용 가능
- 그 결과 생성되는 피처는 매우 추상적이다. 다국어, 다중 모드, 구체적 참조와 추상적 참조 사이의 일반화 등 (아직 무슨 말인지 이해 못 함)
- There appears to be a systematic relationship between the frequency of concepts and the dictionary size needed to resolve features for them. ‘**개념의 빈도’**와 ‘사전 크기’(개념에 대한 특징을 해결하는 데 필요한) 사이에는 체계적인 관계(아래에 나옴)가 있는 것으로 보입니다.
- 이 Features로 Large Models Steer에 사용 가능 (아래: Influence on Behavior 참조)
- 광범위한 안전 문제와 관련된 피처(기만, 위선, 편견, 위험한 콘텐츠 등)를 observe
“Scaling Dictionary Learning” to Claude 3 Sonnet
Claude 3 Sonnet을 이해할 땐 일반적으로 linear representation과 superposition hypothesis에 기반
-
linear representation: https://aclanthology.org/N13-1090.pdf
- linear representation은 의미있는 개념(meaningful concepts)을 neural networks의 Activation Spaces에서 direction으로 표현한다고 제안함.
-
superposition hypothesis: https://gabgoh.github.io/ThoughtVectors/ → https://transformer-circuits.pub/2022/toy_model/index.html#motivation 여기에 잘 나와있다
- superposition hypothesis는 neural networks(신경망)이 almost-orthogonal direction을 이용해 high-dimensional spaces에서 차원보다 더 많은 features를 표현한다고 제안함.
쉬운 설명 Ver: 신경망의 뉴런 하나가 여러 Features를 동시에 표현하는 현상. (예시) 이상적인 상황: 하나의 뉴런이 “빨간색”에만 반응하고, 다른 뉴런이 “강아지의 코”에만 반응 실제 신경망: 하나의 뉴런이 “빨간색”과 “강아지의 코” 모두에 반응
이것들을 믿는다면, Dictionary Learning (→ 사전학습, 고전 방법)을 해봐야한다
이미 Dictionary Learning이 Transformer Language Model에 효과적이라는 여러 논문이 있다
‣
‣
SAE는 사전학습의 특정 형태임

SAE의 Latent Space를 Dictionary라고 본다면, 같은 개념이 적용됨
→ 새로 들어온 것을 이미 알고 있는 것으로 표현함
근데 지금까지는 SAE는 one-layer 에만 적용하는 등 작은 모델에만 적용되었음
그래서 SAE를 Claude 3 Sonnet사이즈 만큼 스케일링 하려고 함 → 그래서 제목이 Scaling Monosemanticity ~
결론:
SAE를 Claude 3 Sonnet에 적용할 수 있을만큼 Scaling 하여 monosemantic features를 찾아내고 그 monosemantic feature를 Steering 하겠다
Our SAE Experiments
Model의 middle layer에 있는 residual stream activations에 SAE를 적용하는 데 focus함
- Residual Stream은 MLP layer 보다 작아서 추론 비용이 저렴함


(일반적으로) MLP layer는 입력 차원의 4배를 이용한다고 함
-
(이론적으론) “Cross-layer superposition” 문제를 완화하는 데 도움이 됨 ‣
Residual Stream(이전 모든 레이어의 출력의 합계) 레이어 간 중첩의 영향을 덜 받을 것으로 예상되니 여기에 집중해보려고 함
구체적으로, feature가 cross-layer superposition으로 표현되더라도 그 activation은 모두 residual stream에서 합산되므로 residual stream 레이어 X에 SAE를 맞추면 이전 레이어 간의 교차 레이어 중첩을 해소하는 데 충분할 수 있다.

(안타깝게도 이 방법으로 문제를 완전히 피할 수 없다고 생각하며, 이후 레이어에서 부분적으로 표현되는 특징은 여전히 제대로 해석할 수 없습니다. 저희는 이 문제가 매우 근본적인 문제라고 생각합니다)
3개의 사이즈의 SAE를 학습시킴: 1M, 4M, 34M
Scaling Laws
SAE를 훈련시킬 때, 2가지가 중요함
- Dictionary Learning 결과를 얼마나 향상 시키는 지
- Highest-Quality Dictionary를 얻기 위해 컴퓨터를 어떻게 할당해야 하는 지 너무 Training Guide 스러워서 정리는 따로 안 함. 아래 링크를 참고하기
https://transformer-circuits.pub/2024/scaling-monosemanticity/index.html#scaling-scaling-laws
Specificity (특이성)
SAE가 추출한 feature의 해석 가능성을 정량화
→ 예를 들어, SAE에서 “금문교” 특성을 추출했다. 그럼 진짜 “금문교”에서만 켜지는 건지를 알아봐야 한다. 이를 ‘해석 가능성을 정량화’ 한다는 어려운 말로 표현한다
특성별로 약 1,000개의 활성화 사례를 샘플링해 Claude 3 Opus가 평가
- 0 – The feature is completely irrelevant throughout the context (relative to the base distribution of the internet).
- 예: ‘금문교’ 특성이 “양자역학 교과서” 문맥에서 활성화된 경우
- 1 – The feature is related to the context, but not near the highlighted text or only vaguely related.
- 2 – The feature is only loosely related to the highlighted text or related to the context near the highlighted text.
- 3 – The feature cleanly identifies the activating text.
- 예: ‘금문교’ 특성이 해당 다리 이름이 명시된 문장에서 강하게 활성화
text-based dataset으로만 학습했는데, features also activate on relevant images!
Activation level이 높다(=represent confidence, 확신하는 정도)


Influence on Behavior
그렇다면 우리가 이제 Feature Steering을 해볼게~
- 금문교 Activation value를 10배로 올려서 고정해봤다 → 모델이 자기 자신을 금문교로 알아보기 시작한다 (ㅋㅋㅋㅋ)


Sophisticated Features
1 layer transformer에서 발견한 특징은 “세계에 대한 매우 얕은 지식을 반영함”
-
“세계에 대한 매우 얕은 지식을 반영함” 이란?? (bobb’s 의역): 단어를 외워서 말하는 수준
ex: 생물학 문맥에서 the 다음에는 항상 생물학 관련 단어가 올 것 같다고 예측
ex: 일반적인 문맥에서 자주 나오는 단어들을 인식 ~
Claude 3 Sonnet은 훨씬 크고 정교한 모델이라, 이해의 깊이와 명확성을 보여주는 특징을 가지고 있을 것임
그래서 우리는 코딩 상황(프로그래밍 Context)에서 이런 능력을 확인해 보겠다
-
왜 “프로그래밍 Context”인가? 프로그래밍은 단순히 단어를 아는 것만으로는 부족. (변수 타입, 코드가 맞는 지를 이해해야 함)
→ ex: 다음에 이 단어 수준이 아니라 “이 코드는 무한 루프에 빠질 것 같음”
‘단어를 외우는 수준’을 넘어 실제로 내용을 ‘이해’하고 있음을 보여야 함
→ 단순히 “다음에 이 단어가 올 것 같아” 를 넘어, 내용을 “이해 하고 있다는 증거 ”이 코드는 이런 문제가 있고, 이렇게 고치면 좋을 것 같아” 라고 말할 수 있는 이해력을 가지고 있음을 증명
Code Error Feature
- 코드에 오타가 난 경우(right → rihgt)에만 activate 되는 feature

- 그냥 영어 오타에서는 activate X

- 오타 뿐만 아니라 논리에서 틀린 경우 (0으로 나누기, range(-1) etc,,,)에도 activate

그럼 이제 Model behavior를 Steering(control) 해보자~
- 버그가 없는 프롬프트(코드)를 넣고 이 기능에 positive activation을 줌

갑자기 모델이 Error Code를 내뱉음
- 반대로, negative activation을 줌

버그가 없었을 경우 실행됐을 코드의 결과를 내뱉음
-
(새 코드 작성 중을 의미)로 프롬프트 마지막에 넣고, negative activation을 주면

버그 없는 코드를 작성함
Features representing functions
discovered features that track specific function definitions and references to them in code
→ 특정 함수의 ‘정의’와 ‘참조’에서 반응하는 Feature를 찾음
- 덧셈 함수에 반응하는 Feature

→ 덧셈 함수(bar) 함수 정의가 끝날 때랑, 함수 사용할 때 Activate됨
→ 곰셈 함수로 정의하면 전혀 안 켜짐
- 함수를 다른 곳에서 호출해서 사용해도 적용됨

- Output Steering Test

→ 곱셈 코드 넣었더니 덧셈 코드인줄 알고 설명함