욱이의 냉철한 공부

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

데이터과학/개념 : NLP

[NLP 개념정리] Word Embedding : NNLM

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

* 자료출저 및 참고논문

- 강의

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

- 논문

NPLM : A Neural Probabilistic Language Model

 


 

* Word Representation 분류체계

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은 관계, 속성의미를 내포하여 표현, 실수로 표현된 연속표현

 


* 목차

NPLM, Word2Vec

1. Neural Probabilistic Language Model (NPLM) or Neural Network Langugage Model (NNLM)

1) NPLM 모델링 과정

2) NPLM 이점

3) NPLM 문제점

 

 


 

1) NPLM 모델링

1) 입력층(Input layer)

- 차원 이해

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

 

- 보충 설명

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

 

2) 입력층 (Input layer) -> 투사층 (Projection layer)

- 차원 이해

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

 

- 내적 후 차원

Lookup테이블 e (z1) : z1 = x1 * w1 + b1

: (1 X 1200)(Concatenate) <= (4 X 300) = (4 X 10000) X (10000 X 300)

 

- 보충설명

가중치 매트릭스(E)에서필요한 열[a, glass, of, orange]과,One-hot-encoding된 Matrix(O)와 내적(참조, lookup)을 통해 Lookup 테이블 (e : embedding vector) 를 도출

가중치 매트릭스(E) Lookup 테이블 (e : embedding vector)를 학습을 통해 도출하는 것이 중요.

 

* One-hot-encoding된 Matrix(O1)를 사용하지 않는 이유 2가지

첫째, 벡터값 1, 0이 내적하면 0이 됨, 이것은 단어들 사이의깊은 관계(유의어, 반의어, 상위어 등)찾을 수 없음

둘째, One-hot-encoding Matrix는 sparse한 벡터, 즉 이것을 빽빽한 dense 벡터로 변환해야 함.

* 투사층 (Projection layer)

활성화 함수가 존재하지 않는 선형층(linear layer)

 

 

3) 투사층 (Projection layer) -> 은닉층 (Hidden layer)

- 차원 이해

(w2,b2) : (1200 X w2)

 

- 내적 후 차원

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

* 은닉층 (Hidden layer)

활성화 함수가 존재하는 비선형층(nonlinear layer)

 

 

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

- 차원 이해

(w3,b3) : (w2 X 10000)

 

- 내적 후 차원

z3 = z2 * w3 + b3 : (1 X 10000) = (1 X w2) X (w2 X 10000 )

 

 

5) 출력층(Output layer)

- 차원 이해

예측 Y = softmax(z3) : 10000

 

- 보충 설명

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

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

 

- softmax식

* 이해 필요

 

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

- L(예측값, 실제값)

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

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

 

 

 

 

2) NPLM 목적 및 이점

- 목적

충분한 양의 훈련 코퍼스를 학습한다면 수많은 문장에서 유사한 목적으로 사용되는 단어들의 관계(유사성)을 찾게됨

이것을 피쳐를 통한 임베딩 벡터값으로 표현

이런 훈련과정 후 다음 단어를 예측하는데 있어 훈련 코퍼스에서 없던 단어 시퀀스라고 하더라도 선택 가능하게 됨.

- 이점 : sparse vector -> dense vector

NPLM은 밀집 벡터(dense vector)를 사용하면서 단어의 유사도를 표현.

원 핫 벡터의 고차원 더불어 희소문제(sparsity problem)을 해결.

이 것은 저차원으로 저장공간도 해결, N-gram에서 겪었던 공간문제(모든 그램 저장)도 해결

 

 

3) NPLM 문제점

1. NPLM은 업데이트 할 파라미터들 매우 많음. 그렇기에 계산복잡성 큼

=> Word2Vec으로 해결

 

2. N-gram과 마찬가지로, 정해진 n개의 단어만 참고함. 그렇기에 버려지는 단어들의 문맥정보 참고 못함

=> RNNLM(Recurrent Neural Network Language Model)로 해결

 

 


 

 

* 나의생각

개인적으로, 딥러닝은 차원이해가 가장 중요하다고 생각합니다.

즉 피쳐변화의 이해입니다.

구체적으로 어떻게 일반화되는 피쳐가 추출되는건지, 고수준 및 유의미한 피쳐를 추출하고 있는지, 피쳐들이 sparse 한지 dense 하는지, 이런 부분을 가장 깊게 이해해야 합니다.

금융데이터를 다룰 제 연구를 위해서도 이 부분이 가장 중요하다고 생각합니다.

(신속하게 공부하여, 많은 인사이트를 찾겠습니다.)

그러므로 차원이해 위주의 Word2Vec을 포스팅하겠습니다.

=> 핵심은 결국 가중치 매트릭스(E)

=> 각 layer의 차원 이해 필요

그나저나 앤드류님의 행, 열하고, 다른 논문들에서의 행, 열하고 다른 것 같아 헷갈림..

다 똑같이 표기해주세요 ㅜ

가중치매트릭스에서 단어수가 행으로 갑니까 열로 갑니까..?

전 W1(가중치매트릭스)에서 단어(10000개)를 행으로 표기하고, 유사성을 알아낼 관계피쳐(300)를 열로 갑니다.