본문 바로가기

DATA SCIENCE/NLP

[NLP] NPLM(Neural Probabilistic Language Model)

이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다.

NPLM (Neural Probabilistic Language Model)은 2003년에 개발된 임베딩 기법으로, n-1개 단어 순서 기반으로 다음 n번째에 등장할 단어를 맞추는 n-gram 언어 모델이다. (논문 참고)
이는 기존의 언어 모델이 가지고 있던 문제점을 보완한 모델이다.

  • 존재하지 않는 n-gram에 대한 확률 0으로 부여하는 문제점
  • 차원의 저주 : n을 크게 설정하면 위와 같이 확률이 0이 되는 경우가 빈번하게 발생하는 문제점
  • 단어 간 유사도를 계산할 수 없는 문제점

전반적인 모델 구조는 다음과 같으며, 아래부터 입력받아 위에서 출력되는 구조이다.

NPLM 모델 구조

k를 임의의 숫자라고 한다면, w_k은 문장에서 k번째에 등장하는 단어를 말하며 index for w_k은 k번째임을 가리키는 one-hot vector이다.
행렬 C는 각 단어에 대한 벡터가 행으로 쌓여 있는 행렬이며, 초기값은 랜덤으로 부여된다. 
또한 t는 예측할 단어가 등장하는 위치이고, n은 입력되는 단어 개수이다.
그래서 t-(n-1)번째부터 t-1번째 단어에 대한 one-hot vector값이 입력으로 들어가게 되는 것이다.

  1. 입력층 (input layer)
    t-(n-1)~t-1번째 단어 벡터 위치를 나타내는 one-hot vector와 행렬 C가 내적으로 곱해지며 해당 단어의 벡터값이 나온다. 이 나오는 벡터값들을 각각 x_k라고 하며 옆으로 concatenate하여 x로 나타낸다.
  2. 은닉층 (hidden layer)
    tanh 함수를 이용하여 score vector 값을 구하며, 공식은 다음과 같다. (b, W, U, d, H는 매개변수)
    y = b + Wx + U*tanh(d+Hx)
  3. 출력층 (output layer)
    y값에 softmax 함수를 적용시키며, 정답 one-hot vector와 값을 비교하여 역전파(back-propagation)를 통해 학습된다.

 

반응형

'DATA SCIENCE > NLP' 카테고리의 다른 글

[NLP] FastText  (0) 2020.05.17
[NLP] Word2Vec (Skip-gram & CBOW)  (0) 2020.05.04
[NLP] 한국어 형태소 분석  (0) 2020.05.01
[NLP] 임베딩(Embedding) 방식의 종류  (0) 2020.05.01
[NLP] 임베딩(Embedding) 개념  (0) 2020.04.29