24년간의 블로그 글을 마르코프 모델에 학습시킨 실험

1 month ago 12

  • 1980년대의 Mark V. Shaney 프로그램에서 영감을 받아, 약 30줄의 Python 코드로 구현된 간단한 마르코프 텍스트 생성기 Mark V. Shaney Junior를 제작
  • 이 모델은 세 단어(trigram) 기반으로 다음 단어를 확률적으로 예측하며, 200여 개의 블로그 글(약 20만 단어) 을 학습 데이터로 사용
  • 생성된 문장은 Lisp, Emacs, 수학, 프로그래밍 등 블로그 주제의 단어들을 섞어 만든 의미 없는 문장(gibberish) 형태로 출력
  • 모델의 차수(order) 를 높이면 문장이 더 일관되지만, 5 이상에서는 원문을 그대로 인용해 창의성이 사라짐
  • 대규모 언어모델(LLM) 시대에도, 이러한 단순한 마르코프 모델의 구조적 명료함은 언어 생성 원리를 이해하는 좋은 출발점으로 제시됨

Mark V. Shaney Junior 프로그램 개요

  • Mark V. Shaney Junior는 1980년대 Usenet에서 활동한 가상 사용자 Mark V. Shaney를 모방한 텍스트 생성기
    • 원본은 마르코프 모델을 이용해 게시글을 자동 생성하던 프로그램
    • 이번 구현은 그 아이디어를 단순화한 미니멀 버전으로, GitHub에 공개됨
  • 전체 코드가 약 30줄의 Python으로 구성되어 있으며, 효율성보다 단순성을 중시
    • 마르코프 모델을 처음 접하는 사람도 20분 이내에 이해 가능한 수준

취미로서의 실험적 프로그래밍

  • 작성자는 특정 문제 해결이 아닌 아이디어 탐구 목적의 프로그래밍을 즐겨 수행
    • 다양한 상태공간을 가진 마르코프 체인을 여러 차례 실험
    • 이러한 실험 코드를 정리해 GitHub나 Codeberg에 공유
  • Mark V. Shaney Junior 역시 이러한 실험 중 하나로, 완성도를 높여 공개한 사례

블로그 데이터를 이용한 텍스트 생성

  • 모델을 찰스 디킨스의 『크리스마스 캐럴』 로 학습시켜 테스트한 후,
    24년간의 블로그 글(200여 개, 약 20만 단어) 을 입력 데이터로 사용
    • 댓글(약 4만 단어)은 제외
  • 생성된 문장은 프로그래밍 명령어, 수학 용어, 에디터 명령 등이 뒤섞인 비논리적 문장으로 출력
    • 예: Emacs 명령, Lisp 코드, 수학 용어 등이 무작위로 결합된 문장
  • 일부 문장은 블로그의 특정 글에서 단어를 가져와 의미 없는 조합을 형성
    • 예: “Lisp source file”과 “self-esteem”이 서로 다른 글에서 추출되어 결합

마르코프 속성과 알고리듬 구조

  • 기본 설정은 trigram(3단어) 기반으로,
    앞의 두 단어를 키(key)로, 세 번째 단어를 값(value)으로 저장하는 맵 구조 사용
  • 텍스트 생성 과정
    • 임의의 단어쌍을 선택 → 가능한 다음 단어 중 하나를 균등 확률로 선택
    • 새로 선택된 단어와 직전 단어로 새로운 쌍을 구성해 반복
    • 더 이상 후속 단어가 없거나 100단어 제한에 도달하면 종료
  • 동일한 trigram이 여러 번 등장하면, 해당 후속 단어가 리스트에 중복 저장되어
    출현 빈도에 비례한 확률적 선택이 이루어짐
  • 이 과정은 현재 상태에만 의존하는 확률적 전이로,
    수식으로는 P(Xₙ₊₁ | Xₙ, Xₙ₋₁, …, X₁) = P(Xₙ₊₁ | Xₙ) 형태로 표현
    • 기억 없음(memoryless) 특성이 마르코프 성질의 핵심

추가 실험과 모델 차수 조정

  • 기본 차수(order)는 2이며, 명령행 인자로 변경 가능
    • 차수를 3~4로 높이면 문장이 더 일관되고 자연스러움
    • 예시: IRC 명령어와 수학 개념이 섞인 비교적 논리적인 문장 생성
  • 그러나 차수를 5로 높이면 원문을 그대로 복제하는 경향이 생겨
    창의적 무의미함(gibberish) 이 사라짐
  • 초기 프롬프트를 주어 텍스트를 생성할 수도 있음
    • 예: “Finally we”로 시작하는 문장을 입력하면,
      Emacs, MATLAB, GNU bash 등의 단어가 혼합된 긴 문장 생성

단순 모델의 의의

  • 2025년 현재 대규모 언어모델(LLM) 이 주류지만,
    마르코프 모델은 전역 구조나 장기 의존성을 포착하지 못함
  • 그럼에도 불구하고, 단순한 설계와 구현의 명료함 덕분에
    언어 생성 원리를 학습하기 위한 입문 모델로 가치가 있음
  • 작성자는 “이 모델이야말로 언어모델의 ‘Hello, world’ ”라고 표현

Read Entire Article