hanaoverride's notebook

잡다한거 적는 곳입니다

View on GitHub

LLM과 문장 부호 : 정말로 문장 부호 사용이 프롬프트 해석에 도움이 될까?

· 카테고리: llm-engineering

LLM과 문장 부호 : 정말로 문장 부호 사용이 프롬프트 해석에 도움이 될까?

프롬프트에 느낌표! 쓰면 진짜 더 잘 알아들을까?

저는 ChatGPT 쓸 때마다 문장 부호를 엄청 애용해왔어요.

“이거 중요해!!!” "’반드시’ 이렇게 해줘” “첫 번째로, 두 번째로…“

왜 그랬냐고요?

  1. 일단 내가 읽기 편해서
  2. 모델도 강조한 부분에 더 집중할 거라 믿어서

생각해보면 당연한 거 아니에요? 사람도 느낌표 보면 “아, 이거 중요하구나!” 하잖아요. 따옴표 쓰면 “이 단어 특별히 봐야 하는구나” 하고요.

근데 정말 그럴까요?

오늘은 이 궁금증을 직접 실험으로 풀어봤습니다. 결과는… 충격적이었어요.

잠깐, 어텐션(Attention)이 뭔데?

LLM이 문장을 이해하는 방식

2017년에 나온 논문 제목이 “Attention is All You Need”였어요. 말 그대로 “어텐션만 있으면 됨!” 이라는 거죠.

어텐션이 뭐냐면, LLM이 문장에서 어떤 단어에 얼마나 집중하는지 보여주는 메커니즘이에요.

예시로 설명할게요:

“고양이가 생선을 물고 있다”

이 문장에서 LLM은:

  • ‘고양이’와 ‘생선’의 관계에 집중
  • ‘물고 있다’가 누구의 행동인지 파악
  • 각 단어의 중요도를 점수로 매김 (0~1점)

병렬 처리로 속도도 빨라요!

전기 회로 아시죠? 직렬로 연결하면 하나씩 처리하느라 느린데, 병렬로 연결하면 동시에 처리해서 빠른 것처럼, LLM도 문장을 병렬로 처리해서 엄청 빨라진 거예요.

문장 부호, 너 대체 뭐 하는 애니?

인간에게 문장 부호란

우리가 쓰는 문장 부호들: **! “ # $ % & ( ) * + , - . / : ; < = > ? @ [ ] ^ { } **

이것들이 하는 일:

  • 감정 표현: “정말 좋았어!” vs “정말 좋았어”
  • 의미 전환: “그는 천재, 아니, 천재 그 이상이었다”
  • 비꼼 표시: “네가 ‘대단하다’고?”

특히 재밌는 예시:

  • “너 되게 옷 잘 차려입었다. 어디 여행 가니?” → 진짜 칭찬
  • “너 되게 옷 잘 차려입었다. 어디 ‘여행’ 가니?” → 비꼼

문장 부호 하나로 의미가 180도 바뀌는 거예요!

실험: LLM도 문장 부호 알아듣나?

기존 연구는 뭐라고 하나

제가 찾아본 결과, 놀랍게도 관련 연구가 거의 없더라고요.

2020년 StackExchange 글:

“왜 언어 모델들은 문장 부호를 무시하는가?”

당시 답변: “연구자들이 문장 부호를 별로 중요하게 안 봤어요”

2020년 논문 “Let’s Eat Grandma”:

  • 제목부터 강렬하죠? ㅋㅋㅋ
  • “Let’s eat grandma” = 할머니를 먹자
  • “Let’s eat, grandma” = 할머니, 같이 먹어요

이 논문에서는 당시 BERT 같은 모델들이 문장 부호를 제대로 처리 못한다고 지적했어요.

직접 실험해봤습니다

Falcon 7B 모델로 직접 테스트했어요. (더 좋은 모델 쓰고 싶었는데 GPU가… ㅠㅠ)

실험 스크립트 다운로드

실험 방법: 문장 부호 있는 버전 vs 없는 버전으로 어텐션 점수가 어떻게 바뀌는지 측정

충격적인 실험 결과들

실험 1: “시간 여행자” vs “대부분의 시간에, 여행자”

  • “Most of the time travellers worry…“
  • “Most of the time, travellers worry…“

예상: 쉼표 넣으면 ‘time’과 ‘travellers’ 연결이 약해질 거야 결과: 0.2866 → 0.3306 (오히려 강해짐?!)

실험 2: “할머니를 먹자” vs “할머니, 같이 먹어요”

  • “Let’s eat grandma”
  • “Let’s eat, grandma”

예상: 쉼표 넣으면 ‘eat’과 ‘grandma’ 연결이 약해질 거야 결과: 0.3770 → 0.4822 (이것도 강해짐?!?!)

실험 3: 기부 문장

  • “Your donation just helped someone get a job”
  • “Your donation just helped someone. Get a job”

예상: 마침표로 끊으면 ‘someone’과 ‘get’ 연결이 약해질 거야 결과: 0.4080 → 0.2578 (드디어 예상대로!)

실험 4: 요리 문장

  • “I like cooking my family and my dog” (가족이랑 개를 요리?)
  • “I like cooking, my family, and my dog” (요리, 가족, 개를 좋아함)

결과: 수치는 바뀌는데… 일관된 패턴을 찾을 수 없음

결론: 문장 부호는 생각보다 복잡하다

핵심 발견

문장 부호가 어텐션에 영향은 주지만, 우리가 기대하는 방향으로 작동하지 않는다!

제가 “느낌표 쓰면 더 강조되겠지!”라고 생각한 게 완전히 틀렸어요. LLM은 문장 부호를 인식하지만, 인간의 직관과는 다른 방식으로 처리하는 것 같아요.

왜 이런 일이?

가설 1: 데이터가 너무 적었다

  • 4개 문장으로는 통계적 의미 없음
  • 최소 수천 개는 분석해야…

가설 2: 애초에 패턴이 없을지도

  • 이렇게 쉬운 주제인데 논문이 거의 없다?
  • 연구자들도 패턴 못 찾았을 가능성

그래서 문장 부호 쓰는 거 의미 없어요?

아니에요!

문장 부호를 써야 하는 이유:

  1. 사람이 읽기 편해요 (이게 제일 중요!)
  2. 프롬프트 수정할 때 구조 파악이 쉬워요
  3. 어느 정도 효과는 있을 거예요 (증명은 못했지만…)

프로그래밍할 때도 주석 달잖아요. 컴퓨터는 무시하지만 사람 보기 좋으라고요. 프롬프트도 마찬가지예요.

마무리: 계속 연구중입니다

이번 실험으로 확실해진 건:

  • ✅ 문장 부호가 LLM에 영향을 줌
  • ❌ 하지만 예상과는 다른 방식으로 작동
  • ❓ 정확한 메커니즘은 아직 미스터리

여러분도 궁금한 거 있으면 직접 실험해보세요!

혹시 관련 연구 아시는 분 있으면 댓글로 알려주세요. 더 파고들어서 돌아올게요!

CC BY-SA 4.0
이 글 및 사이트 내 명시된 창작 컨텐츠 (코드 스니펫 제외)은(는) Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) 라이선스로 제공됩니다.
출처 표기: 이하나 · 수정 / 2차 저작물 작성 시 동일한 라이선스로 공유해야 합니다.
License / Attribution Info