TL;DR
이 프로젝트는 Andrej Karpathy의 microgpt를 기반으로 모델의 토큰 확률을 그대로 유지하면서 생성 텍스트에 통계적 워터마크를 남기는 순수 Python 실험입니다. 일반 샘플링 대신 비밀 키를 결합한 Gumbel 샘플링으로 토큰 선택에 누적 편향을 만들고, 같은 키를 가진 검출기가 p값으로 그 신호를 판별합니다. 워터마크 텍스트는 p=6.844e-53을 기록했지만 정상 텍스트와 잘못된 키의 결과는 각각 7.459e-01과 6.094e-01로 우연 수준에 가까웠습니다. Python 3 표준 라이브러리만 사용하고 91줄 규모로 구현해 LLM 워터마킹의 생성과 검출 과정을 작게 재현합니다.
섹션별 상세
git clone https://github.com/berba-q/gpt-watermark
cd gpt-watermark
python3 microgpt_watermark.py저장소를 복제한 뒤 Python 3 표준 라이브러리만으로 워터마크 생성 실험을 실행합니다.
용어 해설
- 키드 Gumbel 샘플링(Keyed Gumbel Sampling)
- — 다음 토큰의 확률분포 자체는 바꾸지 않고 비밀 키를 이용해 Gumbel 샘플링 순서를 조정하는 방식입니다. 생성 결과에 눈에 보이는 표식을 삽입하지 않으면서 여러 토큰 선택에 통계적 편향을 만들고, 같은 키를 가진 검출기가 그 편향을 확인하도록 구성됩니다.
- Gumbel-Max 트릭(Gumbel-Max Trick)
- — 확률분포에서 샘플을 뽑을 때 각 후보에 Gumbel 잡음을 더해 최댓값을 선택하는 기법입니다. 이 저장소에서는 비밀 키와 결합한 Gumbel 샘플링으로 모델의 원래 토큰 확률을 유지하면서 워터마크 검출에 필요한 통계적 특성을 생성합니다.
- p값(p-value)
- — 관측된 통계량이 우연히 나타날 가능성을 나타내는 값입니다. 이 실험에서는 정상 텍스트와 워터마크 텍스트의 점수가 우연한 결과인지 판단하는 데 사용되며, 워터마크 텍스트의 약 6.8×10⁻⁵³ 값은 검출 통계가 우연과 크게 다름을 나타냅니다.
- 비밀 키 검출(Secret-Key Detection)
- — 텍스트 생성에 사용한 비밀 키를 알고 있는 검출기가 토큰 선택에 누적된 통계적 편향을 측정하는 방식입니다. 키가 맞으면 워터마크 신호를 식별할 수 있지만, 일반 텍스트나 잘못된 키로 검사한 텍스트는 우연한 수준의 결과를 보이도록 설계됩니다.
기술
- Python 3
- microgpt
- keyed Gumbel sampling
- Gumbel-Max
- GPT
활용 사례
- LLM이 생성한 텍스트의 출처 검증
- 비밀 키를 이용한 생성 텍스트 검출
- 언어 모델 워터마킹 알고리즘의 소규모 실험
언급된 리소스
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.
