Narrative-of-Thought(NoT) 기법을 통해 소형 언어 모델(SLM)의 시간 추론 논리를 퍼즐 조각처럼 연결하여 성능을 최적화하는 과정을 시각화한 일러스트레이션
|

Narrative-of-Thought: 소형 모델 시간 추론을 GPT-4급으로 올리는 법

Narrative-of-Thought: 소형 모델 시간 추론을 GPT-4급으로 올리는 법

수학 난제는 척척 풀면서 시간 순서 앞에서는 고장 나는 AI, 한 번쯤 겪어보셨죠? 추가 학습 없이 프롬프트 구조 하나로 소형 모델의 시간 감각을 GPT-4급으로 끌어올리는 법을 핵심만 짚어 드립니다.

특히 10B 이하의 소형 모델을 실무에 쓰려고 하면 이 ‘시간 추론(Temporal Reasoning)’ 능력이 GPT-4의 절반 수준이라 뒷목을 잡게 됩니다. 심지어 논리적 사고의 만병통치약이라는 CoT(Chain-of-Thought)를 써도 소형 모델에서는 오히려 성능이 깎이는 기현상이 벌어지기도 합니다.

오늘은 미시간 대학교 연구진이 발표한 ‘Narrative-of-Thought(NoT)’ 기법을 통해, 그렇다고 매번 비싼 GPT-4 API만 쓸 수도 없는 문제를 해결하는 실전 방법을 소개합니다.


💡 핵심 요약: “나열하지 말고, 이야기를 들려줘”

기존 방식이 모델에게 “여기 사건 A, B, C가 있어. 순서대로 화살표 그어봐”라고 강요했다면, NoT는 “이 사건들을 자연스러운 하나의 이야기로 먼저 엮어봐”라고 시킵니다.

언어 모델의 강점을 역이용하다
언어 모델은 학습 과정에서 수많은 소설과 뉴스를 읽었기에 ‘이야기 생성’에는 도가 터 있습니다. 이 강점을 이용해 스스로 논리적 타임라인을 구축하게 만드는 것이 NoT의 핵심입니다.

쉽게 비유하자면 이렇습니다.

❌ 기존 방식

흩어진 퍼즐 조각의 번호만 맞추라고 함 → 정답 도출 자체가 어려움

✅ NoT 방식

퍼즐 조각들을 연결해 ‘그림’을 먼저 그리게 함 → 그림이 완성되면 번호 매기기는 식은 죽 먹기


🛠️ 실전 NoT 프롬프트 적용 3단계

단순히 “이야기를 써봐”라고 뭉뚱그리지 않습니다. 아래의 체계적인 3단계를 거칩니다.

Step 1: Pythonify (데이터 구조화)

자연어로 된 사건들을 파이썬(Python) 클래스 형태로 입력합니다. 왜 코드를 쓸까요? 최신 LLM들은 코드의 논리적 흐름과 구조를 일반 텍스트보다 훨씬 명확하게 이해하기 때문입니다.

Python
class BusinessProcess:
    def step_A(self): return "정부 승인 완료"
    def step_C(self): return "인수 제안서 제출"
    # 사건들을 뒤섞어서 입력 → 모델이 순서를 재구성하게 유도

Step 2: Narrative (징검다리 놓기)

모델에게 위 사건들을 올바른 순서로 연결하는 ‘이야기’를 작성하게 합니다. 프롬프트에 def get_narrative(self): 함수를 만들고 주석으로 “위 사건들을 시간 순서대로 연결하는 서사를 작성하세요”라고 지시하는 식입니다.

Python
    def get_narrative(self):
        # 위 사건들을 시간 순서대로 연결하는
        # 사실적이고 간결한 서사(Narrative)를 작성하세요.
        narrative = """
        먼저 인수 제안서를 제출했습니다.
        이후 정부가 해당 안건을 검토하여 최종 승인했습니다.
        """
        return narrative

Step 3: Temporal Graph (최종 결과 도출)

작성된 이야기를 바탕으로 최종 순서(A → B → C)를 코드로 출력하게 합니다. 모델은 자신이 방금 쓴 ‘논리적 이야기’라는 참고서가 있으니, 실수 없이 순서를 도출해냅니다.

Python
    def get_temporal_graph(self):
        # get_narrative()를 바탕으로 사건의 시간 순서를 추출하세요.
        # 결과를 "A → B → C" 형태의 그래프로 출력하세요.
        return "step_C → step_A"  # 제안서 제출 → 정부 승인

📊 결과가 말해주는 성능: “체급의 한계를 넘다”

8B(80억 개) 파라미터의 Llama-3 모델에 NoT를 적용했더니 놀라운 결과가 나왔습니다. 비싼 파인튜닝(추가 학습) 없이 프롬프트 구조만 바꿨을 뿐인데 소형 모델이 거대 모델의 성능을 위협하게 된 겁니다.

비교 항목 일반 프롬프트 NoT 적용 시 비고
정확도 (F1 Score) 20점대 42.2점 ↑ GPT-3.5와 동급 수준
구조적 오류 (GED) 높음 매우 낮음 ↓ GPT-4보다 우수한 성과
추가 학습 필요 여부 불필요 프롬프트 구조만 변경

💡 한 끗 차이 팁: “Simple Report 스타일로 쓰세요”

연구 결과에 따르면, 이야기를 쓸 때 화려한 소설 형식을 취하면 오히려 독이 됩니다. 가장 성능이 좋았던 스타일은 ‘Simple Report’였습니다.

❌ 나쁜 사례 (소설 형식)

“옛날 옛적에 정부가 승인을 했고, 그 뒤로 찬란한 미래가…” (불필요한 수식어 → 추론 오류 유발)

✅ 좋은 사례 (Simple Report 형식)

“먼저 제안서를 제출했습니다. 이후 정부가 검토하여 승인했습니다.” (객관적·사실적·간결)

미사여구를 걷어내고 단순(Simple), 간결(Concise), 사실적(Factual)인 뉴스 리포트 형태로 쓰게 하는 것이 LLM의 추론 오류를 줄이는 핵심 비결입니다.


🎯 마무리하며

AI가 자꾸 시간 순서를 헷갈린다면, 그건 모델의 지능 문제라기보다 ‘생각할 발판’이 없었기 때문일 확률이 높습니다.

코드로 구조를 잡고, 사실적인 이야기로 징검다리를 놓아주세요. 지금 바로 시스템 프롬프트에 이 NoT 구조를 도입해 보세요. “얘가 왜 이래?” 싶었던 AI의 시간 감각이 놀라울 정도로 정교해질 것입니다.

Similar Posts