Pytorch로 시작하는 딥러닝 입문(10-02. 통계적 언어 모델: Statistical Language Model, SLM)

2024. 4. 2. 20:04딥러닝 모델: 파이토치

언어 모델의 전통적인 접근 방법인 통계적 언어 모델을 소개한다. 

 

♣ 조건부 확률

 조건부 확률은 두 확률 P(A), P(B)에 대해서 아래와 같은 관계를 갖는다. 

 

더 많은 확률에 대해 일반화해보자. 4개 확률이 조건부 확률의 관계를 가질 때 아래와 같이 표현할 수 있다. 

 

이를 조건부 확률의 연쇄 법칙(chain rule)이라고 한다. n개에 대해서 일반화해보자

 

 

♣ 문장에 대한 확률

각 단어는 이전 단어의 영향을 받아서 나온다. 그리고 모든 단어로부터 하나의 문장이 완성된다. 따라서 문장의 확률을 구하고자 할 때 조건부 확률을 사용한다. 앞서 조건부 확률의 일반화 식을 문장의 확률 관점에서 적어보면 문장의 확률은 각 단어들이 이전 단어가 주어졌을 때 다음 단어로 등장할 확률의 곱으로 구성된다. 

 

문장의 확률을 구하기 위해서 각 단어에 대한 예측 확률들을 곱한다. 

 

 

 

♣ 카운트 기반의 접근

SLM은 이전 단어로부터 다음 단어에 대한 확률을 어떻게 구할까? 카운트에 기반하여 확률을 계산한다. 

 

An adorable little boy가 나왔을 때, is가 나올 확률인 P(is|An adorable little boy_를 구해보자. 

확률은 위와 같다. 예를 들어 기계가 학습한 코퍼스 데이터에서 An adorable little boy가 100번 등장했는데, 그 다음에 is가 등장한 경우는 30번이라고 한다. 이 경우 P(is|An adorable littel boy)는 30% 이다. 

 

 

 

♣ 카운트 기반 접근의 한계: 희소 문제(Sparsity Problem)

언어 모델은 실생활에서 사용되는 언어의 확률 분포를 근사 모델링한다. 현실에서도 An adorable little boy가 나왔을 때 is가 나올 확률이 존재한다. 이를 실제 자연어의 확률 분포, 현실에서의 확률 분포라고 칭한다. 기계에 많은 코퍼스를 훈련시켜서 언어 모델을 통해 현실에서의 확률 분포를 근사하는 것이 언어 모델의 목표이다. 그런데 카운트 기반으로 접근하면 기계가 훈련하는 데이터의 양이 매우 방대해야 한다. 

 

 

위의 경우에서 기계가 훈련한 코퍼스에 An adorable little boy is 라는 단어 시퀀스가 없다면 이 단어 시퀀스에 대한 확률은 0이 된다. 또는 An adorable little boy라는 단어 시퀀스가 없다면 분모가 0이 되어 확률은 정의되지 않는다. 이와 같이 충분한 데이터를 제공하지 못하여 언어를 정확히 모델링하지 못하는 문제를 희소 문제라고 한다. 

 

이 문제를 완화하는 방법으로 바로 이어서 배우게 되는 n-gram 언어 모델이나 이 책에서 다루지는 않지만 스무딩이나 백오프와 같은 여러가지 일반화(generalization) 기법이 존재한다. 하지만 희소 문제에 대한 근본적인 해결책은 되지 못한다. 결국 이러한 한계로 인해 언어 모델의 트렌드는 통계적 언어 모델에서 인공 신경망 언어 모델로 넘어가게 되었다.