Language obeys laws as precise as physics.
흔히 "수학은 우주의 언어"라고들 합니다. 그런데 거꾸로도 참입니다 — 언어 자체가 수학적 구조물이거든요. 단어 빈도엔 멱법칙이, 문법엔 형식 규칙이, 문장엔 정보량이, 의미엔 벡터가, 언어의 족보엔 계통수가 숨어 있습니다. 말(言)을 수(數)로 들여다보는 다섯 장면.
어떤 언어로 된 글이든, 단어를 많이 쓰인 순서로 줄 세워 보세요. 그러면 \(r\)번째로 흔한 단어의 빈도가 대략 \(1/r\)에 비례합니다 — 1등 단어는 2등의 두 배, 3등의 세 배쯤 나오죠. 이것이 지프의 법칙입니다.
$$ f(r)\;\propto\;\frac{1}{r}\qquad\Longleftrightarrow\qquad \log f = \log C - \log r. $$즉 빈도와 순위를 로그-로그 축에 찍으면 기울기 \(-1\)의 직선이 됩니다. 아래는 고전적인 브라운 코퍼스의 영어 상위 단어들 — 점들이 그 직선을 따라 늘어섭니다.
이 멱법칙이 왜 생기는지(스케일 불변성, 누적·증식 과정 등)가 궁금하다면 — 〈도대체 정규분포는 어디서 솟아난 거지?〉에서 지프 분포를 다룬 대목을 참고하세요.
1950년대 촘스키는 문법을 다시쓰기 규칙의 체계로 못박았습니다. 예: \(S\to\)명사구\(\;\)동사구. 규칙의 종류에 따라 언어는 정규 → 문맥자유 → 문맥의존 → 재귀열거로 계층을 이루죠(촘스키 위계). 이 ‘문법의 수학’은 그대로 컴퓨터과학의 파서·컴파일러 토대가 되었습니다(계산 이론과 한 뿌리).
핵심은 재귀입니다. "\(\text{명사구}\to\text{명사구}\ \text{와}\ \text{명사구}\)" 같은 규칙 하나면, 유한한 규칙으로 무한히 많은 문장을 만들 수 있어요. 아래 작은 문맥자유 문법으로 문장을 찍어내 보세요.
촘스키 위계가 멋진 건, 문법의 단계마다 그것을 알아보는 ‘기계’가 정확히 짝지어진다는 점입니다. 곧 문법 이론이 그대로 계산 이론이에요.
| 문법 | 알아보는 기계(오토마타) | 필요한 기억 |
|---|---|---|
| 정규 문법 | 유한 오토마타 | 없음 (상태 유한) |
| 문맥자유 문법(CFG) | 푸시다운 오토마타 | 스택 하나 |
| 문맥의존 문법 | 선형구속 오토마타 | 제한된 테이프 |
| 재귀열거(무제한) | 튜링 기계 | 무한 테이프 |
왜 CFG엔 스택이 필요할까요? 가장 단순한 예가 괄호 짝 맞추기입니다. (()())처럼 열고
닫힌 괄호가 맞아떨어지는 문자열의 모임 — 또는 \(\{a^n b^n\}\) — 은 문맥자유이지만 정규가 아닙니다.
기억이 ‘유한’한 기계는 괄호가 몇 겹 열렸는지 셀 수 없어, 깊이 중첩되면 반드시 틀리거든요. 열 때 쌓고 닫을 때
빼는 스택이 있어야 하죠 — 그게 푸시다운 오토마타입니다. 그리고 이 ‘쌓고 빼는 중첩’이 바로 위에서 본
언어의 재귀(문장 속 문장)와 같은 구조예요.
한편 위계의 꼭대기는 무한 테이프를 가진 튜링 기계 — 곧 ‘계산할 수 있는 모든 것’입니다. 문법과
계산이 같은 사다리였던 셈이죠. 실제로 프로그래밍 언어의 문법은 거의 다 CFG로 정의되고(BNF 표기),
컴파일러의 파서가 바로 그 CFG의 멤버십을 판정합니다. (자연어는 대체로 문맥자유에 가깝지만, 스위스
독일어의 교차 의존 같은 현상 때문에 ‘약한 문맥의존’으로 보기도 합니다.)
다음 글자를 얼마나 잘 맞힐 수 있을까요? 섀넌은 정보를 엔트로피로 쟀습니다 —
$$ H = -\sum_i p_i \log_2 p_i \quad(\text{비트/글자}). $$완전 무작위라면 영어 글자는 \(\log_2 27\approx 4.75\)비트가 필요하지만, 실제 영어는 앞뒤 맥락이 워낙 강해 섀넌의 추정으로 글자당 약 1비트까지 떨어집니다. 나머지는 중복성 — 글자를 군데군데 지워도 읽히는 이유죠. 이 ‘맥락이 다음을 예측한다’를 n-gram(마르코프) 모델로 흉내 낼 수 있습니다. 차수 \(n\)을 올릴수록, 무작위 글자가 점점 영어처럼 변합니다.
그리고 학습 목표마저 섀넌과 같은 식입니다. LLM은 예측 확률의 교차 엔트로피(= perplexity, 토큰당 비트 수)를 최소화하도록 훈련돼요 — 1951년 섀넌이 잰 ‘영어의 엔트로피’를 기계가 직접 깎아 내리는 셈이죠. 흥미롭게도, 명시적 문법 규칙(2장 촘스키)을 전혀 쓰지 않는 이 통계적 접근이 도리어 문법적인 글을 써내며 ‘규칙 대 통계’ 논쟁을 다시 불붙였습니다.
"단어의 뜻은 그것이 함께 나타나는 이웃이 정한다"(퍼스). 그래서 각 단어를 벡터(좌표)로 놓으면, 의미가 선형대수가 됩니다. 가장 유명한 장면 —
$$ \vec v(\text{king}) - \vec v(\text{man}) + \vec v(\text{woman}) \;\approx\; \vec v(\text{queen}). $$‘남성→여성’이라는 의미의 방향이 좌표 위의 일정한 이동 벡터가 되는 거죠. 두 단어의 가까움은 코사인 유사도 \(\cos\theta=\frac{\vec u\cdot\vec v}{|\vec u|\,|\vec v|}\)로 잽니다. 아래는 장난감 2차원 예시(실제 임베딩은 수백 차원) — \(A-B+C\)를 골라 가장 가까운 단어를 찾아보세요.
언어들도 진화합니다. 그래서 생물의 계통수를 그리는 알고리즘이 그대로 언어 가족에 쓰여요. 기본 어휘(숫자·신체·친족어)의 공유 동족어 비율로 두 언어의 거리를 재고, 그걸로 나무를 세웁니다 (어휘통계학). 심지어 갈라진 시점까지 추정하죠 — 동족어가 일정 비율 \(r\)로 보존된다고 보면
$$ c = r^{\,2t}\quad\Longrightarrow\quad t=\frac{\ln c}{2\ln r}, $$여기서 \(c\)는 지금 공유하는 동족어 비율, \(t\)는 분기 후 흐른 시간 — 마치 방사성 탄소연대측정처럼 ‘언어의 나이’를 잽니다(글로토크로놀로지). 인도유럽어족의 기원 연대도 베이지안 계통분석으로 다뤄졌습니다.
단어를 세면 멱법칙이, 문장을 쪼개면 형식 규칙이, 다음 글자를 예측하면 정보량이, 뜻을 늘어놓으면 벡터가, 언어의 역사를 더듬으면 계통수가 나옵니다. "수학은 우주의 언어"라는 말의 거울상 — 언어 역시, 그 바닥엔 수학이 깔려 있습니다. 말과 수는 서로를 비추는 두 거울인 셈이죠.