자연어처리(NLP) 6일차 (언어 모델)

정민수
6 min readJun 8, 2019

--

19.06.08

본 글은 https://wikidocs.net/book/2155을 참고하여 작성되었음을 밝힙니다.

핵심키워드

  • 언어 모델(Language Model)
  • 조건부확률(conditional probability)

언어 모델(Language Model)

언더 모델(Language Model)이란 주어진 단어들로부터 다음에 등장할 단어의 확률을 예측하는 모델을 말한다. 이번 챕터에서는 통계에 기반한 전통적인 언어 모델(Statistical Language Model, SLM)에 대해서 배운다. 통계에 기반한 언어 모델은 우리가 실제 사용하는 자연어를 근사하기에는 많은 한계가 있었고, 요즘 들어 인공 신경망이 그러한 한계를 많이 해결해주면서 통계기반 언어 모델은 많이 사용 용도가 줄었다.

하지만 그럼에도 여전히 통계 기반 언어 모델에서 배우게 될 n-gram은 자연어 처리 분야에서 활발하게 활용되고 있으며, 통계 기반 방법론에 대한 이해는 언어 모델에 대한 전체적인 시야를 갖는 일에 큰 도움이 된다.

언어 모델(Language Model)이란?

언어 모델(Language Model)은 짧게 요약하면 문장. 즉, 단어의 시퀀스의 확률을 예측하는 모델이다. 언어 모델은 자연어 생성(Natural Language Generation)의 기반이 된다. 기본적으로 자연어 생성과 관련된 건 모두 언어 모델과 관련이 있다. 음성 인식, 기계 번역, OCR, 검색어 자동 완성 등과 괕은 것은 전부 언어 모델을 통해 이루어진다.

언어 모델을 만드는 방법은 크게 통계를 이용한 방법인공 신경망을 이용한 방법으로 구분할 수 있다. 최근 자연어 처리에서 언어 모델에 대한 이야기를 빼놓을 수 없는데, 최근 핫한 딥러닝 자연어 처리의 기술인 GPT나 BERT가 전부 언어 모델의 개념을 사용하여 만들어졌기 때문이다. 뒤의 딥러닝 챕터에서 인공 신경망의 일종인 RNN, LSTM 등을 통해 언어 모델을 만들어 본다. 또한 seq2seq를 통해 기계 번역기를 만들어볼텐데 이 또한 결국 언어 모델이다.

이번 챕터에서는 언어 모델의 보편적 정의와 전통적인 언어 모델인 통계 기반 언어 모델을 배워본다. 종종 언어모델은 LM으로 줄여서 표현하기도 한다.

1. 언어 모델(Language Model)이 하는 일

언어 모델이 하는 일은 간단하게 요약하자면 문장의 확률을 예측하는 일이다. 그런데, 문장의 확률을 예측하기 위해서는 우선 이전의 단어들이 주어졌을 때 다음 단어가 나올 확률을 예측해야한다. 자연어 처리로 유명한 스탠포드 대학교에서는 언어 모델을 문법(Grammar)이라고 비유하기도 한다. 언어 모델이 단어들의 조합이 얼마나 적절한지, 또는 해당 문장이 얼마나 적합한지를 알려주는 일을 하기 때문이다.

2. 문장의 확률을 예측하는 일이 왜 필요한가?

언어 모델은 문장의 확률을 예측하는 일이다. 그럼 문장의 확률을 예측하는 것이 왜 필요한지 예를 들어보도록 한다. 여기서 대문자 P는 확률을 의미한다.

a. 기계 번역(Machine Translation)

P(나는 버스를 탔다) > P(나는 버스를 태운다)

: 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단한다.

b. 오타 교정(Spell Correction)

선생님이 교실로 부리나케

P(달려갔다) > P(잘려갔다)

: 언어 모델은 두 문장을 비교하여 좌측의 문장이 확률이 더 높다고 판단한다.

c. 음성 인식(Speech Recognition)

P(나는 메롱을 먹는다) < P(나는 메론을 먹는다)

: 언어 모델은 두 문장을 비교하여 우측의 문장의 확률이 더 높다고 판단한다.

언어 모델은 위와 같이 보다 적절한 문장을 선택하는 일에 확률을 사용한다.

3. 언어 모델은 문장의 확률 또는 단어 등장 확률을 예측하는 일.

언어 모델은 문장 전체의 확률을 예측하는 일을 하며, 또한 이 일을 하기 위해서 이전 단어들이 주어졌을 때, 다음 단어가 등장할 확률을 예측하기도 한다. 언어 모델이 이 두 가지 확률을 어떻게 예측하며, 또한 결국 왜 이 두 가지가 연관되는 문제인지 알아보자.

A. 문장의 확률 예측

하나의 단어(word)를 w라고 하자. 단어의 시퀀스인 전체 문장(sentence)을 대문자 W라고 하자. n개의 w로 구성된 문장 W의 확률은 다음과 같이 표현할 수 있다.

B. 다음 단어 예측

n-1개의 단어가 나열된 상태에서 n번째 단어의 확률을 다음과 같이 표현할 수 있다.

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

예를 들어 다섯번째 단어의 확률은 아래와 같다.

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

다음 챕터에서 이 확률식을 가지고 실제 문장에 적용한다. 혹시 조건부 확률이 이해가 가지 않는다면, 다음 챕터에서 조건부 확률을 자세히 설명하지 않으므로 인터넷 검색 또는 이 챕터의 부록을 참고하자.

4. 언어 모델의 간단한 직관

갑자기 수식이 나와서 언어 모델이 괜히 어려워보이기도 하지만, 직관 자체는 전혀 어렵지 않다. 가령, 비행기를 타려고 공항에 갔는데 지각을 하는 바람에 비행기를 [?]라는 문장이 있다. ‘비행기를’ 다음에 어떤 단어가 오게 될지 우리는 손쉽게 ‘놓쳤다’라고 예상할 수 있다. 우리는 우리의 지식에 기반하여 나올 수 있는 여러 단어들을 비교해본 결과 놓쳤다는 단어가 나올 확률이 가장 높다고 판단하였기 때문이다.

그렇다면 컴퓨터. 즉, 기계에게 위의 문장을 주고 나서, ‘비행기를’ 다음에 나올 단어를 예측해보라고 한다면 과연 어떻게 최대한 정확히 예측할 수 있을까? 기계도 비슷하다. 앞에 어떤 단어들이 나왔는지 고려하여 후보가 될 수 있는 여러 단어들에 대해서 확률을 예측해보고 가장 높은 확률을 가진 단어를 선택한다. 그리고 그때 사용되는 것이 바로 언어 모델이다. 앞에 어떤 단어들이 나왔는지 고려하여 후보가 될 수 있는 여러 단어들에 대해서 확률을 예측해보고 가장 높은 확률을 가진 단어를 선택한다.

5. 검색 엔진에서의 언어 모델의 예

검색엔진은 언어 모델을 이용하여 입력된 단어들의 나열에 대해서 다음 단어를 예측한다.

--

--

정민수
정민수

No responses yet