수학 개념 지도
언어와 계산(Language and computation)

n-그램 언어 모델

다음 낱말(또는 글자)의 확률⁠(probability)⁠을 바로 앞 n−1개만 보고 어림하는 언어 모델⁠(language model)⁠. 말뭉치⁠(corpus)⁠에서 n개짜리 묶음을 세어 만들며, 마르코프 연쇄⁠(Markov chain)⁠를 언어에 적용한 것이다.

P(wi∣w1⋯wi−1)≈P(wi∣wi−n+1⋯wi−1)=#(wi−n+1⋯wi)#(wi−n+1⋯wi−1)P(w_i \mid w_1 \cdots w_{i-1}) \approx P(w_i \mid w_{i-n+1} \cdots w_{i-1}) = \frac{\#(w_{i-n+1} \cdots w_i)}{\#(w_{i-n+1} \cdots w_{i-1})}
먼저 보면 좋은 개념조건부 확률마르코프 연쇄

문장의 확률은 낱말 하나하나의 조건부 확률⁠(conditional probability)⁠을 곱해 적을 수 있습니다: P(w1⋯wm)=∏iP(wi∣w1⋯wi−1)P(w_1 \cdots w_m) = \prod_i P(w_i \mid w_1 \cdots w_{i-1}). 문제는 앞의 모든 낱말을 조건으로 두면 같은 조건이 말뭉치(확률을 세려고 모아 둔 글 뭉치)에 거의 한 번도 나오지 않는다는 것입니다. n-그램⁠(n-gram)⁠ 모델은 앞의 n−1개만 기억한다고 가정해 이 문제를 피합니다. 바로 앞 n−1개를 한 덩어리 '지금 상태'로 보면, 다음 상태가 지금 상태에만 달린 마르코프 연쇄의 가정을 그대로 가져온 것이고, 확률은 말뭉치에서 n개짜리 묶음을 세어 나누는 것으로 어림합니다. n = 1이면 유니그램(빈도만), 2면 바이그램, 3이면 트라이그램입니다.

이 위키의 짧은 예문으로 모델을 만들어 글을 뽑아 봅시다. 단위는 , n = 입니다. 다시 뽑기

왼쪽은 뽑은 글의 끝에서 모델이 다음 기호로 고려하는 후보들입니다. 지금 모델이 보는 문맥은 입니다. n이 1이면 글자나 낱말이 빈도대로만 뽑혀 뜻 모를 조각이 나오고, n을 올릴수록 낱말과 구가 제 모양을 갖춥니다. 1948년 섀넌은 책을 아무 데나 펴서 앞 글자와 같은 글자가 나오는 곳을 찾는 방법으로 이런 실험을 손으로 했고, 그보다 앞선 1913년 마르코프는 러시아 시인 알렉산드르 푸시킨의 운문 소설 『예브게니 오네긴』에서 모음과 자음이 이어지는 빈도를 세었습니다.

그러나 n을 더 올리면 모델은 새 글을 만들지 않고 예문을 통째로 베낍니다. 오른쪽 그림이 이유를 보여 줍니다. 예문의 뒤 15%를 떼어 두고 앞 85%로만 세었을 때, 떼어 둔 부분의 n-그램 가운데 한 번도 본 적 없는 것의 비율입니다. 가능한 n-그램은 기호가 V가지일 때 VnV^n개로, V진법⁠(positional notation)⁠ n자리 수만큼 늘어나지만(자릿값 기수법), 말뭉치는 그 가운데 극히 일부만 담습니다. 차원의 저주⁠(curse of dimensionality)⁠와 닮은 현상이고, 지프의 법칙⁠(Zipf's law)⁠의 긴 꼬리 때문에 말뭉치를 늘려도 쉽게 사라지지 않습니다. 한 번도 못 본 묶음에 확률 0을 주면 그것이 들어간 문장 전체의 확률이 0이 되므로, 실제로는 모든 횟수에 1씩 더해 못 본 묶음에도 작은 확률을 나눠 주거나(라플라스의 이름을 딴 라플라스 스무딩⁠(Laplace smoothing)⁠), 못 본 문맥에서는 더 짧은 문맥으로 물러서서 확률을 빌려 오는(백오프⁠, backoff⁠) 방법을 씁니다. 이 페이지의 생성기도 못 본 문맥에서는 더 짧은 문맥으로 물러섭니다.

좋은 언어 모델은 실제 글에 높은 확률을 줍니다. 그 정도는 글자나 낱말 하나당 교차 엔트로피⁠(cross-entropy)⁠, 곧 실제 글의 각 기호에 모델이 매긴 확률 q로 −log⁡2q-\log_2 q를 구해 평균⁠(mean)⁠한 값으로 재고, 작을수록 좋은 모델입니다. 다음 글자를 잘 맞히는 모델은 좋은 압축기이기도 합니다. 모델이 매기는 확률로 부호를 만들면(산술 부호화⁠(arithmetic coding)⁠) 글자당 비트 수가 교차 엔트로피에 가까워지고, 참 엔트로피⁠(entropy)⁠보다 짧게 할 수는 없다는 것이 원천 부호화 정리⁠(source coding theorem)⁠입니다. 확률을 따로 세지 않고 앞에 나온 문자열을 '몇 칸 앞에서 몇 글자'로 가리키는 렘펠–지브 압축⁠(Lempel–Ziv compression)⁠은 글의 통계⁠(statistics)⁠를 모른 채로도, 글이 충분히 길고 통계가 한결같다면 같은 한계에 다가갑니다. 말뭉치가 커지면 큰 수의 법칙⁠(law of large numbers)⁠에 따라 세어 얻은 확률이 참값에 가까워지지만, 필요한 양은 n에 따라 지수적으로 늘어납니다. 또 n-그램은 앞 몇 개만 보는 유한 상태 모형이라, 멀리 떨어진 주어와 동사의 일치나 괄호 같은 중첩은 촘스키 위계⁠(Chomsky hierarchy)⁠의 더 바깥 층이 필요합니다.

이어지는 곳. 맞춤법 교정과 음성 인식은 '들린 소리가 이러할 때 원래 문장은 무엇인가'를 베이즈 정리⁠(Bayes' theorem)⁠로 뒤집어 풉니다. 이때 소리를 듣기 전에 그 문장이 나올 확률(사전 확률⁠, prior probability⁠)을 n-그램이 줍니다. 겉으로 보이지 않는 품사열에 n-그램을 두고 낱말은 품사⁠(part of speech)⁠에서 확률적으로 나온다고 보면 은닉 마르코프 모델⁠(hidden Markov model)⁠이 됩니다. 신경망⁠(neural network)⁠ 언어 모델은 낱말을 단어 임베딩⁠(word embedding)⁠ 벡터⁠(vector)⁠로 바꿔 비슷한 낱말끼리 통계를 나누어 쓰며 희소성 문제를 누그러뜨렸습니다. 오늘날의 대형 언어 모델도 '앞 문맥으로 다음 토큰(낱말이나 낱말 조각)의 확률을 매긴다'는 틀은 같습니다. 다만 확률을 횟수로 세지 않고 신경망(트랜스포머⁠, transformer⁠)으로 계산하며, 문맥을 수천 토큰⁠(token)⁠ 이상으로 늘렸습니다.

관련된 시대와 장소블레츨리 파크
이 개념이 나오는 큰 생각무작위성

이 개념이 나오는 긴 글

계산언어학 말을 세는 기계 문법은 규칙일까, 확률일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피, 오늘날의 언어 모델까지. 정보 이론과 압축 짧게 보내기 모스 부호는 왜 E를 점 하나로 보낼까? 섀넌의 엔트로피가 정한 압축의 한계와, 허프만 부호에서 JPEG까지 그 한계에 다가간 방법들. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다. 압축과 과학 압축하는 것이 이해하는 것이다 튀코 브라헤가 20년 동안 적은 행성의 위치를 케플러는 법칙 세 줄로 줄였다. 짧게 적는 일과 이해하는 일은 정말 같은 일일까? 오컴의 면도날을 비트로 재는 법, 과적합을 압축의 실패로 읽는 법, 그리고 그 말이 정리인 곳과 철학인 곳.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념