[기계적 해석 기초] 다의성(Polysemanticity)과 Sparse Autoencoder 설명
딥러닝 모델을 인간이 이해할 수 있게 치환하는 연구의 일종으로, Mechanistic interpretability(기계적 해석)은 모델의 작동 원리를 세부적으로 분석하고 설명하는 분야이다. 특히, 모델이 입력 데이터를 어떻게 처리하고, 각 뉴런이 어떤 역할을 수행하는지 파악하는 데 중점을 둔다.
최근 연구에서는 이 기계적 해석을 위해 다의성(Polysemanticity)를 해결하려는 노력이 이어지고 있으며, 이를 위해 희소 오토인코더(Sparse Autoencoder, SAE)가 주목받고 있다. SAE는 뉴런의 activation을 희소하게 만들어, 특정 feature에 대한 뉴런의 명확한 대응을 가능하게 하여, 다의성 문제를 해결하고 모델의 해석 가능성을 높이는데 사용된다.
이 글에서는 Polysemanticity의 기본 개념과 SAE 활용한 접근 방법을 짧게 다뤄보고자 한다.
Polysemanticity란
Mechanistic interpretability (MI)에서 polysemanticity (다의성; ‘여러 의미가 있음’을 나타내는 말)은 구체적으로 딥러닝 모델의 뉴런이 여러 개의 input feature에 반응하는 현상을 일컫는다. 뒤에 후술할 본문에서는 이 문장을 하나하나 풀어보면서 (지금도 활발하게 연구되고 있는) polysemanticity라는 문제의 깊이를 이해하고, 그 과정에서 우리가 읽고 이해한 내용을 글로 정리해보고자 한다.
일단, “feature”라는건 무엇인가?
(Reference: Toy models of superposition [1])
일단 polysemanticity에 대한 이야기를 하기 전에, “feature”에 대한 더 구체적인 정의를 논의 하는 것이 우선시 되어야 할 듯 하다. Feature에 대한 이야기는 여러 문헌에 존재하지만, 이 글에서는 [1]에서 설명하는 것을 기준으로 요약하겠다.
“Feature”라는 말은 “성질”이라는 범용적인 단어로 직역이 되는데, 우리는 mechanistic interpretability에서 이야기하고자 하는 의미를 구체적으로 반영해야한다. 하지만 구체적인 정의를 내리는 것부터가 큰 난관인지라, [1]에서는 feature를 어떻게 정의를 내리는 것이 좋을까를 기준으로 논의를 이어간다. 가장 “직관적”인 정의는 ‘사람이 이해할 수 있는 의미 단위’로 feature를 정의하는 방안이 있다. 즉 feature란, input 데이터를 보았을 때 사람이 이해할 수 있는 “개념”의 단위로 보는 것이다. 이러한 정의는 겉으로 보기에 실용적으로 큰 문제가 없어보인다 (image data가 제일 직관적인 예시라고 볼 수 있겠다. 예를 들어 어떤 image에 “자동차”가 있는지 없는지 판별하는 것은 우리에게 매우 쉬운 문제이다). 하지만 “사람이 이해한다는 것은 무엇인가”라는 기준은, 말 그대로 주관적이고 모호해질 여지가 많다. 이를 차치하더라도, feature의 기준을 사람으로 고정시키게 된다면 언젠가 실용적으로도 한계점이 생길 수 있다. [1]에서의 예시로 든 AlphaFold와 같이 특히 자연과학에 적용되는 AI (AI4Science)의 경우, AI가 아직까지 발견하지 못한 새로운 자연 법칙을 발견하더라도 사람이 이해하지 못하면 정의상 feature가 아니게 되는 문제가 발생할 수 있다는 것이다.
이러한 이유로 결국 [1]은 사람을 기준으로 세우기보다, 모델 내부의 뉴런의 반응 (activation) 패턴 그 자체를 feature의 기준으로 두는 것을 제안한다. 즉 feature를 ‘모델 내부에서 (하나의) 특정 뉴런이 지속적으로 반응하는 것‘으로 보는 것이다. 위에서 든 자동차를 예시로 들면, 여러 image input에 자동차 feature가 존재한다는 것은 곧 이런 image data가 들어올 때 항상 activate되는 뉴런이 존재한다는 것이다 (그리고 그 뉴런은 자동차 feature를 학습했다고 말할 수 있을 것이다). 하지만 이러한 뉴런들은, neural network의 polysemanticity라는 성질 때문에 찾아내는 것이 힘들다고 알려져있다. 그 이유에 대해 알아보자.
기본적인 가정: Sparse activations
Polysemanticity을 이해하기 전, 짚고 넘어가야 할 가정은 sparse activation 가정이다. 각 feature는, 모델 내부에서 활성화되는 뉴런이 존재하고, 이러한 뉴런의 수가 적다(sparse)는 것을 의미한다. 즉, 대부분의 뉴런들은 비활성화되는 상태를 유지하고, 특정 feature에 대해 정해진 적은 수의 뉴런만이 활성화되는 것이다. 이 가정은 polysemanticity라는 문제를 해결하고 네트워크의 해석 가능성을 높이는 과정에서 기본적으로 작용한다.
다의성 vs. 단일성 (Polysemanticity vs. Monosemanticity)
결국 feature의 정의에서 가장 중요한 점은 feature와 특정 뉴런(들)이 서로 결부된다는 것이다. 하지만 특정 feature가 특정 뉴런과 결부된다고만 했지, 서로 다른 feature들이 같은 뉴런에 결부될 수 없다는 보장은 할 수 없다. 물론, 우리가 원하는 가장 이상적인 해석은 각 feature와 어떤 뉴런간의 일대일 대응이 되는 케이스일 것이다. 그렇게만 된다면, 우리는 각각의 뉴런에 대해 이름을 붙여줄 수도 있을 것이고, MI가 모델을 해석하는데 자연스럽게 이용될 수 있을 것이다 (자동차 뉴런, curve detection 뉴런 등).
하지만, 우리가 모델을 학습할 때 이러한 일대일 대응에 대한 constraint를 보통 넣지 않는다 (사실 어떻게 넣어야 할지도 문제이다. 가장 비슷한 분야로는 disentanglement가 있긴 하지만, 이 분야 – 특히 unsupervised disentanglement는 – 굉장히 어려운 task로 알려져있다 [2]). 그렇기 때문에, 현실적으로는 하나의 feature가 여러 뉴런들에 의해 표현될 가능성이 더 높다. 이렇게 되면, 뉴런들 입장에서는 각각의 뉴런이 하나 이상의 feature에 반응하게 될 가능성이 높고, 이렇게 하나의 뉴런이 여러 개의 feature와 결부되는 것을 polysemanticity (다의성)이라고 부르게 된다. 이 polysemanticity를 유발하는 feature들은 서로 비슷하거나 연관이 되어있다는 보장도 없고, 이 때문에 MI에서는 MLP와 같은 제일 기본적인 모듈이 해석하기 까다롭다고 여겨지기도 한다.
게다가 이러한 이상적인 monosemanticity는 또 다른 현실적인 문제를 시사하게 된다. 예를 들어 512차원 짜리 layer가 있고 완벽한 monosemanticity가 가능하다고 가정하자. 이는 곧 모델이 최대 512개의 feature까지만 학습할 수 있게 된다는 말과 같다 (뉴런 하나당 feature 하나가 대응될 것이므로). 하지만 large language model (LLM)을 포함한 많은 현대 딥러닝 모델들은 가지고 있는 뉴런보다 훨씬 더 많은 수의 input feature들을 학습한다. 이런 단순한 논리(feature의 수 > 뉴런의 수) 만으로도 polysemanticity는 어느 정도 필연적이라고 짐작할 수 있다.
Superposition (중첩)
(Reference: Towards Monosemanticity: Decomposing Language Models With Dictionary Learning [3])
이처럼 뉴런들은 polysemantic한 성질을 기본적으로 가지고 있고, 그 덕분에 모델은 엄청난 양의 feature들을 데이터로부터 학습할 수 있게 된다. 하지만 이것과 별개로, 앞선 논의에서 내세운 가정, 즉 각 feature가 단 하나의 뉴런에 의해 표현된다는 가정 또한 참일 것인가에 대한 문제는 아직 해결이 되지 않았다. 사실 이것 조차 아닐 가능성이 높다. 정확하게는 여러개의 feature들이 superposition (중첩)되어 표현되어 있을 것이다. 중첩에 대한 아이디어는 이미 자연어처리에서 linear representation hypothesis와 다의어(polysemy)에 대한 논의를 통해 이미 나와있다. 즉, 다의어의 embedding은 각각의 의미들에 대한 embedding 벡터들의 선형 결합의 형태로 ‘중첩’되어 있을 것이라는 가설이다 ([4] 참조). 이와 같이, superposition이 모델 안에서 일어나 각 feature들도 하나가 아닌 여러 개의 뉴런이 중첩된 형태로 나타나있을 것이고, 이것이 polysemanticity를 일으키는 주된 원인이라는 것이 일반적인 견해이다.
그렇다면 polysemanticity를 어떻게 해석할 것인가?
뉴런의 갯수보다 더 많은 수의 feature들이 한꺼번에 얽힌 형태로 존재하는 이러한 neural network에서, 해석을 위해 각각의 feature를 구분하여 골라내는 방법이 무엇일까에 대해 많은 사람들이 고민하게 시작했다. 즉, 중첩 문제를 해결하기 위해서 비선형 관계나 복잡한 상호작용을 고려한 N개 이상의 공통적인 특징을 포착할 필요가 있다. 전통적인 방법론인 PCA(Principal Component Analysis)와 LDA(Linear Discriminant Analysis)는 N차원에서 최대 N개의 특징을 추출하므로, 데이터의 복잡한 상호작용을 표현하는 데 한계가 있다. 따라서, N차원에서 N개 이상의 특징을 찾는 overcomplete set을 만족하면서, 동시에 각 뉴런이 특정 feature에만 활성화되도록 희소하게 학습할 수 있는 접근법이 필요하다.
[1]에서 저자들은 polysemantic한 neural network으로부터 monosemanticity를 이뤄내기 위해, 과거에는 뉴런을 아예 학습 초기 단계부터 monosemantic하게 강제하는 방식을 탐구했던 것을 언급한다. 즉, 각 뉴런의 activation을 지속적으로 sparse하게 (혹은 더 극단적으로 하나만 activate되게) 페널티를 주는 것이다. 그러나, interpretability와 성능이라는 두 마리의 토끼를 잡는 것이 어려울 뿐만 아니라 논리적으로 불가능한 경우가 발생한다는 것을 보여주기도 한다.
그런 의미에서, sparse neural network을 학습하는 것이 긍정적인 방향성으로 제시되기 시작했다. 특정 layer의 한정된 뉴런의 갯수를 극복할 수 있게 아예 layer width가 기존의 것보다 훨씬 더 넓은 동시에, 해당 layer의 activation을 재현할 수 있도록 한 것이다. 최근에 interpretability를 위한 sparse neural network로 가장 많이 언급되고 있는 모델은 Sparse Autoencoders(SAE)이다. SAE의 overcomplete과 sparse한 특성은 모델의 interpretability를 높이고, 복잡한 구조를 더 잘 이해할 수 있도록 한다.
SAE를 어떻게 활용하는가
실험적으로 SAE의 가능성을 처음으로 제안한 논문은 [5]이다. 이 논문에서는 sparse activation 가정을 구현한 토이 데이터셋을 생성하고 (즉, 모델 내부의 sparse activation을 흉내내는 데이터셋을 구축하였다) 이를 사용해 학습한 SAE에 대한 평가 지표를 제시한다. 학습 과정은 기존 SAE 논문과 동일하게, reconstruction loss와 sparsity를 위한 L1 regularization을 사용한다. 다만, superposition을 해결하기 위해 적절하게 큰 embedding 차원 크기를 설정하는 것이 매우 중요하다.
학습에 사용된 reconstruction loss는 SAE가 실제 feature들을 복구했는지는 직접적으로 큰 관련이 없을 수 있다. 특히 L1 regularization에 붙는 coefficient가 낮은 값일 때, loss 자체는 작을 수 있으나 실제 feature reconstruction 결과는 좋지 않을 수 있다. 따라서, 저자들은 모델의 evaluation metric으로 MMCS(Measuring ground truth feature recover)를 제안했다. 이는 학습에 사용된 입력과 SAE가 복구한 특징 간의 유사성을 consine similarity로 측정하는 방법이다. 그러나, MMCS는 모델이 유사한 특징을 중복 학습하는 경우 과대평가될 수 있고, embedding 크기가 지나치게 클 경우 적절한 지표가 아닐 수 있다.
정리하자면, 해석하고자 하는 원래 모델의 activation을 활용해서 SAE를 학습하고 (대게 이 activation은 residual stream에서 추출하게 되는데, 아래의 그림에서는 attention layer의 activation을 사용하고 있다), 이 activation을 SAE에 입력했을 때 활성화되는 뉴런을 통해 원래 모델을 해석할 수 있다.
최근 SAE를 이용하여 학습된 feature를 찾아내는 작업을 LLM 단위의 모델에서도 가능하다는 결과가 나오고 있다. 대표적으로, Gemma Scope: Open Sparse Autoencoders Everywhere All At Once on Gemma 2에서 주어진 prompt 위에 어떤 feature가 반응하는지 보여주는 시각화 데모를 제공한다. 심지어 feature를 확인하는 것을 넘어서 모델 중간에서 확인되는 feature의 강도를 (SAE를 통해) 직접 개입할 수 있다 (밑의 예시 참조).
References
[1] Toy models of superposition
[2] Locatello et al., Challenging common assumptions in the unsupervised learning of disentangled representations, ICML’19
[3] Towards Monosemanticity: Decomposing Language Models With Dictionary Learning
[4] Arora et al ., Linear algebraic structure of word senses, with applications to polysemy, Transactions of the Association for Computational Linguistics, Volume 6 (2018)
[5] Lee et al., [Interim research report] Taking features out of superposition with sparse autoencoders, AI ALIGNMENT FORUM (2022)
[6] Lieberum et al., Gemma Scope: Open Sparse Autoencoders Everywhere All At Once on Gemma 2, arXiv (2024)
Last updated