가중치 자체를 작은 문법으로 표현하도록 파인튜닝하는 WeightPE
Weight Pair Encoding: Inducing a Smaller Grammar in Neural Network Weights
무엇인가
이 논문은 신경망 가중치에 어떤 구조를 강제할 수 있는지를 다룬다. 가중치 반복, 저랭크 구조, 순열 대칭처럼 가중치에 구조를 부여하는 시도는 반복적으로 성과를 냈다. 저자들은 그다음 후보로 문법 구조를 지목한다. 문법은 문자열의 반복을 계층적으로 드러내 압축하고, 압축된 크기에 비례하는 공간에서 임의 접근을 지원하며, 압축된 표현 위에서 직접 계산할 수 있다. 어떤 문자열을 생성하는 가장 작은 문법의 크기는 콜모고로프 복잡도의 표현력 있는 근사이면서 계산 가능한 양인데, 최소 문법을 찾는 문제는 NP-hard이고 최악의 경우 보장을 가진 휴리스틱이 존재한다. 문제는 기존의 가중치 압축이 전부 플랫하다는 점이다. 코드북과 클러스터링, 엔트로피 페널티, 학습된 비트 폭, 재사용 모티프 같은 방법들은 원자가 항상 가중치 하나이거나 고정 크기 블록이라, 반복해서 나타나고 또 서로 안에 중첩되는 가변 길이 부분 문자열에 이름을 붙일 수 없다. 저자들에 따르면 문법 크기를 신경망 가중치의 명시적 학습 목표로 삼은 것은 이번이 처음이다.
어떻게 동작하나
방법의 핵심은 straight-through estimator 안에 손실 있는 Re-Pair 압축기를 넣는 것이다. 양자화 인지 학습은 순전파를 양자화된 가중치로 계산하되, 사상 P가 만든 변위 c = P(W) − W를 가중치에 대한 함수가 아니라 상수로 고정한다. 그러면 네트워크는 W′ = W + c = P(W)로 계산하고, 그래디언트는 P가 항등인 것처럼 W까지 그대로 흘러간다. 이 논문은 이 P가 반드시 양자화기일 필요가 없다는 점에 주목해, 손실을 돌이킬 수 없을 만큼 망가뜨리지 않으면서 가중치의 문법까지 작게 만드는 연산자를 만든다. 구체적으로 각 가중치 행렬을 행 단위로 int8로 양자화하고, row-major로 평탄화한 뒤 전체 네트워크를 하나의 문자열로 이어 붙인다. 그래서 문법 하나가 네트워크 전체를 덮고, 한 블록에서 찾은 패턴을 다른 블록에서 재사용할 수 있다. 다만 규칙이 행을 가로지르지는 못하게 제한한다. 압축은 두 라운드를 번갈아 돈다. REWRITE는 유일한 손실 단계로, 인접 쌍 발생들을 그것이 전개되는 코드 문자열의 길이로 버킷팅하고, 버킷 안에서 가장 빈번한 서로 다른 쌍 T개를 클러스터 리더로 삼는다. 각 발생은 L2 거리 기준으로 가장 가까운 리더로, 겹치지 않는 집합 위에서 싼 것부터 차례로 재작성되며, 전역 왜곡 예산이 소진될 때까지 진행된다. Merge는 재작성된 시퀀스에 대한 무손실 Re-Pair 라운드로, REWRITE가 방금 똑같이 만들어 놓은 근사 중복들이 하나의 공유 규칙으로 접힌다. 표준 Re-Pair와 달리 계산 효율을 위해 최빈 쌍만이 아니라 반복되는 모든 쌍을 병합한다. 소진된 왜곡이 예산에 도달하면 REWRITE는 꺼지고 남은 라운드는 순수 Re-Pair가 된다. 학습에서는 섭동된 문자열을 다시 가중치 W′로 전개해 위의 식으로 학습하고, 계산 효율을 위해 섭동 연산자는 10 최적화 스텝마다 한 번 적용한다.
무엇과 다른가
실험은 CIFAR-10에 파인튜닝한 ViT-B/16과 ViT-L/16에서 수행한다. 연산자는 어떤 가중치 행렬에도 적용할 수 있지만, 문자열은 각 블록의 MLP 투영 두 개로 제한하는데 이들이 파라미터의 약 3분의 2를 차지한다. 어텐션 블록은 자기 활성화에 소프트맥스를 통과시키기 때문에 가중치 섭동이 덜 예측 가능하게 전파된다는 이유로, 어텐션 투영은 같은 추정기를 통해 int8로 양자화하되 섭동은 가하지 않는다. 패치 임베딩, 정규화, 분류 레이어는 완전 정밀도로 남긴다. 왜곡 예산 τ와 클러스터 리더 수 T를 스윕한다. 평가지표는 CIFAR-10 테스트셋 top-1 정확도다. 배포된 가중치의 최소 문법은 계산할 수 없고 각 압축기는 그 상한만 주기 때문에, 연산자가 겨냥해 만든 Re-Pair와 겨냥하지 않은 SEQUITUR, LZ78 세 압축기의 문법 크기를 함께 보고한다. 모든 문법 크기는 동일 설정으로 학습한 τ=0 int8 QAT 베이스라인의 해당 문법 크기로 정규화하며, 양쪽 모두 문자열에 들어간 MLP 가중치만 센다.
어떻게 쓰나
결과는 다음과 같다. ViT-B/16에서 배포 가중치의 Re-Pair 문법은 QAT 문법의 0.43배 크기로 줄고 정확도는 1.9점 손실됐다. ViT-L/16은 1.1점 손실로 0.37배(초록에서는 0.38배)를 기록했다. 정확도 대 문법 크기 곡선을 보면 ViT-B/16은 문법 크기가 베이스라인 int8 QAT의 0.49배까지 줄어들 때 정확도 손실이 0.7점에 그쳤고, 더 밀어붙여 0.43배까지 줄여도 테스트 정확도 97.3%를 유지했다. 리더 수 T는 예산이 짧은 시퀀스에 다 소진될 만큼 크지 않을 때만 영향을 준다. τ=0.15에서는 네 곡선이 서로 겹치지만 τ=0.30에서는 뚜렷하게 갈라진다. 절대 크기를 보여주는 그래프는 압축의 상당 부분이 최상위 문자열의 길이 감소에서 온다는 것을 보여주며, 실행 시간은 두 하이퍼파라미터 모두에 대해 증가한다.
전제와 한계
압축기 일반화도 확인했다. 같은 가중치에 세 압축기를 적용했을 때 SEQUITUR는 Re-Pair의 압축률과 거의 완벽하게 일치했고 LZ78이 가장 덜 줄었다. 두 압축기 모두 파인튜닝 중의 WeightPE 섭동에는 쓰이지 않았다는 점이 중요하다. 모델 크기를 키우면 트레이드오프가 더 좋아진다. ViT-L/16은 베이스라인의 약 0.38배라는 비슷한 문법 크기에서 정확도 하락이 0.3%포인트에 불과했고, ViT-B/16은 같은 조건에서 1.9%포인트 떨어졌다. 가장 큰 τ에서도 ViT-L/16의 하락은 1.1%포인트로, ViT-B/16의 약 1.9%포인트보다 작다. 저자들은 모델 스케일을 키우면 문법 압축에 대한 강건성이 상당히 좋아져 같은 정확도 손실에서 더 공격적인 압축이 가능해진다고 해석한다. 결론부에서는 배포 가중치가 병렬 int8 QAT보다 약 2.5배 작은 문법을 허용한다고 정리한다.
개발자 관점에서 이 논문은 모델 압축의 목표 함수를 하나 더 제안한다. 지금까지 압축은 비트 폭, 코드북 크기, 희소도 같은 축으로 최적화했는데, 여기서는 문자열 압축기의 문법 크기를 학습 시점의 목적 함수로 끌어들인다. 특히 압축기 자체를 학습 루프 안에 넣고 그래디언트는 straight-through로 흘리는 패턴은 양자화 인지 학습 파이프라인에 임의의 비미분 연산자를 끼워 넣는 일반적인 템플릿으로 읽을 수 있다. 실무에서 주목할 지점은 두 가지다. 첫째, 문법 크기는 압축기마다 다른 상한이라 배포에 쓸 압축기와 학습에 쓴 압축기가 다르면 이득이 줄어들 수 있다. 실제로 LZ78은 Re-Pair와 SEQUITUR보다 개선 폭이 작았다. 둘째, 이 방법은 MLP 가중치에만 적용됐고 어텐션은 양자화만 하고 섭동하지 않았으므로, 어텐션까지 건드릴 때의 정확도 영향은 별도로 검증해야 한다.
저자들이 밝힌 한계는 분명하다. 더 다양한 모델 계열, 데이터셋, 양자화 수준에서의 동작은 아직 검증되지 않았다. 직렬화는 row-major 평탄화 한 가지 축만 스윕했는데, 직렬화 축은 방법의 자유로운 선택이고 다른 축을 쓰면 다른 패턴 집합이 드러난다. 연산자는 계산 효율을 위해 최적화되지 않아서, 어떤 파라미터에서는 비용이 무시할 만하지만 다른 경우에는 약 5배까지 늘어난다. 향후 과제로는 반복 패턴 개념이 명시된 임의의 압축기에 같은 아이디어를 적용하는 것, 순열 최적화를 먼저 한 뒤 WeightPE를 적용하는 것, WeightPE가 유도한 소문법 구조가 양자화 강건성처럼 전이 가능한 가중치 공간의 방향인지, 공유 규칙이 해석 가능한 계산에 대응하는지, 가중치를 데이터로 소비하는 모델에 문법이 도움이 되는지, 크기를 심볼이 아니라 비트로 셀 때 표준 압축기와 어떻게 비교되는지를 꼽는다.