Recent Posts
Recent Comments
Archives
반응형
250x250
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Yesterday

Total
05-17 04:32
관리 메뉴

Hey Tech

[NLP] Word Embedding의 이해: 희소표현과 밀집표현 본문

AI & 빅데이터/자연어처리(NLP)

[NLP] Word Embedding의 이해: 희소표현과 밀집표현

Tony Park 2022. 4. 6. 16:31
728x90
반응형

📚 목차

1. 희소표현(Sparse Representation)
2. 밀집표현(Dense Representation)
3. 워드임베딩(Word Embedding)

들어가며

워드 임베딩(Word Embedding)은 단어(Word)를 컴퓨터가 이해할 수 있도록 벡터로 표현하는 기법 중 하나인데, 특히 밀집표현(Dense Representation) 방식을 통해 표현하는 기법을 말합니다. 밀집표현과 반대되는 개념이 희소표현(Sparse Representation)입니다. 워드 임베딩을 이해하기에 앞서 희소표현과 밀집표현에 대해 알아봅니다.

1. 희소표현(Sparse Representation)

희소표현은 데이터를 벡터 또는 행렬을 기반으로 수치화하여 표현할 때 극히 일부의 인덱스만 특정 값으로 표현하고, 대부분의 나머지 인덱스는 의미 없는 값으로 표현하는 기법입니다. 대표적으로 원-핫 인코딩(One-Hot Encoding) 방식이 있습니다. 원-핫 인코딩은 전체 단어 집합의 크기를 갖는 벡터에서 표현할 단어의 인덱스만 1로 나타내고, 니머지는 모두 0으로 표현하는 기법입니다. 여기서 단어 집합이란 서로 다른 단어의 집합입니다. 즉, 단어 집합에서는 'Apple'과 'Apples'를 다른 단어로 인식합니다. 왜냐하면 컴퓨터는 단수형, 복수형이라는 개념을 모르기 때문이죠.
원핫인코딩은 단어 개수가 많아질수록, 즉 단어 집합의 크기가 커질수록 필요한 벡터 공간이 함께 증가하는데, 이는 불필요한 벡터 공간의 낭비를 유발합니다. 예시와 함께 살펴보겠습니다. 단어 집합의 크기가 10만 일 때 3번째 인덱스에 해당하는 'Apple'이라는 단어를 원핫벡터로 표현하면 다음과 같습니다.

$$ Apple = [0, 0, 1, 0, 0, ..., 0] $$

즉, 3번째 이후 인덱스인 99,997개의 값은 모두 0으로 표현됩니다. 이처럼 희소표현은 불필요한 벡터 공간의 낭비를 유발합니다. 더불어, 카운트 기반의 단어 표현기법 중 하나인 단어문서행렬(Document Term Matrix, DTM) 역시 희소표현을 사용합니다. 이러한 원핫인코딩, 카운트 기반 단어 표현기법은 단어의 의미를 반영하지 못합니다. 왜냐하면 단어의 의미는 고려하지 않고 단순히 어떤 단어가 문서에서 몇 번 등장했는지만 고려하기 때문입니다.

2. 밀집표현(Dense Representation)

밀집표현은 앞서 살펴본 희소표현과 반대되는 단어표현 방법으로써 텍스트를 실숫값으로 구성하여 사용자가 설정한 차원의 벡터로 표현합니다. 희소표현에서는 단어 집합의 크기만큼 벡터 또는 행렬의 차원이 결정되고, 표현할 단어만 1이 아닌 정수로, 나머지는 0으로 표현했습니다. 반면, 밀집표현은 사용자가 임의로 설정한 차원에서, 단순히 0 또는 1의 값만으로 데이터를 표현하는 것이 아닌 실숫값으로 표현합니다. 앞서 활용한 예시에서, 벡터는 단어의 인덱스를 제외한 단어 집합의 크기만큼 0의 값을 가졌습니다. 사용자가 벡터의 크기를 64로 설정했다면, 밀집표현으로 해당 단어를 표현하면 다음과 같이 64차원을 갖는 벡터 형태로 나타낼 수 있습니다.

$$ Apple = [0.12, 0.77, 0.84, 0.11, 0.2, ..., 0.56] $$

위와 같은 벡터는 10만 차원을 갖던 희소벡터와 달리 차원의 크기를 줄이고 실숫값을 밀집하여 표현했다고 해서 밀집벡터(Dense Vector)라고 부릅니다.

3. 워드임베딩(Word Embedding)

워드임베딩이란 단어를 밀집벡터 형태로 표현하는 기법입니다. 여기서 임베딩을 통해 얻은 결과인 밀집벡터를 임베딩 벡터(Embedding Vector)라고 부릅니다. 워드임베딩 방법론으로는 LSA, Word2Vec, Glove, FastText, ELMO 등이 있습니다. 다음 포스팅에서는 워드임베딩 방법론에 대해 알아봅니다.

📚 참고할 만한 포스팅

1. [NLP] Bag of Words(BoW) 개념 및 실습
2. [NLP] 문서 단어 행렬(DTM) 개념 이해
3. [NLP] TF-IDF 개념 및 계산 방법
4. [NLP] Word Embedding의 이해: (1) 희소표현 및 밀집표현
5. [NLP] 언어모델(Language Model)의 개념 및 특징
6. [NLP] N-gram 언어 모델의 개념, 종류, 한계점
7. [NLP] 언어모델의 평가지표 'Perplexity' 개념 및 계산방법
8. [NLP] Word2Vec: (1) 개념
9. [NLP] Word2Vec: (2) CBOW 개념 및 원리
10. [NLP] Word2Vec: (3) Skip-gram
11. [NLP] Word2Vec: (4) Negative Sampling
12. [NLP] 문서 유사도 분석: (1) 코사인 유사도(Cosine Similarity)
13. [NLP] 문서 유사도 분석: (2) 유클리디안 거리(Euclidean Distance)
14. [NLP] 문서 유사도 분석: (3) 자카드 유사도(Jaccard Similarity)

오늘은 워드임베딩을 이해하기 위한 희소표현과 밀집표현에 대해 알아봤습니다.
포스팅 내용에 오류가 있거나 보완할 점이 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다 :)
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다.
고맙습니다😊

728x90
반응형
Comments