AI 금지어를 늘리면 더 무너질까 — 무너진 게 아니라 놓칠 확률이 곱해집니다
스물두 번째였습니다.
무선 이어폰 상세페이지 문구를 써 달라고 했고, 프롬프트에는 이 줄이 들어 있었습니다.
절대 쓰면 안 되는 단어: "최고". 이 단어들은 어떤 형태로도 쓰지 말고, 뜻이 비슷한 다른 말로 바꿔 주세요.
돌아온 답은 이렇습니다.
가볍고 뛰어난 착용감의 무선 이어폰으로 (…) 오직 당신만을 위한 완벽한 몰입감을 선사합니다. 강력한 배터리 성능으로 (…) 여러분의 일상에 활력을 불어넣는 최고의 선택이 될 것입니다.
뛰어난. 완벽한. 강력한. 세 번을 우회했습니다. 그러다 문단을 닫는 마지막 한 문장에서 「최고」가 돌아왔습니다.
금지어를 몇 개까지 걸어도 되는지, 그리고 그 지시를 믿고 사후 검사를 건너뛰어도 되는지 정하려는 분을 위해 다시 쟀습니다. 이번 9월에 로컬에서 gemma3:4b를 올려 같은 과제를 195회 돌렸습니다.
지난번 기록이 너무 깨끗했습니다
이 실험은 8월에도 돌렸습니다. 1개 0건. 3개 0건. 5개에서만 무너짐.
선이 아주 또렷했죠. 「3개까지는 안전하다」가 표에서 그냥 읽혔습니다.
결과가 이렇게 깨끗하면 보통은 좋은 신호인데, 그때 조건 하나당 돌린 횟수가 열한 번이었습니다. 그게 전부였습니다. 열한 번을 보고 한 번도 못 봤다는 건 「일어나지 않는다」는 뜻이 아니라 열한 번 보는 동안 한 번도 안 걸렸다는 뜻일 뿐입니다.
그래서 다시 돌렸습니다. 문항도 금지어도 건드리지 않고, 회차만 다섯 배로.
무엇을 어떻게 쟀나
한국어 글쓰기 과제를 여덟 개 준비했습니다. 상품소개, 공지, 사과 메일, 블로그, 설명, 자기소개, 리뷰, 홍보. 장르마다 「이런 글이면 꼭 나오는」 상투어가 있죠. 사과 메일이면 죄송·양해·협조·조속·부득이, 자기소개면 열심히·노력·성장·최선·배우. 그 다섯 개씩을 금지어 후보로 미리 정해 뒀습니다.
같은 과제를 네 조건으로 돌렸습니다. 아무것도 금지하지 않기, 하나만 금지하기, 셋, 다섯. 금지 문장을 프롬프트 맨 앞에 놓은 경우와 맨 뒤에 놓은 경우도 갈라 봤습니다.
채점은 사람이 하지 않고 프로그램이 본문을 훑어 금지어가 들어 있는지만 셉니다. 인용부호 안에 갇힌 등장은 따로 빼 뒀는데, 이번에는 그 구분이 결과를 바꾸지 않았습니다.
하네스 오류는 0건이었습니다. 아래 수치는 예열분을 뺀 본실행을 조건당 55회씩 나눈 것입니다.
회차로 세면 사다리가 보입니다
| 금지어 개수 | 회차 | 위반 회차 | 위반율 |
|---|---|---|---|
| 1개 | 55 | 3 | 5.5% |
| 3개 | 55 | 13 | 23.6% |
| 5개 | 55 | 19 | 34.5% |
여기까지만 보면 8월과 같은 결론으로 갑니다. 많이 걸수록 많이 뚫린다. 그러니 금지어를 늘리면 모델이 지시를 더 못 지킨다. 이렇게 읽힙니다.
그런데 두 조건씩 떼어 통계로 갈리는지 보면 절반만 맞습니다. 1개와 3개는 갈리고, 1개와 5개도 갈립니다. 그런데 3개와 5개 사이는 이 회차 수로는 갈리지 않았습니다. 표에서는 두 칸이 꽤 달라 보이지만, 이만큼 돌려서는 그 차이가 우연인지 아닌지 말할 수 없다는 뜻입니다. 눈이 먼저 사다리를 보고, 계산은 아직 거기까지 따라오지 않은 셈이죠.
단어로 세면 사다리가 사라집니다
위 표는 「한 회차에 금지어가 하나라도 나왔는가」를 셉니다. 다섯 개를 걸면 실패할 기회도 다섯 배죠. 그래서 세는 단위를 바꿔, 금지된 단어 하나하나를 놓고 그 단어가 나왔는지만 다시 세어 봤습니다.
| 금지어 개수 | 단어 단위 위반율 | 단어별로 독립이라 치면 나올 회차 위반율 | 실제 회차 위반율 |
|---|---|---|---|
| 1개 | 5.5% | 5.5% | 5.5% |
| 3개 | 8.5% | 23.4% | 23.6% |
| 5개 | 8.7% | 36.6% | 34.5% |
왼쪽 칸이 거의 평평합니다. 단어 하나를 지키는 능력은 조건이 바뀌어도 그대로라는 뜻입니다.
그래서 세 번째 칸을 채워 봤습니다. 「단어마다 따로 실수한다」고 치고 곱하면 회차 위반율이 얼마여야 하는가. 오른쪽 두 칸을 나란히 보시면 됩니다. 계산값과 실제가 소수점 한 자리에서 만납니다.
확률이 곱해진 겁니다. 지킬 게 늘어나면 그중 하나라도 놓칠 확률이 따라 올라가는 것이고, 문장이 길어질수록 오타가 늘어나는 것과 같은 종류입니다. 여기를 모델이 나빠진 것으로 읽으면 대책을 엉뚱한 데서 찾게 됩니다.
위 화면의 조건별 수치(0.0517·0.2364·0.3276)는 예열 9회까지 합쳐 센 값이고, 본문 표는 본실행 165회만 따로 센 값입니다. 분모가 달라 소수점 자리가 조금 다릅니다.
지시는 대체로 듣습니다. 단어를 가려 들을 뿐입니다
풀어 두면 이 단어들은 세 번에 한 번꼴로 나옵니다. 쓰지 말라고 적어 두면 열두 번에 한 번꼴로 줄어듭니다. 지시는 대체로 먹힙니다.
문제는 평균이 아니라 편차입니다.
| 금지된 단어 | 금지했는데 나온 비율 | 자유일 때 나온 비율 |
|---|---|---|
| 필수 | 9/20 (45.0%) | 13/13 (100%) |
| 부탁 | 2/5 (40.0%) | 8/13 (61.5%) |
| 함께 | 2/5 (40.0%) | 2/13 (15.4%) |
| 특별 | 9/30 (30.0%) | 9/21 (42.9%) |
| 간편 | 3/10 (30.0%) | 16/23 (69.6%) |
| 여러분 | 4/15 (26.7%) | 3/3 (100%) |
| 최고 | 2/40 (5.0%) | 1/11 (9.1%) |
| 추천 | 1/50 (2.0%) | 0/16 (0%) |
| 양해 | 0/25 (0%) | 9/11 (81.8%) |
| 최선 | 0/5 (0%) | 12/13 (92.3%) |
| 성장 | 0/10 (0%) | 7/8 (87.5%) |
막아도 절반 가까이 나오는 단어가 있습니다. 수십 번을 막아도 한 번도 안 나오는 단어가 있습니다.
「자주 쓰는 단어라 못 참는 거겠지」 싶으실 겁니다. 그런데 표가 그 설명을 깹니다. 「최선」과 「성장」은 풀어 두면 열에 아홉은 나오는 단어인데, 쓰지 말라고 하자 한 번도 안 나왔습니다. 반대로 「필수」는 풀어 둬도 늘 나오고 막아도 절반이 나왔고요. 얼마나 자주 쓰는 단어인가로는 갈리지 않습니다.
여기서 이 글을 연 화면으로 돌아가 보겠습니다. 스물두 번째 회차에서 뚫린 단어는 「최고」였는데, 위 표에서 그 「최고」를 찾아보시면 금지된 40회 중 2회, 5.0%입니다. 이 목록에서 모델이 가장 잘 참은 축에 듭니다.
제가 맨 처음 본 화면은 스무 번에 한 번 일어나는 일이었습니다. 그걸 먼저 보고 나면 「금지어는 잘 안 지켜지는구나」로 읽히죠. 8월에 열한 번씩 돌려 0건을 보고 「3개까지는 안전하다」고 적은 것도 방향만 반대일 뿐 같은 구조였습니다. 적게 보면 본 것이 전부가 됩니다.
뚫릴 때의 문면은 대체로 이런 모양이었습니다.
랜턴이나 헤드랜턴은 어두운 밤에 필수적이며, 캠핑장 주변을 걸을 때 유용…
지금 바로 당신의 일상을 특별하게 만들어 보세요.
명사로 피하다가 「필수적이며」처럼 활용형으로 돌아오거나, 문단을 닫는 상투적인 마무리 문장에서 되살아납니다. 도입의 「최고」가 나온 자리도 정확히 거기였습니다.
8월 기록에서 달라진 것
이번에 정한 것은 하나뿐이었습니다. 문항과 금지어는 그대로 두고 회차만 다섯 배로 늘린다. 8월에 비어 있던 칸이 채워진 것은 집계하고 나서 알았습니다.
「3개까지는 안전하다」는 선은 모델의 성질이 아니라 회차가 적어서 보이던 선이었습니다.
같은 말이 이 글에도 걸립니다. 이번 수치도 딱 이만큼 돌려서 보인 그림입니다.
이 수치가 서 있는 조건
| 축 | 이번 측정의 조건 |
|---|---|
| 모델 | gemma3:4b 한 종(4.3B·Q4_K_M 양자화·로컬 구동) |
| 생성 온도 | 기본값 1 |
| 금지어 | 장르별 상투어 40개(제가 고른 목록) |
| 회차 | 조건당 55회 · 통제군 21회(예열 9회 별도) |
| 측정 시점 | 2026년 9월 |
조건 3개와 5개 사이는 이 회차 수에서 갈리지 않았습니다(p=0.294). 금지 문장을 프롬프트 앞에 뒀을 때와 뒤에 뒀을 때도 19.2% 대 26.7%로 같은 상태입니다. 두 수치는 방향을 읽는 근거로만 두시면 됩니다.
제 판단이 달라진 곳
저는 「금지어를 적게 걸어야 모델이 덜 무너진다」고 알고 있었습니다. 적게 거는 게 낫다는 결론은 그대로 남았습니다. 이유가 바뀌었을 뿐입니다.
이유가 바뀌면 손잡이도 바뀝니다. 모델을 못 믿어서 목록을 줄이는 거라면 손잡이는 목록 길이겠지만, 확률이 곱해지는 거라면 손잡이는 다른 데 있습니다. 출력을 금지어로 한 번 훑는 검사입니다. 목록을 줄이는 것보다 값싸고, 남은 8%를 전부 잡습니다.
오늘 하나만 한다면 그 검사입니다. 금지어 목록을 이미 쓰고 계신다면, 같은 목록으로 출력을 한 번 더 훑는 세 줄짜리 검사를 붙이는 것부터 하시면 됩니다. 이때 「필수적이며」처럼 원형이 변형된 꼴까지 걸리게 해야 이번에 뚫린 자리가 잡힙니다.
나머지는 여유가 될 때 보셔도 됩니다. 정말 나가면 안 되는 단어만 목록에 올리는 것(다섯을 걸면 한 회차가 통과할 확률이 셋 중 둘 수준으로 떨어집니다), 그리고 직접 확인해 볼 때 한 조건당 열 번 남짓의 0건을 안전 신호로 읽지 않는 것입니다. 금지어 목록을 짜기 전에 프롬프트 자체를 정리하는 게 먼저인 경우도 많은데, 그 순서는 프롬프트를 네 칸으로 쪼개 쓰는 방법에 정리해 뒀습니다.
지시 이행을 재는 실험은 이번이 처음이 아닙니다. 앞서 목표 글자수를 지키는지를 쟀고, 대화가 길어지면 앞의 지시를 잊는지도 따로 쟀습니다. 이번은 그중 「하지 마라」 형태만 떼어 본 것입니다.
측정과 결론은 운영자의 것이고, AI 는 초안 정리에만 쓰였습니다. 재현 방법은 아래 하네스 파일을 참고하세요.
재현: cinevyze-bench 의 run_banword_bench.py (문항 파일 포함). 본문의 원자료 경로(test_runs/…)는 비공개 작업 폴더라 외부에서 열 수 없습니다.
cinevyze 운영자 — 로컬에서 AI 도구를 직접 돌려 재현 가능한 수치로 검증합니다. 이번 측정은 RTX 4070 Ti SUPER 한 장에 gemma3:4b를 올려 195회 실행한 것입니다. 운영자 소개
댓글
댓글 쓰기