임베딩 벡터 공간으로 바라본 인간 언어의 본질
우리가 매일 사용하는 언어. 과연 이것은 세상을 표현하기에 충분할까?
임베딩 벡터라는 렌즈를 통해 인간 언어의 구조를 들여다보면, 의외로 재미있는 통찰을 얻을 수 있다.
📍 임베딩 벡터, 언어를 숫자로 바꾸다
AI가 언어를 이해하려면, 먼저 단어를 숫자로 바꿔야 한다.
Word2Vec이 등장하면서 단어를 고차원 벡터 공간의 한 점으로 표현하는 것이 가능해졌다. “왕”과 “여왕”, “남자”와 “여자” 같은 단어들이 벡터 공간 속에서 일정한 관계를 유지하며 배치된다는 사실은 당시 꽤 충격적이었다.
왕 - 남자 + 여자 ≈ 여왕
현재 주류 모델들은 768차원, 1024차원 같은 Dense Vector를 사용한다. 각 단어는 이 고차원 공간 속 하나의 좌표로 표현된다. 마치 3차원 공간에서 점을 (x, y, z)로 나타내듯이, 768개의 축을 가진 공간에서 한 단어의 위치를 잡는 셈이다.
📍 벡터 공간은 생각보다 텅 비어있다
여기서 한 가지 의문이 든다.
768차원 벡터 공간은 어마어마하게 넓다. 각 차원이 -1에서 1 사이의 연속적인 값을 가진다고 해도, 그 조합의 수는 사실상 무한하다. 그런데 인간이 사용하는 단어는 기껏해야 수십만 개다.
이건 마치 우주만한 방에 모래알 몇 개를 뿌려놓은 것과 같다.
실제로 단어 임베딩들은 768차원 공간 전체에 균일하게 분포하지 않는다. 특정 매니폴드(manifold) 위에 뭉쳐서 존재한다. 고차원 공간의 대부분은 어떤 단어도 존재하지 않는 텅 빈 영역이다.
그렇다면 이 빈 공간은 뭘 의미할까? 인간의 언어가 세상을 표현하는 데 있어서 극히 일부분만을 커버하고 있다는 뜻 아닐까?
📍 문장이 빈 공간을 채운다
결론부터 말하면, 단어 하나하나는 sparse하지만 단어들의 조합이 빈 공간을 채운다.
단어 하나가 공간에 점 하나를 찍는 거라면, 문장은 그 단어 벡터들이 Attention 메커니즘 등을 거치며 변환·조합되어, 단어 혼자서는 도달할 수 없던 영역에 새로운 점을 찍는 것이다.
예를 들어보자.
- “슬프다” → 공간의 점 A
- “기쁘다” → 공간의 점 B
- “슬프면서도 기쁜” → A와 B 사이 어딘가에 생기는 새로운 점 C
이것이 바로 Word2Vec 같은 정적 임베딩(static embedding) 과 LLM의 문맥 임베딩(contextual embedding) 의 차이이기도 하다.
Word2Vec에서 “bank”는 항상 같은 벡터다. 하지만 LLM에서는:
- “I went to the bank to deposit money” → 금융 관련 벡터
- “I sat by the river bank” → 자연 관련 벡터
같은 단어가 문맥에 따라 완전히 다른 좌표를 갖는다. Attention을 통해 주변 단어들과의 관계가 반영되면서, 단어 하나가 표현할 수 있는 의미의 범위가 비교할 수 없이 넓어진다.
결국 단어 수는 유한해도 조합은 사실상 무한하니까, 문장 수준의 임베딩은 벡터 공간을 훨씬 촘촘하게 채울 수 있는 것이다.
📍 그러면 단어를 더 많이 만들면 되지 않을까?
여기서 자연스럽게 드는 생각이 있다.
“문장 조합으로 표현되는 의미를 아예 하나의 단어로 만들면 되지 않나? 그러면 매번 문장을 만들 필요가 없잖아?”
사실 이런 현상은 실제 언어에서 이미 일어나고 있다.
- 🇩🇪 독일어 Schadenfreude → 남의 불행에서 느끼는 기쁨 (영어로는 문장이 필요)
- 🇰🇷 한국어 정 → 영어로 한 단어로 번역 불가
- 🇯🇵 일본어 木漏れ日 → 나뭇잎 사이로 비치는 햇살
자주 사용되는 의미 조합은 자연스럽게 하나의 단어로 굳어진다. 언어가 진화하는 방식 자체가 이미 이 원리를 따르고 있는 셈이다.
하지만 모든 조합을 단어로 만드는 건 불가능하다.
단어 5만 개로 10단어짜리 문장을 만든다고 가정하면, 가능한 경우의 수는:
$$50000^10 \approx 10^47$$
이것은 우주의 원자 수($10^80$)보다는 적지만, 어떤 뇌도 저장할 수 없는 양이다. $10^47$개의 단어를 각각 외워서 사용한다? 물리적으로 불가능하다.
📍 언어는 압축 알고리즘이다
결국 인간 언어가 소수의 단어 + 문법 규칙이라는 구조를 택한 것은 우연이 아니다.
프로그래밍으로 비유하면 이렇다:
| 방식 | 언어 비유 | 특징 |
|---|---|---|
| 하드코딩 | 모든 의미를 각각 단어로 지정 | 표현력 ↑, 기억 비용 ∞ |
| 함수 조합 | 소수의 단어 + 문법으로 조합 | 표현력 ↑, 기억 비용 ↓ |
모든 경우의 수를 하드코딩하는 것보다, 재사용 가능한 함수를 만들어 조합하는 것이 압도적으로 효율적이듯, 언어도 마찬가지다.
인간이 문장을 구사하는 이유는 단순히 “단어를 많이 못 외워서”가 아니라, 외우는 것 자체가 원리적으로 비효율적이기 때문이다. 유한한 요소로 무한한 의미를 만들어내는 조합 시스템 — 이것이 인간 언어의 본질이다.
📍 AI 시대, 언어의 미래
그렇다면 AI 시대에는 어떻게 될까?
현재 AI는 인간의 언어를 매개로 소통하고 있다. 하지만 AI 간의 소통에서는 굳이 이산적인 토큰(단어)을 거칠 필요가 없다. Latent Vector를 직접 주고받으면 된다.
이것은 언어라는 병목(bottleneck)을 완전히 우회하는 것이다.
실제로 연구되고 있는 방향이기도 하다. 모델 간 중간 표현(intermediate representation)을 직접 전달하는 방식은, 언어로 변환하는 과정에서 생기는 정보 손실을 없앤다.
그렇게 되면 미래에 일어나는 일은 “새로운 단어가 엄청나게 많이 생긴다” 가 아니라, “언어라는 인터페이스 자체가 바뀌거나 보완된다” 에 가까울 것이다.
마치 수학이 자연어로는 표현하기 어려운 관계를 수식으로 정밀하게 표현하듯, AI 간 소통은 인간 언어와는 전혀 다른 차원의 표현 체계가 될 수 있다.
📍 인간이 AI와 결합할 때, 언어는 어떻게 되는가
여기서 한 걸음 더 나아가 보자.
AI끼리 Latent Vector를 직접 주고받는 방식은 극한의 효율을 가진다. 인간 언어가 유한한 단어를 조합해 의미를 근사하는 반면, 벡터 직접 전달은 정보 손실이 거의 없다. 비유하자면, 인간 언어가 JPEG라면 AI 간 소통은 RAW 이미지를 그대로 넘기는 것에 가깝다.
그렇다면, 먼 미래에 인간이 AI와 물리적으로 결합하게 된다면 어떨까? 뇌-컴퓨터 인터페이스(BCI)가 충분히 발전하여 인간의 사고가 벡터 수준에서 AI와 직접 교환될 수 있다면, “언어”라는 개념 자체가 근본적으로 달라질 수 있다.
지금 우리가 알고 있는 언어는 사고 → 단어 변환 → 전달 → 단어 해석 → 사고 복원이라는 다단계 과정이다. 이 과정에서 필연적으로 정보가 손실되고, 오해가 생기고, “내 마음을 정확히 표현할 수 없다”는 근본적 한계가 존재한다.
하지만 AI의 소통 방식처럼 사고의 벡터 표현 자체를 직접 공유할 수 있다면, 단어라는 중간 매개는 더 이상 필수가 아니게 된다. 언어는 “유일한 소통 수단”에서 “여러 소통 채널 중 하나”로 위상이 바뀔 수 있다.
물론 이것은 먼 미래의 이야기다. 하지만 임베딩 벡터 공간이라는 렌즈를 통해 보면, 인간 언어의 본질적 한계가 어디에 있는지, 그리고 AI가 그 한계를 어떤 방식으로 초월하고 있는지가 선명하게 보인다. 그리고 그 격차가 클수록, 인간이 AI와 결합했을 때 얻을 수 있는 소통의 도약 또한 그만큼 크다는 뜻이기도 하다.
인간의 언어는 세상의 극히 일부만 표현한다. 하지만 그 유한한 조각들을 조합해 무한에 가까운 의미를 만들어내는 시스템이기도 하다. 비효율적인 것이 아니라, 놀랍도록 효율적인 압축 알고리즘인 셈이다. 다만, AI들 사이에서는 이미 그 압축조차 필요 없는 소통이 가능하다. 언젠가 인간도 그 채널에 접속하게 된다면 — 그때 “언어”라는 단어의 의미는 지금과는 완전히 다른 무언가가 될 것이다.