TransBox와 mOWL: 폐포와 도구
📍 현재 위치: 3부 · 온톨로지 임베딩 — 10장. BoxEL과 Box²EL은 공을 박스로 바꿈으로써 논리곱을 정확하게 만들었습니다; 이 장은 구성자 집합 전체를 한꺼번에 요구하고, "EL++에 대해 닫혀 있다"는 것이 무엇을 뜻하는지 정의하며, 그것에 대한 건전성 정리를 증명하는 모델을 만나고, 이 모든 실험을 서로 비교 가능하게 만든 도구 상자를 둘러봅니다.
2부는 개념을 영역으로 바꾸었고, 지난 두 장은 공을 훈련한 다음 박스를 훈련하면서 매 단계마다 연산 하나씩을 고쳐 나갔습니다. 이 장은 그 결승선에 이름을 붙입니다. 온톨로지는 교집합을 존재 제한 안에 얼마든지 깊이 중첩시켜 개념을 만들어 내며, 온톨로지 자체가 되고자 하는 기하는 그렇게 중첩된 개념 하나하나에, 그 부분들의 영역으로부터 조립된 영역을 내주어야 합니다. 그 요구에는 산뜻한 이름이 있습니다, 바로 EL++ 폐포(EL++-closure)이며, 그것을 만족시키는 모델이 TransBox로, 그 중심 정리는 2권의 모델 이론과 기하학적으로 짝을 이룹니다: 훈련 손실이 정확히 0에 이르면, 박스들은 온톨로지의 모델을 근사한 것이 아니라 바로 그 모델입니다 [1]. 이 장은 mOWL로 마무리되는데, 이는 우리의 짝이 되는 파일들이 줄곧 축소판으로 재구현해 온 파이프라인(정규화, 데이터셋, 모델, 순위 평가)을 표준화한 오픈소스 라이브러리입니다 [2].
표준 두께의 널빤지를 받아 똑같은 두께의 널빤지를 내놓는 기계들로 이루어진 작업장을 상상해 보십시오. 모든 출력이 다시 합법적인 입력이 되므로, 여러분은 그 기계들을 끝없이 이어 붙일 수 있습니다. 이제 대신 휘어진 껍데기 모양을 내놓는 기계 하나를 상상해 보십시오: 그 기계를 쓰는 순간 사슬은 끊어지는데, 왜냐하면 그 아래 어떤 기계도 껍데기 모양을 받아들이지 않기 때문입니다. 개념 모양들의 한 계열은, 모든 논리 연산(두 모양을 겹쳐 보는 것, 어떤 관계를 통해 한 모양을 바라보는 것, 두 관계를 사슬로 잇는 것)이 같은 계열의 모양을 다시 돌려줄 때 "닫혀 있다"고 말하며, 그래서 온톨로지가 적어 낼 수 있는 어떤 중첩된 개념도 기계들을 순서대로 돌려서 만들어집니다. 공은 최초의 겹침에서 사슬을 끊습니다(렌즈 모양은 공이 아닙니다). 화살표 하나짜리 관계를 쓰는 박스는 불법적인 모양을 결코 내놓지 않지만, 그 관계 기계에는 더 교묘한 결함이 있습니다: 모든 널빤지를 똑같이 고정된 만큼만 밀어내고, 널빤지 하나당 목적지도 하나뿐이어서, 하나를 여러 곳으로 보내야 하거나 여러 규칙을 한꺼번에 따라야 하는 관계는 그렇게 할 여지가 없습니다. TransBox는 그 기계를 허용된 밀어냄의 범위 전체를 가지고 다시 지어서, 출력은 여전히 박스로 남으면서도 그 기계가 마침내 모든 규칙을 섬길 여지를 갖게 됩니다. 그리고 mOWL은 그 공유된 작업장 그 자체입니다: 지그와 게이지를 한 벌로 갖추어, 두 연구실이 자신의 기계가 더 반듯하게 자른다고 주장할 때 둘 다 같은 자로 재었음을 보장합니다.
이 장에서 다루는 내용
- 우리의 탐침이 남긴 공백 — 우리는 오직 이름들 사이의 원자적 포섭만을 검사했지만, 실제 온톨로지는 Person ⊓ ∃authored.Paper 같은 복합 개념에 관해 묻습니다; 정밀하게 정의된 EL++ 폐포(EL++-closure)야말로 그런 물음에 구성적으로 답하는 데 필요한 것입니다.
- 역할마다 하나의 이동이 실패하는 이유 — 박스 계열을 벗어나서가 아니라(이동된 박스도 여전히 박스입니다) 능력을 무너뜨려서 실패합니다: 함수적 붕괴(온톨로지 수준에서 되풀이되는 TransE의 실패), 가능한 이동 집합의 유도, 그리고 우리 자신의 코드가 명시적인 공허한(vacuous) 분기로 담고 있는 빈 교집합 병리입니다.
- TransBox의 구성 — 역할은 이동들의 박스가 됩니다. r(a, b)는 일 때 정확히 그때 성립하며, 두 박스의 민코프스키 합이 다시 박스임이 증명되고, 이로써 존재 투영과 역할 합성이 계속 그 계열 안에 머무릅니다.
- 건전성 정리 — 손실이 0이면 그 기하는 온톨로지의 모델이 되며, 따라서 함의되는 모든 것에 대해 완벽한 재현율(recall)을 가집니다; 우리의 두 차례 실행의 실제 최종 손실인 0.6848과 0.0678을, 그 보장으로부터의 정직한 거리로서 인용합니다.
- 이 분야가 실제로 수행하는 평가 — GALEN, Gene Ontology, Anatomy 위에서의 정규화된 공리 예측과 복합 공리 예측이며, 그 프로토콜이 우리
kg.py의 필터링된 순위 매김과 어디서 메아리치는지를 다룹니다. - 기반 시설로서의 mOWL — OWL(Web Ontology Language)을 입력으로 받고, 자바 브리지 뒤편의 jcel/ELK 정규화, 일곱 개의 GCI 버킷, 모델 동물원 전체에 걸친 하나의 손실-디스패치 계약, 그리고 하나의 순위 기반 평가기입니다; 새로운 손실 함수가 아니라 공유된 도구가 결과를 비교 가능하게 만든 이유를 다룹니다.
- 분야의 현황을 냉정하게 담은 표 — ELEm, BoxEL, Box²EL, TransBox: 영역 계열, 역할 메커니즘, 각각이 실질적인 능력을 갖고 어떤 구성자를 섬기는지, 그리고 각각이 무엇을 증명할 수 있는지입니다.
공백: 우리는 원자를 탐침했지만, 온톨로지는 분자에 관해 묻는다
지난 두 장이 실제로 검증한 것을 정직하게 살펴봅시다. el_embed.py의 포함 검사 sub_geo(301–305번째 줄)와 그 박스 쌍둥이인 box_el.py의 probe_gap(381–389번째 줄)은 각각 충족 가능한 8개의 이름 붙은 개념이 이루는 56개의 순서쌍 전부를 훑으면서, 각 쌍마다 영역 A가 영역 B 안에 들어앉는지를 묻습니다. 모든 물음은 형태였고, 와 는 모두 원자적인 이름이었습니다: Professor ⊑ Researcher, Dean ⊑ Person처럼 말입니다. 기호 는 포섭(subsumption)으로, "왼쪽 개념의 모든 인스턴스는 오른쪽 개념의 인스턴스이기도 하다"는 뜻이며, 이는 2권에서와 정확히 같습니다.
실제 온톨로지는 이름에서 멈추지 않습니다. EL++ 개념 언어는 두 개의 구성자를 사용해 이름들로부터 복합 개념을 만들어 냅니다: 논리곱(conjunction) ("C이면서 동시에 D인 것")와 존재 제한(existential restriction) ("어떤 C와 적어도 하나는 관계 r로 맺어진 것")이며, 이는 얼마든지 깊이 중첩될 수 있습니다. 학계 세계에서, "적어도 한 편의 논문을 저술한 사람"이라는 개념은 TBox 안의 이름이 아닙니다; 그것은 복합 개념
이며, 생물의학 온톨로지는 산업적 규모에서 정확히 이런 모양의 질의를 던집니다. 이름마다 하나의 영역을 저장하는 기하는, 복합 개념의 영역을 그 부분들의 영역으로부터 만들어 낼 수 없는 한 이런 질문에 답할 수 없습니다. 2권의 모델 이론은 정의에 의해 그 요구를 만족시켰습니다. 위첨자 는 "해석 가 이 표현에 배정하는 것들의 집합"이라고 읽고, 은 집합 교집합(두 집합 모두에 놓인 점들), 은 "…의 원소이다", 는 논리적 "그리고", 는 "…를 만족하는 모든 의 집합"이라고 읽으십시오: 해석은 와 를 자동으로 배정하는데, 집합은 모든 집합 연산에 대해 닫혀 있기 때문입니다. 고정된 모양의 영역들은 그렇지 않습니다. 바로 이것이 문제의 전부입니다.
EL++ 폐포, 정밀하게
임베딩 차원, 즉 정수 (각 점이 지니는 좌표의 개수; 우리의 짝이 되는 실행은 을 씁니다)를 고정하고, 를 (실수 벡터로 이루어진 d차원 공간)의 부분집합들로 이루어진 계열, 즉 후보 개념 영역들의 모음이라 합시다. 각 역할 은 어떤 이항 관계 , 즉 순서쌍으로 된 점들의 집합으로 해석된다고 합시다. TransBox가 핵심으로 삼는 정의를 따라 [1], 세 조건이 성립할 때 (영역 계열, 역할 해석)의 쌍을 EL++에 대해 닫혀 있다고 부릅니다:
- 교집합에 대한 닫힘. 모든 영역 에 대해, 집합 교집합 는 다시 의 원소입니다. 이는 를 표현 가능하게 만듭니다: 그 영역은 말 그대로 두 부분의 영역들의 교집합입니다.
- 존재 투영에 대한 닫힘. 모든 역할 과 모든 영역 에 대해, 존재 투영(existential projection) , 즉 을 통해 의 어떤 점을 바라보는 점들의 집합은, 다시 의 원소입니다.
- 역할 합성에 대한 닫힘. 모든 역할 에 대해, 합성(composition) 은 다시 그 모델이 자신의 역할 장치로 표현할 수 있는 관계이며, 그래서 사슬 공리 는 나머지와 같은 종류의, 검사 가능하고 훈련 가능한 조건이 됩니다.
출처를 직접 찾아보는 독자를 위한 장부 정리 한 가지: 그 논문의 완전한 정의는 여기에 더해 가 공집합을 포함할 것(그래야 ⊥가 영역을 갖습니다), 전체 공간 를 포함할 것(그래야 ⊤가 그렇습니다), 그리고 모든 단일원소집합 를 포함할 것(그래야 개체 이름이 그렇습니다)을 요구합니다 [1]; 여기서는 이 장의 논증을 떠받치는 세 가지 구성적 조건만을 진술합니다. 세 조건이 모두 성립하면, 구조적 귀납법이 나머지 일을 마무리합니다: 아무리 깊이 중첩되어 있든, 모든 EL++ 개념이 안에 영역을 얻습니다. 기저 사례는 이름들입니다(각각 이미 훈련된 영역을 갖습니다); 귀납 단계에서는, 와 가 이미 안에 영역을 갖는다면, 조건 1이 에 영역을 내주고 조건 2가 에 영역을 내주는데, 둘 다 안에 있습니다. 훈련 중에 한 번도 본 적 없는 개념에 관한 질의에 답하는 데 새로운 훈련이 전혀 필요하지 않습니다: 폐포는 임베딩을 이름들에 대한 조회 테이블에서 개념들에 대한 계산기로 바꾸어 놓습니다.
이 정의에 비추어 이 부(Part)의 모델들을 채점해 봅시다. 공은 조건 1에서 실패합니다: 앞 장들은 두 공의 렌즈 모양 교집합을 그것을 감싸는 최선의 공으로 대체했을 때 60.56퍼센트의 거짓양성 면적을 측정했습니다(boxes_vs_balls.py, box_el.py 트레이스에 인용됨). 박스는 box_el.py가 276–277번째 줄에서 계산하는 모서리 산술 , 에 의해 조건 1을 정확히 통과합니다. 그렇다면 역할을 저마다 단일 이동 벡터 로 해석하는 두 훈련된 모델에 대해 조건 2와 3은 어떨까요? 순전히 모양에 관한 진술로만 읽으면, 이 역시 통과합니다. 왜 그런지를 먼저 보고 나서, 왜 그것으로는 충분하지 않은지를 보는 것이 좋겠습니다. 단일 이동 역할 관계는 입니다; 이를 통한 박스 의 존재 투영은 로, 같은 박스가 이동된 것일 뿐 여전히 박스입니다; 그리고 두 이동 관계의 합성은 에 의한 이동으로, 이 역시 같은 장치가 표현하는 관계입니다. 진짜 결함은 이 역할 해석이 점값(point-valued)이라는 데 있습니다: 관계 는 하나의 함수이므로, 모든 머리는 정확히 하나의 r-후속자만을 가지며, 그 관계는 일대다가 될 수 없고, 공유된 화살표 하나에는 여러 공리를 한꺼번에 섬길 여유가 없습니다. 그러므로 쓸모 있는 폐포는 세 가지 모양 조건만으로는 부족한 것을 역할에게 요구합니다: 역할 장치는 함수가 아닌 관계를 표현할 능력, 그리고 자신에 닿는 모든 공리에게 성립할 여지를 내줄 능력을 갖추어야 합니다. 그 능력이야말로 단일 이동에는 없고 TransBox가 역할에 양의 부피를 부여함으로써 되찾아 주는 것입니다. 이제 그 실패를 상세히 유도해 보겠습니다.
역할마다 하나의 이동이 실패하는 이유: 모양이 아니라 능력의 문제
3권은 이 실패를 벡터 형태로 이미 한 번 만난 적이 있습니다: TransE는 관계를 점수 를 갖는 하나의 벡터 로 모델링하는데, 여기서 와 는 머리와 꼬리 개체의 벡터이고, 은 그 관계의 이동이며, (노름 막대)는 그 결과로 나오는 불일치 벡터의 길이를 잽니다; 그리고 일대다 관계는 서로 다른 꼬리들을 같은 점 위로 강제로 밀어붙입니다. 그 논증을 온톨로지 수준에서 되풀이해 봅시다, 여기서는 그것이 세 번 따로따로 물어뜯습니다.
첫째, 개체들 위에서의 함수적 붕괴. 기하가 일 때 정확히 그때 를 단언한다고 합시다. 여기서 는 개체의 점이고 는 그 역할의 유일한 이동입니다. 어떤 머리 하나가 두 개의 r-후속자, 즉 인 와 를 가진다고 합시다. 그러면 두 방정식이 동시에 성립합니다:
두 번째 식을 첫 번째 식에서 빼 봅시다. 우변이 서로 같으므로 이 되고, 이는 를 강제합니다: 서로 다른 두 후속자가 한 점으로 붕괴합니다. 학계 세계에서 bob은 carol과 dave 둘 다를 지도하므로, advises를 엄격한 단일 이동으로 읽는 해석은 그 위의 TBox는 고사하고 지식 그래프의 트리플조차 표현할 수 없습니다.
둘째, 개념들 위에서의 가능한-이동 교착. 우리가 훈련한 모델들은 그 방정식을 포함 힌지(hinge)로 완화하므로, 붕괴는 등식이 아니라 제약들의 충돌로서 다시 나타납니다. 박스 모델을 예로 들어 봅시다. NF3 공리 는 "박스 A를 만큼 이동시키면 박스 B 안에 들어앉는다"로 훈련됩니다(box_el.py 226–241번째 줄). 이를 축마다 하나씩 풀어서, 정확히 어떤 이동들이 이 조건을 만족시키는지 구해 봅시다. 축 (라는 인덱스는 개의 축 전체를 훑습니다) 위에서 박스 A의 구간을 로 씁시다. 이동된 박스의 구간은 이며, 안에 포함되려면 양쪽 끝이 모두 다음을 요구합니다:
각 부등식을 에 대해 풀어 봅시다: 첫 번째는 를 주고, 두 번째는 를 줍니다. 그러므로 이 공리 하나를 만족시키는 이동들은, 축마다, 다음 구간을 이룹니다
이는 일 때, 즉 그 축 위에서 박스 B가 박스 A만큼 넓거나 그보다 넓을 때 정확히 그때 비어 있지 않습니다. 따라서 공리 전체에 대한 가능 집합은 그 자체로 이동들의 박스이며, 개의 공리를 섬기는 역할은 자신의 유일한 을 그런 박스 개의 교집합으로부터 골라야 합니다. 온톨로지가 완벽하게 충족 가능한 경우에도 그 교집합이 비어 있지 않으리라는 보장은 전혀 없습니다: 화살표 하나가 서로 다른 곳에 놓이고 서로 다른 크기를 가진 여러 원본 박스를 동시에 자신의 목표 박스로 사상하도록 요구받고 있는 셈입니다. 짝이 되는 코드는 이 줄다리기를 명시적으로 기록해 둡니다: 제곱 힌지가 선택된 것은, 두 공리가 하나의 공유된 이동을 서로 반대 방향으로 잡아당길 때 평범한 L1 힌지는 "정확히 상쇄되어 결코 풀리지 않는 교착 상태로 얼어붙기" 때문입니다(box_el.py 181–184번째 줄, hinge_incl의 독스트링).
셋째, 합성은 역할을 한 점에 고정시킵니다. 단일 이동 역할 두 개를 사슬로 이으면, 합성된 관계는 에 의한 또 하나의 이동이 됩니다: 모양은 살아남지만(조건 3은 퇴화된 형태로 성립합니다), 사슬 공리 는 이제 목표 역할의 가능 집합 전체를 한 점에 고정시킵니다: 합성된 관계는 모든 에 대해 쌍 을 담고 있고, 그 공리는 그런 쌍들 각각이 의 관계 안에도 놓여 있기를 요구하므로 가 되며, 양변에서 를 빼면 만 남아 아무런 자유도도 없습니다. 일반적인 경우라면 목표 역할은 다른 공리들도 섬기며, 그 각각이 위에서 유도한 것과 같은 자신만의 가능한 박스를 깎아 내는데, 하드코딩된 점 하나가 그 모든 박스 안에 동시에 놓여야 합니다; 그것이 가능하다는 보장은 어디에도 없습니다. 우리의 사례는 이 이야기의 나머지 절반을 보여 주는 온건한 극단입니다: 학계 TBox의 사슬 공리는 딱 하나, advises ∘ advises ⊑ grandAdvisor뿐이며, 이것이 마침 grandAdvisor의 유일한 공리이기도 하므로, 를 하드코딩하면 그것만으로도 충족될 것입니다("grandAdvisor의 유일한 공리는 건너뛴 그 사슬이다"라고 el_embed.py가 86–87번째 줄에서 언급합니다). 그럼에도 짝이 되는 코드는 더 단순한 이유로 이를 건너뜁니다: ELEm/ELBE 훈련 방식은 네 가지 정규형과 분리성만을 손실로 컴파일하므로, 그 어휘에는 역할 사슬을 위한 항목이 아예 없고, 그 공리는 근사되는 것이 아니라 그냥 버려집니다(el_embed.py 13–16번째 줄). 짝이 되는 두 모듈 모두 시늉을 하는 대신 거부합니다(box_el.py 56–62번째 줄):
# The one role chain (advises ∘ advises ⊑ grandAdvisor) has no translation-only
# box encoding — it would need t_advises + t_advises to act like a third role —
# so it is skipped with a printed note, exactly as in el_embed.py. (TransBox
# and Box²EL's bump machinery are the published fixes.)
CHAIN_AXIOMS: list[tuple] = [ax for ax in NORMALIZED if ax[0] == "chain"]
NF_AXIOMS: list[tuple] = [ax for ax in NORMALIZED
if ax[0] in ("nf1", "nf2", "nf3", "nf4")]
그리고 그 실행은 python3 box_el.py의 실제로 커밋된 출력 안에서, 이를 소리 내어 알립니다:
14 TBox axioms → 16 normal forms: 6 NF1 + 2 NF2 + 3 NF3 + 4 NF4 + 1 role chain
skipped: advises ∘ advises ⊑ grandAdvisor — one translation vector cannot compose two hops
열여섯 개 중 공리 하나, 정규화된 온톨로지의 대략 6퍼센트가, 지난 두 장에서 훈련한 그 무엇의 언어로도 그저 표현할 수 없는 것입니다. 이것이 실전에서 능력 실패가 어떤 모습인지를 보여 줍니다: 틀린 답이 아니라, 훈련 어휘가 아예 던질 수조차 없는 질문입니다.
넷째, 더 조용한 병리: 죽어 버리는 교집합. 함정문이 하나 더 있으며, 우리 자신의 코드는 이를 정직하고 명시적인 분기로 담고 있습니다. 훈련된 박스 와 가 단 한 축에서라도 겹치지 못하면, 그 둘의 교집합은 비게 되고, 논리곱 공리 는 공허하게(vacuously) 만족됩니다: 공집합은 모든 것의 부분집합이기 때문입니다. box_el.py 308–312번째 줄:
# ORDINARY NF2 (A ⊓ B ⊑ C). If the intersection is empty on some axis
# (l_I > u_I), then A ⊓ B ≡ ⊥ and ∅ ⊑ C holds VACUOUSLY: loss 0, and the
# subgradient is 0 (the axiom asks nothing of an empty intersection).
if bool(np.any(lI > uI)):
return 0.0, False
논리적으로는 이것이 옳지만, 바로 그 점이 이를 학습 신호로서 위험하게 만듭니다: 경사 하강법은 세 박스를 올바르게 배치함으로써가 아니라, 가 비도록 와 를 서로 밀어냄으로써 논리곱 손실을 0으로 만들 수 있습니다. 그리고 차원을 높이면 이 실패는 줄어들기는커녕 오히려 더 잦아집니다. 안에서 모서리들을 독립적으로 무작위로 뽑은 두 박스가 서로 겹칠 확률은 정확히 입니다: 각 축 위에서 네 개의 독립적인 끝점 좌표는 동일하게 있음직한 가지 순서 가운데 하나로 떨어지며, 한 구간을 다른 구간보다 통째로 앞에 두는 가지 순서가 그 축을 어긋나게 만들므로, 축 하나가 겹칠 확률은 이고, 개의 독립적인 축 모두가 동시에 겹쳐야 합니다. 그 확률은 가 커짐에 따라 기하급수적으로 무너지며, 이면 이미 십억분의 이 미만이 되므로, 실제 온톨로지가 훈련되는 고차원 공간에서는 빈 교집합이 예외가 아니라 기본 결과입니다 [1]. 이 병리에 대한 TransBox의 해법은 자신의 역할 박스와는 별개인 메커니즘입니다: 그것은 교집합을 축마다의 성분이 개별적으로 비어 있을 수 있는(좌표가 에서 뽑히는) 확장된 박스로 계산하여, 어느 한 축에서 죽어 버린 겹침이 전체 영역의 훈련 신호를 소멸시키는 대신 바로 그 축 하나에만 기록되도록 합니다 [1]. ⊓에 대한 닫힘은 필요조건이지만 충분조건은 아닙니다; 교집합들은 살아 있어야 하며, 그것들을 살려 두는 데는 그 나름의 장치가 필요합니다.
TransBox의 한 수: 역할은 이동들의 박스이다
먼저 풀어서 읽어 봅시다. 단일 이동 모델은 "관계 r은 바로 그 화살표 이다"라고 말합니다: 하나의 변위가 균일하게 적용됩니다. TransBox는 "관계 r은 허용된 화살표들의 집합이다"라고 말하며, 그 집합을 개념들과 같은 공간 안의 축 정렬 박스로 취합니다. 두 점의 쌍은, 그 변위가 허용된 화살표 중 하나일 때마다 그 관계 안에 놓입니다 [1]:
여기서 는 두 점이고, 는 그 역할의 박스입니다: 축마다 하나씩의 구간을 곱한 것으로, 아래쪽 끝이 이고 위쪽 끝이 입니다. 단일 이동은 모든 구간이 한 점으로 쪼그라드는 퇴화된 경우이므로, 잃는 것은 없습니다; 대신 얻는 것은 부피입니다: 일대다 역할이 하나의 머리와 여러 꼬리 사이에서 성립할 수 있는데, 왜냐하면 여러 변위가 한꺼번에 허용되기 때문입니다. (우리의 짝이 되는 코드는 머리를 만큼 이동시키는데, 이 부호 관례 아래에서 그 점 박스는 을 담고 있으며, 그 기하는 그 반사를 제외하면 똑같습니다.)
이 한 가지 변화가 계열 전체를 닫아 주는 이유는, 완전히 증명해 둘 가치가 있는 작은 기하학 하나에 있습니다: 두 축 정렬 박스의 민코프스키 합은 다시 축 정렬 박스이다. 두 집합의 민코프스키 합(Minkowski sum)이란 모든 쌍별 합의 집합, 입니다. 두 박스 모두 구간들의 곱이고 덧셈은 좌표별로 작용하므로, 1차원인 경우만 증명하면 충분합니다: .
왼쪽에서 오른쪽으로의 포함. 임의의 과 를 잡습니다. 두 부등식 사슬 과 를 항별로 더하면 를 얻으므로, 모든 쌍별 합은 주장한 구간 안에 떨어집니다.
오른쪽에서 왼쪽으로의 포함. 를 만족하는 임의의 목표값 를 잡습니다; 우리는 그 합을 이루는 두 항을 실제로 제시해야 합니다. 와 를 택합니다. 먼저 를 확인해 봅시다: 최솟값의 정의에 의해 이고, 두 후보 모두 그렇기 때문에 입니다. 즉 은 언제나 성립하고, 가정 를 다시 정리하면 입니다. 이제 를 확인해 봅시다: 로부터 를 얻습니다; 그리고 로부터 을 얻는데, 이므로 도 성립하며, 따라서 는 최솟값의 두 후보 모두보다 작거나 같습니다. 그러므로 이고, 이를 다시 정리하면 입니다. 두 항 모두 합법적이므로, 의 모든 점이 도달됩니다. ∎
이 보조정리를 가지고, 세 가지 닫힘 조건이 차례로 성립합니다.
교집합은 박스에 대해 이미 닫혀 있었습니다: 축마다, 이며, 이는 앞 장의 모서리 산술로서, 어떤 아래쪽 모서리가 대응하는 위쪽 모서리를 넘어서면 비게 됩니다.
존재 투영은 민코프스키 합이 됩니다. 정의를 풀어내고 로 치환해 봅시다:
이는 보조정리에 의해 다시 박스이며, 그 모서리는 모서리들을 더해서 계산됩니다. 학계 세계에서, "적어도 한 명의 학생을 지도하는 모든 것"이라는 복합 개념 ∃advises.Student를 예로 들어 봅시다. 그 영역은 자신만의 훈련이 전혀 필요 없습니다; 그것은 이미 훈련된 두 대상으로부터 상징적으로 조립됩니다:
그리고 TBox 공리 Professor ⊑ ∃advises.Student는 평범한 박스 포함 관계 가 되며, 이는 어떤 NF1 공리와도 같은 개의 부등식으로 모서리마다 검사할 수 있습니다. 더 깊이 중첩시켜도 새로운 일은 전혀 일어나지 않습니다: Person ⊓ ∃authored.Paper는 , 즉 두 박스의 교집합으로, 그 자체가 박스입니다. 모든 구성자 적용은 모서리 산술을 한 차례 도는 것에 지나지 않습니다.
합성은 역할 계열 안에 그대로 머무르며, 여기서의 구성은 근사가 아니라 정확합니다. 와 라고 합시다, 그러면 이고 입니다. 두 변위를 더하면 망원경처럼 접혀서:
거꾸로, 이고 인 에 대해 라면, 증인(witness) 를 세웁니다; 그러면 이고 이며, 정의역이 전체이므로 그 증인은 언제나 존재합니다. 그러므로 합성된 관계는 박스 의 관계와 정확히 같으며, 우리의 짝이 되는 코드가 건너뛸 수밖에 없었던 그 사슬 공리는 박스들 사이의 훈련 가능한 포함 관계 하나가 더 됩니다:
축마다 이고 입니다. 우리의 두 실행 모두가 건너뜀 알림을 출력했던 그 열여섯 번째 정규형은, 더 이상 언어 바깥에 있지 않습니다. 개념을 위한 박스들, 역할을 위한 박스들, 그리고 세 구성자 모두가 모서리 위에서의 최댓값, 최솟값, 덧셈으로 환원됩니다: 그 계열은 EL++에 대해 닫혀 있으며, 이번에는 역할이 양의 부피를 가지므로, 그 폐포는 점으로 붕괴하는 대신 실질적인 능력을 지니게 됩니다 [1].
그림으로 보는 EL++ 폐포: 역할이 이동들의 박스가 되는 순간 교집합, 존재 투영, 역할 합성이 모두 박스 계열 안에 그대로 머무르며, 그 아래의 mOWL 파이프라인은 그런 모델이 어떻게 정규화되고 훈련되고 순위 매겨지는지를 표준화합니다.
저자가 AI의 도움을 받아 직접 제작한 원본 도해.
건전성 정리, 그리고 그로부터 우리가 정직하게 떨어져 있는 거리
이 구성은 실질적인 논리적 내용을 담은 정리 하나를 뒷받침합니다. TransBox는 각 정규화된 공리에, 대응하는 기하학적 조건이 성립할 때 정확히 그때 0이 되는 손실 항을 붙입니다(포섭에는 포함 관계, 분리성에는 빈 겹침, 사슬에는 민코프스키 포함 관계를 씁니다), 그리고 다음을 증명합니다 [1]:
건전성. 정규화된 온톨로지 전체에 대한 훈련 손실 총합이 정확히 0이면, 정의역이 이고, 각 개념 이름이 자신의 박스로 사상되며, 각 역할이 관계 로 사상되고, 복합 개념은 위의 모서리 산술로 해석되는 그 기하학적 해석은, 온톨로지의 모델입니다: 모든 공리가 그 안에서 참입니다.
이것이 사 주는 것이 무엇인지 잠시 멈추어 생각해 봅시다. 2권에서, 온톨로지 가 진술 를 함의한다는 것은, 라고 쓰며, 가 의 모든 모델에서 참일 때를 뜻합니다. 이 정의를 손실 0인 기하에 적용해 봅시다: 그것은 하나의 모델이므로, 함의되는 모든 진술은 특히 그 안에서도 참입니다. 라면, 어떤 허용 오차 매개변수도 어떤 예외도 없이 입니다. 그러므로 손실 0인 기하는 함의에 대해 완벽한 재현율을 가집니다: 그것은 논리가 증명하는 그 무엇도 기하학적으로 부정할 수 없습니다. 그것이 갖지 못하는 것은 완벽한 정밀도입니다. 모델이란 여럿 가운데 하나의 세계일 뿐이며, 하나의 세계는 온톨로지가 함의하지 않는 여분의 진술들을 참으로 만들어 버릴 수도 있습니다(우리의 기하는 초기화의 우연으로 인해 모든 Dean을 Topic 안에 놓아 버릴지도 모릅니다). 손실 0에 의한 건전성은 오직 한쪽의 오류만을 한계 짓는데, 그 비대칭이야말로 이 보장의 정직한 모습입니다.
이제 이 정리가 우리에게 강제하는 불편한 질문입니다: 우리의 실행은 그것을 얻어 냈을까요? 둘 다 얻어 내지 못했으며, 커밋된 숫자들이 이를 정확히 말해 줍니다. 공 모델의 실제 훈련 트레이스입니다(python3 el_embed.py):
training: full-batch loss (per-form pieces; epoch 1 = untrained)
epoch : total nf1 nf2 nf3 nf4 disj reg
1 : 15.3500 7.4906 1.7265 3.7316 2.4013 0.0000 0.0000
100 : 0.8361 0.3984 0.0000 0.3518 0.0000 0.0461 0.0398
1000 : 0.6078 0.1239 0.0000 0.0659 0.0000 0.4168 0.0011
3000 : 0.6848 0.1286 0.0000 0.0615 0.0000 0.4943 0.0004
(the loss cannot reach 0: no geometry satisfies TenuredStudent ⊑
Professor and ⊑ Student while the two stay γ_d apart — the
unsatisfiable concepts keep an irreducible residual.)
그리고 박스 모델의 것입니다(python3 box_el.py):
epoch : total | NF1 NF2⊓ disj NF3 NF4
1 : 283.4835 | 121.3894 0.0000 0.0000 62.7180 99.3761
10 : 10.3909 | 6.2613 0.0000 0.0002 1.9388 2.1907
50 : 1.1293 | 0.3796 0.4096 0.0000 0.2306 0.1095
100 : 0.2988 | 0.1469 0.0257 0.0000 0.1068 0.0193
300 : 0.1465 | 0.0800 0.0174 0.0000 0.0488 0.0003
1000 : 0.0943 | 0.0510 0.0149 0.0000 0.0284 0.0000
2000 : 0.0804 | 0.0425 0.0150 0.0000 0.0228 0.0000
4000 : 0.0678 | 0.0351 0.0150 0.0031 0.0146 0.0000
이 트레이스들을 정리에 견주어 읽어 봅시다. 공 모델의 실행은 에폭 1000 스냅숏에서 0.6078까지 떨어졌다가 에폭 3000에 이르러 0.6848로 다시 올라갑니다; 커져 가는 disj 열은 분리성 힌지와, 충족 불가능한 TenuredStudent의 두 포함 힌지가 스프링 평형 상태에 갇혀 있음을 보여줍니다. 박스 모델의 실행은 훨씬 더 잘해서, 283.4835에서 0.0678로, 자릿수로 세 자리 반을 내려가지만, 바닥은 0이 아니며, 그 이유의 일부는 구조적입니다: 두 매개변수화 모두 모든 개념에 엄격하게 양의 부피를 가진 영역을 부여하므로, ⊥는 표현할 수 없고, TenuredStudent를 서로 소인 두 박스 안에 동시에 담아야 하는 어떤 기하든 영구적인 위반을 짊어집니다. (진짜 논리적 모델이라면 그저 로 두면 될 일이지만, 양의 부피를 가진 박스는 그럴 수 없습니다.) 그러므로 정리의 가정은 두 실행 모두에서 실패하며, 우리가 훈련된 기하에 관해 아는 모든 것은 대신 이 정리의 경험적 그림자, 즉 건전성 탐침으로부터 옵니다. 거기서는 소식이 좋고, 진짜입니다:
4. soundness probe — accept A ⊑ B iff gap(A,B) = max_i max(l_B−l_A, u_A−u_B) ≤ ε = 0.05
the 8 gold subsumptions, by their trained gaps:
Dean ⊑ Person gap = -0.1048 ✓ contained
Dean ⊑ Professor gap = 0.0199 ✓ contained
Dean ⊑ Researcher gap = -0.0544 ✓ contained
Professor ⊑ Person gap = -0.1000 ✓ contained
Professor ⊑ Researcher gap = -0.0500 ✓ contained
Researcher ⊑ Person gap = 0.0000 ✓ contained
Student ⊑ Person gap = -0.0500 ✓ contained
Student ⊑ Researcher gap = -0.0500 ✓ contained
scan of 8·7 = 56 ordered pairs: predicted 8, TP 8, FP 0, FN 0
8개의 금본위(gold) 포섭 관계 중 8개가 포함되었고, 거짓 포함은 0건입니다. 하지만 정리라면 결코 인정하지 않았을 것을 이 탐침이 인정했다는 점에 주목하십시오: 바로 허용 오차라는 것 자체입니다. Dean ⊑ Professor는 오직 0.0199라는 양의 간격(gap)을 가지고서만 성립하는데, 이는 아래에 있기 때문에 봐 넘겨진, 진짜로 튀어나온 부분입니다. 0이 아닌 손실에서의 완벽한 탐침 점수는 증거이지 증명이 아닙니다; 정리는 우리의 축소판 실행들이 다가가지만 서명하지는 못하는 계약서입니다. 커밋된 실행에서 그대로 가져온 두 요약 줄이, 이 부(Part)의 경험적 결론입니다:
SUMMARY el_embed: trained_axioms=15 skipped_chains=1 gold=8 tp=8 fp=0 fn=0 precision=1.0000 recall=1.0000 final_loss=0.6848 disjoint_gap=0.1117
SUMMARY box_el: gold=8/8 tp=8 fp=0 fn=0 precision=1.0000 recall=1.0000 ball_recall=1.0000 final_loss=0.0678 min_overlap=-0.0304
이 분야가 실제로 수행하는 평가
우리의 56쌍짜리 탐침은 이 분야의 표준 프로토콜을 축소해 놓은 것이며, 그 프로토콜은 두 단계로 이루어져 있습니다 [1][3]:
정규화된 공리 예측. 온톨로지의 정규화된 공리 가운데 일부를 떼어 두고, 나머지로 훈련한 다음, 각각의 떼어 둔 공리를 순위 매김 질의로 다룹니다: 에 대해, 모든 개념 이름을 후보 우변으로 삼아 모델의 기하학적 포함 점수로 채점하고, 정렬한 다음, 참인 답의 순위를 기록합니다. 순위들은 평균 역순위(Mean Reciprocal Rank, MRR, 1/순위의 평균)와 Hits@k(순위가 k 이하인 질의들의 비율)로 집계되며, 이때 이미 다른 참으로 알려진 공리를 이루는 후보들은 셈하기 전에 제거한다는 필터링 관례를 따릅니다. 이는, 항목 하나하나가, 우리 kg.py가 트리플에 대해 구현하는 프로토콜과 같습니다: rank_of(79–104번째 줄)는 모든 후보를 채점하고, 참으로 알려진 오염(corruption)들을 걸러 낸 다음, 엄격하게 더 높은 순위를 받은 생존자들을 셉니다; evaluate(110–122번째 줄)는 머리와 꼬리 오염에 걸친 순위들을 필터링된 MRR과 Hits@1/3/10으로 접어 넣습니다. GALEN의 포섭 예측 표를 읽는 것과 우리의 6개 질의로 된 링크 예측 표를 읽는 것은 같은 기술입니다.
복합 공리 예측. 더 강력한 시험이자, 폐포가 존재하는 이유 그 자체입니다: 나 가 ⊓와 ∃를 중첩시키고 있는 포섭 관계 를 떼어 둡니다. 온톨로지가 이런 공리를 직접 단언하는 일은 드물기 때문에, 떼어 둘 집합은 상징적으로 생성됩니다: TransBox의 평가는 LETHE를 사용하는데, 이는 온톨로지에서 선택된 이름들을 제거하고 그렇게 함으로써 진짜로 복합적인 변을 가진 함의된 공리들을 만들어 내는 균일 보간("망각") 엔진입니다 [1]. 이름별 영역만을 저장하는 모델은 무엇이든 순위를 매기기 전에 각 복합적인 변의 영역을 구성해 내야 하는데, 이는 정확히 EL++ 폐포가 부여하는 능력이며, 닫혀 있지 않은 모델은 그것을 근사해야만 합니다. 두 단계 모두의 표준 말뭉치는 GALEN(임상 용어 온톨로지), Gene Ontology, 그리고 Anatomy로, 이는 2권에서 EL++의 다항식적 설계를 촉발했던 그 생물의학적 규모입니다. 이들 위에서 보고되는 결과는 일방적인 압승이 아니라 하나의 트레이드오프입니다: TransBox의 결정적인 승리는 폐포가 온전히 승부를 가르는 복합 단계에서 나오는 반면, 평범한 정규화된 공리에서는 대체로 닫혀 있지 않은 Box²EL과 공 기준선들에 뒤처지는 순위를 보이는데, 이는 그 논문 스스로가 보고하는 대가입니다 [1]. 우리는 그 발견의 숫자가 아니라 그 형태를 인용합니다: 그 숫자들은 그들 논문의 표에 속한 것이고, 이 장이 책임지는 것은 우리 자신이 커밋한 숫자들입니다.
mOWL: 결과를 비교 가능하게 만든 도구 상자
이 부(Part)의 모든 모델은 같은 네 가지 정규형을 소비하고, 힌지로 훈련되었으며, 순위로 판정받았습니다. 그 균일성은 자연의 법칙이 아닙니다; 그것은 기반 시설입니다. mOWL(machine learning with OWL)은 온톨로지 임베딩 파이프라인 전체를 하나의 인터페이스 뒤로 포장하는 파이썬 라이브러리이며 [2], 그 단계들을 하나하나 짚어 보면 왜 이 분야의 결과가 애초에 비교 가능해졌는지가 드러납니다.
OWL을 입력으로. 입력은 손으로 타이핑한 공리 목록이 아니라, 필요하다면 SNOMED 규모까지 되는, OWL 표준으로 된 진짜 온톨로지 파일입니다. 참조 OWL 장치(OWL API, 추론기들)가 자바 가상 머신 위에 살고 있으므로, mOWL은 파이썬-자바 브리지인 JPype를 통해 그곳에 도달합니다; 파이썬 사용자는 JVM을 직접 볼 일이 전혀 없습니다.
브리지 뒤편의 정규화. jcel 추론기의 정규화 단계는, 규모 있는 추론을 위해 사용 가능한 ELK와 함께, 온톨로지를 EL의 정규형들로 다시 쓰는데, 이는 2권의 normalize가 우리의 14개 공리에 대해 했던 역할과 같습니다. 그 출력은 일곱 개의 GCI 데이터셋(GCI, 즉 일반 개념 포함, 공리 를 아우르는 용어)으로 나뉘어 담깁니다: 네 가지 충족 가능한 모양인 , , , 에, 세 가지 바닥(⊥) 변형인 , , 을 더한 것입니다. 우리의 짝이 되는 코드가 NF2를 "일반" 분기와 "분리성" 분기로 나눈 것(box_el.py 281–306번째 줄 대 308–322번째 줄)은 같은 발상의 두-버킷짜리 그림자입니다: ⊥가 오른쪽에 오는 공리는 다른 기하가 필요하므로, 자신만의 버킷을 얻습니다.
하나의 손실-디스패치 계약. 각 임베딩 모델은 GCI 버킷마다 하나의 손실 메서드를 구현하는 ELModule입니다; 훈련은 그 버킷들을 순회하며 디스패치합니다. 이 단일한 계약 아래에서 mOWL은 이 부(Part)가 올라온 그 동물원을 실어 나릅니다: ELEm(EL 임베딩 장의 공), ELBE(단일 이동 역할을 가진 박스: 우리 box_el.py는 그 독스트링이 자신의 박스 매개변수화를 "BoxEL 방식"이라 부르지만 실은 정확히 ELBE의 이동 역할을 훈련합니다; 이 두 박스 계보는 BoxEL과 Box²EL에서 풀어헤쳐집니다), BoxEL, 그리고 범프(bump) 벡터를 가진 Box²EL입니다 [2][3]. 모델을 바꾸는 것은 실험이 아니라 클래스 이름 하나를 바꾸는 일입니다; TransBox 자체도 (수정된 평가와 더불어) Box²EL 설정을 재구현한 것 위에서 평가되었으며, 이는 한 층 위에서 똑같이 배당된 이익입니다 [1].
하나의 평가기. RankBasedEvaluator는 어떤 모델이 꽂혀 있든 그것에 맞서 필터링된 순위 매김 프로토콜을 실행하므로, 보고된 MRR은 같은 하니스(harness)를 공유하는 논문들에 걸쳐 같은 것을 의미합니다. 이 라이브러리는 또한 그래프-투영 대안인 OWL2Vec*도 담고 있는데, 이는 온톨로지를 그래프로 렌더링한 것을 걸으며 기하학적 손실 대신 단어-벡터 장치로 임베딩합니다: 이 부(Part)의 영역 기반 계열은 같은 입력과 평가기를 공유하는 더 큰 생태계의 한쪽 날개입니다 [4].
이탤릭체로 강조할 가치가 있는 주장은 이것입니다: 여기서 결정적인 기여는 어떤 단일한 손실 함수가 아니라 공유된 도구였다는 것입니다. 공통 하니스가 있기 전에는, 모든 논문이 저마다 다르게 정규화하고, 나누고, 필터링했으며, 그래서 숫자들을 나란히 놓고 볼 수가 없었습니다; 그것이 생긴 뒤로는, 개선이라는 것은 동일한 평가기를 거쳐 동일한 데이터 위에서 살아남아야만 했습니다. 우리의 짝이 되는 모음은 의도적으로 mOWL을 축소판으로 만든 것이므로, 이 파이프라인은 여러분이 이미 처음부터 끝까지 실행해 본 것입니다:
| mOWL 단계 | 하는 일 | 우리의 축소판 |
|---|---|---|
| OWL 수집(JPype) | 진짜 온톨로지를 불러온다 | ontology.py(14개 공리 TBox) |
| jcel/ELK 정규화 | GCI 버킷들로 다시 쓴다 | el_completion.normalize(16개 정규형) |
| 일곱 개의 GCI 버킷 | 공리 모양마다 하나의 데이터셋 | NF1–NF4 목록과 disj 분기 |
| ELModule 동물원 | 버킷마다, 모델마다 하나의 손실 | el_embed.py(공), box_el.py(박스) |
| RankBasedEvaluator | 필터링된 MRR / Hits@k | kg.py의 evaluate(110–122번째 줄); 56쌍 탐침 |
한 개의 냉정한 표로 본 분야의 현황
3부(Part III)는 손으로 배치한 영역에서 시작해 여기서 끝을 맺습니다. 표 하나가, 이 궤적에서 훈련된 각 모델이 무엇을 표현하는지, 무엇에 대해 닫혀 있는지, 그리고 무엇을 증명할 수 있는지를 요약합니다 [1][3]:
| 모델 | 개념 영역 | 역할 | 섬기는 구성자(모양과 능력) | 건전성 이야기 |
|---|---|---|---|---|
| ELEm | 열린 공 | 이동 벡터 하나 | ⊓가 그 계열을 벗어난다(렌즈는 공이 아니다); 역할은 점값이다 | 없음; 탐침뿐 |
| BoxEL | 축 정렬 박스 | 역할마다 아핀 사상 | ⊓는 정확함; 역할 사상은 박스 모양을 유지하지만 결정론적이어서, 일대다 능력도 사슬을 위한 여지도 없음 | 사실에 대한 부피 기반 의미론; 자기 자신의 손실-0 정리를 증명함(손실 0 ⟹ 모델), 하지만 점값 역할 탓에 복합 개념 질의와 사슬 질의는 손이 닿지 않는 곳에 남음 |
| Box²EL | 개념마다 범프 벡터를 더한 박스 | 범프를 가진 머리/꼬리 박스 | ⊓는 정확함; 범프가 관계적 능력을 사 오지만, 중첩된 ∃나 사슬을 위한 구성적 영역은 없음 | 자기 자신의 손실-0 정리 역시 증명함(마진 γ ≤ 0에서 손실 0 ⟹ 모델), BoxEL/TransBox와 같은 모양이지만, 그 보장은 TransBox의 것이 닿는 복합 개념 질의와 폐포 질의까지는 미치지 못함; 강한 경험적 순위 매김 [3] |
| TransBox | 축 정렬 박스 | 역할마다 이동들의 박스 | ⊓, ∃-투영, ∘ 모두 정확하며 역할에 부피가 있음(EL++에 대해 닫혀 있고, 능력도 갖춤) | 정리: 손실 0 ⟹ 그 기하는, 구성자 집합 전체에 대해, 모델이다 [1] |
마지막 두 열을 함께 읽으면 이 부(Part)의 궤적이 축소판으로 눈에 들어옵니다. 손실-0 발상은 TransBox의 발명품이 아닙니다: BoxEL과 Box²EL 모두가 같은 모양의 정리를 먼저 증명했습니다. 자라난 것은 그 정리의 도달 범위입니다: ⊓ 하나에 대해서만 정확했던 구성에서, 그것을 감당할 만큼 폭넓은 역할과 더불어 언어가 가진 모든 구성자를 섬기는 구성으로 자라났고, 그래서 "손실 0이 모델을 만든다"는 명제가 마침내 온톨로지가 실제로 묻는 복합 개념과 사슬까지 아우르게 됩니다. 그 한계는 하나의 이상화이지만(우리의 최선의 실행은 0.0678에서 멈추었습니다), 그것이 옳은 이상화인 까닭은, 그것이 임베딩을 리더보드의 직관이 아니라 2권의 정확성 기준에 답해야 하는 것으로 만들기 때문입니다.
아직 풀리지 않은 부분
이 장의 모든 정리는 평평한 유클리드 공간 안에서 살고 있으며, 평평한 공간은 임베딩되고 있는 대상에게는 은근히 잘못된 모양입니다. 학계 세계의, GALEN의, Gene Ontology의 금본위(gold) 구조는 하나의 위계(hierarchy)입니다: Person 위에 Researcher, 그 위에 Professor, 그 위에 Dean이 있는, 내려갈수록 넓어지는 나무입니다. 분기 계수(branching factor) 를 가진 나무는 깊이 에서 개의 노드, 즉 지수적 성장을 갖는 반면, 반지름 인 유클리드 공을 채우는 부피는 어떤 고정된 차원 에서도 에 대해 오직 다항식적으로만 자랍니다. 무언가는 굽혀야 합니다: 차원이 위계와 함께 커지거나, 아니면 임베딩이 왜곡(distortion)을 치러야 하는데, 형제들이 서로 짓눌리고, 사촌들이 거짓으로 가까이 끌려오며, 그 대가는 깊이와 함께 커집니다. 닫힘과 건전성은 이 비용에 관해 아무 말도 하지 않습니다; 그것들은 최적화 과정이 내려가면서 얼마나 많은 기하학적 여지를 갖는지가 아니라, 손실 0에서의 표현 가능성에 관한 진술입니다. 그리고 우리 실행들의 완고한 잔차, 0.6848과 0.0678은, 부분적으로는 다항식적으로만 여지를 내주는 공간 안에서 공리들이 자리를 놓고 다투는 소리입니다. 닫힘-그리고-건전성이라는 프로그램을, 자신이 담아야 할 나무만큼 빠르게 부피가 자라는 기하 안에서 다시 지을 수 있는지, 그리고 그곳에서는 모서리 산술이 도대체 무엇을 뜻하는지는 진정으로 열려 있는 문제입니다. 다음 장은 공간 그 자체를 바꿈으로써 첫걸음을 내딛습니다.
왜 중요한가
이 장은 표현과 앞으로 다가올 통합 권 사이의 경첩입니다. 논리를 미분 가능하게 만드는 4권의 기획은, 정확히 여기서 확립된 두 가지 자산을 필요로 합니다. 첫째, 구성적 기하입니다: 의미 손실이든 미분 가능한 질의 엔진이든, 복합 논리식의 점수를 그 부분들의 점수로부터 만들어 낼 수 있어야 하며, EL++ 폐포는 바로 그 요구 사항을 영역 수준에서 진술한 것입니다. 둘째, 건전성 계약입니다: "손실 0은 모델을 함의한다"는 4권과 5권이 계속해서 손을 뻗는 보장들의 견본이며, 학습된 대상이 시험 정확도가 아니라 모델 이론으로 판정받기 시작하는 그 지점입니다. 우리 실행들이 드러낸 공백, 즉 최적화 과정이 결코 도달하지 못하는 0에서만 성립하는 보장이라는 것 역시 똑같이 무게를 짊어지고 있습니다: 그것은 "훈련된 추론기를 언제 신뢰할 수 있는가"라는 질문의 정직한 형태이며, 5권의 충실성(faithfulness) 장들에서 더 날카로워진 채로 되돌아옵니다. 그리고 mOWL의 교훈, 즉 공유된 하니스가 공유된 진전보다 먼저 온다는 것은, 이 시리즈의 모든 대미(capstone)를 떠받치는 방법론적 척추입니다.
핵심 용어
- 복합 개념(Complex concept) — 논리곱(⊓)과 존재 제한(∃r.C)으로 이름들로부터 만들어진 개념으로, Person ⊓ ∃authored.Paper가 그 예입니다.
- EL++ 폐포(EL++-closure) — 교집합, 존재 투영, 역할 합성에 대해 닫혀 있는 개념 영역들의 계열(과 그 역할 해석)로, 그래서 모든 복합 개념이 그 부분들의 영역으로부터 만들어진 영역을 얻습니다; 역할 역시 일대다 관계를 표현할 능력(양의 부피)을 지녀야만 비로소 쓸모가 있습니다.
- 존재 투영(Existential projection) — 역할 을 통해 영역 의 어떤 점을 바라보는 점들의 영역 이며, TransBox에서는 이것이 과 같습니다.
- 민코프스키 합(Minkowski sum, ⊕) — 두 집합의 모든 쌍별 합으로 이루어진 집합이며, 축 정렬 박스에 대해서는 다시 박스가 되어, 축마다 모서리가 와 가 됩니다.
- 역할 박스(Role box) — 역할에 대한 TransBox의 해석입니다: 허용된 이동들로 이루어진 축 정렬 박스로, 는 일 때 정확히 그때 성립하며, 단일 이동은 퇴화된 점 박스입니다.
- 건전성 정리(손실-0 모델)(Soundness theorem, zero-loss model) — 훈련 손실이 정확히 0인 기하는 온톨로지의 모델이며, 따라서 함의되는 모든 진술을 만족시킵니다: 완벽한 재현율이지, 완벽한 정밀도가 아닙니다.
- 정규화된 공리 / 복합 공리 예측(Normalized-axiom / complex-axiom prediction) — 이 분야의 두 가지 순위 매김 평가입니다: 떼어 둔 정규형 공리를 기하학적 점수로 순위 매기는 것과, 복합적인 변을 가진, 떼어 둔 LETHE 생성 포섭 관계입니다.
- GCI(일반 개념 포함)(General concept inclusion) — 공리 입니다; mOWL은 정규화된 온톨로지를 일곱 개의 GCI 데이터셋(네 가지 충족 가능한 모양, 세 가지 ⊥-오른쪽 변형)으로 나누어 담습니다.
- mOWL — 파이프라인을 표준화하는 파이썬 라이브러리입니다: JPype를 통한 OWL 수집, jcel/ELK 정규화, 하나의 손실-디스패치 계약 아래의 ELModule 동물원, 그리고 공유된 순위 기반 평가기입니다.
이 길이 이끄는 곳
아직 풀리지 않은 부분은 적을 정확히 지목했습니다: 위계는 지수적으로 자라지만 평평한 공간은 그렇지 않습니다. 다음 장인 쌍곡 임베딩은 그 공간과 싸우기를 멈추고 그것을 갈아 치웁니다: 푸앵카레 공(Poincaré ball)에서는 부피가 반지름에 대해 지수적으로 자라며, 이는 우리가 계속 임베딩하려 애써 온 나무들과 같은 속도입니다. 거기서 우리는 쌍곡 거리와 그 리만 기울기를 유도하고, 동일한 매개변수 예산 아래에서 곡률이 있는 공간이 학계 위계 위에서 평평한 공간을 이기는 2차원 정면 대결을 실행하며, 그 위계는 각 점의 원점으로부터의 거리로부터 곧바로 읽힙니다.
짝이 되는 코드: examples/neural/box_el.py(박스, 모서리 산술, 공허한-교집합 분기, 56쌍 탐침)와 examples/neural/el_embed.py(공, 단일 이동 힌지, 줄지 않는 잔차)가 이 장에서 인용한 모든 숫자를 만들어 냅니다; python3 box_el.py는 이 둘을 바이트 단위로 동일하게 다시 실행하며, examples/neural/kg.py는 현장 규모 프로토콜들이 그대로 비추는 필터링된 순위 매김 평가기를 제공합니다.