5. Language modeling
5-1. Language Modeling
•
단어 시퀀스에 확률을 할당하는 일을 하는 모델 → 가장 자연스러운 단어 시퀀스를 찾아내는 모델
•
이전 단어들로부터 다음 단어를 예측하는 task를 수행
•
다른 유형으로는 주어진 양쪽의 단어들로부터 카운데 비어있는 단어를 예측하는 모델도 있다. → CBOW?
•
조건부 확률(이전 단어들이 주어졌을 때, 다음 단어를 예측하도록 하는 것)
•
각각의 단어가 등장할 조건부 확률을 모두 곱해간다.
◦
e.g. (단어1 등장 확률) * (단어1 주어졌을 때, 단어2 등장 확률) * …
•
e.g. “비행기를 타려고 공항에 갔는데 지각을 하는 바람에 비행기를 [?]“
◦
인간 : 문맥을 통해 ”놓쳤다“라고 예측
◦
기계 : 앞 단어들의 고려하여 후보가 될 수 있는 단어들을 서로 비교해보고, 가장 높은 확률에 해당하는 단어를 선택(예측)
•
실생활의 Language Model 사용 예시 : 검색 엔진에서 사용된다.
5-2. Statistical Language Model, SLM
•
언어 모델의 전통적인 접근 방법
5-2-1. 조건부 확률 & 문장에 대한 확률
•
각 단어는 문맥이라는 관계로 인해 이전 단어의 영향을 받아 나온 단어이다.
•
모든 단어로부터 하나의 문장이 완성된다.
•
e.g. “An adorable little boy is spreading smiles”
◦
P(An) * P(adorable | An) * P(little | An adorable) * P(boy | An adorable little) * P(is | An adorable little boy) * P(spreading | An adorable little boy is) * P(smiles | An adorable little boy is spreading)
5-2-3. Count-based Approach & Sparsity Problem
•
문장의 확률을 구하기 위해서는 다음 단어에 대한 예측 확률을 모두 곱해야한다
•
그러면 SLM은 이전 단어로부터 다음 단어에 대한 확률을 어떻게 구하는가?
⇒ 카운트에 기반한 확률 계산
•
e.g. An adorable little boy에서 is가 등장할 확률
•
“100번 중에 30번 등장했으면 P(is | An adorable little boy) = 0.3
•
하지만 여기서 Sparsity 문제가 존재한다.
⇒ 위의 문장을 예로 들면 “An adorable little boy” 라는 문장이 학습하는 corpus내에서 관측되지 못했을 때, 분모가 0이 되어 확률을 정의할 수도 없어진다.
•
다시말해, Train Corpus 내에 확률을 계산하고 싶은 문장이나 단어가 없을 수도 있다는 한계점이 존재한다.
•
그래서 N-gram 언어 모델이 등장!
5-3. N-gram Language Model
•
N-gram도 카운트에 기반한 통계적 접근을 사용한다는 점에서 SLM의 일종이긴 하다.
→ SLM과는 다르게 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 접근 방식
•
N개의 연속적인 단어 나열을 의미
◦
Corpus에서 n개의 단어 뭉치 단위로 끊은 것을 하나의 토큰으로 간주
▪
Unigram → n이 1일 때
•
an, adorable, little, boy, is, spreading, smiles
▪
Bigram → n이 2일 때
•
an adorable, adorable little, little boy, boy is, is spreading, spreading smiles
▪
Trigram → n이 3일 때
•
an adorable little, adorable little boy, little boy is, boy is spreading, is spreading smiles
▪
4-grams, 5-grams……(4이상일 때는 그대로 숫자를 붙여 표현)
•
N-gram을 통한 언어 모델에서는 다음에 나올 단어의 예측은 오직 n-1개의 단어에만 의존
◦
여기서 문제가 발생! → e.g. “An adorable little boy is spreading” 뒤에 나올 단어를 예측하는 상황
•
이 때, 사전에 Train Corpus로 학습 한 결과에 따라 잘못된 선택을 할 수 있다.
•
(갑자기 쪼끄맣고 사랑스러운 남자아이가 모욕을 퍼트리는 상황 발생..?)
•
만약 앞문장까지 고려한 SLM의 경우에는 이런 일이 없었을 것이다.
5-4. N-gram Language Model의 문제점 정리
1. Sparsity Problem
•
기존의 SLM에 비해서 확실히 낫겠지만, 여전히 sparsity 문제가 존재해서 만약 처음 보는 토큰일 경우 확률을 정의할 수가 없어진다.
2. Corpus 내 모든 n-gram에 대한 count를 저장해줘야한다.
•
n이 커지거나 corpus가 증가하면 모델의 크기가 증가하여 저장 문제가 발생
N을 선택하는데 Trade-Off 문제 존재
1.
N 값이 작아질 때
a.
기존에 비해 Sparsity 문제를 많이 해소할 수 있다.
b.
모든 토큰에 대한 카운트를 해야하므로 모델 크기 증가 → 저장 문제 발생
c.
성능이 다소 떨어지게 된다.
2.
N 값이 커질 때
a.
Sparsity 문제 발생
b.
기존에 비해 성능이 향상된다.
•
그래서 보통 N-gram의 크기는 최대 5를 넘지 않도록 권장된다.
•
월스트리트 저널의 3800만개 단어토큰 n-gram으로 학습한 모델의 성능 표
◦
N이 커질수록 성능이 향상되는 것을 확인할 수 있다.
•
Perplexity? ⇒ LM의 성능 평가지표 중 하나
◦
값이 낮을수록 언어모델의 성능이 우수하다고 평가
◦
단어의 수로 정규화된 test data에 대한 확률의 역수
•
LM의 평가 방법?
1.
Extrinsic Evaluation(외적 평가)
a.
모델을 실제 태스크(e.g. translation)에 사용하고 loss/accuracy를 측정함으로써 모델을 평가
b.
명확하게 얼마나 모델이 다른지를 비교할 수 있으나 연산에 있어 비용이 발생하며, 전체 시스템을 학습해야하므로 시간이 소요
2.
Intrinsic Evaluation(내적 평가)
a.
특정 task와 무관하게 LM 자체를 평가할 수 있는 방식
b.
외적 평가보다 뛰어나진 않지만 모델을 빠르게 비교할 수 있음
c.
Perplexity가 내적평가임
•
N-gram 문장 생성 예시
•
문법적으로는 양호하나, 문맥적으로 불완전하다.
•
N 값을 늘린다면 문제를 해소할 수 있으나, Sparsity 문제가 발생할 수도 있다.