대규모 언어 모델(LLM)의 상식 추론: 확률적 귀납 상식(PACS)으로 한계를 넘다
출처: arxiv.org
대규모 언어 모델(LLM)의 발전은 인공지능 분야에 혁명을 가져왔습니다. 특히 자연어 이해와 생성 능력은 놀랍지만, 복잡한 추론 문제에 직면했을 때 여전히 한계를 드러내곤 합니다. 인간의 추론은 단순히 논리적 규칙을 따르는 것을 넘어, 광범위한 '상식'에 기반합니다. 예를 들어, "토끼는 동물이다"와 같은 명제는 너무나 당연하여 논리 시스템에 명시적으로 입력되지 않는 경우가 많습니다. 이러한 상식의 부재는 LLM이 형식 논리 솔버와 결합될 때조차 치명적인 약점으로 작용해왔습니다. 2026년 현재, 이러한 문제를 해결하기 위한 '신경-기호(neurosymbolic)' 접근법이 활발히 연구되고 있으며, 그 중심에 '확률적 귀납 상식(Probabilistic Abductive CommonSense, PACS)'이라는 혁신적인 알고리즘이 있습니다.
LLM 추론의 현재와 한계: 상식의 딜레마
최근 몇 년간 LLM의 형식적 추론 능력 향상에 대한 연구는 매우 활발했습니다. 특히 LLM에 형식 논리 솔버를 결합하는 방식은 유망한 접근법으로 평가받았죠. LLM의 강력한 자연어-형식 논리 번역 능력 덕분에 이러한 신경-기호 접근법은 인간 수준의 추론 능력에 도달할 잠재력을 가지고 있었습니다. 하지만 이 단순한 접근법은 종종 취약성을 드러냈습니다. 논리 솔버는 "흰색은 색깔이다" 또는 "토끼는 동물이다"와 같은 필수적인 상식 정보가 부족하여 문제를 해결하지 못하는 경우가 많았습니다.
이러한 문제에 대응하기 위해, 이전 연구들(예: 2024년 Toroghi et al., 2026년 Cotnareanu et al.의 LLM-Tres 및 ARGOS)은 LLM이 누락된 상식 가정(commonsense propositions)을 제공하도록 하여 문제를 보완하려 했습니다. 이 방식은 문제를 연역 추론에서 귀납 추론으로 전환하여, 단순히 결론의 참/거짓뿐만 아니라 그 결론에 도달하는 데 필요한 누락된 정보(L)를 찾는 데 집중합니다. 그러나 이러한 접근법은 중요한 가정을 내포하고 있습니다. 바로 '모든 사람이 특정 상식적 사실에 보편적으로 동의할 것'이라는 가정입니다. 이는 "핫소스는 맵다"와 같은 논란의 여지가 없는 개념에는 유효할 수 있지만, 더 복잡하거나 모호한 영역에서는 한계를 보였습니다.
문제의 핵심은 '상식'이 보편적이지 않다는 점입니다. 두 사람이 추론 오류 없이 다른 결론에 도달할 수 있는 것은, 그들이 서로 다른 상식적 믿음(L1, L2)을 가지고 있기 때문일 수 있습니다. 이러한 개인차를 무시한 채 단일한 상식을 가정하는 것은 현실 세계의 복잡한 추론 문제를 해결하는 데 방해가 됩니다.
확률적 귀납 상식(PACS): 개인의 상식 변이를 모델링하다
이러한 한계를 극복하기 위해, Joseph Cotnareanu, Chiara Roverato, Han Zhou, Didier Chetelat, Yingxue Zhang, Mark Coates 연구팀은 2026년에 '확률적 귀납 상식(Probabilistic Abductive CommonSense, PACS)'이라는 새로운 신경-기호 및 확률적 프레임워크를 제안했습니다. PACS는 LLM과 형식 논리 솔버의 강점을 모두 활용하면서도, 누락된 가정에 모든 사람이 동의할 것이라는 문제적 가정을 배제합니다.
PACS의 핵심 아이디어: '대부분의 사람'은 어떻게 생각할까?
PACS는 특정 명제가 참인지 거짓인지에 대해 '대부분의 사람들이 어떻게 판단할 것인가'를 결정하는 것을 목표로 합니다. 이를 위해 '귀납적 확률(Abductive Probability, AP)'이라는 개념을 도입하는데, 이는 모든 인간(R)의 상식 집합(L(R))에 걸쳐 특정 질의(c)가 참이라는 지표 함수의 기댓값으로 정의됩니다:
AP(S,c) ≡ E_R[1[S ∧ L(R) ⊢ c]]
이 식은 주어진 전제(S)와 개인의 상식(L(R)) 하에 질의(c)가 참으로 도출될 확률을 나타냅니다. 만약 이 확률이 0.5보다 크다면, 해당 질의는 '귀납적으로 참'이라고 판단하는 것이죠. 즉, 개인의 상식적 믿음의 다양성을 명시적으로 모델링하는 것이 PACS의 가장 큰 특징입니다.
PACS 알고리즘의 작동 방식
PACS는 LLM과 논리 솔버를 사용하여 개인의 고유한 상식적 믿음을 반영하는 '증명(proof)'을 샘플링하는 알고리즘을 고안했습니다. 이 알고리즘은 다음과 같은 단계를 거칩니다:
- 상식 벡터 샘플링: LLM과 논리 솔버를 활용하여 여러 개의 그럴듯한 상식 벡터 L_1, L_2, ..., L_K를 생성합니다. 각 벡터는 개인의 잠재적 믿음을 나타냅니다.
- 빠른 결론 도출 우선: 샘플링 과정에서 가능한 한 빨리 결론(S ∧ L_k ⊢ c 또는 S ∧ L_k ⊢ ¬c)에 도달하도록 우선순위를 부여하여 계산 비용을 최소화합니다.
- 몬테카를로 추정: 샘플링된 상식들을 기반으로, 질의가 참 또는 거짓일 확률을 몬테카를로 추정량으로 근사합니다.
\widehat{AP}(S,c) = \frac{1}{K}\sum_{k=1}^{K}\,1[S \wedge L_k \vdash c]
위 식은 K개의 샘플 중 질의(c)가 참으로 도출된 샘플의 비율을 계산하여 귀납적 확률을 추정합니다. 이 추정치가 0.5보다 크면 참으로, 작으면 거짓으로 결론짓습니다.
아래는 PACS의 핵심 아이디어를 파이썬 코드의 의사 코드로 표현한 것입니다. 실제 구현은 더 복잡하지만, 개념을 이해하는 데 도움이 될 것입니다.
import random
from typing import List, Dict, Any
# 가정: LLM과 Formal Solver가 이미 구현되어 있다고 가정
class LLM:
def generate_commonsense_assumption(self, problem_statement: str, existing_assumptions: List[str]) -> str:
"""
LLM이 주어진 문제와 현재까지의 가정들을 바탕으로
새로운 상식적 가정을 생성합니다.
실제 LLM 호출은 API 통신 등을 통해 이루어집니다.
"""
# 실제 LLM은 훨씬 복잡한 로직을 가집니다.
# 여기서는 설명을 위한 더미 응답입니다.
possible_commonsense = [
"white is a color",
"rabbits are animals",
"birds can fly",
"water is wet",
"humans have two legs",
"fire is hot"
]
# 문제와 관련성이 높은 가정을 선택하는 복잡한 로직이 필요
# 예시로 무작위 선택
return random.choice(possible_commonsense)
class FormalSolver:
def solve(self, premises: List[str], query: str) -> str:
"""
형식 논리 솔버가 주어진 전제와 질의를 바탕으로
참/거짓/미결정(UNDECIDED)을 반환합니다.
"""
# 실제 솔버는 SAT Solver, Theorem Prover 등을 사용합니다.
# 여기서는 설명을 위한 더미 응답입니다.
if "rabbits are animals" in premises and "all animals eat food" in premises and query == "rabbits eat food":
return "TRUE"
elif "white is a color" in premises and query == "is white a color":
return "TRUE"
elif "birds can fly" in premises and query == "can birds fly":
return "TRUE"
elif "fire is hot" in premises and query == "fire is cold":
return "FALSE"
else:
return random.choice(["TRUE", "FALSE", "UNDECIDED"]) # 무작위로 결정하거나 미결정
def run_pacs(problem_statement: str, query: str, num_samples: int = 100, max_assumptions_per_sample: int = 10) -> float:
"""
Probabilistic Abductive CommonSense (PACS) 알고리즘을 실행합니다.
"""
llm = LLM()
solver = FormalSolver()
true_count = 0
for k in range(num_samples):
current_premises = [problem_statement]
conclusion_reached = False
for _ in range(max_assumptions_per_sample):
# LLM을 사용하여 새로운 상식적 가정 L_k를 샘플링
new_assumption = llm.generate_commonsense_assumption(problem_statement, current_premises)
current_premises.append(new_assumption)
# 솔버를 사용하여 결론 도출 시도
result = solver.solve(current_premises, query)
if result == "TRUE":
true_count += 1
conclusion_reached = True
break # 결론에 도달했으므로 더 이상 가정 샘플링 불필요
elif result == "FALSE":
conclusion_reached = True
break # 결론에 도달했으므로 더 이상 가정 샘플링 불필요
# 만약 max_assumptions_per_sample 내에 결론에 도달하지 못했다면,
# 해당 샘플은 결론을 내지 못한 것으로 간주 (여기서는 TRUE/FALSE에 카운트되지 않음)
# 실제 구현에서는 'UNDECIDED'로 처리하거나, 특정 임계치 후 재샘플링 등 복잡한 로직 추가 가능
# 몬테카를로 추정량 계산
estimated_ap = true_count / num_samples
return estimated_ap
# 예제 사용
if __name__ == "__main__":
problem = "All birds have wings."
q = "Can birds fly?"
# PACS 실행 (1000개의 샘플로 추정)
estimated_probability = run_pacs(problem, q, num_samples=1000)
print(f"문제: '{problem}', 질의: '{q}'")
print(f"추정된 귀납적 확률 (AP): {estimated_probability:.2f}")
if estimated_probability > 0.5:
print("결론: 대부분의 사람들은 이 질의가 참이라고 판단할 것입니다.")
else:
print("결론: 대부분의 사람들은 이 질의가 거짓이라고 판단하거나 확신하지 못할 것입니다.")
위 코드는 PACS의 확률적 샘플링과 몬테카를로 추정 개념을 보여주는 간략한 의사 코드입니다. 실제 시스템에서는 LLM과 형식 솔버의 상호작용이 훨씬 정교하게 설계됩니다.
PACS의 성능과 기존 방법론과의 비교
PACS는 다양한 귀납 추론 벤치마크에서 그 우수성을 입증했습니다. 연구 결과에 따르면, PACS는 다음과 같은 기존 방법론들을 뛰어넘는 정확도를 보여주었습니다.
- Chain-of-Thought (COT): LLM이 단계별 추론 과정을 생성하도록 유도하는 방식 (2022년 Wei et al. 제안)
- 기존 신경-기호 접근법: LLM-Tres, ARGOS 등 단일 상식 가정을 전제로 하는 방식
- 검색 기반 접근법: Tree of Thoughts (TOT)나 Monte Carlo Tree Search (MCTS)와 같이 LLM을 활용하여 최적의 추론 단계를 탐색하는 방식
이러한 결과는 PACS가 단순한 추론 알고리즘을 넘어, 기저에 깔린 가정과 프레임워크의 신뢰성 및 가치를 입증하는 중요한 지표입니다. 특히 COT와 같은 단순 프롬프팅 방식의 한계(Saparov and He, 2023)를 극복하고, 형식 솔버의 상식 부족 문제를 근본적으로 해결했다는 점에서 의미가 큽니다.
주요 LLM 추론 방법론 비교
| 구분 | 설명 | 상식 처리 방식 | 주요 한계/특징 | PACS 대비 |
|---|---|---|---|---|
| Chain-of-Thought (COT) | LLM이 단계별 추론 과정(Rationale)을 생성하도록 유도하여 정확도 향상 | LLM의 내부 지식에 의존 | 증명 계획의 어려움, 단계가 사실적이어도 문제 해결에 기여하지 못하는 경우 발생 | 정확도 낮음 |
| 기존 신경-기호 (LLM-Tres, ARGOS 등) | LLM이 부족한 상식 명제(L)를 제공하고, 솔버가 이를 활용하여 추론 | '모두가 동의할 상식'을 가정 | 개인의 상식적 믿음 다양성 무시, 모호한 도메인에서 실패 | 정확도 낮음 |
| 심볼릭 방법 (F-COT, SAT-LM 등) | LLM이 텍스트를 심볼릭 논리로 변환, 전문 솔버가 추론 | 상식 정보 부족 (솔버의 한계) | 상식 정보와 모호성 처리 불가, 단순 논리 구조 데이터셋에만 효율적 | 정확도 낮음 |
| 트리 검색 방법 (TOT, MCTS) | LLM이 트리를 탐색하며 최적의 추론 단계 모색 | LLM의 내부 지식 및 샘플링된 신뢰 점수 활용 | 논리 문제의 가변적인 트리 구조에 부적합, 시뮬레이션 비용 발생 | 정확도 낮음 |
| 확률적 귀납 상식 (PACS) | LLM과 솔버를 활용해 개인의 상식적 믿음(증명)을 샘플링하고 집계 | 개인의 상식 변이를 확률적으로 모델링 | 기존 방법론 대비 높은 정확도, 현실적 추론 가능 | 가장 높은 정확도 |
결론: 인간처럼 추론하는 AI를 향한 한 걸음
대규모 언어 모델의 추론 능력은 인공지능 연구의 오랜 숙원 과제였습니다. 특히 '상식'이라는 인간 고유의 영역은 AI에게 넘기 어려운 벽처럼 느껴졌죠. 하지만 2026년 발표된 확률적 귀납 상식(PACS)은 이러한 벽을 허무는 중요한 진전을 보여주었습니다. 단순히 논리적 일관성을 넘어, 개인의 다양한 상식적 믿음을 포용하고 확률적으로 통합하는 방식은 AI가 더욱 인간적인 방식으로 세상을 이해하고 추론할 수 있는 길을 열어줄 것입니다.
PACS는 LLM이 단순한 정보 처리기를 넘어, 복잡하고 미묘한 인간의 사고 과정을 모방하는 데 한 걸음 더 다가섰음을 의미합니다. 앞으로 이 기술이 더욱 발전하여, 우리가 일상에서 마주하는 다양한 문제들을 AI가 더욱 현명하게 해결하는 2026년의 미래를 기대해 봅니다.
GitHub에서 PACS 코드에 접근할 수 있습니다. (출처: Cotnareanu et al., 2026)
출처: arxiv.org
출처: arxiv.org
참고 논문
Abductive Reasoning with Probabilistic Commonsense
https://arxiv.org/html/2605.08011v1