본문으로 건너뛰기
Margin

가능성과 오차 사이

최근 노트

갈래

언어와 데이터

단어를 좌표로, 의미의 기하학

단어의 뜻을 좌표로 바꾼다는 생각을 좌표가 된 의미에서 소개했다. 비슷한 자리에 쓰이는 말은 비슷한 좌표를 갖고, 그래서 뜻이 가까운 단어들이 한 공간에서 가까이 모인다는 이야기였다. 이 글은 그 생각을 한 걸음 더 들어가, 좌표가 실제로 어떻게 만들어지고 어떤 신기한 성질을 갖는지를 들여다본다. 의미의 기하학이라 부를 만한 이야기다.

어울림을 세는 일에서 시작한다

가장 단순한 방법은 세는 것이다. 어떤 단어가 다른 어떤 단어들과 함께 나타나는지를 방대한 글에서 일일이 헤아린다. 커피라는 단어 둘레에 마신다, 잔, 아침 같은 말이 몇 번이나 함께 나오는지를 세어 적는 것이다. 이렇게 모은 횟수의 묶음이 그 단어의 첫 좌표가 된다.

이 방식은 직관적이지만 한 가지 문제가 있다. 세상의 단어가 워낙 많다 보니, 한 단어의 좌표가 수만 개의 수로 이루어진 아주 긴 줄이 되어버린다. 게다가 그 수들의 거의 전부가 0이다. 어떤 단어든 실제로 함께 쓰이는 말은 전체 가운데 극히 일부뿐이기 때문이다. 대부분이 0으로 채워진 길고 성긴 좌표는 다루기에 번거롭다.

그냥 세기만 하면 생기는 일

어울림을 세는 단순한 방식에는 또 다른 약점이 있다. 자주 쓰이는 말일수록 무조건 많이 세어진다는 점이다. 그라든가 이 같은 말은 거의 모든 단어 곁에 나타나기에, 세기만 하면 모든 단어가 이런 흔한 말들과 가까워 보인다. 정작 뜻을 가르는 단서가 흔함에 묻혀버린다.

그래서 단순히 횟수를 세는 대신, 그 어울림이 얼마나 뜻밖인지를 따지는 방식이 쓰인다. 두 단어가 우연히 함께 나올 법한 정도보다 훨씬 자주 붙어 다닌다면 그 어울림은 의미가 있다. 반대로 흔한 말과의 어울림은 별 정보가 없다고 보아 덜 셈한다. 흔함을 걷어내고 뜻밖의 어울림만 남기는 손질이다.

긴 좌표에서 짧은 좌표로

그래서 다음 단계는 이 길고 성긴 좌표를 짧고 빽빽한 좌표로 바꾸는 것이다. 수만 개의 수 대신 수백 개의 수로, 그러면서도 단어의 쓰임을 잃지 않도록 알맹이만 추려 담는다. 이렇게 만든 짧은 좌표를 흔히 임베딩이라 부른다. 단어를 공간 속 한 점으로 옮겨 심는다는 뜻이다.

짧은 좌표를 만드는 방법 가운데 널리 쓰인 것은, 단어가 제 둘레의 말을 얼마나 잘 맞히는지를 기준으로 좌표를 다듬어가는 방식이다. 어떤 단어가 주어졌을 때 그 곁에 올 만한 말을 잘 맞히도록 좌표를 조금씩 고쳐나가면, 비슷한 맥락에 쓰이는 단어들이 자연히 비슷한 좌표로 모인다. 이런 방법들에 대한 차분한 설명은 스탠퍼드의 자연어처리 교재인 제러프스키와 마틴의 음성·언어 처리 교재의 의미 벡터 장에 잘 정리되어 있다.

짧은 좌표는 다루기 쉬울 뿐 아니라 더 잘 작동하기도 한다. 길고 성긴 좌표에서는 자동차와 승용차가 서로 다른 칸에 따로 적혀 둘이 닮았다는 사실이 드러나지 않는다. 반면 짧은 좌표에서는 두 단어가 비슷한 자리에 모여 그 닮음이 좌표 자체에 배어든다. 기계가 처음 보는 문장을 다룰 때도 이런 좌표가 더 매끄럽게 일반화한다.

차원이라는 손잡이

짧은 좌표가 몇 개의 수로 이루어질지는 정하기 나름이다. 이 수의 개수를 차원이라 부른다. 차원을 늘리면 단어의 더 미세한 결을 담을 수 있지만 그만큼 더 많은 글과 계산이 든다. 차원을 줄이면 가볍고 다루기 쉬워지는 대신 미묘한 차이를 놓친다.

그래서 차원의 수는 한쪽으로 무작정 키운다고 좋은 것이 아니다. 담으려는 결의 풍부함과 다루기의 수월함 사이에서 알맞은 자리를 찾는 일이다. 너무 적으면 뭉뚱그려지고, 너무 많으면 우연한 잡음까지 담겨 오히려 흐려진다. 이 줄다리기는 데이터를 다루는 거의 모든 자리에서 되풀이된다.

단어가 아니라 조각으로

지금까지 단어를 좌표의 단위로 이야기했지만, 실제로는 단어보다 작은 조각을 쓰는 경우가 많다. 긴 단어나 처음 보는 단어를 익숙한 조각들의 조합으로 다루기 위해서다. 이렇게 하면 사전에 없던 낯선 말도 아는 조각들로 쪼개어 좌표를 줄 수 있다.

조각을 단위로 삼으면 또 다른 이로움이 있다. 비슷한 어근을 가진 말들이 같은 조각을 공유하게 되어, 그 닮음이 자연스럽게 좌표에 반영된다. 가르치다와 가르침이 어근 조각을 나눠 가지면 둘의 관계가 좌표에서도 가까이 드러난다. 단어를 통째로 다룰 때는 놓치기 쉬운 연결이다.

거리보다 방향

두 단어가 얼마나 비슷한지를 좌표로 잴 때, 흔히 쓰는 것은 두 점 사이의 단순한 거리가 아니라 방향의 닮음이다. 원점에서 각 단어로 뻗은 화살표가 같은 쪽을 가리키면 비슷하고, 서로 다른 쪽을 가리키면 다르다고 본다. 화살표의 길이보다 향하는 방향을 따지는 것이다.

이렇게 방향을 기준으로 삼는 데에는 까닭이 있다. 어떤 단어는 다른 단어보다 훨씬 자주 쓰여 화살표가 길어지기 쉽다. 길이를 그대로 따지면 자주 쓰인다는 사실이 닮음 판단을 흐린다. 방향만 보면 그런 치우침에 덜 휘둘리고, 두 단어가 어떤 맥락에 쓰이는지의 결만 견줄 수 있다. 자주 쓰임과 뜻의 가까움을 갈라내는 영리한 방식이다.

방향으로 닮음을 재는 이 방식 덕분에, 기계는 어떤 단어와 뜻이 가까운 말들을 빠르게 찾아낼 수 있다. 한 단어의 화살표와 비슷한 쪽을 가리키는 다른 화살표들이 곧 그 단어의 이웃이다. 사람이 동의어를 떠올리느라 머리를 쥐어짜는 일을, 기계는 방향이 가까운 이웃을 골라내는 단순한 셈으로 해치운다.

뜻에도 산수가 있다

좌표로 바뀐 단어들은 놀라운 성질을 보인다. 단어들 사이의 관계가 좌표의 산수로 나타나는 것이다. 널리 알려진 예가 있다. 임금을 가리키는 단어에서 남성을 빼고 여성을 더하면, 그 결과가 여왕을 가리키는 단어의 좌표 가까이에 떨어진다는 것이다. 단어를 더하고 빼는 산수가 뜻 사이의 관계를 따라가는 셈이다.

이것이 신기한 까닭은, 누가 그런 산수가 되도록 일부러 좌표를 짜 넣은 것이 아니기 때문이다. 그저 수많은 글에서 단어들의 어울림을 익혔을 뿐인데, 그 결과 만들어진 공간 안에 남성과 여성, 단수와 복수 같은 관계가 일정한 방향으로 새겨졌다. 나라와 그 수도를 잇는 방향, 동사의 현재와 과거를 잇는 방향이 여러 짝에서 비슷하게 나타난다. 말의 쓰임 속에 숨어 있던 규칙이 좌표의 기하로 떠오른 것이다.

유추로 좌표를 시험하다

좌표가 잘 만들어졌는지를 어떻게 알 수 있을까. 한 가지 방법이 방금 말한 의미의 산수를 써서 유추 문제를 풀게 하는 것이다. 파리가 프랑스에 대응하듯 도쿄는 어느 나라에 대응하는가 같은 물음을, 좌표의 더하기와 빼기로 풀게 한다. 좌표가 관계를 제대로 담았다면 답이 맞아떨어진다.

이런 시험은 좌표의 품질을 가늠하는 잣대가 된다. 다만 유추를 잘 푼다고 해서 그 좌표가 모든 면에서 훌륭한 것은 아니다. 어떤 관계는 깔끔한 방향으로 나타나지만 어떤 관계는 그렇지 않고, 흔치 않은 단어의 좌표는 여전히 흔들린다. 좌표를 시험하는 일에도 무엇을 재고 무엇은 못 재는지를 아는 신중함이 필요하다.

가깝다는 말의 두 얼굴

좌표에서 가깝다는 것이 늘 같은 뜻은 아니다. 두 종류의 가까움이 섞여 있다. 하나는 서로 바꿔 쓸 수 있는 비슷한 말끼리의 가까움이고, 다른 하나는 한 주제 아래 자주 함께 나오는 말끼리의 가까움이다. 앞의 것은 자동차와 승용차 같은 사이이고, 뒤의 것은 자동차와 도로 같은 사이다.

이 둘은 결이 다른데도 좌표에서는 모두 가까움으로 나타난다. 그래서 단지 가깝다는 사실만으로는 두 단어가 어떤 관계인지 단정하기 어렵다. 어떤 글을 재료로 삼았는지, 둘레의 말을 얼마나 넓게 보았는지에 따라 어느 가까움이 더 두드러지는지가 달라진다. 좌표가 말해주는 가까움을 읽을 때도 그것이 어떤 종류의 가까움인지를 살펴야 한다.

데이터의 그림자도 함께 담긴다

그러나 이 좌표는 좋은 것만 담지 않는다. 사람들이 쓴 글에 배어 있는 치우친 생각까지 함께 빨아들인다. 어떤 직업이 특정한 성별과 더 가깝게, 어떤 집단이 부정적인 말과 더 가깝게 놓이는 일이 벌어진다. 글쓴이들이 무심코 드러낸 편견이 좌표의 방향에 그대로 새겨지는 것이다.

이 점은 가볍게 볼 일이 아니다. 좌표가 편향을 품으면, 그 좌표를 쓰는 기계의 판단도 편향을 물려받는다. 사람의 글을 재료로 삼는다는 것은 그 글의 지혜만이 아니라 그늘까지 함께 들인다는 뜻이다. 기계가 데이터의 치우침을 어떻게 닮는지는 기계의 읽기에서도 짚었다. 좌표를 다룰 때 늘 그 그림자를 살펴야 하는 까닭이다.

그릴 수 없는 공간

단어의 좌표가 수백 개의 수로 이루어진다는 말은, 그 공간을 사람이 머릿속에 그릴 수 없다는 뜻이기도 하다. 우리는 가로세로높이 정도까지만 떠올린다. 수백 갈래로 뻗은 공간은 상상의 바깥에 있다. 우리가 보는 그림은 그 공간을 평면에 억지로 눌러 담은 그림자일 뿐이다.

그래도 기계에게는 아무 문제가 없다. 거리를 재고 방향을 따지는 셈은 차원이 몇이든 똑같이 굴러간다. 사람의 직관이 닿지 않는 곳에서 기계는 거뜬히 계산을 이어간다. 다만 우리가 그 공간을 직접 볼 수 없다는 사실은, 좌표가 무엇을 담고 있는지를 늘 간접적으로만 짐작할 수 있다는 한계로 이어진다.

고정된 좌표에서 움직이는 좌표로

지금까지 이야기한 좌표에는 한계가 하나 있다. 한 단어에 좌표 하나를 딱 붙여둔다는 점이다. 그러면 여러 뜻을 지닌 단어가 곤란해진다. 강을 떠가는 배와 먹는 배가 한 점에 겹쳐버린다. 좌표 하나로는 한 단어의 여러 얼굴을 담을 수 없다.

그래서 더 나아간 방법들은 단어의 좌표를 문맥에 따라 바꾼다. 같은 단어라도 어떤 문장에 놓이느냐에 따라 다른 좌표를 갖게 하는 것이다. 강 이야기 속의 배와 과일 이야기 속의 배가 서로 다른 자리에 놓인다. 이렇게 문맥을 읽어 좌표를 정하는 일은 다음에 올 말을 가늠하는 일과 깊이 맞물리는데, 그 이야기는 다음 단어 고르기에서 다룬다.

문맥에 따라 좌표가 움직이면, 같은 단어의 여러 얼굴을 모두 담을 수 있다. 다만 그만큼 좌표를 정하는 일이 무거워진다. 단어 하나에 좌표 하나를 미리 정해두던 방식과 달리, 매번 문장 전체를 읽어 그 자리에 맞는 좌표를 새로 빚어야 하기 때문이다. 더 풍부해진 대신 더 많은 셈을 치르는 셈이다.

닮음을 잰다는 것

단어를 좌표로 바꾸는 일의 쓸모는 단어 하나에 그치지 않는다. 같은 생각을 문장이나 글 전체로 넓히면, 두 글이 얼마나 비슷한 주제를 다루는지도 좌표의 방향으로 잴 수 있다. 어떤 물음에 어떤 답이 잘 맞는지, 두 문서가 같은 내용을 다른 말로 적은 것인지를 가늠하는 일이 모두 이 닮음 재기 위에 선다.

다만 여기서도 잊지 말 것이 있다. 좌표가 재어주는 것은 쓰임의 닮음이지 사실의 옳고 그름이 아니다. 두 문장이 비슷한 좌표를 갖는다고 둘 다 참인 것은 아니다. 데이터 속에서 무엇이 진짜 신호이고 무엇이 그저 닮아 보이는 것인지를 가리는 일은 또 다른 과제인데, 그 이야기는 신호와 잡음에서 이어간다. 모르는 말이 나오면 용어와 자료를 참고하면 된다.

의미를 좌표로 옮긴다는 한 가지 생각이 단어의 닮음에서 글의 닮음까지, 그리고 다음 말을 가늠하는 일까지 두루 떠받친다. 그 생각이 언어와 확률을 잇는 길목은 언어와 확률에서 다룬다.

단어를 좌표로 바꾸는 일은 의미를 공간의 언어로 옮기는 작업이다. 가까움과 방향, 더하기와 빼기 같은 기하의 말로 뜻을 다루게 되면, 사람이 어렴풋이 느끼던 말의 닮음과 관계가 또렷한 셈의 대상이 된다. 물론 그 좌표는 사람이 쓴 글에서 길어 올린 것이라, 그 글의 지혜와 그늘을 함께 안고 있다. 의미의 기하학은 강력한 도구이자, 늘 그 출처를 되살펴야 하는 도구다.