AI 텍스트 워터마킹은 어떻게 동작하나: 시각적 가이드
How AI text watermarking works
TL;DR Highlight
단어 선택 확률에 비밀 키로 약한 편향을 줘 글에 보이지 않는 표식을 심는다
Who Should Read
Claude·Gemini 출력에 워터마크가 붙는다는 소식을 듣고 원리와 한계가 궁금한 LLM API 개발자
Core Mechanics
- 워터마크는 글자가 아니라 단어 선택에 숨는다
- 모델은 매 단어마다 후보 목록에서 가중치 주사위를 굴려 고른다.
- 후보 중 여럿이 똑같이 자연스러워서 그 여유 공간에 패턴을 숨길 수 있다.
- 비밀 키가 후보를 green/red로 나눠 green을 살짝 민다
- 키로 계산한 임의의 색칠은 키 보유자만 재현할 수 있다.
- 색은 바로 앞 몇 단어에 따라 달라지므로 같은 단어도 앞 문맥에 따라 green 또는 red가 된다.
- 검출은 키로 다시 색칠해 green 비율을 세는 일이다
- 문체를 판단하지 않고 green이 우연보다 많은지만 센다.
- 표식이 없거나 키가 틀리면 green은 약 절반(동전 던지기)이다.
- 편향이 약할수록 글이 길어야 확신할 수 있어서 짧은 글은 판정이 어렵다.
- 편집은 앞 단어 묶음이 깨지는 곳의 표식만 지운다
- 오타 수정이나 가벼운 수정은 표식을 희석할 뿐 지우지 못한다.
- 원문과 겹치는 어구가 없는 완전 재작성에서만 표식이 사라진다.
- 공개 구현(MarkLLM의 KGW·EXP)을 완전 재작성으로 씻으면 윈도우의 약 0.5%만 남고 검출 정확도가 거의 확실에서 동전 던지기 수준으로 떨어졌다.
- 발견된 표식은 '작성'이 아니라 '처리'를 뜻한다
Community Reactions
- 워터마크는 오픈 모델을 직접 돌리면 피할 수 있다는 의견
- 워터마크 없는 제공사를 쓰거나 오픈소스 모델을 직접 돌리면 되므로 실효성이 낮다는 지적이다.
- 워터마크는 모델이 아니라 실행 방식에 달려 있어 오픈 웨이트 제공자는 쓸 수 없다는 의견도 있었다.
- 창의성과 코드 품질이 떨어진다는 우려
- 단어를 한쪽 그룹으로 밀면 표현 다양성이 줄고, 선택지가 적은 코드에서 더 심하다는 의견이다.
- 코드는 워터마크를 끌 것 같다는 추측도 함께 나왔다.
- 손으로 옮겨 쓰거나 로컬 모델로 다시 써서 지운다는 경험
- AI 출력을 복사하지 않고 직접 옮겨 쓰며 단어를 바꾼다는 개발자의 경험이 있었다.
- 로컬 모델로 문장을 다시 쓰면 표식이 사라진다는 의견도 나왔다.
- 키 추출과 법적 쟁점에 대한 궁금증이 이어졌다
- 출력이 얼마나 쌓이면 키를 알아낼 수 있을지 묻는 댓글이 있었다.
- EU 규제 때문에 OpenRouter 제공사도 워터마크를 넣어야 하느냐는 질문과, 소유권·발명 분쟁에 증거로 쓰일 수 있다는 의견도 있었다.
How to Apply
- 우리 서비스의 AI 출력 후처리 파이프라인 점검하기
- 오늘 요약·번역·교정 기능이 Claude나 Gemini 출력을 사용자에게 그대로 내보내는지 목록으로 만들어라.
- 이런 텍스트에는 모델 제공사 표식이 남을 수 있다고 가정하고 약관·고지 문구에 반영하라.
- 'AI 판별' 기능에 워터마크 결과를 단정으로 쓰지 않기
- 표식 검출 결과는 '처리됨' 확률로만 표시하라.
- 표식이 없다는 이유로 '사람이 썼다'고 표시하지 마라.
- 짧은 출력과 코드 출력은 검출 대상에서 빼기
- 검출 로직을 만든다면 최소 글자 수 기준을 두어라.
- 코드·인용·목록처럼 선택지가 적은 구간은 제외하라.
Try It
# Claude 또는 ChatGPT에 그대로 붙여넣기 (논문 방법의 간이 버전: 워터마크 원리를 장난감으로 체험)
너는 텍스트 워터마크 원리를 보여주는 시뮬레이터다. 아래 규칙으로 문장 하나를 단계별로 완성해 줘.
1. 문장 시작: "{{문장 시작}}"
2. 각 단계마다 다음 단어 후보 4개와 확률(합 100%)을 보여줘.
3. 후보를 임의로 green 2개, red 2개로 나누고, green 확률을 각각 +10%p 올린 뒤 red에서 같은 양을 빼서 다시 보여줘.
4. 올린 확률로 단어를 하나 골라 문장에 붙여.
5. 10단계 반복한 뒤 고른 단어 중 green 비율을 계산해 줘.
질문: green 비율이 50%보다 얼마나 높았나? 10단어와 100단어일 때 확신도가 어떻게 달라질지 설명해 줘.
이어서 해 볼 것: 같은 결과 문장의 단어를 절반 바꾸고 green 비율이 어떻게 변하는지 다시 계산해 보라고 요청해 봐.Terminology
관련 논문
The Judge Can Debias Itself: LLM-as-a-Judge가 스스로 편향을 고치게 하는 법
심사 프롬프트에 편향 경고를 넣거나 스스로 비판시켰더니 21개 중 20개 조합에서 정확도가 올랐다
미국 노동시간의 90%는 AI 벤치마크가 제대로 다루지 못하는 일이다
벤치마크 29개를 직업 과제에 매핑했더니 노동시간 90%가 커버 밖
Postgres 19, AI 코드 리뷰가 버그를 너무 많이 찾아 출시 연기
LLM 코드 리뷰가 버그를 쏟아내 Postgres 19가 11월로 밀리고 기능 8~10개가 빠졌다
StarSkirmish Bench v0.2: LLM이 1시간 만에 짜는 StarCraft 봇 대결
LLM에게 1시간 동안 StarCraft 봇을 짜게 했더니 GPT-6 Astra가 1위
그럴듯한 설명 하나면 멀티모달 LLM 심사위원도 속는다 (JUPE 벤치마크)
정답은 그대로 두고 설명만 붙였더니 MLLM 심사위원의 오답 거절률이 12.7~13.8%p 떨어졌다
신경망은 이미 깔끔하다: polysemanticity의 원인 재해석
뉴런을 직접 들여다봤더니 대부분 한 가지 역할이 있었다는 주장
Linus Torvalds의 첫 LLM 보조 패치 시리즈
Linus가 LLM으로 folio 조회 패치 10개를 만들어 read() 벤치가 10배 빨라졌다