수학 개념 지도
데이터와 학습(Data and learning)

단어 임베딩(Word embedding)

낱말 하나하나를 수백 차원의 벡터⁠(vector)⁠로 나타내, 비슷한 문맥에서 쓰이는 낱말끼리 가까이 놓이게 하는 방법. 가까움은 흔히 코사인 유사도⁠(cosine similarity)⁠로 재고, 벡터의 뺄셈과 덧셈이 '왕 − 남자 + 여자 ≈ 여왕' 같은 유추를 흉내 내기도 한다.

sim⁡(u,v)=u⃗⋅v⃗∥u⃗∥ ∥v⃗∥,왕⃗−남자⃗+여자⃗≈여왕⃗\operatorname{sim}(u, v) = \frac{\vec u \cdot \vec v}{\lVert \vec u \rVert\, \lVert \vec v \rVert}, \qquad \vec{\text{왕}} - \vec{\text{남자}} + \vec{\text{여자}} \approx \vec{\text{여왕}}
먼저 보면 좋은 개념벡터코사인 유사도

컴퓨터에게 '고양이'와 '개'는 그냥 서로 다른 기호입니다. 둘이 '고양이'와 '바나나'보다 가깝다는 것을 알려 주려면 낱말을 벡터로, 곧 수의 목록으로 바꿔야 합니다. 실마리는 분포 가설입니다. 1950년대 언어학자 젤리그 해리스와 존 퍼스가 내세운 생각으로, 비슷한 문맥에서 쓰이는 낱말은 뜻도 비슷하다는 것입니다. '고양이'와 '개'는 둘 다 '밥을 주다', '키우다', '짖다·울다' 근처에 나오고, '바나나'는 '껍질', '노랗다' 근처에 나옵니다. 그러니 낱말마다 주변에 어떤 낱말이 얼마나 나오는지를 세어 벡터로 만들면, 뜻이 비슷한 낱말의 벡터는 비슷해집니다.

아래 그림은 이 생각을 보여 주는 손으로 만든 장난감입니다. 낱말 스무 개에 '사람', '동물', '왕족', '수도' 같은 이름 붙은 특징과, 이름 없는 무작위 특징 네 개를 주어 23차원 벡터를 만들고, 알아보기 좋게 고른 평면에 정사영⁠(orthogonal projection)⁠해 그렸습니다. 실제 임베딩⁠(embedding)⁠은 수백 차원이고 차원마다 이름도 없습니다. 보기:

점 하나가 낱말 하나입니다. '가까운 이웃'에서는 낱말을 눌러 보세요. 청록 선이 23차원에서 코사인 유사도가 가장 큰 세 낱말입니다. 유추에서는 분홍 화살표(B → C)와 같은 이동을 A에 더한 곳이 노란 고리이고, 청록 고리가 그곳에서 코사인⁠(cosine)⁠으로 가장 가까운 낱말입니다.

가까움을 유클리드 거리⁠(Euclidean distance)⁠가 아니라 코사인 유사도로 재는 까닭은, 자주 나오는 낱말일수록 세어 얻은 벡터가 길어지기 때문입니다. 길이를 무시하고 방향만 비교하면 빈도의 차이가 걸러집니다. 코사인은 두 벡터의 내적⁠(dot product)⁠을 길이로 나눈 것이라, 수십만 낱말 가운데 가까운 이웃을 찾는 일도 결국 큰 행렬⁠(matrix)⁠ 곱셈과 최근접 이웃⁠(nearest neighbor)⁠ 검색입니다. 그림은 23차원을 2차원에 눌러 그린 것이라 그림 속 거리와 실제 코사인 순위가 어긋날 수 있습니다. 차원이 높을수록 이런 어긋남은 피할 수 없고(차원의 저주⁠, curse of dimensionality⁠), 실제 임베딩을 볼 때도 주성분 분석⁠(principal component analysis)⁠ 같은 방법으로 차원을 줄여 그림을 그립니다.

유추가 되는 이유는 '남자 → 여자'의 차이와 '왕 → 여왕'의 차이가 거의 같은 벡터라서, 네 낱말이 평행사변형을 이루기 때문입니다. 2013년 체코 출신 컴퓨터 과학자 토마시 미콜로프 등 구글 연구진이 발표한 word2vec은 주변 낱말을 맞히는 작은 신경망⁠(neural network)⁠을 학습시켜 이런 벡터를 얻었고, 이 유추 실험으로 널리 알려졌습니다. 다만 주의할 점이 있습니다. A − B + C에서 가장 가까운 낱말은 흔히 A나 C 자신이라, 보통은 입력한 세 낱말을 빼고 답을 고릅니다. 또 '호랑이 − 고양이 + 개'처럼 사전에 알맞은 낱말(늑대)이 없으면, 모델은 그저 가장 가까운 낱말을 내놓을 뿐입니다.

임베딩은 사람이 쓴 글에서 배우므로 글에 담긴 편견도 함께 배웁니다. 2016년 톨가 볼루크바시 등은 뉴스 기사로 학습한 임베딩에서 '남자 : 프로그래머 = 여자 : ?'의 답으로 '주부'가 나오는 등, 직업 낱말들이 성별 방향으로 치우쳐 있음을 보고했습니다. 그림의 '성별' 특징처럼 편향도 하나의 방향이므로, 그 방향 성분을 빼는 보정 방법이 제안되었지만 편향을 완전히 없애기는 어렵다는 반론도 있습니다. 임베딩으로 사람을 평가하거나 거르는 시스템에서는 특히 조심해야 합니다.

이어지는 곳. 잠재 의미 분석(1990년 무렵)은 word2vec보다 먼저 나온 같은 계열의 방법입니다. 낱말마다 각 문서에 몇 번 나오는지를 적은 낱말–문서 행렬을 만들고, 특잇값 분해(행렬을 '회전⁠(rotation)⁠, 축마다 늘이기, 회전'의 곱으로 쪼개어 늘이는 정도가 큰 방향부터 늘어놓는 분해)로 가장 크게 늘어나는 방향 수백 개만 남겨 낱말 벡터를 얻습니다. 벡터가 생기면 거리로 무리를 나눌 수 있어서, 임베딩 공간에서 k-평균 군집⁠(k-means clustering)⁠을 돌리면 뜻이 비슷한 낱말 무리가 나옵니다. 앞 낱말 몇 개로 다음 낱말을 맞히는 n-그램⁠(n-gram)⁠ 모델은 본 적 없는 낱말 묶음이 끝없이 나오는 희소성 문제를 겪는데, 비슷한 낱말끼리 통계⁠(statistics)⁠를 나누어 쓰게 하는 임베딩이 이를 누그러뜨렸습니다. 오늘날의 언어 모델⁠(language model)⁠은 어텐션⁠(attention)⁠으로 앞뒤 낱말의 벡터를 섞어 문맥에 따라 벡터가 바뀌는 임베딩을 만들어, 과일 '배'와 타는 '배'에 다른 벡터를 줍니다. 문장이나 문서 전체를 이런 벡터 하나로 바꿔 두고, 질문과 가까운 글을 찾아 언어 모델의 문맥에 넣어 주는 방법이 검색 증강 생성⁠(retrieval-augmented generation)⁠입니다. 낱말 빈도가 지프의 법칙⁠(Zipf's law)⁠처럼 치우쳐 있으므로, 흔한 낱말이 너무 많이 학습되지 않도록 흔한 낱말을 덜 뽑기도 합니다.

이 개념이 나오는 큰 생각표현 바꾸기

이 개념이 나오는 긴 글

거리와 유사도 까마귀와 택시 까마귀는 곧장 날고 택시는 블록을 돌아간다. '얼마나 먼가'에는 답이 하나가 아니고, 어떤 거리를 고르느냐가 통계와 기계 학습의 답을 바꾼다. 계산언어학 말을 세는 기계 문법은 규칙일까, 확률일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피, 오늘날의 언어 모델까지. 신경망과 기계 학습 배우는 기계 예를 보여 주면 규칙을 스스로 찾는 기계. 1958년의 퍼셉트론에서 오늘의 심층 신경망까지, 그 밑바닥에는 미분과 연쇄법칙이 있다. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다. 범주론 화살표만으로 본 수학 최대공약수와 교집합과 '그리고'는 같은 것이고, 화살표를 뒤집으면 최소공배수와 합집합과 '또는'이 된다. 무엇으로 만들었는지 묻지 않고 어떻게 이어지는지만 보는 언어로, '자연스럽다'는 말의 뜻, 관계만으로 대상을 알아보는 요네다의 생각, 함자로 본 연쇄법칙, 어디에나 있는 수반까지 사이트의 여러 분야를 가로지른다.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념