1. W2V (Word2Vec)
개념
2013년 구글 연구팀이 발표한 단어 임베딩 모델이다.
주변에 있는 단어들끼리 코사인 유사도가 높도록 임베딩한다.
방법
기본적으로, 주위에 있는 단어들을 예측하는 과정에서 각 단어 벡터가 학습된다.
예측하는 방법에는 CBOW 와 Skip-gram 두 방식이 있다.
- CBOW
- 주위에 있는 단어들을 가지고 중간에 위치하는 하나의 단어를 예측한다.
- Skip-gram
- 중간에 위치하는 하나의 단어를 가지고 주위에 있는 단어를 예측한다.
- 일반적으로 Skip-gram 이 학습 데이터가 더 많아서 CBOW 보다 임베딩 품질이 더 우수하다.
Skip-gram 에서 학습 데이터를 구축하는 방법은 다음과 같다.
형태소 분석이 끝난 문장 코퍼스(단어 단위로 띄어쓰기가 되어있는 글 모음)가 있을 때,
우리가 설정한 윈도우 사이즈만큼 해당 코퍼스 내 각 단어를 중심단어로 두고 단어 쌍을 만들며 학습데이터를 만든다.
예를 들어, [개울가 에서 속옷 빨래 를 하는 남녀]
는 다음과 같이 구성될 수 있다.
- 윈도우 사이즈 :
2
- 중심 단어 :
속옷
- 구성되는 학습데이터 :
[속옷, 개울가]
,[속옷, 에서]
,[속옷, 빨래]
,[속옷, 를]
이렇게 구성된 데이터는 포지티브 샘플이라고 한다.
다음으로 네거티브 샘플이라는 것을 구성할 건데, 위 중심단어와 주변 단어가 아닌 단어를 랜덤하게 뽑아서 단어쌍을 구성하는 것이다.
예를 들어, [속옷, 책상]
, [속옷, 사과]
등이 될 수 있다.
이런 네거티브 샘플은 1개의 포지티브 샘플당 k
개로 구성한다. k
는 하이퍼 파라미터로, 작은 코퍼스에서는 5~20
, 큰 코퍼스에서는 2~5
가 적당하다고 한다.
예를 들어, k = 2
일 경우, [속옷, 개울가]
, [속옷, 책상]
, [속옷, 사과]
가 한 학습의 인풋 데이터가 되겠다.
W2V 은 더 나아가, 이 네거티브 샘플링을 할 때 보다 섬세하게 샘플을 뽑아낸다. 즉, 자주 등장하지 않는 희귀한 단어가 잘 뽑힐 수 있도록 단어 등장 확률을 설계했다.
한편, 서브샘플링이란 기법을 통해 모든 데이터(단어 쌍)을 학습하지 않고, 일부만 학습한다. 이 때, 자주 등장하는 단어를 자주 학습시키는 것은 비효율적이라고 보아, 자주 등장하지 않는 단어가 서브샘플에 들어가도록 단어의 서브샘플링 확률을 설계했다.
W2V 은 이제 이렇게 구성한 학습 데이터를 가지고 이진분류 학습을 한다. 즉 해당 쌍이 포지티브 샘플(+) 인지, 네거티브 샘플(-) 인지 학습한다.
이 때, 업데이트 되는 매트릭스는 2가지인데, 둘 다 d
차원을 단어 벡터의 행렬이다.
하나의 매트릭스 U
는 각 중심 단어를 행으로 d
차원을 가지는 행렬이고,
다른 하나 V
는 각 주변 단어를 행으로 d
차원을 가지는 행렬이다.
여기서 d
차원은 하이퍼 파라미터다. 보통 100~300
정도가 적당하다고 한다.
결과적으로 이진분류를 학습하며 두 매트릭스는 업데이트 되간다.
학습이 완료되면 이 U
또는 V
를 단어의 임베딩으로 사용하면 된다.
핵심 키워드
- Skip-gram, 포지티브 샘플링, 네거티브 샘플링, 서브 샘플링, 이진 분류
2. D2V(Doc2Vec) 이란?
개념
W2V 에 이어 2014년 구글 연구팀이 발표한 문서 임베딩 모델이다.
타겟 단어와 이전 단어 k
개가 주어졌을 때, 이전 단어들 + 해당 문서의 아이디로 타겟 단어를 예측하는 과정에서 문맥이 비슷한 문서 벡터와 단어 벡터가 유사하게(코사인 유사도) 임베딩된다.
방법
예측하는 방법에는 PV-DM 과 PV-DBOW 두 방식이 있다.
PV-DM 에서 학습 데이터를 구축하는 방법은 다음과 같다.
예를 들어, paragraph_1
이라는 문서에서 the cat sat on the mat
라는 문장이 있을 때, 다음과 같이 학습 데이터가 구성된다.
- 윈도우 사이즈 :
k = 3
[pragraph_1, the, cat, sat]
-on
[pragraph_1, cat, sat, on]
-the
[pragraph_1, sat, on, the]
-mat
D2V은 paragraph
에서 단어를 예측하며 로그 확률 평균을 최대화하는 과정에서 학습된다.paragraph_id
가 학습의 입력 데이터로 들어가기 때문에, 문맥이나 단어가 paragraph
벡터에 녹아든다는 생각을 해볼 수 있다.
각 문서 paragraph
는 별도의 문서의 수 x d 차원
의 행렬에 담기는데,
학습이 완료된 후 이 행렬을 이용하여 paragraph
의 임베딩된 벡터를 사용하면 된다.
PV-DBOW 는 반대로, 하나의 paragraph_id
로 해당 문서 내 단어들을 예측하는 과정에서 학습된다.
핵심 키워드
- paragraph_id, 로그 확률 평균, PV-DM, PV-DBOW
'데이터와 함께 탱고를 > 머신러닝' 카테고리의 다른 글
회귀 모델에 대한 성능 평가 지표들 (0) | 2020.02.06 |
---|---|
분류 모델에 대한 성능 평가 지표들 (0) | 2020.02.06 |
코사인 vs 유클리디안 유사도, 케이스로 이해하기 (0) | 2019.12.11 |
Catboost 주요 개념과 특징 이해하기 (7) | 2019.10.23 |
Categorical Value Encoding 과 Mean Encoding (3) | 2019.09.07 |