욱이의 냉철한 공부

[NLP 개념정리] Word Embedding : Word2Vec 본문

데이터과학/개념 : NLP

[NLP 개념정리] Word Embedding : Word2Vec

냉철한 욱 2020. 4. 16. 17:56

* 자료출저 및 참고논문

- 강의

Coursera, Andrew Ng 교수님 인터넷 강의

- 논문

Word2Vec: 2013, Effcient Estimation of Word Representations in Vector Space

 


 

* Word Representation 관점 : Word Embedding 만들기

1. Discrete Representation : Local Representation

   1) One - hot Vector

       - One - hot Vector

   2) Count Based

      - Bag of Words (BoW)

      - Document-Term Matrix (DTM)

      - (TDM)

      - Term Frequency-Inverse Document Frequency (TF - IDF)

      - N-gram Language Model (N-gram)

2. Continuous Representation

   1) Prediction Based (Distributed Representation)

      - Neural Network Language Model (NNLM) or Neural Probabilistic Language Model (NPLM)

      - Word2Vec

      - FastText

      - Embedding from Language Model (ELMo) (Bidirecional Language Model (biLM) 활용)

   2) CountBased (Full Document)

      - Latent Semantic Analysis (LSA)) <-DTM

   3) Prediction Based and CountBased (Windows)

      - GloVe

*

Discrete Representation은 값 그 자체를 표현, 정수로 표현된 이산표현

Continuous Representation은 관계, 속성의미를 내포하여 표현, 실수로 표현된 연속표현


 

목차 : Word2Vec 

- Word2Vec 정의

- Word2Vec 종류

- Word2Vec 모델링 과정

- NPLM과 Word2Vec의 차이점

- Word2Vec 문제점 : 계산속도

 


 

1) Word2Vec 정의

Word(단어) 2(to) Vec(벡터)

즉 단어를 벡터로 바꾼다.

 

 

 

 

2) Word2Vec 종류

- CBOW(Continuous Bag of Words)

주변단어들을 확인하여 중심에 있는 Target을 예측

ex) The fat cat sat on the mat

- Skip-Gram

중심에 있는 단어로 주변의 Target을 예측

ex) The fat cat sat on the mat

 

- Skip-Gram이 왜이름이 Skip(건너뛰다)-Gram(몇 칸)인가?

orange를 중심으로 가까히 있는 glass를 예측(학습)할 수도 있고, 멀리 있는my를 예측(학습)할 수도 있다.

만약 윈도우 크기 6을 사용한다면(-6~orange~+6) 크기 안에서 단어를 선택할 수 있다.

orange+6의 위치에 있는 my를 학습범주 안으로 가져올 수 있는 것이다.

이처럼 몇 칸식 건너뛰어서 학습하기 때문에 Skip(건너뛰다)-Gram(몇 칸)이라고 명칭한다.

- Skip-Gram의 장점

CBOW보다 중심단어의 학습기회를 더 많이 가져가기 때문에, 학습량이 더 좋다고 할 수 있다.

3) Word2Vec 모델링 과정

ex) The fat cat sat on the mat

첫째 그림은 중심단어 sat으로 fat, cat, on, the 예측하지만,

나는 둘째 그림의 중심단어 orange를 예로 든다.

 

1. 입력층(Input layer)

- 차원 이해

x1: 10000 (원핫인코딩(단어수))

 

- 보충 설명

10000개 중에 1개만 1이고 나머지는 0인 원핫인코딩된 입력값.

2. 입력층(Input layer) -> 은닉층(Projection layer, Hidden layer)

- 차원 이해

가중치 매트릭스 (w1,b1): 10000 X 300 (원핫인코딩(단어수) X 노드수(관계피쳐))

 

- 내적 후 차원

z1 = x1 * w1 + b1 :(1 X 300)=(1 X 10000) X(10000 X 300)

 

- 보충설명

w1*x1의 내적과정에서 각 해당값을 참조한다고 하여, lookup이라고 말한다.

그리하여 나온 결과테이블인 z1을 lookup 테이블이라고 한다.

 

3. 은닉층(Projection layer, Hidden layer)

- 차원 이해

z1: 300

 

- 보충설명

첫째,여기서 사실 은닉층 하나만 있기 때문에 딥러닝이라 할 수 없다. 그냥 얕은신경망이다.

둘째,일반적인 Relu같은 활성화 함수가 따로 존재하지 않으며, 내적 결과값인Lookup 테이블만 존재한다.

4. 은닉층(Projection layer, Hidden layer) -> 출력층(Output layer)

- 차원 이해

가중치 매트릭스 (w2,b2):300 X 10000 (Lookup테이블(관계피쳐) X 노드수(단어수))

 

- 내적 후 차원

z2 = z1 * w2 + b2:(1 X 10000) =(1 X 300)X(300 X 10000)

 

- 보충설명

결국, 출력값 z2는 10000개로 이루어진 벡터값이며, 각 단어들을 의미한다.

5. 출력층(Output layer)

- 차원 이해

예측 Y= softmax(z2) : 10000

 

- 보충 설명

예측 Y 값은 최종 출력값이며 0과 1사이의 실수이고, 10000개의 각 원소의 총 합은 1이 된다.

이렇게 나온 최종 출력값, 벡터는 스코어 값이라고 명칭한다.

 

- softmax식 

6) 학습 최적화 : 손실함수(loss function) 계산

- L(예측값, 실제값)

이 손실함수를 줄이는 방향으로 역전파 실시

더불어최적의가중치 매트릭스(E)를 도출하는 방향으로 학습 진행

 

- 보충 설명

W1(가중치 매트릭스)과 W2(가중치 매트릭스) 두 개의 가중치 매트릭스가 학습되는데,

둘 중에 하나를 임베팅 벡터로 사용할 것을 결정하면 된다.

W1의 행 벡터(300차원, 관계피쳐)이나, W2의 열 벡터(300차원, 관계피쳐) 둘 중의 하나

 

4) NPLM과 Word2Vec의 차이점

1. 예측 대상 달라짐

NPLM은 언어모델을 통해 다음 단어를 예측,

Word2Vec은 워드임베딩 자체가 목적이므로 다음 단어가 아닌 중심단어를 예측하게 하여 학습에 집중

즉 전, 후 단어들을 모두 학습하면서 학습량 많아짐.

2. 모델링 구조.

Word2Vec은 활성화 함수를 사용하지 않고,

은닉층 하나인 얕은신경망이라고 할 수 있음.

3. Word2Vec의 효율성을 위한 기법들

Word2Vec은 학습 속도를 올릴 수 있는hierarchical softmax, negative sampling등의 기법을 활용함.

4. 연산량

NPLM :(n×m)+((n×m)×h)+(h×V)

Word2Vec : (n×m)+(m×v)

 

 

 

 

5) Word2Vec 문제점 : 계산속도

최종결과값 즉 확률도출을 위해분모에서 10000개의 단어를 계산하는 과정이 필요함.

10000개면 괜찮지만, 100,000 or 1,000,000개의 사이즈라면 , 계산하여분모를 합산하는 과정이 매우 느려짐.

하지만 이를 위한 해결책이 있다!!

=> 여러가지 해결책

1. hierarchical softmax

2. subsampling frequent words

3. negative sampling : 이것을 많이 사용함.