파일을 작게 줄이는 일과 다음 문장을 예측하는 일은 전혀 다른 작업처럼 보입니다. 하나는 압축 프로그램이 하는 일이고, 다른 하나는 거대 언어모델이 하는 일이니까요. 그런데 한 개발자가 운영체제에 기본으로 깔린 gzip에 셰익스피어 텍스트를 넣어주고 다음 글자를 생성해봤더니, 완벽하진 않아도 셰익스피어풍 문장이 나왔습니다. 압축 프로그램이 작가 노릇을 한 셈입니다.

이게 우연이 아니라는 걸 보여준 연구가 있습니다. 구글 딥마인드 연구진이 발표한 “Language Modeling Is Compression”입니다. 이 논문은 압축과 예측이 수학적으로 같은 일이라는 걸 실증하면서, 거대 언어모델을 압축기로 다시 보는 관점을 제시합니다.
출처: Language Modeling Is Compression – arXiv (Grégoire Delétang 외, Google DeepMind / Meta AI)
왜 압축과 예측이 같은 일일까
압축 프로그램이 하는 일을 떠올려보면 단순합니다. 자주 나올 것 같은 데이터에는 적은 비트를 쓰고, 예상 밖의 데이터에는 많은 비트를 씁니다. 알파벳 A가 백만 번 반복된 파일은 한 문장으로 설명할 수 있지만, 완전히 무작위인 백만 바이트는 줄일 구조가 없어 거의 압축되지 않습니다.
여기에 정보이론의 핵심 공식이 숨어 있습니다. 어떤 기호를 표현하는 데 필요한 비트 수는 그 기호가 나올 확률에 마이너스 로그를 취한 값입니다. 확률이 높을수록 비트는 적게 듭니다. 그러니까 어떤 압축기든, 누가 일부러 만들지 않았더라도 그 안에는 확률 모델이 숨어 있다는 뜻입니다. 압축을 잘한다는 것은 결국 다음에 뭐가 올지 잘 맞힌다는 것과 같은 말입니다.

연구팀은 이 동치성을 실제로 검증했습니다. 매개변수 700억 개짜리 모델 Chinchilla 70B는 텍스트로만 학습됐는데도, ImageNet 이미지 패치를 원본의 43.4%로 압축했습니다. 이미지 전용 압축 포맷인 PNG가 같은 데이터를 58.5%까지만 줄이는 것과 비교하면 더 나은 성능입니다. 음성 데이터인 LibriSpeech 샘플에서도 마찬가지로, FLAC(30.3%)보다 작은 16.4%까지 압축했습니다. 텍스트만 봤던 모델이 이미지와 소리까지 더 잘 압축한다는 건, 언어모델이 사실 범용 예측기에 가깝다는 뜻입니다. 무엇을 예측하든 그 능력이 통한다는 의미니까요.
그럼 제일 단순한 압축기는 어떨까
거대 언어모델 같은 복잡한 시스템이 예측기 노릇을 한다는 건 그렇다 쳐도, gzip처럼 결정론적인 알고리즘에도 똑같은 원리가 적용될까요. 개발자 Nathan Barry가 직접 실험해본 결과는 그렇다는 쪽이었습니다.
gzip은 DEFLATE라는 알고리즘을 씁니다. 최근 32킬로바이트 정도의 텍스트를 “창”처럼 들고 있다가, 새로 들어오는 내용이 그 창 안의 패턴과 일치하면 데이터를 통째로 다시 쓰는 대신 짧은 참조로 대체합니다. 어떤 문장이 이미 본 패턴과 비슷하면 거의 공짜로 인코딩되고, 전혀 새로운 내용이면 비싸게 인코딩되는 셈입니다. 이게 바로 위에서 말한 예측 원리 그 자체입니다.
여기서 점수를 매기는 방법이 나옵니다. 어떤 문장 뒤에 이어질 후보 문장이 얼마나 “그럴듯한지”는, 그 둘을 합쳐서 gzip으로 압축했을 때 결과가 얼마나 작아지는지로 잴 수 있습니다. 압축된 길이가 짧을수록 더 예측 가능한 후보라는 뜻입니다. 셰익스피어 텍스트를 미리 gzip의 창에 넣어두면, 셰익스피어와 비슷한 문장은 작게 압축되고 전혀 다른 문장은 크게 압축됩니다.
다만 단순히 다음 한 글자씩 골라서는 잘 작동하지 않았습니다. gzip이 내놓는 압축 길이는 정수 단위라서, 한 글자를 추가해도 압축 길이가 거의 안 바뀌는 경우가 많아 미세한 차이를 구분하기 어려웠던 겁니다. 그래서 한 글자가 아니라 한 구간을 통째로 미리 살펴본 다음 가장 잘 압축되는 구간을 고르는 방식을 썼습니다. 다음과 같은 흐름입니다.
- 사용자가 준 문장을 그대로 이어 쓸 시작점으로 삼는다
- gzip에게 미리 넣어둔 참고 텍스트와 지금까지 나온 문장의 최근 부분을 함께 보여준다
- 가능한 다음 글자 후보들을 여러 개 만들어보고, 각각을 압축했을 때 길이를 비교해 가장 작게 압축되는 후보들만 추려낸다
- 그중 가장 압축이 잘되는 구간을 최종으로 선택해 이어붙이고, 다시 2번으로 돌아간다
흥미로운 건 gzip에게 보여주는 “최근 부분”을 일부러 제한했다는 점입니다. 이전에 쓴 내용을 전부 보여주면, gzip 입장에서는 가까운 곳에 있는 패턴을 더 싸게 참조할 수 있어서 방금 자기가 쓴 문장을 그대로 반복해서 베끼는 게 가장 싼 선택이 되어버립니다. 일부러 시야를 좁혀줘야 같은 말을 반복하지 않고 새로운 문장을 이어 쓸 수 있었던 셈입니다.
압축이라는 렌즈로 보면 달라지는 것들
이 동치성이 흥미로운 이유는 단순히 “재밌는 트릭”이 아니라는 데 있습니다. 논문은 압축이라는 관점으로 보면 언어모델의 스케일링 법칙이나 토큰화 방식, 인-컨텍스트 학습 같은 현상을 새롭게 이해할 수 있다고 말합니다. 모델이 커질수록 압축률이 좋아진다는 건, 사실 모델이 데이터에 대해 점점 더 정확한 확률 모델을 갖게 된다는 뜻과 같습니다.
또한 어떤 신경망도, 학습된 파라미터도 없는 gzip조차 이 원리를 따른다는 사실은, 예측 능력이 거대 모델만의 특별한 성질이 아니라 압축이라는 행위 자체에 본질적으로 내재해 있다는 걸 보여줍니다. gzip이 만들어낸 문장은 완벽한 셰익스피어 문체가 아니었습니다. 하지만 인물 이름이 대문자로 시작하고, 대화가 콜론 다음에 줄을 바꿔 이어진다는 형식적 구조까지는 따라가고 있었습니다. 신경망 하나 없이도 텍스트의 패턴을 붙잡아낸 셈입니다.
참고자료: Can gzip be a language model? – Nathan Barry

답글 남기기