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: (4) Negative Sampling 개념 및 소개 본문

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

[NLP] Word2Vec: (4) Negative Sampling 개념 및 소개

Tony Park 2022. 4. 15. 17:00
728x90
반응형

📚목차

1.  등장배경
2.  개념
3.  Sample 선정
4.  Word2Vec 성능

1.  등장 배경

Negative Sampling 방법은 Word2Vec의 CBOWSkip-gram 모두 단어 개수가 많아질수록 계산 복잡도가 증가하여 연산 속도가 저하된다는 한계점을 보완하기 위해 제안되었습니다. CBOW와 Skip-gram의 목적함수는 아래와 같습니다.

 

$$ \mathcal{L}_{CBOW} = -\sum_{j=1}^{|V|}y_{j}log(\hat{y}) $$

 

$$ \mathcal{L}_{Skip-gram} =  -\sum_{j=0, j\ne{m}}^{2m}\sum_{k=1}^{|V|}y_{k}^{(c-j)}\log\hat{y_{k}}^{(c-j)} $$

 

수식에서 알 수 있듯이, CBOW와 Skip-gram는 역전파 과정에서 단어 집합의 크기(\(V\))만큼 연산이 필요합니다. 따라서 단어 개수가 많아질수록 계산 복잡도 역시 높아지고, 이는 모델 학습 속도 저하를 유발합니다. 즉, 기존 Word2Vec 방식은 모든 단어의 임베딩 벡터값을 업데이트합니다. 예를 들어, 기존 Word2Vec은 현재 window 내 타겟 단어와 주변 단어가 '고양이', '츄르', '참치', '그루밍'과 같은 단어라고 해보겠습니다. 기존에는 이러한 단어와 함께 등장하기에는 거리가 먼 '맥북', '정수기', '세탁기'와 같은 수많은 단어의 임베딩 벡터까지 업데이트하는 비효율적인 학습 방식을 사용하였습니다. Negative Sampling은 이러한 계산 복잡도를 줄이기 위해 고안된 효율적인 기술입니다. 이어지는 섹션에서 각각 알아봅니다.

2.  개념

Negative Sampling은 학습 과정에서 전체 단어 집합의 임베딩 벡터를 업데이트하지 않고 일부 단어 집합만 업데이트하는 방법입니다. 여기서 일부 단어 집합은 다음과 같이 \(2\)가지로 구성됩니다. 첫째, 앞서 예시로 사용했던 '고양이', '츄르', '참치', '그루밍'과 같이 타겟 단어 주변에 등장한 단어로 구성된 Positive sample입니다. 둘째, '맥북', '정수기', '세탁기'와 같이 타겟 단어 주변에 등장하지 않은 단어로 구성된 Negative sample입니다.

즉, Negative Sampling 기법은 타겟 단어와 주변 단어인 Positive sample은 모두 업데이트하고, 타겟 단어와 거리가 먼 Negative sample은 일부만 추출해서(sampling) 업데이트합니다. 즉, '고양이'와 같은 타겟 단어와 거리가 먼 전체 단어가 아닌 일부 단어(e.g., '맥북', '정수기', '세탁기')만 업데이트하는 것입니다.

3.  Sample 선정

3.1.  Sample 선정 기준

그럼, 어떤 기준으로 Negative Sample을 추출할까요? Negative Sampling은 전체 문장에서 자주 사용되는 단어에 높은 가중치를 부여하고, 우선적으로 해당 단어를 선별합니다. 특정 단어가 선별될 확률 \(P()\)의 수식은 아래와 같습니다.

 

$$ P_{n}(w_{i}) = (\frac{f(w_{i})}{\sum_{j=1}^{n}f(w_{j})})^{3/4} $$

 

여기서 \(w_{i}\)는 \(i\)번째 단어를 의미하고, \(f(w_{i})\)는 해당 단어의 출현 빈도를 의미합니다. 즉, \(\sum_{j=1}^{n}f(w_{j})\)는 사실 중복을 허용한 전체 단어의 수입니다. 논문에 따르면, \(\frac{3}{4}\)은 상수인데, 이 값으로 제곱을 취해 주었을 때 성능이 가장 우수하다고 합니다. 

3.2.  Sample 선정 개수

그럼, Negative sample은 몇 개를 선별하는 게 효과적일까요? 정답은 데이터셋의 크기에 따라 다릅니다. 논문에 따르면, 학습 데이터셋이 작을 때는 \(5\)~\(20\)개 사이의 Negative sample을 추출하는 게 효과적이고, 학습 데이터셋이 클 경우 \(2\)~\(5\)개 사이의 sample을 선정하는 게 효과적이라고 합니다. 

4.  성능

Word2Vec의 성능은 다음과 같으며 SGNS가 가장 우수한 것으로 알려져 있습니다.

 

CBOW < Skip-gram < Skip-gram with Negative Sampling(SGNS)

 

흔히 Word2Vec에서 Skip-gram 방법을 사용한다고 하면 Negative Sampling이 적용된 SGNS를 사용한다고 간주하시면 됩니다.

📚 참고할 만한 포스팅

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)

오늘은 Negative Sampling의 개념과 등장배경에 대해 알아봤습니다.
포스팅 내용에 오류가 있거나 보완할 점이 있다면 아래에 👇👇👇 댓글 남겨주시면 감사드리겠습니다 :)
그럼 오늘도 즐겁고 건강한 하루 보내시길 바랍니다.
고맙습니다😊

728x90
반응형
Comments