1. Embedding의 수학적 정의
두 vector space(벡터 공간) $V$와 $E$가 있을 때,
함수 $f: V \to E$가 다음 조건을 만족하면 embedding이라고 정의됨.
- $f$는 단사 함수(injective function).
즉, 모든 $\textbf{v}_1, \textbf{v}_2 \in V$에 대해:
$f(\textbf{v}_1) = f(\textbf{v}_2) \Rightarrow \textbf{v}_1 = \textbf{v}_2$ - $f$ 는 연속 함수(continuous function) 임.
- $f$의 Inverse function $f^{-1}: f(V) \to V$는 $f(V) \subset E$의 부분집합에서 $V$ 로 가는 함수이며 이역시 연속이어야 함.
2021.09.14 - [.../Math] - Function (함수) : 간략 정의
2. 머신러닝에서의 응용
2-1. 단어 임베딩 (Word Embedding)
머신러닝, 특히 자연어 처리에서 단어 임베딩은 이 수학적 정의를 다음과 같이 적용:
- $V$: 모든 가능한 words의 set (=사전, discrete set)
- $E$: n-차원 real vector space $\mathbb{R}^n$ (연속 공간)
- $f: V \to E$, words를 embedding(=vector)로 mapping하는 function
Example: Word2Vec 모델
- $\text{king} \to f(\textbf{v}_{\text{king}}) = \begin{bmatrix} 0.1 & -0.5 & 0.8 & \dots 0.3 \end{bmatrix}^\top \in \mathbb{R}^{300}$
- $\text{queen} \to f(\textbf{v}_{\text{queen}}) = \begin{bmatrix} 0.2 & -0.4 & 0.7 & \dots 0.4 \end{bmatrix}^\top \in \mathbb{R}^{300}$
이 때, function $f$는 다음 특성을 가짐:
- Injectivity: 서로 다른 단어는 서로 다른 벡터로 매핑함.
- continuous: 의미적으로 유사한 단어들은 벡터 공간에서 가까운 위치에 mapping함
2-2. 거리 보존 (Distance Preservation)
임베딩 $f$는
- 원래 공간 $V$의 "Semantic Distance(의미적 거리)"를
- 목표 공간 $W$의 유클리드 거리로 근사화 를 수행함:
$$
d_V(\textbf{v}_1, \textbf{v}_2) \approx |f(\textbf{v}_1)-f(\textbf{v}_2)|_2
$$
where
- $d_V(\textbf{v}_1, \textbf{v}_2)$ 는 space V에서의 $\textbf{v}_1, \textbf{v}_2$ 간의 semantic distance function.
이를 통해 Embedding $f$는
"왕"과 "여왕" 사이의 관계가 "남자"와 "여자" 사이의 관계와 유사함을
다음과 같이 벡터 연산으로 표현할 수 있음:
$$
f(\textbf{v}_킹)-f(\textbf{v}_남)+f(\textbf{v}_여)\approx f(\textbf{v}_퀸)
$$
Example of distance function:
2023.07.23 - [.../Math] - [ML] Cosine Similarity
3. 딥러닝에서의 구현
신경망에서 임베딩 층(Embedding Layer)은 다음과 같이 구현됩니다:
$$
E: V \to \mathbb{R}^d \ E(\textbf{v})=W^\top\textbf{v}
$$
where,
- $W \in \mathbf{R}^{(|V|\times d)}$는 Trainable Weight Matrix 임.
- $|V|$ 는 사전에 포함된 words의 수를 의미
- the set of words에 해당하는 $V$의 cardinality (set에 포함된 elements의 수)
- one-hot encoding을 사용하는 input vector의 component수.
- $d$ : embedding 의 차원 (= output dimensionality)
이 Embedding Layer 는
- backpropagation을 통해 학습
- 특정 task의 loss function을 최소화하는 방향으로 학습이 이루어짐.
3-1. PyTorch
PyTorch의 nn.Embedding
레이어는 기본적으로 선형 변환만을 수행.
- 구현:
- 학습 후 주어진 입력 index에 대응하는 embedding vector (dense vector)를 반환.
- 입력 index에 대응하는 Embedding Matrix의 row를 조회(lookup)하여 반환.
- 활성화 함수: 포함되어 있지 않음
import torch.nn as nn
embedding_layer = nn.Embedding(
num_embeddings, # the total num of unique items (input)
embedding_dim, # ndim of embeddings
)
3-2. Keras (TensorFlow)
Keras의 Embedding
레이어 역시 기본적으로 선형 변환만을 수행.
- 구현:
- 학습 후 주어진 입력 index에 대응하는 embedding vector (dense vector)를 반환.
- PyTorch와 유사하게 Embedding Matrix에서 해당 인덱스의 row vector를 조회하여 반환.
- 활성화 함수: 포함되어 있지 않음
from tensorflow.keras.layers import Embedding
embedding_layer = Embedding(
input_dim, # size of dictionary + 1 (0번 index포함)
output_dim, # ndim of embeddings
)
3-3. 비선형성 추가 방법
두 프레임워크 모두 Embedding 레이어 자체에는 비선형 활성화 함수가 포함되어 있지 않음
비선형성을 추가하려면 다음과 같은 방법을 사용할 수 있음:
- Embedding 레이어 뒤에 별도의 활성화 함수 레이어 추가
- 커스텀 Embedding 레이어 구현
- 모델 구조에서 Embedding 레이어 다음에 Dense 레이어와 활성화 함수 추가
같이보면 좋은 자료들
https://gist.github.com/dsaint31x/21354c4eb74686ad432b1eb1bf64dc59
'Programming > ML' 카테고리의 다른 글
[ML] scikit-learn: Custom Transformer (2) | 2024.10.01 |
---|---|
[ML] Embedding (0) | 2024.09.28 |
[ML] Kernel Function 이란: Kernel Trick 포함 (0) | 2024.09.28 |
[ML] Radial Basis Function Kernel (RBF Kernel) (1) | 2024.09.26 |
[ML] Ensemble 기법 (0) | 2024.09.08 |