들어가기 앞서 간단히 설명하자면,
위의 그림과 같이 Language Modeling은 학습을 통해 다음에 어떤 단어가 나올지 예측하는 작업입니다.
조금 더 형식적으로는, 다음 단어의 확률 분포를 계산하는 것입니다.
다음 수식에서와 같이 다음 단어는 vocabulary 에 있는 어떠한 단어도 올 수 있습니다.
언어모델을 직관적으로 알 수 있는 다른 예 입니다.
나는 오늘 늦잠을 자서, 학교에 [ ].
우리는 [ ]에 어떤 단어가 올 것인지 쉽게 예상할 수 있습니다. 우리는 지식에 기반하여 나올 수 있는 여러 단어들을 후보에 놓고, '늦었다'라는 단어의 확률이 가장 높다고 판단하였기 때문입니다.
1. Statistical Language Model (SLM, 통계적 언어모델)
1.1) Conditional Probability (조건부 확률)
P(A)와 P(B)의 확률은 다음과 같이 나타낼 수 있습니다.
조금 더 생각해보면 4개의 확률 관계에 대해서 다음과 같이 표현할 수 있습니다.
이것은 연쇄 법칙(Chain Rule)이라고 하며 일반적인 형식의 수식의 일반화는 다음과 같습니다.
이 정의를 가지고 문장에서 다음 단어를 예측할 수 있습니다.
1.2) Probability of a sentence (문장의 확률)
다음 문장이 있다고 생각해보겠습니다. ex) "나는 오늘 늦잠을 자서, 학교에 늦었다."
그렇다면 위 1.1 을 이용한 문장의 확률은 다음과 같습니다.
문장의 확률은 앞의 단어가 주어졌을 때 각 단어가 다음과 같이 다음 단어로 나타날 확률을 곱한 것으로 구성됩니다.
식을 보여드리면 다음과 같습니다. 다음은 "나는 오늘 늦잠을 자서 학교에 늦었다" 문장이 나올 확률을 구한 것입니다.
1.3) Count-based approach (카운트 기반 접근)
다음 문장이 오는 것은 다음과 같이 계산 할 수 있습니다.
"나는 오늘 늦잠을 자서" 다음에 "학교에" 가 올 확률을 구하는 것입니다.
총 "나는 오늘 늦잠을 자서"가 100번 나타났을 때 "학교에"가 45번 나타났으면 45% 확률을 가지는 것입니다.
SLM 한계
Statistical Language Model의 한계점은 방대한 데이터에 해당 문장이 존재해야하며, "나는 오늘 늦잠을 자서" 다음 " 학교에" 와 같이 전체적으로 해당 문장이 나온적이 있어야 확률을 가질 수 있으며 해당 문장이 나타난 적이 없다면 0% 확률을 같는 한계를 가지고 있습니다.
다음으로 제시된 Language Model이 n-gram 방법입니다.
2. N-gram
SLM과는 다르게 N개의 단어만을 선택하여 확률을 계산하는 것이 N-garm입니다.
2.1) SLM의 한계 극복
SLM에서 한계를 극복하기 위해서 "나는" 다음 "오늘", "오늘" 다음 "늦잠을", "나는 오늘" 다음 "늦잠을"와 같이 선택할 수 있는 N을 이용하여 전체 문장이 아닌 예측할 문장의 이전 N개의 단어만을 이용하여 나타난 빈도를 측정하여 확률을 계산 하는 것입니다.
그럼에도 불구하고 확률을 계산할 때 Sparsity Problem (희소 문제)가 존재합니다. 기존의 SLM 보다는 0%의 확률이 나오는 것이 줄었지만 여전히 존재하지 않은 문장이 나올 경우에는 0% 확률을 가지고 있습니다.
3. Neural Network Based Language Model (인공 신경망을 이용한 언어모델)
N-gram Language Model의 한계점을 극복하기위해 분모, 분자에 숫자를 더해서 카운트 했을 때 0이 되는 것을 방지하는 등의 여러 일반화(generalization) 방법들이 존재하지만 본질적으로는 취약점을 완전히 해결하지 못하였고 N-gram 보다는 대체적으로 성능이 우수한 인공신경망을 이용한 언어모델도 존재합니다.
희소 문제는 기계가 단어 간 유사도를 알 수 있다면 해결할 수 있는 문제라고 합니다. 어디서 나온 적은 없지만 두 단어가 유사함을 학습하였으면 단어를 대신 선택하여 생성을 할 수 있습니다.
인공 신경망 언어모델 키워드 : NNLM
'Study' 카테고리의 다른 글
Git 설치하기 (window, 2.31.1) (0) | 2021.04.13 |
---|---|
TextRank, PageRank (0) | 2020.07.31 |
Markov Process (0) | 2020.04.07 |
Optimizer : RAdam - Rectified Adam (0) | 2020.03.19 |
Greedy Search (0) | 2020.03.18 |