csmoon1010의 SW 블로그

자연어 처리 - 딥 러닝을 이용한 자연어 처리 입문(7) 본문

데이터&인공지능/자연어처리

자연어 처리 - 딥 러닝을 이용한 자연어 처리 입문(7)

csmoon1010 2020. 2. 13. 17:35

03. 언어 모델(Language Model)

단어 시퀀스(문장)에 확률을 할당하는 모델(문장의 적절/부적절을 따짐)

통계에 기반한 전통적인 언어 모델(Statistical Languagel Model, SLM) 중애서도 n-gram은 자연어 처리 분야에서 활발히 활용되며 언어모델에 대한 전체 시야를 갖기에 적합.

wikidocs.net/book/2155

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

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

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

- 방법 

(1) 통계를 이용한 방법 : 이번 챕터

(2) 인공 신경망을 이용한 방법 : 더 좋은 성능. 신기술(GPT, BERT) _ 딥러닝 챕터

 

1. 언어 모델(Language Model)

- 단어 시퀀스에 확률을 할당 == 가장 자연스러운 단어 시퀀스 찾기

- 방법 : 이전 단어들이 주어졌을 때 다음 단어를 예측(보편적)

          양쪽의 단어들로부터 가운데 비어있는 단어 예측(BERT)

- 언어 모델링(Language Modeling) : 주어진 단어들로부터 아직 모르는 단어를 예측(이전 단어 --> 다음 단어)

 

2. 단어 시퀀스의 확률 할당(적용 평가)

(1) 기계 번역(Machine Translation) : 적절한 문법

(2) 오타 교정(Spell Correction)

(3) 음성 인식(Speech Recognition)

--> 각 경우에서 확률을 통해 보다 적절한 문장을 판단

 

3. 주어진 이전 단어들로부터 다음 단어 예측하기(언어 모델링)

**조건부 확률 이용

(1) 단어 시퀀스의 확률

- w : 하나의 단어

- W : 단어 시퀀스

--> n개의 단어가 등장하는 단어 시퀀스 W의 확률 : P(W) = P(w1, w2, w3, ..., wn)

(2) 다음 단어 등장 확률

n-1개의 단어 나열 상태에서 n번째 단어의 확률 : P(wn|w1, ..., wn-1) _ 조건부 확률

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

우리 지식에 기반하여 나올 수 있는 여러 단어들을 후보에 놓고 가장 확률이 높은 단어를 선택

== 기계 : 앞에 단어들을 고려하여 여러 단어들에 대해 등장 확률을 예측하고 가장 확률이 높은 단어 선택

 

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

검색 엔진 시 밑에 뜨는 자동 완성이 바로 다음 단어를 예측하는 언어 모델!!

 

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

1. 조건부 확률

2. 문장에 대한 확률

문장 관점의 조건부 확률 = 각 단어들이 이전 단어가 주어졌을 때 다음 단어로 등장할 확률들의 곱!

EX> 'An adorable little boy is spreading smiles'

P(An adorable little boy is spreading smiles)

= P(An) * p(adorable|An) * P(little|An adorable) * P(boy|An adorable little) * P(is|An adorable little boy) * P(spreading|An adorable little boy is) * P(smiles|An adorable little boy is spreading)

 

3. 카운트 기반의 접근

이 때 각 확률들은 카운트에 기반하여 계산한다!!

EX> P(is|An adorable little boy) = count(An adorable little boy is) / count(An adorable little boy)

 

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

- 분모에 해당하는 시퀀스가 훈련 시에 없었다면 0이 되어 확률이 정의되지 않는다.

--> 충분한 데이터를 관측하지 못해 언어를 정확히 모델링 하지 못하는 문제 = 희소 문제(Sparsity Problem)

- 해결 : n-gram, 스무딩, 백오프 같은 일반화 기법 BUT 근본적 해결X --> 인공 신경망 언어 모델로...

 

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

카운트 기반 통계적 접근이지만 모든 단어가 아닌 "일부 단어"만 고려하는 접근 방법이다. (n = 일부 단어의 개수)

 

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

- 확률을 계산하고 싶은 문장/단어가 없는 경우

- 문장이 길어질 수록 코퍼스에 없을 가능성

--> 참고하는 단어를 줄이자!

ex) P(is|An adorable little boy) 대신에 P(is|boy)로!!!

 

2. N-gram

- n : n개의 연속적인 단어 나열. 코퍼스에서 n개의 단어 뭉치 단위로 끊어 하나의 토큰으로 간주!

(1 : unigram, 2 : bigram, 3 : trigram, 4 : 4-gram ....)

- 앞에 n-1개 이상의 단어가 있더라도 오직 n-1개의 단어에만 의존!! 더 앞의 단어들은 무시됨.

ex) P(w|boy is spreading) = count(boy is spreading w) / count(boy is spreading)

 

3. N-gram Language Model의 한계

- 무시된 앞의 단어가 결정에 중요한 역할을 미치는 경우! --> 앞과 뒤의 문맥이 전혀 연결이 안되는 case 발생

(1) 희소 문제(Sparsity Problem)

여전히 원하는 데이터가 없을 경우 발생

(2) n 선택의 trade-off

- n이 작다면 : 언어 모델의 성능은 하락(적절한 단어를 선택하지 않을 확률이 높아짐) = perplexity의 상승

- n이 크다면 : 희소 문제 심각, 모델 사이즈 커짐.

--> 적절한 n을 선택해야(권장 : n <= 5)

 

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

분야, 어플리케이션에 따라 특정 단어들의 확률 분포가 달라짐!!

--> 해당 도메인의 코퍼스를 이용해야 언어 모델의 성능이 높일 수 있음!

BUT 훈련에 사용한 도메인 코퍼스에 의존성이 높은 것이 언어 모델의 약점!

 

5. 인공 신경망을 이용한 언어 모델(Neural Network Based Language)

- N-gram Language Model의 한계점의 극복을 위한 방법

- ch8에 있음!!

 

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

영어보다 훨씬 까다로움!!

 

1. 한국어는 어순이 중요하지 않음

- 어순이 뒤죽박죽이여도 한국어는 의미 전달이 되는 특성

 

2. 한국어는 교착어

- 띄어쓰기 단위(어절 단위)로 토큰화 하면 발생가능한 단어의 개수가 많음!!(조사때문에!!)

--> 형태소 기준의 토큰화를 통해 접사, 조사의 분리가 중요

 

3. 한국어는 띄어쓰기가 제대로 지켜지지 않음

- 띄어쓰기가 제대로 되어 있지 않아도 의미 전달 가능

- 띄어쓰기 규칙이 까다롭

 

즉, 제대로 된 전처리 = 토큰화가 필요하다!!

 

5) 펄플렉서티(Perplexity)

- 외부평가(extrinsic evaluation) : 오타 교정, 기계 번역 평가에 투입하여 성능을 비교

BUT 모델의 개수가 늘어난다면?

- 내부 평가(intrinsic evaluation) : 자신의 성능을 펄플렉시티로 수치화 --> 좀 부정확하지만 빠르게 계산 가능

 

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

- 펄플렉시티(perplexity, PPL) : 언어 모델을 평가하기 위한 내부 평가 지표. '헷갈리는 정도'라는 뜻이므로 낮을수록 언어 모델의 성능은 좋음!

- PPL = 단어의 수로 정규화(normalization)된 테스트 데이터에 대한 확률의 역수

2. 분기 계수(Branching factor)

- 분기 계수 : 선택할 수 있는 가능한 경우의 수, PPL도 분기계수이다!

- PPL = 언어 모델이 특정 시점에 평균적으로 몇 개의 선택지를 가지고 고민하고 있는가

- 성능 비교 방법 : 같은 테스트 데이터에 대해서 두 언어 모델의 PPL을 각각 계산 후 비교.

- 주의점 : PPL이 낮다고 사람이 느끼기에 좋은 언어 모델은 아님.

             테스트 데이터에 의존성 --> 테스트 데이터의 양이 많고 도메인에 알맞으며 동일해야 함

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

 

6) 조건부 확률(Conditional Probability)

잘 아는 내용이므로 건너 뛰겠다.

Comments