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-02 06:06
관리 메뉴

Hey Tech

[NLP] Word2Vec: (1) 개념 본문

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

[NLP] Word2Vec: (1) 개념

Tony Park 2022. 4. 7. 17:09
728x90
반응형

📚 목차

1. Word2Vec 개념
2. 희소표현과의 차이점
3. 언어모델과의 차이점

1.  Word2Vec 개념

Word2Vec는 Word to Vector라는 이름에서 알 수 있듯이 단어(Word)를 컴퓨터가 이해할 수 있도록 수치화된 벡터(Vector)로 표현하는 기법 중 하나입니다. 구체적으로는 분산표현(Distributed Representation) 기반의 워드임베딩(Word Embedding) 기법 중 하나입니다. 분산표현이란 분포가설(Distibutional Hypothesis) 가정 하에 저차원에 단어 의미를 분산하여 표현하는 기법입니다. 분포가설은 "유사한 문맥에 등장한 단어는 유사한 의미를 갖는다"라는 가정입니다. 여기서 단어를 벡터화하는 작업을 워드임베딩(Word Embedding)이라고 부르며 임베딩 된 벡터를 임베딩 벡터라고 부릅니다.
예를 들어, 축구라는 단어는 골키퍼, 공격수, 전반전, 헤딩과 같은 단어들과 주로 함께 등장하죠. 따라서 해당 단어들을 벡터화하면 유사한 벡터값을 갖게 됩니다. 예를 들어, 'Apple'이라는 단어의 임베딩 벡터는 아래와 같습니다. 물론 값은 예시일뿐입니다.

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

위와 같은 단어 벡터 간 연산을 하면 어떤 결과가 나올까요? Korean Word2Vec 웹사이트에서는 한국어 단어 벡터 간 덧셈, 뺄셈과 같은 연산을 해 볼 수 있습니다. 예를 들어, 아래 그림 1과 같이 "한국-서울+뉴욕"이라는 단어 벡터 간 연산 결과, '미국'이라는 단어가 나온 것을 확인할 수 있습니다. 이를 통해 Word2Vec이 국가명과 수도명의 의미를 고려하여 벡터 연산을 수행한 것을 알 수 있습니다.

그림 1. 한국어 Word2Vec 기반 단어 벡터 간 연산 예시

2.  희소표현과의 차이점

분산표현과 반대되는 개념으로 희소표현(Sparse Representation)과의 차별점에 대해 알아봅니다. 희소표현은 단어를 벡터화할 때 고차원에 각 차원을 분리하여 표현방법으로, 원핫인코딩, Bag of Word, DTM과 같은 단어 표현기법이 있습니다. 앞서 사용한 'Apple'이라는 희소표현 중 하나인 원핫인코딩 방법으로 나타내보겠습니다. 원핫인코딩 기반의 단어 벡터를 원핫벡터라고 부르는데, 이 벡터는 단어 집합의 크기만큼 차원의 크기가 결정됩니다. 예를 들어, 단어 집합의 크기가 10만이고 'Apple'이 원핫벡터에서 3번째 인덱스에 해당된다고 가정하면 아래와 같이 표현할 수 있습니다.

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

원핫인코딩은 단어가 해당하는 인덱스의 값만 \(1\)로 표현하고 나머지는 \(0\)으로 표현합니다. 따라서 3번째 인덱스의 값만 \(1\)이고 나머지 \(999,997\)개의 인덱스 값은 모두 \(0\)입니다. 또한, 원핫인코딩과 같은 희소표현은 단순히 단어가 해당하는 인덱스에 단어가 등장했는지 여부와, 조금 더 나아가면 단어가 몇 번 등장했는지 알려주는 역할을 수행합니다(conf., BoW, DTM).
정리하자면, 희소표현은 다음과 같은 한계점이 있습니다. 첫째, 단어 집합의 크기만큼 차원이 커지므로 벡터 공간의 낭비를 유발합니다. 둘째, 단어별로 차원이 독립적으로 분리되기 때문에 단어의 의미 정보가 사라집니다. 반면, Word2Vec와 같은 분산표현에서는 사용자가 벡터 공간의 크기를 결정할 수 있기 때문에, 차원의 크기를 줄일 수 있어 벡터 공간의 낭비를 줄일 수 있습니다. 또한, 단어의 의미를 벡터에 분산하여 표현하기 때문에 단어 간 의미의 유사성도 비교할 수 있다는 차별성이 있습니다.

3.  언어모델과의 차이

Word2Vec은 단어를 벡터화하여 표현하는 워드임베딩 기법 중 하나로, 분산표현으로 단어의 의미까지 고려할 수 있다고 했습니다. 그래서 Word2Vec은 주로 의미론적 유사성을 가진 단어를 감지하거나 문장 내 특정 위치에 올 최적의 단어를 예측하는 데 활용합니다. 언어 모델(Language Model) 역시 문장 내 특정 위치에 올 적절한 단어를 예측하는 모델입니다. 그렇다면, Word2Vec과 같은 워드임베딩과 언어 모델의 차이는 무엇일까요? 언어 모델에 대한 자세한 내용은 이곳을 참고해 주세요.
워드임베딩과 언어 모델의 차이점은 문장의 맥락(Context)을 고려하는지 여부입니다. 즉, 워드임베딩은 문장의 맥락을 고려하지 못하지만, 언어 모델은 문장의 맥락까지 고려합니다. Word2Vec과 같은 워드임베딩은 단어마다 고정된 벡터를 갖습니다. 즉, 고양이라는 단어는 상수(Constant)처럼 고정된 벡터를 갖는 것입니다. 예를 들어, 아래와 같이 2가지 문장이 있다고 가정해 보겠습니다.

(문장1) 고양이가 생선을 먹는다.
(문장2) 생선이 고양이를 먹는다.

워드임베딩의 경우, 2가지 문장이 문맥적으로 매우 다른 문장이지만 단어들은 각각 고정된 벡터를 갖기 때문에 2번 문장을 생성해낼 수도 있습니다. 반면, 고도화된 언어모델은 문장의 맥락을 파악할 수 있기 때문에, 2번째 문장이 어색하다는 것을 파악할 수 있고 2번째 문장보다 첫 번째 문장을 생성할 가능성이 매우 높죠. 이처럼, 문장의 맥락까지 고려할 수 있는 우수한 성능 덕분에, 최근 자연어처리 분야에서는 딥러닝 기반의 언어모델이 각광받고 있습니다.

📚 참고할 만한 포스팅

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)

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

728x90
반응형
Comments