본문 바로가기

머신러닝/[딥러닝을 이용한 자연어 처리]

Neural N-Gram Language Model

학습목표

신경망을 이용한 n-gram 언어 모델을 학습하고 이전에 해결하지 못한 데이터 희소성 문제를 해결해봅니다.

핵심키워드

  • Neural N-Gram Language Model
  • 데이터 희소성(Data Sparsity)
  • 이산 공간(Discrete Space)
  • 연속 벡터 공간(Continuous Vector Space)

학습하기

 앞서, 고전적 방법인 N-gram Language model (Counting model)에 대해 알아봤고, 두 가지 문제가 있다고 말했습니다. 데이터 희박성과 Long-Term Dependency. 기존 N-gram 방법론으로는 두 가지 문제를 만족스럽게 해결하는게 불가능했고, 그래서 Neural N-gram을 사용해서, 조금 더 개선했습니다. 

 처음에는 인풋으로 N-gram, 그러니까 컨텍스트 토큰을 벡터로 만들구요. Sentence representation을 추출해서, Concat했어요. 이 이유는 N-gram이니까, n이라는 상수값으로 컨텍스트의 길이가 다 같아서, 뭐 Average를 취하지 않아도 되기 때문입니다. 쨋든 이렇게 Concat한 결과는 사이즈가 같은 여러 벡터가 나올 것이고, 이걸 적당히 그래프를 통과시키고 소프트맥스로 확률화시켰죠. 

 사실 이러한 구조가, NN을 통해서 자연어를 처리한 최초의 구조입니다. 이렇게 하면, 기존의 카운팅 기반 N-gram 모델이 해결하지 못했던 데이터 희박성 문제를 해결할 수 있습니다. 처음 본 N-gram에 대해서도 어떤 값을 할당할 수 있게 되는 거죠. 어떻게 되는 거냐면, 우리가 토큰들을 이산 공간에 옮겨놨었기 때문에, 데이터 희박성 문제가 굉장히 크게 나타났던건데, 이걸 연속 공간으로 바꾸면 되는 거겠죠. 앞서 봤던 chasing a llama는 데이터셋에 없었지만, 거기에 chasing a cat, chasing a dog, chasing a deer이런 건 있었다고 해 봅시다. 그럼 전자가 후자들과 비슷하다는 것만 모델이 알 수 있다면, 카운팅이 한 번도 안됬더라도, 어느정도 확률에 대한 간접 추측이 가능하겠죠. 

 간단하게 예를 들어보겠습니다. 위의 Training examples에 3개의 문장이 있습니다. 기존 N-gram방법론에서는 three 뒤에 group이 나올 확률을 계산할 수가 없어요. 그런 말이 나온 적이 없으니까요. 0이겠죠. 그런데 저 문장들을 연속 공간으로 옮겨놓으면, 계산이 가능하죠. 우리가 잘 임베딩시켰다면, three와 four는 비슷한 공간에 위치할것이고, teams와 groups도 비슷한 공간에 위치했을 테니까, 이 값들을 적절히 연산한다면, 충분히 유효한 확률값을 계산할 수 있게 되는거죠. 본 적이 없는 Phrase라도요. 이렇게 Neural N-gram은 데이터 희소성 문제를 해결한겁니다.

 실전에서는 위와 같이 진행하면 되구요. 마지막에 Perplexity라는게 있는데, 이건 Language model들의 평가지표입니다. 이것의 의미는 컨텍스를 봤을 때, 그 다음 단어를, 얼마나 작은 서브셋안에서 고를 수 있는지를 말하는 겁니다. ppl이 1이라는 건, 인풋을 보면 바로 다음 토큰=타겟이 뭔지 딱 1개로 확정지을 수 있다는 겁니다. 10이라면 다음 토큰이 10개 내외라는 거겠죠. 이상입니다.

'머신러닝 > [딥러닝을 이용한 자연어 처리]' 카테고리의 다른 글

Questions  (0) 2020.04.17
Long Term Dependency  (0) 2020.04.15
N-Gram Language Models  (0) 2020.04.13
Autoregressive language modeling  (1) 2020.04.12
Overview: Language Modeling  (0) 2020.04.11