본문 바로가기

딥러닝/딥러닝을 이용한 자연어처리 입문

[딥러닝 NLP] 03. 언어 모델

# 들어가며

- 언어 모델에는 통계를 이용한 방법과 인공 신경망을 이용한 방법 존재

- 최근에는 인공 신경망을 이용한 방법(GPT, BERT 등)이 핫함

- 이번 장에서는 전통적인 통계 기반 언어 모델(Statistical Languagel Model, SLM)을 살펴봄

 

# 03-01 언어 모델이란?

1. 언어 모델

- 언어 모델(Language Model, LM) : 언어라는 현상을 모델링하고자 단어 시퀀스(문장)에 확률을 할당(assign)하는 모델

- NLP로 유명한 스탠포드에서는 LM을 grammar에 비유

- 언어 모델링 : 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업

 

2. 단어 시퀀스에 확률 할당이 필요한 이유

- 기계 번역, 오타 교정, 음성 인식 등, 언어 모델은 확률을 통해 보다 적절한 문장을 판단함

 

3. 주어진 이전 단어들로부터 다음 단어 예측하기

- n개의 단어 w가 등장하는 단어 시퀀스 W의 확률 P(W) = P(w1, w2, ..., wn)

- n-1개의 단어가(=이전 단어들) 나열된 상태에서 n번째 단어의(=예측할 다음 단어) 확률 = P(wn | w1, ..., wn-1)

- 전체 단어 시퀀스 W의 확률은 다음과 같다.

 

# 03-02 통계적 언어 모델(Statistical Language Model, SLM)

1. 조건부 확률

- 조건부 확률

- n개의 확률에 대한 조건부 확률

2. 문장에 대한 확률

- 문장의 확률 = 이전 단어가 주어졌을 때 다음 단어에 대한 예측 확률을 모두 곱한 것으로 구성

3. 카운트 기반 접근

- 다음 단어에 대한 예측 확률 = 카운트 기반 등장빈도로 계산

An adorable little boy가 100번, 그 다음에 is가 30번 등장했다면 확률은 30%

4. 카운트 기반 접근의 한계 : 희소 문제

-희소 문제(sparsity problem) : 충분한 데이터를 관측하지 못하여 언어를 정확히 모델링하지 못하는 문제

- 해결책 : n-gram 언어 모델, 일반화 기법(분모,분자에 숫자를 더해 카운트가 0 되는것 방지 Ex.스무딩, 백오프)

              : 그러나 근본적 해결책이 아니므로 결국 통계적 언어모델에서 인공신경망 언어모델로 넘어가야 함

 

# 03-03 N-gram 언어 모델

1. N-gram이란?

- N-gram : 이전에 등장한 모든 단어를 고려하는 것이 아니라 일부 단어(=n개)만 고려하는 접근 방법

- 단어의 확률을 구하고자 기준 단어의 앞 단어 중 임의의 개수만 포함해서 카운트하여 근사

- n-gram : n개의 연속적인 단어 나열. 갖고 있는 코퍼스에서 n개의 단어 뭉치 단위로 끊어서 이를 하나의 토큰으로 간주

  Ex) n의 개수에 따라 unigram, bigram, trigram, 4개 이상이면 n-gram

- 다음에 나올 단어의 예측은 오직 n-1개의 단어에만 의존

  Ex)  'An adorable little boy is spreading w' 에서 w를 예측할 때, n=4라면 w 앞의 n-1=3개의 단어만 고려 

boy is spreading w에서 w의 빈도에 따른 확률 계산 결과, w는 insults일것으로 예상

2. N-gram 언어모델의 한계

- 전체 문장을 고려한 언어 모델보다는 정확도가 떨어짐

- 조금 해소되긴 했으나 여전히 희소문제 존재

- n 선택의 trade-off 문제

 : n이 크면 희소문제 심각해지고 모델사이즈 커짐, n이 작으면 희소문제는 적어지지만 현실과 근사정확도 떨어짐

 : 따라서 n은 최대 5를 넘지 않게 권장

- 훈련에 사용된 도메인 코퍼스가 무엇이냐에 따라서 성능이 비약적으로 달라짐

# 03-04 한국어에서의 언어 모델

- 어순이 중요하지 않아 확률 기반 언어모델로 다음 단어 예측하기 어려움

- 교착어이므로 토큰화를 통해 접사나 조사 등을 분리하는 작업이 중요

  Ex. 어절 단위 토큰화시 그녀가, 그녀를, 그녀와, 그녀로, 그녀께서, 그녀처럼 등 단어수 굉장히 늘어남

- 띄어쓰기 제대로 지켜지지 않음

 

# 03-05 Perplexity

1. Perplexity : 언어 모델의 평가 방법(Evaluation metric)

- Perplexity(PPL, 헷갈리는 정도) : 언어 모델을 평가하기 위한 평가 지표로, 낮을수록 언어모델 성능 좋음

- 문장 W의 길이가 N일 때, PPL은 문장의 길이(W)로 정규화된 문장 확률의 역수

2. 분기 계수

- 분기계수(branching factor) : 선택할 수 있는 가능한 경우의 수

- PPL: 언어 모델이 특정 시점에서 평균적으로 몇 개의 선택지를 가지고 고민하고 있는지를 의미하는 분기계수

  Ex) PPL=10이라면 해당 언어 모델은 테스트 데이터에 대해서 다음 단어를 예측하는 모든 시점(time step)마다 평균 10개의 단어를 가지고 어떤 것이 정답인지 고민하고 있는 것

- PPL값 낮다 != 사람이 느끼기에 좋은 언어 모델(정량적으로 양많고 도메인에 맞는 테스트데이터 사용해야 신뢰도 높음)

 

3. 기존언어모델 VS 인공신경망 언어모델

- 페이스북팀이 PPL로 성능테스트한 결과, 인공신경망 언어모델들이 대부분 n-gram 언어모델보다 좋은 성능 보임