Search
👾

[11/24(목)] Lecture 5 : Recurrent Neural networks (RNNs)

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 문제가 발생할 수도 있다.