[Logic] AI는 어떻게 추론하는가? : 도출 규칙(Resolution Rule) 분석

2025. 12. 26. 12:51·◈ Study/인공지능 AI🛸
728x90
반응형
최근 하버드의 CS50 AI 강의를 듣다가 흥미로운 장표를 발견했습니다. 겉보기에는 단순한 영어 문장 놀이처럼 보이지만, 사실 이 장표는 현대 자동 정리 증명(Automated Theorem Proving)과 지식 기반 에이전트(Knowledge-Based Agent)가 세상을 이해하는 가장 핵심적인 알고리즘, 바로 도출 규칙을 설명하고 있습니다.

오늘은 이 논리식이 왜 성립하는지, 그리고 우리 개발자들이 다루는 시스템 내부에서 이것이 어떻게 응용되는지 'Deep Dive' 해보겠습니다.

1. 문제의 정의 (Formal Definition)

사진 속 강사(Brian Yu)가 보여주는 예시는 다음과 같은 구조를 가지고 있습니다.

CS50 AI (Introduction to Artificial Intelligence with Python)


  1. (Ron is in the Great Hall) ∨ (Hermione is in the library)
  2. (Ron is not in the Great Hall) ∨ (Harry is sleeping)
  3. ∴ (Hermione is in the library) ∨ (Harry is sleeping)

 

이를 명제 논리(Propositional Logic)의 기호로 치환해 봅시다. (개발자에게는 자연어보다 변수가 편하니까요.)
  • P: Ron is in the Great Hall
  • Q: Hermione is in the library
  • R: Harry is sleeping

 

이 식은 다음과 같은 CNF(Conjunctive Normal Form) 형태의 추론 규칙이 됩니다.

CNF(Conjunctive Normal Form)

 

여기서 핵심은 P와 ¬P라는 상충되는 리터럴(Complementary Literals)이 존재한다는 점입니다. 이 둘은 논리적으로 공존할 수 없기에 서로 상쇄(Resolve)되고, 남은 리터럴들의 합집합(Q ∨ R)이 결론으로 도출됩니다.

2. 논리적 증명: 왜 이것이 참인가?

개발자 관점에서 디버깅하듯 케이스 분석(Case Analysis)을 해보면 이 규칙의 견고함을 알 수 있습니다.
P는 True 아니면 False, 두 가지 상태만 가질 수 있습니다.

Case 1: P가 True인 경우 (론이 연회장에 있다면)

두 번째 전제인 (¬P ∨ R)을 살펴봅시다.
  • P가 True이므로 ¬P는 False가 됩니다.
  • 이 전제(OR 연산)가 True가 되기 위해서는, 나머지 항인 R이 반드시 True여야 합니다.
  • 결과적으로 (Q ∨ R)은 참이 됩니다.

 

Case 2: P가 False인 경우 (론이 연회장에 없다면)

첫 번째 전제인 (P ∨ Q)를 살펴봅시다.
  • P가 False이므로, 이 전제가 True가 되기 위해서는 Q가 반드시 True여야 합니다.
  • 결과적으로 (Q ∨ R)은 참이 됩니다.

 

결론: P의 진리값(State)이 무엇이든 간에, Q 혹은 R 둘 중 하나는 반드시 참이어야 합니다.
이것이 Resolution Rule이 Soundness(건전성)를 갖는 이유입니다.

3. Tech Insight: 이것이 왜 중요한가?

"그저 논리학 수업 내용 아닌가?"라고 생각할 수 있지만, 이 원리는 컴퓨터 과학, 특히 백엔드 로직과 AI 모델링 깊숙한 곳에 녹아 있습니다.

A. SAT Solver의 엔진

복잡한 의존성 관리 도구(npm, pip 등의 패키지 매니저)나 하드웨어 검증 시스템은 내부적으로 SAT Solver를 사용합니다. 수만 개의 제약 조건이 얽혀 있을 때, "이 조건을 만족하는 해가 존재하는가?"를 판단하기 위해 컴퓨터는 이 Resolution Rule을 반복적으로 수행하여 식을 간소화하거나 모순(Empty Clause)을 찾아냅니다.

B. 논리 프로그래밍 (Prolog)

지금은 많이 쓰이지 않지만, 규칙 기반 엔진이나 Prolog 같은 언어는 이 원리를 그대로 사용합니다. 특히 Horn Clause 형태의 데이터베이스에서 쿼리를 날릴 때, 추론 엔진은 이 도출 과정을 역방향 혹은 순방향으로 수행하여 답을 찾아냅니다.

C. 최적화와 컴파일러

컴파일러의 정적 분석(Static Analysis) 단계에서도 유사한 로직이 사용됩니다. 코드의 실행 경로(Control Flow) 중 논리적으로 도달 불가능한 코드(Dead Code)를 제거할 때, 컴파일러는 이러한 명제 논리적 추론을 통해 "이 조건에서는 저 블록이 절대 실행될 수 없음"을 증명해 냅니다.

4. 마치며

사진 속의 Make sure you convince yourself that you believe this conclusion.이라는 문구가 인상적입니다.

개발자인 우리에게는 이것이 단순한 믿음의 영역이 아닙니다. 상충되는 상태(P, ¬P)를 제거하여 시스템의 불확실성을 줄여나가는 알고리즘적 사고, 그것이 바로 코드로 논리를 구축하는 우리의 핵심 역량일 것입니다.
728x90
반응형
'◈ Study/인공지능 AI🛸' 카테고리의 다른 글
  • [Algorithm] 언덕 오르기(Hill Climbing)만 하면 갇힌다? 최적해를 찾는 5가지 변형 기법 총정리
  • [Algorithm] 게임 이론의 정수: 미니맥스(Minimax)와 알파-베타 가지치기(Alpha-Beta Pruning) 심층 분석
  • [Logic] 개발자가 논리학을 볼 때 자주 겪는 착각: OR는 양자택일이 아니다
  • [Dev Note] 픽셀 뭉개진 '디지털 풍화' 사진, AI는 어떻게 복원했을까?
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (1025) N
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (30)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ Infra & DevOps (20) N
        • LGTM Stack🔭 (5)
        • Kafka🐦‍🔥 (0)
        • Kubernetes🚢 (9) N
        • KubeCon Japan 2026⚓ (6)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (49)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (5)
        • 오늘가챠🃏 (8)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (80)
        • 백준(BOJ)👨🏻‍💻 (71)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
      • ◈ Study (129)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 알고리즘(Algorithm)🎡 (14)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (11)
        • 인공지능 AI🛸 (8)
      • ◈ 공부모임 (57)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (17)
        • 국가기술자격 서포터즈🌻 (12)
      • ◈ 자격증 공부 (48)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 정보보안기사⚜️ (11)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (124)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (55)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 반응형
    250x250
  • 태그

    SQL
    자바스크립트
    백준 티어
    꿀팁
    코딩 테스트
    Database
    Project
    jsp
    Error Note
    javascript
    Oracle
    spring boot
    Java
    코딩
    spring
    CSS
    BOJ
    백준
    프로그래밍
    일상
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[Logic] AI는 어떻게 추론하는가? : 도출 규칙(Resolution Rule) 분석
상단으로

티스토리툴바