https://www.youtube.com/watch?v=0LixFSa7yts
해당 강의를 보고 나름대로의 정리를 하였다.
Language Model(LM)
먼저 언어 모델이 무엇인지 라는 질문에서 시작한다.
이전에 언급된 Word2vec, Glove 등이 이런게 "언어 모델이아니냐?" 라고 할 수있겠지만 Word2vec, 과 Glove 같은 모델들은 언어 모델이 아니라 그저 단어 간의 관계를 파악하여 단어를 벡터 공간에 할당하는 임베딩 모델이다.
그럼 언어 모델이란 무엇일까?
강의에서는 아래와 같이 말하고 있다.
Language modeling is the task of predicting what word comes next.
그냥 다음에 올 단어가 무엇인지 예측하는 모델, 모델링을 Lauguage model이라고 한다.
예를 들어 "the student opened their _____." 이라는 문장이 있을 대 their 다음에 나올 단어가 무엇인지 (books? laptop? minds?) 예측하는 작업이다.
강의에선 좀 더 formally 하게 표현하면 단어 $x^{(1)}, x^{(2)},...,x^{(t)}$ 순서의 문장이 주어지면 다음에 나올 단어 $x^{(t+1)}$ 에 대한 확률 분포를 계산하는 작업이라고 한다. 여기서 $x^{(t+1)}$ 는 단어 집합 $V= \{ w_1,...,w_{|V|} \}$ 의 어떤 단어라도 될 수 있다고 한다.
그래서 결국 LM이 우리에게 제공해주는 것은 아래의 수식으로 표현된다.
$$P(x^{(1)},...x^{(T)}) = P(x^{(1)}) \times P(x^{(2)} | x^{(1)}) \times ... \times P(x^{(T)} | x^{(T-1)},...,x^{(1)}) \\ = \prod_{t=1}^T P(x^{(T)} | x^{(T-1)} ,..., x^{(1)}$$
N-Gram model
언어 모델이 무엇인지 알았다. 이제 언어모델을 어떻게 학습해야 할까?
이에 대해 가장 전통적인 답은 n-gram model이다. n-gram 모델은 신경망, 심층 신경망 모델을 사용하기 이전에 사용된 모델이다.
굉장히 심플한 구성을 가지고 있다. 여기서 n-gram이란 n개의 연속된 단어의 뭉치, 덩어리를(chunk) 뜻한다고 한다.
n-gram의 아이디어는 굉장히 많은 양의 텍스트 corpus 에서 n-gram이 얼마나 자주 발생하는지 통계를 수집하여 이를 모델로 구축한다.
$x^{(t+1)}$의 확률은 이전의 $n-1$ 단어에 의존한다는 Markov assumption 을 따른다고 한다.
Markov assumption은 나중에 다시 공부해서 정리하도록 하고 넘어가자...
아무튼 결국 나온 n-1 시점의 빈도 수 분의 n-gram 단어의 빈도를 카운트해서 확률을 구한다고 생각하자.
$$\approx \frac{count(x^{(T+1)},x^{(T)},...,x^{(t-n+2)})}{count(x^{(T)},...,x^{(t-n+2)})}$$
Sparity problems
n-gram 모델의 중요한 문제가 있는데 이는 sparsity problem 즉 희소 문제이다. 위의 식에서 해당 확률이 발생하지 않게 된다면 어떻게 될까? 분자가 0일 경우에는 해당 단어가 나올 확률이 0이므로 구할 수 없을 것이고 분모의 경우 0으로 나눌 수 없으니 분수 자체가 성립하지 않을 것이다. 전자의 경우 엄청나게 작은 값을 추가하고 후자의 문제는 좀 더 작은 윈도우를 적용하는 backoff 방식의 부분적인 해결법이 있겠으나 결국 근본적으로 n-gram의 sparsity 문제는 해결되지 않는다.
Storage problems
또한 corpus 에서 보이는 모든 n-gram에 대해서 확률 테이블을 저장해야한다는 단점이 있다. 그래서 n 이 커질수록, corpus 가 커질수록 모델의 사이즈는 증가한다.
Fixed-window Nerual language model
가장 기본적인 신경망을 사용하는 언어 모델이다.

장점으로는 희소 문제와 모든 n-gram chunk를 저장할 필요가 있겠다.
단점으로는 n-gram의 n 처럼 윈도우 사이즈 역시 작다는 점이 있겠다. 윈도우가 커지면 그에 비례하여 모델 사이즈가 커지니 충분히 커질수 없는 조건이다. 그리도 No symmetry 하다. 각 입력 단어가 다른 가중치 값으로 곱해지면 생기는 문제라고 하는데 이는 각 단어를 동일하게 처리하지 않는다는 뜻이고 이는 일관된 패턴을 학습하기 어렵다고 한다.
RNN에 대해서는 다음장에 이어서 하겠다.
'AI,ML' 카테고리의 다른 글
| NLP - [3] LSTM RNN (1) | 2024.09.23 |
|---|---|
| NLP - [2] Language Model, RNN - (3) (0) | 2024.07.21 |
| NLP - [2] Language Model, RNN - (2) (0) | 2024.06.21 |
| NLP - [2]Word Embedding (0) | 2024.03.29 |
| NLP - [1]Introduction (0) | 2024.03.28 |