이 포스트는 책 '한국어 임베딩(자연어 처리 모델의 성능을 높이는 핵심 비결 Word2Vec에서 ELMo, BERT까지, 이기창 저)'을 기반으로 작성되었습니다.
NPLM (Neural Probabilistic Language Model)은 2003년에 개발된 임베딩 기법으로, n-1개 단어 순서 기반으로 다음 n번째에 등장할 단어를 맞추는 n-gram 언어 모델이다. (논문 참고)
이는 기존의 언어 모델이 가지고 있던 문제점을 보완한 모델이다.
- 존재하지 않는 n-gram에 대한 확률 0으로 부여하는 문제점
- 차원의 저주 : n을 크게 설정하면 위와 같이 확률이 0이 되는 경우가 빈번하게 발생하는 문제점
- 단어 간 유사도를 계산할 수 없는 문제점
전반적인 모델 구조는 다음과 같으며, 아래부터 입력받아 위에서 출력되는 구조이다.
k를 임의의 숫자라고 한다면, w_k은 문장에서 k번째에 등장하는 단어를 말하며 index for w_k은 k번째임을 가리키는 one-hot vector이다.
행렬 C는 각 단어에 대한 벡터가 행으로 쌓여 있는 행렬이며, 초기값은 랜덤으로 부여된다.
또한 t는 예측할 단어가 등장하는 위치이고, n은 입력되는 단어 개수이다.
그래서 t-(n-1)번째부터 t-1번째 단어에 대한 one-hot vector값이 입력으로 들어가게 되는 것이다.
- 입력층 (input layer)
t-(n-1)~t-1번째 단어 벡터 위치를 나타내는 one-hot vector와 행렬 C가 내적으로 곱해지며 해당 단어의 벡터값이 나온다. 이 나오는 벡터값들을 각각 x_k라고 하며 옆으로 concatenate하여 x로 나타낸다. - 은닉층 (hidden layer)
tanh 함수를 이용하여 score vector 값을 구하며, 공식은 다음과 같다. (b, W, U, d, H는 매개변수)
y = b + Wx + U*tanh(d+Hx) - 출력층 (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 |