머신러닝에서 임베딩
정의
머신러닝에서 임베딩embedding이란 데이터 집합 $X$에서 벡터공간 $\mathbb{R}^{n}$으로의 매핑 혹은 이 매핑을 실시하는 행위 그 자체를 의미한다.
$$ \operatorname{Embedding}: X \to \mathbb{R}^{n} $$
설명
임베딩은 원래 수학 용어로, 분야마다 정의는 조금씩 다르지만 공통적으로 '한 대상을 다른 대상 안에 구조를 보존하며 집어넣는 단사 사상'을 가리킨다.
- 함수해석에서 임베딩은 놈 공간 $X$가 놈 공간 $Y$의 부분공간이고 항등 작용소 $I : X \to Y$가 연속인 것을 말한다.
- 위상수학에서 임베딩은 자신의 이미지로의 위상동형사상이 되는 연속함수다.
- $L^{p}$ 공간의 임베딩 정리는 부피가 유한한 영역에서 $p \le q$일 때 $L^{q}$가 $L^{p}$의 부분집합이 됨을 말한다.
- 그래프 임베딩은 그래프나 노드, 에지를 유클리드 공간으로 보내는 함수인데, 머신러닝의 용법에 상당히 가깝다.
머신러닝의 임베딩은 이 관념을 물려받았지만 훨씬 느슨하다. 데이터를 숫자로 이루어진 벡터로 매핑하고 나면 그것이 원래 어떤 데이터였든지 간에 계산을 할 수 있는 대상이 된다. 그 벡터의 크기를 재거나, 두 벡터 사이의 거리를 재거나 할 수 있다는 뜻이다. 이를 위해서는 임베딩함수가 데이터를 잘 임베딩해야하는데, 딥러닝에서는 임베딩함수도 학습할 대상이 된다. 예컨대 '비슷한 데이터는 가까운 벡터로, 다른 데이터는 먼 벡터로 보내라'는 요구를 손실함수에 담아 학습시킬 수 있다.
어떤 임베딩을 사용하느냐는 중요한 문제인데, 이는 자연어 처리에서 원-핫 인코딩의 한계에서 잘 드러난다. 범주형 데이터를 벡터로 바꾸는 가장 단순한 방법은 각 항목에 표준기저 벡터 $\mathbf{e}_{i}$를 하나씩 배정하는 원-핫 인코딩이다. 그런데 어휘 집합 $V$의 크기가 수만에서 수십만에 달하는 자연어 처리에서 이는 곧 성분 하나만 $1$이고 나머지는 전부 $0$인 $\left| V \right|$차원 희소벡터를 뜻한다. 더 심각한 문제는 서로 다른 원-핫 벡터가 언제나 직교한다는 것, 즉 $i \ne j$이면 $\mathbf{e}_{i} \cdot \mathbf{e}_{j} = 0$이라는 것이다. '강아지'와 '개'가 '강아지'와 '행렬식'만큼이나 서로 무관해서, 표현 자체에 유사도 정보가 전혀 없다. 그래서 이를 훨씬 낮은 차원 $n \ll \left| V \right|$의 밀집벡터dense vector로 바꾸는 임베딩을 사용하여 벡터 사이의 거리와 방향에 의미를 주는 방법이 주로 사용된다.
자연어 처리
🔒(26/07/30)자연어 처리에서 임베딩은 텍스트 벡터화text vectorization라고도 부르며 다양한 방법이 있다. 아래에서는 어휘 사전 $V = \{$ 강아지, 개, 고양이 $\}$ (크기 $3$, 성분 순서도 이 순서)를 공통 예시로 삼는다.
원-핫 인코딩: 미리 만들어둔 어휘 사전에서 각 단어에 색인을 매겨 표준기저 벡터에 대응시키는 가장 기본적인 방법이다. 정수형으로 색인을 부여하는 것과 본질적으로 같으며, 사용할 어휘가 많다면 앞서 본 희소성/직교성 문제 때문에 사실상 쓰기 어렵다.
단어 원-핫 벡터 정수형 강아지 $(1, 0, 0)$ $1$ 개 $(0, 1, 0)$ $2$ 고양이 $(0, 0, 1)$ $3$ 빈도 벡터화count vectorization: 한 문서를 어휘별 등장 횟수로 표현하는 방법이며, 대표적인 방식이 백오브워즈bag-of-words다. 예를 들어 "개 고양이 개"라는 문장은 성분을 순서대로 강아지, 개, 고양이의 빈도로 세어 $(0, 2, 1)$로 임베딩 된다.
워드 임베딩word embedding: 단어를 저차원 밀집벡터로 표현하는 것을 말하며, Word2Vec, fastText, GloVe 등의 방법이 있다. 아래 값은 설명을 위한 임의의 예시일 뿐 실제 학습값이 아니다.
단어 임베딩(예시) 강아지 $(0.8, 0.1)$ 개 $(0.7, 0.2)$ 고양이 $(-0.6, 0.5)$ 이렇게 하면 뜻이 비슷한 '강아지'와 '개'는 벡터가 서로 가깝고 '고양이'와는 멀어, 원-핫 인코딩과 달리 벡터 사이의 거리에 단어의 의미가 담기게 된다.

저희들의 저서 「줄리아 프로그래밍」이 2024 세종도서 학술부문에 선정되었습니다!

