자연어 처리에 있어서 Embedding(임베딩)이란
- 단어나 문장과 같은 자연어적인 요소를 컴퓨터가 처리할 수 있는 벡터 공간으로 옮겨 표현하는 데에 의의가 있다.
- 즉, NLP에서 Embedding을 한다는 것은 각 단어의 의미를 수치적으로 표현한다는 것! (벡터화)
Dense Embedding
- 차원 값 자체가 상대적으로 낮으며 실수값으로 표현되어 있어서 특정 단어 간의 유사성 또는 문맥 파악에 용이하다.
- 이러한 Dense Embedding의 특성은 메모리 효율성을 높이고 추가적인 학습을 가능하게 하여 차원이 높은 희소 표현(Sparse Representation)과의 차이점으로 작용한다.
Sparse Embedding
- 단어를 고차원의 벡터로 표현하며 대부분의 값이 0인 형태를 띈다.
- 메모리 사용량이 많고 단어 간의 유사성을 계산하기가 어렵다.
- 예시:
cat = [0,0,0,0,0,0,0,1,...,0,0,0] => 10000만 차원의 벡터로 표현됨.
Dense Embedding
- 차원 축소: 임베딩되는 벡터값 안에 실수표현이 들어가므로 더 세세한 단어 분류가 가능하여 보다 저차원의 벡터로 변환 가능.
- 실수값 표현에 유리하다: 실수로 벡터값이 표현되기에, 'king'과 'queen'의 벡터 간 거리가 'man'과 'woman'의 벡터 간 거리와 유사하게 나타날 수 있다.
- 문맥 파악: 단어가 사용되는 문맥에 따라 벡터가 조정되는 바 동일한 'bank'라는 단어가 'river bank'와 'financial bank' 각각에서 다른 벡터로 표현될 수 있다.
- 추가 학습 가능: 추가적인 학습을 통해 해당 벡터의 구성인 실수값이 더 정교하게 조정될 수 있다.
- 예시:
cat = [0.12, 0.36, -0.9,...,0.78, -0.79] => 300차원의 벡터로 표현.
Sparse/Dense Embedding의 비교
- Dense Embedding은 Sparse의 경우보다 더 낮은 차원으로 단어를 표현할 수 있다.
- Dense Embedding의 경우 Sparse와 달리 단순 단어의 구분 외에 문맥적 의미를 포함하여 벡터화 시킬 수 있다.
- Dense Embedding의 경우 벡터 값들이 실수로 표현되기에 추가학습을 통해 더 정밀하게 값이 조정될 수 있다.