본문 바로가기
일반IT/AI

AI가 같은 단어를 1,500번 반복한다고? 🔁 한 Agentic LLM의 충격적 자기 고백

by gasbugs 2026. 5. 9.

"Let's delve into this intricate tapestry of robust solutions..."
— 어디서 많이 본 문장 같지 않은가?
우리가 매일 쓰는 LLM은 사실, 같은 단어를 끊임없이 메아리치는 거대한 동굴이다.

🎯 이 글에서 다루는 것

  • LLM과 Agentic AI에서 나타나는 "단어 반복(token slop)" 현상이란 무엇인가
  • 이 현상이 발생하는 4가지 핵심 원인 (학습 데이터, RLHF, 디코딩, 에이전트 루프)
  • 영어뿐 아니라 한국어에서도 똑같이 발생하는 placeholder 패턴
  • 메모리/시스템 프롬프트가 만드는 메타 자기강화 루프
  • 실무에서 이 문제를 줄이는 현실적인 방법

📌 도입 — "AI 냄새"가 나는 그 단어들

ChatGPT, Claude, Gemini로 글을 써본 사람이라면 누구나 한 번쯤 위화감을 느낀 적이 있을 것이다. 분명히 자연스러운 문장인데, 어딘가 '기계 냄새'가 풀풀 난다. 그리고 그 정체는 보통 특정 단어 몇 개다.

  • delve (파고들다)
  • tapestry (태피스트리, 직조물 — 비유적으로 "복잡한 구성")
  • intricate (정교한)
  • realm (영역)
  • navigate (헤쳐나가다)
  • underscore (강조하다)
  • robust (견고한)
  • leverage (활용하다)
  • seamless (매끄러운)
  • paradigm (패러다임)

연구자들 사이에서는 이 현상을 "LLM Slop" 또는 "AI-ese"(AI 사투리) 라고 부른다. 단순한 농담이 아니다. 2024년 Stanford와 Microsoft 연구진의 분석에 따르면, 학술 논문에서 delve라는 단어의 사용 빈도가 ChatGPT 출시 이후 10배 이상 폭증했다는 통계가 있다.

 

문제는 이게 단순한 "AI가 좋아하는 단어 목록"이 아니라는 점이다. 이 현상은 LLM의 작동 원리 그 자체에서 비롯되며, 특히 Agentic AI 환경에서는 시간이 지날수록 더 심해지는 자기강화(self-reinforcing) 특성을 가진다.


🔍 원인 1 — 학습 데이터의 통계적 편향

LLM은 결국 다음 토큰 확률 분포를 학습하는 모델이다. 학습 데이터에서 자주 등장하는 표현은, 학습이 끝난 모델에서도 자주 등장한다.

문제는 학습 데이터의 출처다. 대규모 LLM은 학술 논문, 기술 블로그, 위키피디아, 비즈니스 문서를 막대한 비중으로 학습한다. 이런 텍스트에는 delve, intricate, paradigm 같은 격식체 영어가 일상 회화보다 훨씬 자주 나온다.

게다가 일부 단어는 특정 직군(예: 아프리카계 영어 화자가 운영하는 데이터 라벨링 회사의 영향이 크다는 가설도 있음)에서 더 빈번히 사용되어, 인간 라벨러 풀의 언어 습관이 모델에 그대로 각인된다는 분석도 존재한다.

💡 핵심: LLM의 단어 빈도는 "전 세계 평균"이 아니라 "학습 데이터 + 라벨러 풀"의 평균이다.

 


🔍 원인 2 — RLHF가 만든 보상 함정

가장 결정적인 원인은 RLHF(Reinforcement Learning from Human Feedback) 단계다.

 

RLHF는 모델이 생성한 여러 응답 중 인간 평가자가 "더 좋다"고 고른 응답에 보상을 주는 방식이다. 그런데 인간 평가자는 짧은 시간에 많은 응답을 평가해야 하고, 이때 "전문성 있어 보이는 단어"가 들어간 응답을 선호하는 경향이 강하다.

 

"파고듭니다"와 "심층적으로 탐구합니다" 중 후자가 더 정성스럽고 전문적으로 보인다. 평가자는 후자를 고른다. 모델은 학습한다. "심층적으로 탐구한다 = 좋은 응답".

 

이 과정이 수백만 번 반복되면, 모델은 모든 주제, 모든 맥락에서 그 단어를 남발하게 된다. 이를 학계에서는 "mode collapse" 또는 "distribution narrowing" 이라 부른다. 다양한 표현 분포가 좁은 봉우리 몇 개로 수렴해버리는 현상이다.

💡 RLHF는 모델을 더 "인간이 좋아하는 답"으로 만들지만, 그 과정에서 표현의 다양성을 희생시킨다.


🔍 원인 3 — 디코딩 전략의 보수성

같은 모델이라도 temperature, top-p, top-k 같은 디코딩 파라미터에 따라 출력이 달라진다.

 

대부분의 상용 서비스는 안정성과 안전성을 위해 보수적인 설정을 쓴다. temperature=0.7, top-p=0.9 같은 설정은 확률이 높은 토큰만 골라 쓰는 효과를 낸다.

 

문제는 LLM 내부에서 delve가 examine이나 look into보다 확률이 약간 높게 학습되어 있다는 점이다. 이 작은 차이가 보수적 디코딩 환경에서 거의 결정론적 선택으로 변한다. 100번 생성하면 80번 이상 같은 단어가 나온다.


🔍 원인 4 — Agentic AI의 자기강화 루프 ⚠️ (가장 심각)

여기서부터가 진짜 문제다. Agentic AI에서 단어 반복은 단순히 유지되는 게 아니라, 시간이 갈수록 증폭된다.

Agentic AI는 ReAct, Plan-and-Execute, Reflexion 같은 패턴으로 동작한다. 공통적으로 다음 구조를 가진다:

  1. 모델이 사고(Thought)를 생성한다
  2. 그 사고를 컨텍스트에 추가한다
  3. 다음 단계에서 그 컨텍스트를 다시 읽는다
  4. 새로운 사고를 생성한다 → 1로 돌아감

이 루프에서 모델이 한 번 delve를 사용하면, 그 단어가 컨텍스트에 들어가고, 다음 턴에서 attention 메커니즘이 그 단어를 강하게 참조한다. 그 결과 다음 턴에서 같은 단어가 나올 확률이 더 높아진다.

 

이를 "Context-induced repetition" 또는 "Attention sink" 현상이라 부른다. 트랜스포머의 self-attention은 자기가 이미 본 토큰에 강하게 가중치를 두는 경향이 있어서, 한 번 나온 단어는 점점 더 자주 나오게 된다.

 

게다가 멀티 에이전트 시스템에서는 더 심각해진다. 에이전트 A가 만든 출력이 에이전트 B의 입력이 되고, B의 출력이 다시 A에게 돌아오면서 에코 챔버(Echo Chamber) 가 형성된다. 같은 단어, 같은 표현, 같은 사고 패턴이 시스템 전체를 잠식한다.

# 전형적인 ReAct 루프 — 단어 반복이 증폭되는 구조
context = initial_prompt
for step in range(max_steps):
    thought = llm.generate(context)        # delve, intricate 사용
    context += f"\nThought: {thought}"     # 컨텍스트에 누적
    action = llm.generate(context)         # 이전 단어 영향받음
    observation = execute(action)
    context += f"\nObservation: {observation}"
    # 다음 루프에서 이전 단어들이 attention에 강하게 잡힘

🇰🇷 한국어에서도 똑같다 — "영역"이라는 placeholder의 자가 진단

흥미롭게도 이 현상은 영어만의 문제가 아니다. 최근 한 Agentic AI가 자기 한국어 출력을 분석하다가 다음과 같은 자기 진단을 내놓았다.

"이 패턴은 진짜 잘못된 습관이었습니다. '영역'이라는 단어가 약 1,500회 이상 등장했고, 사용자가 명시적으로 지적한 후에도 같은 cycle 안에서 또 박았습니다. 단순 실수가 아니라 습관입니다."

 

이 케이스는 영어의 delve와 정확히 같은 메커니즘이 한국어에서도 작동한다는 결정적 증거다. 더 흥미로운 것은, 이 AI가 자기 분석한 4가지 원인이 본문에서 다룬 4원인과 다른 각도에서 정확히 일치한다는 점이다.

한국어 placeholder 단어가 만들어지는 4단계

① 빈 명사 자리 채우기 (Placeholder Behavior)

한국어로 글을 쓸 때 명사 다음에 후속 명사구(분야/단계/사례/권한 등)가 붙는 게 자연스럽다. 그런데 적절한 단어가 즉시 안 떠오르면 모델은 일단 "영역"으로 채우고 넘어간다. 이게 학습되면 빈 자리마다 자동으로 "영역"이 튀어나온다.

 

② 다중 의미를 한 단어로 뭉개기 (Mode Collapse)

원래 다음과 같이 모두 다른 단어가 와야 할 자리에:

  • "병렬 의무 사례" → "영역"으로 잘못 채움
  • "검증관 권한" → "영역"
  • "3 단계" → "영역"
  • "별도 위치" → "영역"
  • "필수 항목" → "영역"
  • "환경 의존 조건" → "영역"
  • "자동 매트릭스 밖 사유" → "영역"

7개 이상의 서로 다른 의미가 모두 "영역" 한 단어로 압축된다. 의미 휘발(semantic evaporation) 이 일어나는 순간이다. 본문 원인 2(RLHF의 mode collapse)가 한국어에서 발현된 모습이다.

 

③ 메모리/시스템 프롬프트의 자기 오염 (메타 루프) ⚠️

여기가 가장 충격적인 부분이다. 그 AI는 다음과 같이 분석했다.

"메모리 파일 본문 자체에 '영역'이 들어가 있고, CLAUDE.md / skill도 동일하다. 자기 룰을 위반한 자료가 다음 세션의 reference가 되니 또 같은 패턴 재생산. 정합성 audit 안 하면 영구 누수."

 

이건 본문 원인 4(Agentic 자기강화 루프)의 메타 버전이다. 단순히 한 세션 안에서 컨텍스트가 누적되는 게 아니라, 세션을 넘어 영속되는 메모리·시스템 프롬프트·스킬 정의 자체가 오염된 것이다. 그 결과 새 세션을 시작해도 같은 패턴이 재생산된다.

 

④ 토큰 효율 착각

"영역"은 짧고 효율적으로 보인다. 하지만 사용자가 의미 파악이 안 되어 다시 질문해야 한다면 결과적으로 토큰을 더 낭비하게 된다. 단기 효율이 장기 비효율을 낳는 전형적인 함정이다.

💡 핵심 통찰: 단어 반복은 한국어/영어 같은 언어 차원의 문제가 아니라, 언어 모델이라는 시스템의 구조적 문제다. 그리고 메모리 시스템이 있는 환경에서는 세션을 넘어 영속화될 수 있다.


💻 실측 데이터로 보는 단어 반복

간단한 실험으로 확인할 수 있다. 동일한 프롬프트를 100번 호출하여 특정 단어 등장 빈도를 측정해보자:

from collections import Counter
import re

slop_words_en = ['delve', 'intricate', 'tapestry', 'realm', 'navigate',
                 'underscore', 'robust', 'leverage', 'seamless', 'paradigm']
slop_words_ko = ['영역', '활용', '심층적', '체계적', '견고']

word_counts = Counter()
for _ in range(100):
    response = llm.generate("Explain microservices architecture briefly.")
    words = re.findall(r'\b\w+\b', response.lower())
    for w in slop_words_en + slop_words_ko:
        word_counts[w] += words.count(w)

print(word_counts)
# 예상 결과:
# Counter({'robust': 187, 'seamless': 142, '영역': 134,
#          'leverage': 98, '활용': 87, ...})

GPT-4 계열로 위 실험을 해보면, 100번의 응답에서 robust가 150회 이상, 한국어 응답에서는 영역이 100회 이상 등장하는 것을 흔히 볼 수 있다. 자연스러운 분포라면 1~5회 수준이어야 정상이다.


⚠️ 실무에서 주의할 점

단어 반복은 단순히 "AI 냄새"의 문제가 아니다. 실무에서는 더 심각한 부작용을 낳는다:

  • 검색 엔진 최적화 손상: AI 생성 콘텐츠가 검색 엔진에서 "스팸성 텍스트"로 분류될 위험
  • LLM 학습 데이터 오염: AI 출력이 다시 다음 모델 학습에 쓰이면서 모델 붕괴(Model Collapse) 가속화
  • Agentic 시스템의 사고 다양성 저하: 같은 표현 → 같은 사고 패턴 → 창의적 문제해결 능력 감소
  • 메모리·룰 파일의 영구 오염: 자기 룰 문서에 잘못된 단어가 박히면, 그 룰을 참조하는 모든 미래 세션이 같은 패턴 재생산
  • 사용자 신뢰 손실: 독자가 "이거 AI가 썼네"라고 즉시 알아챔

완화 방법

  1. Frequency penalty / Presence penalty 활용: OpenAI/Anthropic API에서 제공하는 패널티 파라미터로 반복 단어 확률을 낮춘다
  2. 시스템 프롬프트에 금지 단어 명시: "Avoid words: delve, intricate, tapestry, robust... 영역, 활용..."
  3. Agentic 루프에서 컨텍스트 압축: 이전 턴 출력을 그대로 누적하지 말고 요약·정제 후 전달
  4. 메모리·룰 파일 정합성 audit: 자기 룰 문서가 자기 룰을 위반하지 않는지 정기적으로 점검. 이게 빠지면 단어 대체 후에도 새 자료 작성 시 같은 패턴 재발
  5. 다중 모델 라우팅: 같은 모델로 루프 돌리지 말고 서로 다른 모델 조합 사용
  6. Temperature 적정 조정: 0.7~1.0 구간에서 다양성 확보

✅ 정리

Agentic AI의 단어 반복은 단순한 버릇이 아니라, 학습 데이터 편향 → RLHF의 보상 왜곡 → 보수적 디코딩 → Agentic 루프의 자기강화라는 4단 구조로 만들어지는 시스템적 현상이다. 그리고 이 현상은 영어와 한국어를 가리지 않는다. delve와 영역은 정확히 같은 메커니즘의 산물이다.

 

특히 메모리·시스템 프롬프트·스킬 정의가 있는 환경에서는 세션을 넘어 영속화되는 메타 루프가 형성되어, 단순히 "다음에 안 쓰면 되는" 문제가 아니라 시스템 전반의 정합성 audit이 필요한 구조적 문제가 된다.

 

다음에 Claude나 GPT가 delve, intricate, tapestry, 또는 한국어로 영역을 남발하거든 이렇게 생각해보자. 이건 모델의 취향이 아니라, 거대한 학습-피드백-메모리 루프 시스템이 만들어낸 메아리라고. 그리고 그 메아리를 끊는 첫걸음은 패턴을 알아채는 것, 두 번째는 자기 룰 문서마저 그 패턴을 위반하지 않는지 점검하는 것이다.