언어모델(Language Model)

이현우·2022년 8월 3일
0

1. 언어모델(Language Model)이란?

언어라는 현상을 모델링하고자 단어 키눠스(문장)에 확률을 할당(assign)하는 모델

언어 모델을 만드는 방법은 크게

  • 통계를 이용한 방법
  • 인공 신경망을 이용한 방법

1.1 언어모델(Language Model)

  • 언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델
  • 가장 보편적으로 사용되는 방법은 언어 모델이 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 하는 것
  • 다른 유형의 언어 모델로는 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측하는 언어 모델이 있다.
  • 언어 모델링(Language Modeling)?은 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업을 말한다.
    • 즉, 언어 모델이 이전 단어들로부터 다음 단어를 예측하는 일은 언어 모델링이다.

1.2 단어 시퀀스의 확률 할당

자연어 처리에서 단어 시퀀스에 확률을 할당하는 일이 필요한 예시

  • 여기서 대문자 P는 확률을 의미

a. 기계번역(Machine Translation)

P(나는 버스를 탔다) > P(나는 버스를 태운다)
: 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단한다.

b. 오타 교정(Spell Correction)

선생님이 교실로 부리나케
P(달려갔다) > P(잘려갔다)
: 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단한다.

c. 음성 인식(Speech Recognition)

P(나는 메롱을 먹는다) < P(나는 메론을 먹는다)
: 언어 모델은 두 문장을 비교하여 우측의 문장의 확률이 더 높다고 판단한다.

언어 모델은 위와 같이 확률을 통해 보다 적절한 문장을 판단한다.

1.3 주어진 이전 단어들로부터 다음 단어 예측하기

언어 모델은 단어 시퀀스에 확률을 할당하는 모델이고, 단어 시퀀스에 확률을 할당하기 위해서 가장 보편적으로 사용하는 방법은 이전 단어들이 주어졌을 때, 다음 단어를 예측하도록 하는 것이다.

이를 조건부 확률로 표현해보자.

A. 단어 시퀀스의 확률

하나의 단어를 w, 단어 시퀀스를 대문자 W라 한다면, n개의 단어가 등장하는 단어 시퀀스 W의 확률은 다음과 같다.

B. 다음 단어 등장 확률

다음 단어 등장 확률을 식으로 표현하자.
n-1개의 단어가 나열된 상태에서 n번째 단어의 확률은 다음과 같다.

|의 기호는 조건부 확률(conditional probability)을 의미한다.

ex) 다섯번째 단어의 확률은 아래와 같다.

전체 단어 시퀀스 W의 확률은 모든 단어가 예측되고 나서야 알 수 있으므로 단어 시퀀스의 확률은 다음과 같다.

1.4 언어 모델의 간단한 직관

  • 비행기를 타려고 공항에 갔는데 지각을 하는 바람에 비행기를 [?]라는 문장에서 '비행기를' 다음에 어떤 단어가 오게 될지 사람은 쉽게 '놓쳤다'라고 예상할 수 있다.

  • 이는 우리 지식에 기반하여 나올 수 있는 여러 단어들을 후보에 놓고 놓쳤다는 단어가 나올 확률이 가장 높다고 판단하였기 때문이다.

  • 기계도 비슷하다. 앞에 어떤 단어들이 나왔는지 고려하여 후보가 될 수 있는 여러 단어들에 대해서 등장 확률을 추정하고 가장 높은 확률을 가진 단어를 선택합니다.

2. 통계적 언어 모델(Statisical Language Model, SLM)

2.1 조건부 확률

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

4개의 확률이 조건부 확률의 관계를 가진다면 아래와 같다.


이를 조건부 확률의 연쇄 법칙(chain rule)이라고 한다.
n개에 대해서 일반화를 하면 아래와 같다.

2.2 문장에 대한 확률

각 단어는 문맥이라는 관계로 인해 이전 단어의 영향을 받아 나온 단어이다.
그리고 모든 단어로부터 하나의 문장이 완성된다.
따라서 문장의 확률을 구하고자 조건부 확률을 사용한다.
문장의 확률은 각 단어들이 이전 단어가 주어졌을 때 다음 단어로 등장할 확률의 곱으로 구성된다.
문장에 대한 확률
ex)
예시

2.3 카운트 기반의 접근

통계적 언어 모델(SLM)은 이전 단어로 부터 다음 단어에 대한 확률을 카운트에 기반하여 계산한다.

An adorable little boy가 나왔을 때, is가 나올 확률은 다음과 같다.

예를 들어 코퍼스 데이터에서 An adorable little boy가 100번 등장했는데 그 다음에 is가 등장한 경우는 30번이라고 하면 P(is|An adorable little boy)는 30% 이다.

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

  • 현실에서도 An adorable little boy가 나왔을 때 is가 나올 확률이라는 것이 존재한다.
  • 이를 실제 자연어의 확률 분포, 현실에서의 확률 분포라고 명칭하자.
  • 기계에서 많은 코퍼스를 훈련시켜 언어 모델을 통해 현실에서의 확률 분포를 근사하는 것이 언어 모델의 목표이다.
  • 하지만 카운트 기반으로 접근하려고 한다면 갖고 있는 코퍼스 데이터는 정말 방대한 양이 필요하다.

  • 예를 들어 위와 같은 경우에 기계가 훈련한 코퍼스에 An adorable little boy is라는 단어 시퀀스가 없었다면 이 단어 시퀀스에 대한 확률은 0이 된다.

  • 하지만 현실에선 An adorable little boy is 라는 단어 시퀀스가 존재하고 또 문법에도 적합하므로 정답일 가능성 또한 높다.

  • 이와 같이 충분한 데이터를 관측하지 못하여 언어를 정확히 모델링하지 못하는 문제를 희소 문제(sparsity problem)라고 한다.

  • 희소 문제를 완화하는 방법으로 n-gram 언어 모델이나 스무딩, 백오프와 같은 여러가지 일반화(generalization) 기법이 존재하지만 희소 문제에 대한 근본적인 해결책이 되지 못하였다.

  • 이러한 한계로 인해 언어 모델의 트렌드는 통계적 언어 모델에서 인공 신경망 언어 모델로 넘어가게 된다.

3. N-gram 언어 모델( N-gram Language Model)

  • 앞서 배운 언어 모델과는 달리 이전에 등장한 모든 단어를 고려하는 것이 아니라 일부 단어만 고려하는 접근 방법이다.
  • 이때 일부 단어를 몇 개 보느냐를 결정하는데 이것이 n-gram에서 n이 가지는 의미이다.

3.1 코퍼스에서 카운트하지 못하는 경우의 감소

  • SLM의 한계는 훈련 코퍼스에 확률을 계산하고 싶은 문장이나 단어가 없을 수 있다는 점이다.
  • 확률을 계산하고 싶은 문장이 길어질수록 갖고 있는 코퍼스에서 그 문장이 존재하지 않을 가능성이 높다.
  • 다음과 같이 참고하는 단어들을 줄이면 카운트를 할 수 있을 가능성을 높일 수 있다.

    또는

즉, 앞에서는 An adorable little boy가 나왔을 때 is가 나올 확률을 구하기 위해서는 An adorable little boy가 나온 횟수와 An adorable little boy is가 나온 횟수를 카운트해야만 했지만 이제는 앞 단어 중 임의의 개수만 포함해서 카운트하여 근사하자는 것이다.
이렇게 하면 갖고 있는 코퍼스에서 해당 단어의 시퀀스를 카운트할 확률이 높아진다.

3.2 N-gram

  • 임의의 개수를 정하기 위한 기준을 위해 사용하는 것이 n-gram이다.
  • n-gram은 n개의 연속적인 단어 나열을 의미한다.
  • n-gram을 사용할 때는 n이 1일 때 유니그램, 2일 때 바이그램, 3일 때는 트라이그램이라 명명하고 n이 4 이상일 때는 gram 앞에 그대로 숫자를 불러서 명명한다.

3.3 N-gram Language Model의 한계

  • n-gram은 뒤의 단어 몇 개만 보다 보니 의도하고 싶은 대로 문장을 끝맺음하지 못하는 경우가 생긴다.
  • 문장을 읽다보면 앞 부분과 뒷부분의 문맥이 전혀 연결 안 되는 경우도 생길 수 있다.
  • 전체 문장을 고려한 언어 모델보다는 정확도가 떨어질 수 있다.

3.3.1 희소 문제(Sparsity Problem)

문장에 존재하는 앞에 나온 단어를 모두 보는 것보다 일부 단어만을 보는 것으로 현실적으로 코퍼스에서 카운트 할 수 있는 확률을 높일 수는 있었지만, n-gram 언어 모델도 여전히 n-gram에 대한 희소 문제가 존재

3.3.2 n을 선택하는 것은 trade-off문제

  • 앞에서 몇 개의 단어를 볼지 n을 정하는 것은 trade-off가 존재한다.
    • 임의의 개수인 n을 1보다는 2로 선택하는 것은 거의 대부분의 경우에서 언어 모델의 성능을 높일 수 있다.
  • n을 크게 선탯하면 실제 훈련 코퍼스에서 해당 n-gram을 카운트할 수 있는 확률은 적어지므로 희소 문제는 점점 심각해진다.
    • 또한 n이 커질수록 모델 사이즈가 커진다는 문제점도 있다.
  • n을 작게 선택하면 훈련 코퍼스에서 카운트는 잘 되겠지만 근사의 정확도는 현실의 확률분포와 멀어진다.
    • 앞서 언급한 trade-off 문제로 인해 정확도를 높이려면 n은 최대 5를 넘게 잡아서는 안 된다고 권장되고 있다.

3.4 적용 분야(Domain)에 맞는 코퍼스의 수집

  • 어떤 분야인지, 어떤 어플리케이션인지에 따라서 특정 단어들의 확률 분포는 다르다.
    • 마케팅 분야에서는 마케팅 단어가 빈번하게 등장할 것이고, 의료 분야에서는 의료 관련 단어가 빈번하게 등장한다.
  • 이 경우 언어 모델에 사용하는 코퍼스를 해당 도메인의 코퍼스를 사용한다면 당연히 언어 모델이 제대로 된 언어 생성을 할 가능성이 높아진다.
  • 때로는 이를 언어 모델의 약점이라고 하는 경우도 있는데, 훈련에 사용된 도메인 코퍼스가 무엇이냐에 따라서 성능이 비약적으로 달라지기 때문이다.

3.5 인공 신경망을 이용한 언어 모델(Neural network Based Language Model)

  • N-gram Language Model의 한계점을 극복하기 위해 백오프, 스무딩 등 여러 일반화 방법들이 존재하지만 본질적으로 n-gram 언어 모델에 대한 취약점을 완전히 해결하지는 못하였고, 이를 위한 대안으로 N-gram Language Model보다 대체적으로 성능이 우수한 인공 신경망을 이용한 언어 모델이 많이 사용되고 있다.

4. 한국어에서의 언어 모델(Language Model for Korean Sentences)

4.1 한국어는 어순이 중요하지 않다.

한국어는 어순이 중요하지 않다. 그래서 이전 단어가 주어졌을 때, 다음 단어가 나타날 확률을 구해야 하는데 어순이 중요하지 않다는 것은 다음 단어로 어떤 단어든 등장할 수 있다는 의미이다.
EX)

  • 나는 운동을 합니다 체육관에서.
  • 나는 체육관에서 운동을 합니다.
  • 체육관에서 운동을 합니다.
  • 나는 운동을 체육관에서 합니다.

4개의 문장은 전부 의미가 통하고 심지어 '나는'이라는 주어를 생략해도 말이 되버린다. 이렇게 단어 순서를 뒤죽박죽 바꾸어놔도 한국어는 의미가 전달 되기 때문에 확률에 기반한 언어 모델이 제대로 다음 단어를 예측하기가 어렵다.

4.2 한국어는 교착어이다

  • 한국어는 교착어이다. 이는 한국어에서의 언어 모델 작동을 어렵게 만든다.
  • 띄어쓰기 단위인 어절 단위로 토큰화를 할 경우에는 문장에서 발생가능한 단어의 수가 굉장히 늘어난다.
  • 대표적인 예로 조사가 있다.
    • 그녀, 그녀가, 그녀를, 그녀의, 그녀와, 그녀로 등
  • 때문에 토큰화를 통해 접사나 조사 등을 분리하는 것은 중요한 작업이 되기도 한다.

4.3 한국어는 띄어쓰기가 제대로 지켜지지 않는다.

  • 한국어는 띄어쓰기를 제대로 하지 않아도 의미가 전달되며, 띄어쓰기 규칙 또한 상대적으로 까다로운 언어이기 때문에 자연어 처리를 하는 것에 있어서 한국어 코퍼스는 띄어쓰기가 제대로 지켜지지 않는 경우가 많다.
  • 토큰이 제대로 분리 되지 않는채 훈련 데이터로 사용된다면 언어 모델은 제대로 동작하지 않는다.

5. 펄플렉서티(Perplexity, PPL)

  • 일일히 모델들에 대해서 실제 작업을 시켜보고 정확도를 비교하는 작업은 공수가 너무 많이 드는 작업이다.
  • 이러한 평가보다는 어쩌면 조금은 부정확할 수는 있어도 테스트 데이터에 대해서 빠르게 식으로 계산되는 더 간단한 평가 방법이 있다.
  • 모델 내에서 자신의 성능을 수치화하여 결과를 내놓는 펄플렉서티(perplexity)이다.

5.1 언어 모델의 평가 방법(Evaluation metric) : PPL

PPL은 수치가 '낮을수록' 언어 모델의 성능이 좋다는 것을 의미한다.

  • PPL은 문장의 길이로 정규화된 문장 확률의 역수이다. 문장 W의 길이가 N이라고 하였을 때의 PPL은 다음과 같다.

  • 문장의 확률에 체인룰(chain rule)을 적용하면 아래와 같다.

  • n-gram을 적용해볼 수도 있다. ex) bigram(2-gram) 언어 모델의 경우에는 식이 아래와 같다.

5.2 분기 계수(Branching factor)

  • PPL은 선택할 수 있는 가능한 경우의 수를 의미하는 분기계수(branching factor)이다.
  • PPL은 이 언어 모델이 특정시점에서 평균적으로 몇 개의 선택지를 가지고 고민하고 있는지를 의미한다.
    • ex) 언어 모델에 어떤 테스트 데이터를 주고 측정했더니 PPL이 10이 나왔다고 하자
    • 해당 언어 모델은 테스트 데이터에 대해서 다음 단어를 예측하는 모든 시점(time step)마다 평균 10개의 단어를 가지고 어떤 것이 정답인지 고민한다고 볼 수 있다.
  • 같은 테스트 데이터에 대해서 두 언어 모델의 PPL을 각각 계산 후에 PPL의 값을 비교하며느 두 언어 모델 중 PPL이 더 낮은 언어 모델의 성능이 더 좋다고 볼 수 있다.
  • 단, 평가 방법에 있어서 주의할 점은 PPL의 값이 낮다는 것은 테스트 데이터 상에서 높은 정확도를 보인다는 것이지, 사람이 직접 느끼기에 좋은 언어 모델이라는 것을 반드시 의미하진 않는다는 점이다.
  • 또한 언어 모델의 PPL은 테스트 데이터에 의존하므로 두 개 이상의 언어 모델을 비교할 때는 정량적으로 양이 많고, 또한 도메인에 알맞은 동일한 테스트 데이터를 사용해야 신뢰도가 높다.

5.3 기존 언어 모델 VS 인공 신경망을 이용한 언어 모델

  • 페이스북 AI 연구팀의 여러 언어 모델에 대해서 PPL로 성능 테스트를 한 표

    링크 : https://research.fb.com/building-an-efficient-neural-language-model-over-a-billion-words/

  • 첫 번째 모델은 5-gram을 사용하였으며, 일반화 방법이 사용된 모델이다.

  • 그 아래의 모델들은 인공 신경망을 이용한 언어 모델들로 페이스북 AI 연구팀이 자신들의 언어 모델을 다른 언어 모델과 비교하고자 하는 목적으로 기록하였다.

6. 조건부 확률(Conditional Probability)

A = 학생이 남학생인 사건
B = 학생이 여학생인 사건
C = 학생이 중학생인 사건
D = 학생이 고등학생인 사건
이라고 했을 때, 아래의 확률을 계산해 보겠습니다.

  1. 학생을 뽑았을 때, 남학생일 확률
    P(A) = 180 / 360 = 0.5

  2. 학생을 뽑았을 때, 고등학생이면서 남학생일 확률
    P(A∩D) = 80 / 360

  3. 고등학생 중 한명을 뽑았을 때, 남학생일 확률
    P(A|D) = 80 / 200 = P(A∩D) / P(D) = (80 / 360) / (200 / 360) = 80 / 200 = 0.4

참고 문서

딥 러닝을 이용한 자연어 처리 - https://wikidocs.net/21695

profile
GitHub - https://github.com/jenu8628

0개의 댓글