렘펠–지브 압축(Lempel–Ziv compression)
앞에 나왔던 문자열을 '몇 칸 앞에서 몇 글자'라는 참조로 바꾸는 사전식 압축. 확률(probability)을 미리 몰라도 엔트로피(entropy)에 다가가며, zip·gzip·PNG의 바탕이다.
글에는 되풀이가 많습니다. 같은 낱말, 같은 어미, 같은 구절이 거듭 나옵니다. 1977년 이스라엘 테크니온 공과대학의 아브라함 렘펠과 야코브 지브는 글을 앞에서부터 읽으며, 지금 자리에서 시작하는 문자열이 앞에 이미 나온 적이 있으면 그것을 '
글:
지금까지의 출력:
실제 압축기는 가장 긴 겹침을 빨리 찾으려고 세 글자짜리 조각마다 그것이 나왔던 자리들을 해시 테이블(hash table)에 적어 둡니다. 세 글자짜리 조각은 n = 3인 n-그램(n-gram)입니다. zip, gzip, PNG가 쓰는 DEFLATE는 거리를 32KB 안쪽으로 제한한 LZ77로 되풀이를 없앤 뒤, 남은 글자와 참조를 허프만 부호로 한 번 더 줄입니다. 1978년의 LZ78과 이것을 미국의 테리 웰치가 고친 LZW(1984)는 참조 대신 지금까지 본 문자열의 사전을 키워 가며 번호로 가리키며, GIF 그림 형식이 LZW를 씁니다. 사전을 키우는 또 다른 압축법으로, 가장 자주 이웃해 나오는 두 기호를 새 기호 하나로 바꾸기를 되풀이하는 바이트 쌍 부호화(BPE, 1994)가 있습니다. 오늘날 언어 모델(language model)이 글을 자를 어휘를 만드는 토큰화가 이 방법을 씁니다.
왜 이것이 좋은 압축일까요? 렘펠과 지브, 그리고 뒤이은 연구들은 원천이 정상적이고 에르고딕(ergodic)하기만 하면, 글이 길어질수록 이런 방법의 기호당 비트 수가 원천의 엔트로피율(entropy rate)로 수렴(convergence)한다는 것을 보였습니다. 정상적이라는 것은 기호를 내는 확률 규칙이 시간에 따라 바뀌지 않는다는 뜻입니다. 에르고딕하다는 것은 긴 글 하나에서 센 빈도가 글이 길어질수록 원천 전체의 확률에 다가간다는 뜻입니다. 상태가 유한 개이고 전이 확률(transition probability)이 고정되어 있으며 어느 상태에서든 모든 상태로 갈 수 있는 마르코프 연쇄(정상 분포(stationary distribution)에서 출발한 것)가 그런 예입니다. 분포를 모르고도 원천 부호화 정리(source coding theorem)의 한계에 닿으니 '범용' 압축이라 부릅니다. 반면 '무작위 글'처럼 되풀이가 없는 글은 거의 줄지 않습니다. 이것은 방법의 결함이 아닙니다. 비둘기집 원리(pigeonhole principle)에 따르면 어떤 압축도 모든 글을 줄일 수는 없고, 줄어드는 글이 있으면 줄지 않는 글도 있어야 합니다.
이어지는 곳. 압축된 길이는 그 글이 얼마나 규칙적인지를 재는 실용적인 잣대입니다. 압축된 길이에 풀기 프로그램의 길이(글과 상관없는 상수)를 더한 값은 콜모고로프 복잡도(Kolmogorov complexity)보다 작을 수 없습니다. 거꾸로 말하면 콜모고로프 복잡도는, 그 상수를 빼면, 어떤 압축기도 밑돌 수 없는 이론적 하한입니다. 두 글을 이어 붙여 압축했을 때 따로 압축한 것보다 얼마나 줄어드는지로 글 사이의 거리를 잴 수도 있습니다. 여러 언어로 된 같은 글을 이런 거리로 묶어 비교 언어학(comparative linguistics)의 계통수(phylogenetic tree)와 비슷한 나무를 얻은 연구도 있습니다. 흔한 낱말이 압도적으로 자주 나오는 지프의 법칙(Zipf's law)이 글이 잘 줄어드는 한 가지 이유입니다. LZMA(xz, 7-Zip)처럼 참조를 찾은 뒤 그 결과를 다시 산술 부호화(arithmetic coding)의 한 갈래인 범위 부호로 적는 압축기도 많습니다.
이 개념이 나오는 긴 글
이 개념을 언급하는 페이지
- 마르코프 연쇄
… 평균적으로 담은 정보량을 엔트로피율이라 합니다. 마르코프 연쇄가 내놓은 긴 기호열은 전이 확률을 몰라도렘펠–지브 압축으로 한 기호당 엔트로피율에 가까운 비트 수까지 줄일 수 있습니다. 앞에 나온 조각을 가리키는 방식으로 …
- 정보 엔트로피
… 엔트로피가 작아 압축이 잘 됩니다. 확률을 미리 모르는 채 앞에 나온 문자열을 참조해 엔트로피에 다가가는렘펠–지브 압축이 zip과 PNG의 바탕이고, 확률 모형 없이 문자열 하나의 정보량을 재려는 시도가 ⟦콜모고로프 …
- n-그램 언어 모델
… 부호화 정리⟧입니다. 확률을 따로 세지 않고 앞에 나온 문자열을 '몇 칸 앞에서 몇 글자'로 가리키는렘펠–지브 압축은 글의 통계를 모른 채로도, 글이 충분히 길고 통계가 한결같다면 같은 한계에 다가갑니다. 말뭉치가 커지면 …
- 해시 테이블
… 내는 다른 입력을 만들기가 현실적인 계산량으로는 불가능하도록 설계한 것이 암호학적 해시입니다. zip의렘펠–지브 압축은 앞에 나온 같은 문자열을 해시 테이블로 빨리 찾아냅니다. 두 집합의 공통 원소 수를 합집합의 원소 수로 …
- 허프만 부호
… 이 손해가 줄어듭니다. 또 허프만 부호는 글자의 빈도를 미리 알아야 합니다. 앞에 나온 문자열을 가리키는렘펠–지브 압축은 빈도를 몰라도 되고, zip과 PNG가 쓰는 DEFLATE는 렘펠–지브로 반복을 줄인 뒤 그 결과를 …
- 원천 부호화 정리
… 기호당 평균 비트 수(교차 엔트로피) H가 작을수록 좋은 모델이고, 흔히 쓰는 퍼플렉시티는 2^H 입니다.렘펠–지브 압축은 분포를 모르고도 이 한계에 다가가는 방법입니다. 콜모고로프 복잡도는 분포 없이 문자열 하나의 …
- 콜모고로프 복잡도
… 엔트로피로 수렴합니다. 섀넌의 원천 부호화 정리를 문자열 하나에 대한 말로 옮긴 셈입니다.렘펠–지브 압축같은 압축기가 만든 파일 길이에 풀기 프로그램의 길이를 더하면 K의 위쪽 어림이 됩니다. 그런데 K는 …
- 결합 엔트로피와 조건부 엔트로피
… 엔트로피율은 원천 부호화 정리에서 압축의 한계가 되고, 앞 기호를 문맥으로 쓰는 산술 부호화나렘펠–지브 압축이 그 한계에 다가갑니다. X를 알아서 줄어든 불확실성 H(Y) − H(Y|X)가 상호 정보량입니다. …
- 산술 부호화
… 바이트 단위로 내보내는 범위 부호화(range coding)도 같은 계열입니다. xz가 쓰는 LZMA는렘펠–지브참조를 범위 부호기로 적습니다. 2009년 무렵부터 폴란드의 컴퓨터 과학자 야레크 두다가 발표한 비대칭 …
- 토큰화와 BPE
… 흔한 것을 짧게 적는다는 점에서 허프만 부호와, 되풀이되는 문자열을 사전에 올린다는 점에서렘펠–지브 압축과 같은 생각입니다. 다만 BPE는 매 단계 가장 좋아 보이는 쌍을 고르는 욕심쟁이 알고리즘이라, 같은 …