-
고차원 임베딩 공간에서는 완전한 직교성 대신 준직교(quasi-orthogonality) 를 활용해 수많은 개념 표현이 가능함
-
Johnson-Lindenstrauss 보조정리는 임의의 고차원 데이터를 정보 손실 거의 없이 낮은 차원으로 투영할 수 있음을 보장함
- 최적화 과정에서는 손실 함수의 설계가 중요한데, 기본 손실 함수로 인해 비효율적이거나 편향된 벡터 배치가 발생할 수 있음
-
실험 결과, 임베딩 공간의 실제 용량은 이론적으로 추측했던 것보다 훨씬 크며, 수백만~수십억 개의 개념이 자연스럽게 공존할 수 있음
- 이러한 발견은 자연어처리, 임베딩 설계 등 머신러닝 실무에서 데이터 표현, 차원 축소에 큰 실용적 의미를 가짐
서론: 언어 모델 임베딩 공간의 용량에 관한 질문
최근 3Blue1Brown의 트랜스포머 모델 영상 시리즈에서, Grant Sanderson는 GPT-3의 12,288차원 임베딩 공간에 어떻게 수백만 개의 현실 세계 개념을 담을 수 있는가라는 흥미로운 질문을 제기함
이 의문점은 고차원 기하학과 Johnson-Lindenstrauss(JL) 보조정리라는 수학적 결과와 연결됨
이를 탐구하는 과정에서 벡터 공간의 근본적 성질과 최적화에 관한 새로운 통찰을 얻게 되었으며, Grant와의 협업까지 이어짐
벡터의 준직교성과 임베딩 공간의 용량
- N차원 공간에는 N개의 완전히 직교한 벡터만 존재
- 실제로 90도에서 약간 벗어난 준직교(quasi-orthogonal) 관계(예: 85~95도 각도)를 허용하면, 같은 공간에서 표현 가능한 벡터 개수가 기하급수적으로 증가함
- Grant의 영상에서 100차원 공간에 1만 개의 단위 벡터가 거의 직교에 가깝게 배치되는 시각화를 선보임
- 그러나 동일한 실험을 재현하는 과정에서 최적화 손실 함수 설계의 미묘한 함정이 발견됨
손실 함수의 문제점과 패턴
- 기본 손실 함수:
loss = (dot_products.abs()).relu().sum()
- 실제 유닛 스피어 상에서 이 손실 함수는 두 가지 문제가 발생함
-
Gradient Trap: 벡터 각도 90도에 접근하면 그라디언트가 강하게 작동하지만, 0도나 180도 근처에선 그라디언트가 거의 0에 가까워 개선이 막힘
-
99% 해결책: 최적화 기법은 1만 개 벡터 중 각 벡터가 9,900개와는 제대로 직교하지만 99개와는 거의 평행한 배치(즉, 기준 벡터의 복제)로 전체 손실을 최소화함
- 이 해법은 전체적으로 보면 기대와 근본적으로 달라 정교한 손실 함수가 필요함
- 따라서 지수형 패널티를 적용한 손실 함수로 변경:
loss = exp(20*dot_products.abs()**2).sum()
- 이 방식은 원하는 분포에 더 가까운 결과를 냄(최대 쌍별 각도는 약 76.5도)
Johnson-Lindenstrauss(JL) 보조정리: 기하학적 보장
-
JL 보조정리는 임의의 고차원 데이터 점 집합을 낮은 차원으로 무작위로 투영하더라도, 유클리드 거리가 거의 보존됨을 보장
- 1~N개의 점, 오차 인자 ε, 투영 차원 k에 대해
(1-ε)||u-v||² ≤ ||f(u)-f(v)||² ≤ (1+ε)||u-v||²
- 최소 필요한 차원 k는:
k ≥ (C/ε²) * log(N)
여기서 C는 성공 확률을 조정하는 상수임
- 일반적으로는 C 값을 보수적으로 4~8로 잡지만, 특수한 투영 방식(예: Hadamard matrix, 최적화 방법)에서는 더 작은 C에 도달 가능
실용적 적용 분야
-
차원 축소:
- 예) 전자상거래 고객 선호를 제품 수만 개 차원에서 수천 차원으로 효율적 변환
- 고차원 데이터의 실시간 분석, 추천 등에 활용 가능
-
임베딩 공간의 용량 한계 분석:
- 완전 직교가 아니라 개념 간 유사/차이의 스펙트럼을 공간상에서 자연스럽게 표현
- 실제 단어 예시: "archery", "fire", "gelatinous", "green" 등에서 물리적/추상적 의미가 고차원 공간에 중첩 표현됨
임베딩 용량의 실험적 분석
- Hadamard matrix 변환 등으로 최적화한 결과, C 값은 2.5~4, GPU 기반 최적화에서는 훨씬 낮아질 수 있음
- 실험 방법: N개의 표준 basis vector를 k차원 공간에 차례로 투영, 5만 번 반복 최적화
- 관찰 결과:
- C 값은 N이 증가하면 최대치(~0.9) 이후 점차 하락
- N/k 비율이 높아질수록 C는 0.2 이하로 내려감
- 이는 고차원 공간의 sphere packing 효율성에 기인
- 실제로는 이론적 상한보다 더 많은 개념 표현 여력이 있음을 시사
언어 모델 임베딩의 실제적 의미
- 임베딩 차원 수 k, 근사 직교각도 F(90°-실제각도), 그리고 C값에 따라 담을 수 있는 개념 수는
Vectors ≈ 10^(k * F² / 1500)
- k=12,288, F=1(89°) → 10^8
- F=2(88°) → 10^32
- F=3(87°) → 10^73
- F=5(85°) → 10^200 이상의 벡터 저장 가능
-
86°만으로도 관측 가능한 우주 내 원자 수(10^80)보다 많음
- 즉, 실제 언어 모델은 상대적으로 적은 차원에서도 수백만 개 의미를 풍부하게 보존함
실무적 응용 및 미래 방향
-
효율적 차원 축소:
- Hadamard 변환, BCH 코딩 등과 결합한 무작위 투영 기반 방식을 통해, 복잡한 최적화 없이도 대규모 데이터 차원 축소와 빠른 연산 가능
-
임베딩 공간 설계:
- 공간 용량에 대한 통찰은 트랜스포머 등 대형 언어 모델에서 "Canadian", "Muppet-like" 등 섬세한 개념까지 의미 관계를 동시 보존할 수 있음을 설명
- 결론적으로, 현재 임베딩 기준(1,000~20,000차원)은 인간 지식 표현에 충분하며, 관건은 그 공간 내 이상적 배치 학습임
결론
- 손실 함수의 미묘한 최적화 문제 탐구에서 출발해, 고차원 기하와 머신러닝의 기반 구조에 대한 깊은 통찰로 이어짐
- 1984년 발표된 JL 보조정리는 현재 머신러닝 임베딩, 정보 표현, 차원 축소 원리의 핵심을 제공 중임
- Grant Sanderson 및 3Blue1Brown 채널, Suman Dev의 협력에 감사를 표하며, 이번 연구 및 집필 경험의 즐거움을 나눔
추가 읽을거리
- Sphere Packings, Lattices and Groups – Conway & Sloane
- Database-friendly random projections: Johnson-Lindenstrauss with binary coins – Achlioptas
- Hadamard Matrices, Sequences, and Block Designs – Seberry & Yamada