개방 세계와 비일관성: 기권과 복구
📍 현재 위치: 6부 · 주석·시간 논리 — 21장. 시간 추론은 두 가지 실패 양상 사이에 낀 채로 끝났습니다: 너무 적게 말하고 기권하는 베이스이거나, 너무 많이 말하고 스스로 모순되는 베이스입니다. 이 장은 그 둘을 정확하게 명명하고, 대수(algebra)가 제기할 수는 있었지만 답할 수는 없었던 질문 — 추론기가 각각에 대해 실제로 무엇을 해야 하는가 — 을 던집니다.
기호적 지식(symbolic knowledge)은 초심자에게는 놀라움으로 다가오지만 전문가에게는 기본 규칙으로 취급되는 두 가지 제약 아래 살아갑니다. 첫째, 어떤 사실을 모른다는 것은 그것을 거짓이라고 아는 것과 같지 않습니다 — 이를 존중하는 추론기는 때때로, 그리고 정당하게, 답변을 거부합니다. 둘째, 단 하나의 모순은 사소한 국지적 오류가 아니라 전역적 재앙입니다: 고전 논리(classical logic)에서는 모순으로부터 모든 것이 따라 나오므로, 서로 충돌하는 사실 한 쌍만으로도 지식 베이스는 여러분이 묻는 어떤 주장이든 "증명"해 버리는 기계가 되어 버립니다. 이 장은 이 둘 — 정직한 "알 수 없음"과 파국적인 "모든 것" — 을 탐지하고, 봉쇄하고, 복구하는 방법을 다룹니다.
탐정의 사건 파일을 상상해 보십시오. 어떤 사실이 파일에 적혀 있지 않다면, 신중한 탐정은 그런 일이 일어난 적이 없다고 결론짓지 않습니다 — 그녀는 "아직 모릅니다"라고 말하고 사건을 계속 열어 둡니다. 그것이 바로 개방 세계입니다: 침묵은 부정이 아니라 알 수 없음을 뜻합니다. 이번에는 두 목격자가 정면으로 모순되는 진술을 했다고 해 봅시다. 모든 페이지를 똑같이 신뢰하는 순진한 서기라면 파일로부터 그야말로 무엇이든 "도출"할 수 있는데, 모순은 비틀어서 어떤 결론이든 뒷받침하는 데 쓰일 수 있기 때문입니다. 그래서 탐정은 그 모순을 격리하고, 여전히 서로 들어맞는 진술들로부터 작업을 이어 갑니다. 파일이 침묵할 때는 기권하고, 파일이 충돌할 때는 일관된 이야기를 다시 세우는 것 — 그것이 이 장 전체입니다.
이 장에서 다루는 내용
- 개방 세계 대 폐쇄 세계 — 서술 논리(description logic)와 OWL의 개방 세계 가정(open-world assumption, OWA)은 언급되지 않은 사실을 알 수 없음으로 취급하고, 데이터로그와 데이터베이스의 폐쇄 세계 가정(closed-world assumption, CWA)은 이를 거짓으로 취급합니다; 같은 질의가 서로 다른 답을 얻는 모습을 학계 세계 위의 표로 보여 줍니다.
- 정직한 답으로서의 기권 — OWA 아래에서 "alice는 학장인가?"에 대한 올바른 답은 아니오가 아니라 알 수 없음이며, 이것이 실패로서의 부정(negation-as-failure)과 왜 다른지를 다룹니다.
- 비일관성과 폭발 — 모순이 모든 것을 함의한다는 고전적 원리, 그리고 처음부터 작성한 추론기의 바닥 규칙(bottom rule)이 그중 어느 것도 베이스 전체를 폭파시키기 전에 학계 세계의 충족 불가능한 두 개념을 어떻게 표시해 내는지를 다룹니다.
- 멈추지 않는 체이스 — 실제 종료하지 않는 실행: 결정 불가능한 종료성은 추론기가 영원히 순환할 수 있음을 뜻하며, 단계 상한은 치료가 아니라 안전장치일 뿐입니다.
- 복구와 비일관성-내성 의미론 — 모든 극대 일관 부분집합(즉 복구) 아래에서 확실한 답이므로, 부분적으로 망가진 베이스 위에서도 질의는 여전히 신뢰할 수 있는 답을 반환합니다.
- 복구할 때의 등급화된 신뢰 — 신뢰도(confidence)는 시스템이 복구하는 동안 더 신뢰도가 높은 사실을 선호할 수 있게 해 줍니다; 기권과 등급화된 신뢰의 결합은 신경-기호(neuro-symbolic) 시스템에서 반복적으로 나타나는 패턴입니다.
- 아직 풀리지 않은 부분 — 누락되거나 모순되는 지식에 대해 무엇을 해야 하는지를 결정하는 일은 진정으로 열려 있으며 응용에 따라 달라집니다.
개방 세계 대 폐쇄 세계
모든 추론기는 부재(absence)가 무엇을 뜻하는지에 대해 입장을 취해야 합니다. 폐쇄 세계 가정(closed-world assumption, CWA) 아래에서는 세계가 완전히 기술되어 있다고 가정합니다: 어떤 사실이 데이터베이스에 없고 도출도 되지 않는다면, 그것은 거짓으로 취급됩니다 [1]. 이것이 바로 SQL 데이터베이스와 데이터로그 프로그램이 취하는 가정이며, 여러분의 데이터가 완전할 때는 정확히 옳습니다 — 항공사 자신의 예약 테이블은 실제로 모든 예약을 나열하고 있으므로, "행이 없다"는 것은 정직하게 "예약이 없다"를 뜻합니다.
서술 논리와 OWL은 그 반대 선택, 즉 개방 세계 가정(open-world assumption, OWA)을 취합니다: 진술된 사실들은 부분적인 기술일 뿐이며, 함의되지도 반증되지도 않은 사실은 알 수 없음입니다. 형식적으로, 지식 베이스 (공리 로 이루어진 TBox와 단언 로 이루어진 ABox)와 근거 주장(ground claim) 가 주어졌을 때, 다음 세 경우 중 정확히 하나가 성립합니다:
기호 는 "함의한다"로 읽습니다 — 어떤 주장은 지식 베이스의 모든 모델에서 성립할 때 함의되고, 그 부정이 성립할 때 반증되며, 어떤 모델은 그렇다고 하고 다른 모델은 아니라고 할 때 알 수 없음입니다. CWA는 그 세 번째 경우를 임의로 지워 버리는 추가 규칙입니다: 함의되지 않음이 거짓으로 다시 쓰입니다. 이 재작성은 논리 프로그래밍(logic programming)이 실패로서의 부정(negation-as-failure)이라 부르는 것의 선언적 대응물입니다 — 추론기가 어떤 주장을 증명하는 데 실패하는 순간 그 주장은 거짓으로 취급됩니다. 이 둘은 하나가 아니라 가까운 사촌입니다: CWA는 증명 불가능한 근거 원자(ground atom)가 거짓이라는 의미론적 가정이고, 실패로서의 부정은 그것을 실현하는 조작적(operational) 규칙이며, 데이터로그가 실행하는 확정적(definite) 프로그램과 계층화된(stratified) 프로그램에서 이 둘은 서로 일치합니다.
이 두 정책을 학계 세계 — 스스로를 "10개의 이름 붙은 개념, 6개의 역할, 14개의 TBox 공리; ABox: 13개 개체에 걸친 13개의 개념 단언과 18개의 역할 단언"이라고 보고하는 ontology.py의 EL++ 온톨로지 — 에 대해 실행해 보면, 동일한 네 개의 질의가 서로 갈라집니다:
| query | OWA (DL / OWL) | CWA (Datalog / database) |
|---|---|---|
Professor(alice) — ABox에 단언됨 | 참 | 참 |
Researcher(alice) — Professor ⊑ Researcher를 통해 함의됨 | 참 | 참 |
Dean(alice) — 단언되지도 함의되지도 않음 | 알 수 없음 | 거짓 |
advises(alice, carol) — ABox 역할 단언이 아님 | 알 수 없음 | 거짓 |
처음 두 행은 일치합니다: 단언된 사실과 진정으로 함의된 사실은 어느 정책 아래서도 참입니다. 아래 두 행이 바로 두 가정이 갈라지는 지점이며, 정확히 아무도 적어 두지 않은 사실들에서 갈라집니다.
기권: 알 수 없음도 하나의 답이다
Dean(alice)를 자세히 살펴보십시오. ABox는 Professor(alice)와 advises(alice, bob)을 단언하며, bob 역시 교수입니다 — 그러므로 alice는 교수를 지도하는 교수입니다. 그러나 두 개의 학장 공리, Dean ⊑ Professor와 Dean ⊑ ∃advises.Professor(ontology.py, 151–152번째 줄)는 학장됨(deanship)의 필요 조건만을 진술할 뿐, 충분 조건은 진술하지 않습니다. 교수를 지도하는 교수라는 것이 여러분을 학장으로 만들어 주지는 않습니다; TBox의 그 무엇도 그 사실들로부터 Dean을 결론짓지 않습니다. 그러므로 Dean(alice)는 어떤 모델에서는 참이고 다른 모델에서는 거짓이며, OWA 추론기는 알 수 없음이라고 답합니다 — 즉 기권합니다.
그 기권이야말로 정직한 답이며, 폐쇄 세계의 "아니오"와는 다릅니다. 실패로서의 부정이라면 Dean(alice)를 찾아보고, 도출에 실패한 다음, 거짓이라고 — 자신감 있는 부정으로 — 보고했을 것입니다. OWA 추론기는 알 수 없다고 보고하는데, 이는 불완전한 지식 베이스의 진실한 상태입니다: 대학의 기록이 단지 alice의 행정 직책을 기록해 두지 않았을 수도 있는 것입니다. 증거의 부재는 부재의 증거가 아닙니다. 이것이 바로 OWL이, 어떤 단일 출처도 결코 완전할 수 없는 웹을 위해 만들어진 이유입니다: 모든 공백을 조용히 "아니오"로 바꾸어 버리는 추론기라면 수백만 건의 거짓 부정을 만들어 냈을 것입니다. 그 정직함의 대가는 OWA 추론기가 더 적은 질문에 답한다는 것입니다 — 결코 거짓말하지 않는 대가는 때로는 아무 말도 하지 않는 것입니다.
비일관성과 폭발: 바닥 규칙이 제 몫을 하다
기권은 온건한 실패입니다. 심각한 실패는 비일관성(inconsistency)이며, 고전 논리는 이를 조금도 용납하지 않습니다. 폭발 원리(principle of explosion)(ex falso quodlibet, "거짓으로부터는 무엇이든 나온다")는 모순이 그야말로 모든 문장을 함의한다고 말합니다:
바닥 개념(bottom concept) (owl:Nothing)은 어떤 개체도 속할 수 없는 개념입니다; 추론기가 어떤 개체를 안에 놓을 수밖에 없게 되는 순간, 지식 베이스는 어떤 모델도 전혀 갖지 못하게 되며, 함의의 정의 — 모든 모델에서 참 — 에 따라, 영(zero) 개의 모델 하나하나에서 참인 주장은 공허하게(vacuously) 모든 주장이 됩니다. 단 한 번의 충돌만으로 베이스는 alice가 학장이라는 것과, 학장이 아니라는 것과, 달이 교수라는 것을 한꺼번에 "증명"해 버립니다. 그런 베이스는 조금 틀린 것이 아니라 쓸모없는 것입니다.
그러므로 EL++ 추론기의 첫 번째 임무는 모순이 퍼지기 전에 찾아내는 것입니다. el_completion.py의 완성 알고리즘(completion algorithm)은 전용 추론 규칙 하나, 즉 CR⊥, 바닥 규칙(el_completion.py, 240–244번째 줄)으로 이 일을 해냅니다:
# CR⊥ (the bottom rule): (A, B) ∈ R(r), ⊥ ∈ S(B) ⟹ ⊥ ∈ S(A)
for r, pairs in list(R.items()):
for (A, B) in list(pairs):
if BOT in S[B] and BOT not in S[A]:
S[A].add(BOT); changed = True
완성 규칙으로 적으면, 이는 충족 불가능성을 역할을 따라 거꾸로 전파합니다: 만약 가 역할 을 통해 그 자체로 불가능한 와 관계 맺고 있다면, 역시 불가능합니다.
이것이 학계 세계의 의도적인 함정 위에서 발동하는 모습을 지켜보십시오. TBox는 TenuredStudent ⊑ Professor와 TenuredStudent ⊑ Student(ontology.py, 158–159번째 줄)를, 그리고 분리성 공리 Professor ⊓ Student ⊑ ⊥(143번째 줄)를 선언합니다. 완성은 규칙 CR1에 의해 Professor와 Student 둘 다를 에 넣고, 그다음 규칙 CR2가 분리성 공리를 발동시켜 을 추가합니다 — TenuredStudent는 결코 인스턴스를 가질 수 없습니다. 이제 두 번째 함정이 튀어 오릅니다: TenuredStudentAdvisor ⊑ ∃advises.TenuredStudent(163번째 줄)는 쌍 (TenuredStudentAdvisor, TenuredStudent)를 에 넣고, 이므로 바닥 규칙이 을 한 홉 뒤로 TenuredStudentAdvisor까지 전파합니다. 추론기는 정확히 두 개의 희생자를 보고합니다 — 다음은 python3 el_completion.py의 실제로 커밋된 출력입니다:
unsatisfiable concepts (2): ['TenuredStudent', 'TenuredStudentAdvisor']
그 집합은 포화된 데이터로부터 곧바로 읽어 낸 것으로, unsatisfiable 함수가 담당하며, 이 함수는 포섭자 집합에 을 포함하는 모든 이름 붙은 개념을 모읍니다(el_completion.py, 273–276번째 줄):
def unsatisfiable(S) -> set:
"""The named concepts found to be unsatisfiable (A ⊑ ⊥)."""
return {a for a, subs in S.items()
if BOT in subs and a not in (TOP, BOT) and not is_fresh(a)}
여기 결정적인 봉쇄가 있습니다. 이 두 개념은 충족 불가능합니다 — 결코 구성원을 가질 수 없는 클래스라는 스키마 수준의 결함입니다 — 하지만 지식 베이스 전체는 여전히 일관적(consistent)인데, ABox가 어떤 개체도 TenuredStudent나 TenuredStudentAdvisor라고 단언하지 않기 때문입니다. 바닥 규칙은 어떤 데이터 단언이 구체적인 개체를 안으로 밀어 넣어 베이스 전체에 폭발을 일으키기 훨씬 전에, 분류(classification) 시점에 그 모델링 버그를 붙잡아 이름 붙은 두 개념으로 격리했습니다. 이것이 바로 추론기가 여러분에게 표시해 주는 결함과, 여러분이 피하도록 해 주는 재앙 사이의 차이입니다 — 온톨로지 엔지니어가 상용 환경이 아니라 설계 시점에 듣고 싶어 하는, 바로 그 "클래스 하나를 서로 양립할 수 없는 두 가지 방식으로 모델링했다"는 버그입니다.
멈추지 않는 체이스
폭발은 추론기가 틀린 답을 내놓는 방식입니다. 종료하지 않음(non-termination)은 추론기가 아무 답도 내놓지 않는 방식입니다 — 그저 결코 멈추지 않을 뿐입니다. OWA 아래에서 존재 공리(existential axiom)는 무언가가 이름 붙지 않고도 존재한다고 주장하며, 체이스(chase)는 널(null)이라 불리는 새로운 익명 개체를 발명함으로써 이를 충족시킵니다. 그렇게 발명된 개체 자신이 그것을 만들어 낸 바로 그 공리를 다시 촉발할 때, 체이스는 영원히 실행될 수 있습니다. 동반 코드의 chase.py는 정확히 그러한 규칙 하나를 포함합니다(chase.py, 204–208번째 줄):
NONTERMINATING_INSTANCE = {("Researcher", "alice")}
NONTERMINATING_TGDS = [
([("Researcher", "?x")],
[("advises", "?y", "?x"), ("Researcher", "?y")]),
]
이 규칙은 "모든 연구자는 어떤 연구자의 지도를 받았다"로 읽힙니다. alice는 연구자이므로, 체이스는 그녀 역시 연구자인 지도교수 _n1을 찍어 냅니다 — 그러면 그 _n1 역시 지도교수 _n2가 필요하고, _n2 역시 연구자이며, 이렇게 끝없이 이어져 점점 더 선임인 유령 지도교수들의 무한 퇴행(infinite regress)이 됩니다. 체이스의 종료는 일반적으로 결정 불가능합니다(chase.py, 28–30번째 줄): 어떤 알고리즘도 임의의 규칙 집합을 살펴보고 그 체이스가 멈출지 여부를 항상 결정할 수는 없습니다. 이 코드가 가진 유일한 방어책은 실용적인 회로 차단기, 즉 max_steps 상한이며, 실제 실행은 발산을 눈에 보이되 유계로 유지되게 만듭니다 — 다음은 python3 chase.py의 커밋된 출력입니다:
Non-terminating TGD (Researcher(x) -> ∃y advises(y,x) ∧ Researcher(y))
terminated=False after the 50-firing cap; 50 fresh advisors invented and still growing
terminated=False는 정직한 자백입니다: 추론기가 끝마친 것이 아니라 멈춰 세워진 것입니다. 단계 상한은 프로세스를 살아 있게는 하지만 아무것도 답하지 않습니다 — 50에서 자르면 유령 지도교수 50명을 얻고, 백만에서 자르면 백만 명을 얻습니다. 이것은 고쳐야 할 버그가 아니라, EL 계열과 그 다항식 보장이 중요했던 이유입니다. 다루기 쉬운 부분집합(tractable fragment)이 존재하는 것은 정확히 체이스가 증명 가능하게 유한하고, 이와 같은 질문들이 애초에 답을 가질 수 있도록 하기 위해서입니다.
복구: 모든 극대 일관 부분집합에 대한 확실한 답
최악의 상황이 이미 벌어졌다고 가정해 봅시다: 지식 베이스가 실제로 비일관적인데, 아마도 정보 추출(information-extraction) 파이프라인이 잡음이 섞인 출처를 읽고 거짓인 무언가를 단언했기 때문일 것입니다. 고전 논리라면 베이스 전체를 내다 버릴 것입니다 — 모든 것이 따라 나오므로, 아무것도 신뢰할 수 없습니다. 비일관성-내성 의미론(inconsistency-tolerant semantics)은 그런 항복을 거부하고 더 날카로운 질문을 던집니다: 어느 일관된 이야기를 믿든 상관없이 살아남는 답은 무엇인가 [2]?
핵심 구성물은 복구(repair)입니다: TBox와 일관적인 ABox의 극대 부분집합(maximal subset)입니다. "극대(maximal)"란 가능한 한 적게 버린다는 뜻입니다 — 일관성을 회복하는 데 딱 필요한 만큼만 단언을 제거하고, 그 이상은 제거하지 않습니다. 단 하나의 비일관적인 베이스도 여러 개의 복구를 가질 수 있으며, 충돌을 해소하는 극소(minimal) 방식마다 하나씩 대응합니다. AR(ABox 복구, ABox Repair) 의미론 아래에서, 어떤 튜플이 질의에 대한 확실한 답(certain answer)이 되는 것은 오직 그것이 모든 복구에 대한 답일 때뿐입니다 — 복구된 모든 이야기가 동의하는 것들의 교집합입니다 [3]:
이를 학계 세계에 접지해 봅시다. ABox는 Student(carol)을 단언합니다. 어떤 추출기가 잘못하여 Professor(carol)도 단언했다고 상상해 보십시오. 이제 분리성 공리 Professor ⊓ Student ⊑ ⊥가 carol을 안으로 밀어 넣습니다: 베이스는 비일관적이며, 고전적으로는 폭발합니다. 그러나 베이스는 정확히 두 개의 복구를 가집니다 — 충돌하는 두 단언 중 하나를 버리는 것 — 그리고 둘 모두에 대해 답해진 질의는 여전히 신뢰할 수 있습니다:
| repair (maximal consistent subset) | dropped assertion | Student(carol)? | Researcher(carol)? |
|---|---|---|---|
은 Student(carol)을 유지 | Professor(carol) | 예 | 예 |
는 Professor(carol)을 유지 | Student(carol) | 아니오 | 예 |
| 확실한 답 (교집합) | — | 알 수 없음 | 예 |
Student(carol)은 복구 하나에서만 성립하므로 확실한 답이 아닙니다 — 베이스가 그것을 보증할 수 없습니다. 그러나 Researcher(carol)은 둘 다에서 성립하는데, Professor ⊑ Researcher와 Student ⊑ Researcher가 어느 쪽이든 Researcher로 이어지기 때문입니다: 충돌하는 두 사실 중 어느 쪽이 참이든, carol은 연구자입니다. 학계 세계 전체 위에 접지하면 그녀는 훨씬 더 견고하게 확실한데 — ABox는 advises(carol, erin)도 단언하므로, 공리 (5) ∃advises.⊤ ⊑ Researcher가 Professor/Student 충돌이 결코 건드리지 않는 경로를 통해 이미 Researcher(carol)을 함의하기 때문입니다. 그러므로 고전적으로는 모든 것을 증명해 버리는 베이스 위에서조차, AR 의미론은 여전히 인간이라면 신뢰했을 바로 그 답들을 정확히 반환하고, 진정으로 의심스러운 것들에 대해서는 기권합니다. 이는 우리가 체이스의 certain_answers에서 이미 만났던 모델-교집합(intersection-over-models) 발상과 같습니다 — 그곳에서는 발명된 널을 전혀 쓰지 않을 때만 답이 유효한 것으로 쳐졌습니다(chase.py, 160–170번째 줄) — 이제 그것이 불완전한 지식에서 비일관적인 지식으로 옮겨진 것입니다: 둘 다 모든 허용 가능한 세계에 걸쳐 참인 것만을 남깁니다.
등급화된 신뢰: 믿는 사실을 선호하기
모든 복구를 똑같이 신뢰할 만하다고 취급하는 것은 신중한 기본값이지만, 주석(annotation)은 추론기가 더 잘할 수 있게 해 줍니다. 만약 사실들이 이전 부(part)의 신뢰도(confidence) 라벨 — annotated.py 132번째 줄의 CONFIDENCE = Semiring(0.0, 1.0, max, min, ...), 구간 에서 뽑힌 진리 정도 — 을 지니고 있다면, 모든 복구가 똑같이 그럴듯한 것은 아닙니다. 엄선된 Student(carol)이 신뢰도 0.9를 지니고 갓 추출된 Professor(carol)은 겨우 0.4를 지닌다고 해 봅시다. 선호 복구(preferred repair)는 더 신뢰도 높은 단언을 유지하고 의심스러운 것을 버려, 양쪽을 모두 헤징(hedging)하는 대신 대신 을 선택합니다. 추상적인 기계 장치는 바뀌지 않습니다 — 복구는 여전히 극대 일관 부분집합입니다 — 그러나 신뢰도 격자(confidence lattice)는 복구들이 서로 어긋날 때 어느 복구를 믿어야 하는지를 말해 주는 순서를 제공합니다.
이 짝짓기는 이 시리즈의 나머지 부분이 계속 되돌아오는 패턴입니다: 기호가 침묵하는 곳에서는 정직하게 기권하고, 기호가 충돌하는 곳에서는 등급화된 신뢰가 동점을 깨도록 하라. 잡음이 섞인 텍스트 위에서 학습된 모델은 확실성이 아니라 점수가 매겨진 사실들을 산출합니다; 기호 층은 모순을 복구로 봉쇄함으로써 그 점수들이 베이스를 폭발시키지 못하게 막고, 그 점수 자체를 이용해 믿을 만한 가치가 있는 복구를 선호합니다. 5권은 바로 이 위에서 구축됩니다 — 신경망 절반이 신뢰도를 방출하고 기호 절반이 일관성을 강제하는 신경-기호 시스템은 정확히 공학적 외피를 두른 기권-더하기-등급화된-신뢰입니다.
불완전한 지식에 대한 세 가지 정직한 대응: 베이스가 침묵할 때 알 수 없음으로 기권하는 것, 바닥 규칙으로 모순을 봉쇄하여 베이스 전체로 폭발하지 못하게 하는 것, 그리고 비일관적인 ABox를 극대 일관 부분집합들로 복구하여 그것들이 공유하는 답이 신뢰할 만하게 남도록 하는 것.
저자가 AI의 도움을 받아 직접 제작한 원본 도해.
아직 풀리지 않은 부분
이 장의 기계 장치는 침묵과 모순을 수학적 정밀도로 탐지합니다 — OWA는 언제 기권해야 하는지를 정확히 말해 주고, 바닥 규칙은 어떤 개념이 불가능한지를 정확히 말해 주며, AR 의미론은 어떤 답이 살아남는지를 정확히 말해 줍니다. 그 어느 것도 해결하지 못하는 것은 시스템이 각각에 대해 실제로 무엇을 해야 하는가인데, 그 결정은 논리적 사실이 아니라 응용상의 선택이기 때문입니다. 베이스가 침묵할 때, 추론기는 기권해야 할까요, 아니면 학습된 추측으로 물러서야 할까요, 아니면 사람에게 물어야 할까요 — 그리고 잘못된 기본값의 대가는 얼마나 클까요? 베이스가 비일관적일 때, 어떤 복구가 옳은 것일까요? AR 의미론은 의도적으로 선택하기를 거부하며 공통의 핵심만을 반환합니다; 그러나 실제 시스템은 흔히 하나의 답에 따라 행동해야 하며, "가장 놀랍지 않은" 복구, "신뢰도가 가장 높은" 복구, "변화가 가장 작은" 복구가 서로 다른 세 개의 사실 집합이 될 수 있고 그들 사이에는 원칙에 입각한 동점 해소 방법이 없을 수 있습니다. 설상가상으로, 복구 의미론 아래에서 확실한 답을 계산하는 것은 흔히 일반적인 질의 응답보다 계산적으로 더 어려우므로, 정직한 선택지가 때로는 비용이 더 많이 드는 선택지이기도 합니다. 누락되거나 모순되는 지식을 가지고 무엇을 할지 결정하는 일은 진정으로 열려 있고 응용에 따라 다르며, 정확히 기호적 추론기의 보장이 끝나고 학습된 구성 요소의 판단이 넘겨받아야 하는 바로 그 이음매입니다.
왜 중요한가
신경-기호 프로그램이 구축하려는 모든 것은 이 장의 두 제약 아래에 놓여 있습니다. 열린 웹을 읽는 학습된 추출기는 불완전하면서 동시에 내적으로 모순되는 지식을 산출합니다 — 두 실패 양상이 한꺼번에 나타나는 것입니다. 기호 층이 모든 공백을 자신감 있는 "아니오"로 바꾸어 버리게 놔두는 하이브리드 시스템은 부정을 환각할 것이고, 추출된 단 하나의 모순이 고전 추론기에 도달하게 놔두는 시스템은 베이스 전체가 폭발하여 무엇이든 증명해 버리는 것을 지켜보게 될 것입니다. 여기서의 규율들이 바로 기호 절반을 잡음 섞인 신경망 절반과 안전하게 결합할 수 있게 해 주는 것입니다: 아무것도 함의되지 않는 곳에서는 기권하고, 나쁜 사실 하나가 나머지를 오염시키지 않도록 모순을 봉쇄하며, 신뢰도를 이용해 믿는 것을 선호하면서 여전히 신뢰할 수 있는 답을 지닌 일관된 핵심으로 복구하는 것입니다. 그것이 바로 견고한 신경-기호 시스템이 필요로 하는 인터페이스입니다 — "아니오"와 "나는 모른다"의 차이를 아는, 그리고 입력이 서로 어긋나는 순간 무너지지 않는 추론기입니다.
핵심 용어
- 개방 세계 가정(Open-world assumption, OWA) — DL/OWL의 기본값: 언급되지 않고 함의되지 않은 사실은 거짓이 아니라 알 수 없음입니다; 어떤 주장은 모든 모델에서 성립할 때만 참입니다.
- 폐쇄 세계 가정(Closed-world assumption, CWA) — 데이터로그/데이터베이스의 기본값: 언급되지 않고 도출 불가능한 사실은 거짓입니다; 논리 프로그래밍에서 이에 대응하는 조작적 규칙이 실패로서의 부정(negation-as-failure)이며, 확정적 프로그램과 계층화된 프로그램에서는 이 둘이 일치합니다.
- 기권(Abstention) — 함의되지도 반증되지도 않은 질의에 대한 OWA의 정직한 답 알 수 없음, 예를 들어
Dean(alice)입니다. - 폭발 원리(Principle of explosion, ex falso quodlibet) — 고전적으로, 모순은 모든 문장을 함의합니다, ; 충돌 하나가 베이스를 쓸모없게 만듭니다.
- 충족 불가능 개념(Unsatisfiable concept) — 포섭자 안에 을 지니는 개념()으로, 결코 인스턴스를 가질 수 없습니다; 학계 세계에는
TenuredStudent와TenuredStudentAdvisor두 개가 있습니다. - 바닥 규칙(Bottom rule, CR⊥) — 역할을 따라 을 거꾸로 전파하는 완성 규칙으로, ABox 단언이 베이스 전체를 폭파시키기 전에 충족 불가능한 개념을 표시해 냅니다.
- 체이스 / 종료하지 않음(The chase / non-termination) — 널을 발명하여 존재 공리를 충족시키는 것; 종료성은 결정 불가능하며,
max_steps상한은 해결책이 아니라 안전장치입니다. - 복구(Repair) — TBox와 일관적인 ABox의 극대 부분집합; 충돌하는 베이스는 충돌을 해소하는 극소 방식마다 하나씩의 복구를 가집니다.
- AR(ABox 복구) 의미론 / 확실한 답(AR (ABox Repair) semantics / certain answer) — 어떤 튜플은 모든 복구에 대한 답일 때만 확실합니다 — 복구된 이야기들에 걸친 교집합입니다.
- 선호 복구(Preferred repair) — 여러 대등한 것 중 하나로 취급되는 대신 신뢰도나 신뢰에 의해 선택되는 복구로, 등급화된 주석이 동점을 깨는 지점입니다.
이 장이 이끄는 곳
스물한 개의 장을 지나오면서, 기호주의 기둥(symbolic pillar)의 형태는 완성되었습니다: 정확하게 말하기 위한 온톨로지와 서술 논리, 그 귀결을 도출하기 위한 완성과 체이스, 무엇이 다루기 쉬운지 알기 위한 복잡도 결과, 얼마나 확신하는지와 언제를 붙이기 위한 주석과 시간, 그리고 이제 지식이 누락되거나 모순될 때 정직함을 유지하기 위한 규율까지 말입니다. 마지막 장인 솔직한 평결은 정확히 이것의 재고 조사를 합니다: 기호적 추론이 진정으로 보장하는 것 — 건전성(soundness), 올바른 부분집합에서의 결정 가능성, 감사 가능한 "알 수 없음"과 봉쇄된 모순 — 그리고 그것이 보장하지 않는 것, 즉 학습된 구성 요소가 채우도록 되어 있는 정확한 간극을 마찬가지로 날카롭게 다룹니다. 그곳이 바로 이 권의 답과 열린 질문들이 함께 저울질되는 곳입니다.