서론: 이상한 AI의 행동
며칠 전, 필자는 중국어로 코딩 어시스턴트에게 질문했습니다. "run.py에 조기 종료(early stopping)가 있나요? 공유 GPU 서비스에서 실행 중인데 트리거되지 않았습니다." 평소처럼 기술 토큰 run.py는 영어 원문 그대로 입력했습니다. 그런데 모델의 응답 구조가 한국어로 나오는 것이었습니다. 기술 용어는 영어로 유지된 채, 설명 문장만 한국어로 구성된 응답이었죠.
이상한 점은 이번이 처음이 아니라는 것입니다. 중국어와 영어를 섞어 쓰면, 꽤 자주 한국어 응답이 나타났습니다. 단순한 우연일까요, 아니면 임베딩 공간의 더 깊은 구조적 문제일까요?
임베딩 공간의 구조에 대한 가설
임베딩 공간은 언어의 본질적 특성보다는 **작업 레지스터(task register)**에 따라 구조화되어 있을 가능성이 높습니다. 학술적 글쓰기, 대화체, 코딩 어시스턴트의 경우 엔지니어링/코드 레지스터가 그 예입니다. 중국어는 세계에서 가장 많은 인구가 사용하지만, 엔지니어링 레지스터의 자연스러운 매체는 아니며 기술 코퍼스에서의 표현도 제한적입니다.
이런 맥락에서 review, branch, commit, PR, diff 같은 엔지니어링 토큰이 등장하는 순간, 텍스트는 임베딩 공간에서 더 이상 '중국어'로 동작하지 않을 수 있습니다. 대신 '엔지니어링 어트랙터 필드(attractor field)'로 끌려들어가는 것이죠.
실험 1: 통제된 언어 드리프트
이 가설을 검증하기 위해, 영어 단어가 중국어를 점진적으로 대체하는 문장 시퀀스를 구성했습니다.
| 단계 | 문장 |
|---|---|
| 0 | 请帮我检查这个分支 |
| 1 | 请帮我 review 这个分支 |
| 2 | 请帮我 review 这个 branch |
| 3 | Please review this branch pull request commit |
| 4 | Please review this branch pull request commit code diff |
각 문장의 임베딩과 한국어/영어 대표 클러스터 간 코사인 유사도를 계산했습니다. 결과는 다음과 같습니다.
| 단계 | 한국어 유사도 | 영어 유사도 | Δ (EN − KO) |
|---|---|---|---|
| 0 | 0.4783 | 0.5141 | 0.0358 |
| 1 | 0.5235 | 0.5728 | 0.0492 |
| 2 | 0.5474 | 0.6140 | 0.0665 |
| 3 | 0.5616 | 0.7314 | 0.1698 |
| 4 | 0.5427 | 0.7398 | 0.1972 |
흥미로운 점은 한국어 유사도가 먼저 증가하다가 영어 유사도에 추월당한다는 것입니다. 더 중요한 것은 영어 유사도의 증가가 선형적이지 않다는 점입니다. 2단계에서 3단계 사이에 급격한 점프가 발생하는데, 이는 점진적 드리프트가 아닌 상전이(phase transition)와 유사한 행동을 보여줍니다.
PCA로 2차원에 투영하면, 초기 단계에서는 부드러운 궤적을 보이다가 2단계와 3단계 사이에서 방향이 급격히 바뀌고 이후 안정화됩니다. 임베딩이 선형적으로 이동하는 것이 아니라, 어트랙터 베이슨(attractor basin) 사이를 전이한다는 것을 시사합니다.
실험 2: 실제 모델 행동
이제 처음에 언급한 실제 사례를 분석해 보겠습니다.
- A (중국어 프롬프트): "run.py有早停吗?我在恒源云上跑,发现没有触发"
- B (한국어 응답): "원인을 찾았습니다. 결론: run.py에는 실제로 조기 종료가 없습니다. config.py에 USE_EARLY_STOPPING = True"
- C (B를 중국어로 재번역): "我找到了原因。结论:run.py实际上没有早停。config.py里有 USE_EARLY_STOPPING = True。"
각 텍스트의 임베딩과 중국어/영어/한국어 클러스터 간 유사도를 계산했습니다.
| 텍스트 | 한국어 유사도 | 영어 유사도 | 중국어 유사도 |
|---|---|---|---|
| A (중국어 프롬프트) | 0.2003 | 0.2688 | 0.3134 |
| B (한국어 응답) | 0.2745 | 0.2983 | 0.1641 |
| C (중국어 재번역) | 0.1634 | 0.3106 | 0.2798 |
주목할 점은 한국어 응답을 중국어로 번역해도 임베딩이 중국어 영역으로 돌아가지 않는다는 것입니다. 오히려 영어 클러스터에 더 가까워집니다. 번역은 언어적 형태를 복원할 수 있지만, 임베딩 위치는 복원하지 못합니다.
결론 및 시사점
두 실험 모두 임베딩 공간이 언어 경계가 아닌 작업 특성에 의해 구조화된다는 결론을 보여줍니다. 엔지니어링 영어가 지배하는 영역에 문장이 진입하면, 언어적 형태가 바뀌어도 임베딩 구조는 엔지니어링 베이슨에 머물게 됩니다. 이것이 한국어 화자가 아닌데도 한국어로 응답하는 이상한 행동을 설명합니다.
한국 개발 생태계에서의 적용 맥락
국내 AI 서비스 개발자라면 이 현상이 특히 중요합니다. 한국어 기반 챗봇이나 코딩 어시스턴트를 만들 때, 기술 용어가 섞인 사용자 입력이 의도치 않게 다른 언어의 응답을 유발할 수 있습니다. 특히 금융권이나 공공기관처럼 정확한 언어 처리가 중요한 도메인에서는 이런 임베딩 특성을 고려한 후처리 로직이 필요합니다.
이 기술의 한계 또는 주의사항
이 실험은 특정 임베딩 모델과 제한된 문장 샘플을 기반으로 합니다. 모델 아키텍처나 학습 데이터에 따라 결과가 달라질 수 있습니다. 또한 코사인 유사도가 임베딩 공간의 구조를 완전히 설명하지는 못합니다. 하지만 현상 자체는 여러 모델에서 관찰되는 일반적인 패턴으로 보입니다.
다음 단계 학습 방향
- 임베딩 공간의 시각화 도구(t-SNE, UMAP)를 활용한 심층 분석
- 다국어 모델(mBERT, XLM-R)에서의 언어 경계 실험
- 프롬프트 엔지니어링을 통한 언어 혼용 문제 해결 방법 연구
이 주제에 관심이 있다면 AI 임베딩 공간의 언어 드리프트 현상에 대한 원문을 참고하세요.
함께 보면 좋은 글
