본문으로 건너뛰기

t-노름과 t-코노름: 퍼지 AND와 OR

📍 현재 위치: 1부 · 퍼지·다치 논리 — 2장. 다치 논리는 제3의 값으로 참/거짓 이분법을 깨뜨렸고, 하나의 열린 질문으로 끝났습니다: 진리가 [0,1][0,1] 안의 어떤 수라도 될 수 있다면, 결합자에는 무슨 일이 일어날까요? 이 장은 AND와 OR에 대해 그 답을 내놓습니다.

이전 장은 아직 자신의 논리를 표로 적을 수 있었습니다: 세 개의 값, 아홉 개의 행, 모든 결합자가 유한한 조회표였습니다. 진리가 구간 [0,1][0,1] 전체(0과 1을 포함하여 0부터 1까지의 모든 실수)에 걸치는 순간 그 선택지는 사라집니다. 연속체 위의 표에는 셀 수 없이 많은 행이 필요하기 때문입니다. 논리곱은 함수가 되어야 합니다: 어떤 T:[0,1]2[0,1]T : [0,1]^2 \to [0,1], 즉 두 논리곱 항 각각의 진리 정도 한 쌍을 받아 그 논리곱의 진리 정도를 돌려주는 규칙입니다. 표기를 해독하면 이렇습니다: [0,1]2[0,1]^2는 두 좌표가 모두 단위 구간에 속하는 순서쌍 (x,y)(x, y)의 집합이고, 화살표 \toTT가 그런 각 쌍을 하나의 값으로 보낸다고 말하며, 그 값은 다시 [0,1][0,1] 안에 있습니다. 어떤 함수가 "그리고"라는 이름을 받을 자격이 있을까요? 전부는 아닙니다. 이 장은 등급 매겨진 논리곱이 반드시 만족해야 할 정확한 공리들을 못 박고, 퍼지 논리 전체를 사실상 떠받치는 세 함수를 만나며, 각각이 자신에 어울리는 OR과 함의를 뒤에 끌고 다니므로 AND를 고르는 순간 결합자 계열 전체가 고정된다는 것을 보입니다. 그런 다음 모든 법칙은 동반 모듈 tnorms.py가 정확하게, 그리고 전수적으로 검사하며, 이 장치 전체는 실행 예제 위에 착지합니다: 신뢰도 주석이 달린 2권의 인용 사슬을 세 가지 방식으로 다시 합성합니다.

쉽게 말하면

깨끗하고 조용해야 하는 호텔을 예약한다고 상상해 봅시다. 후기들은 깨끗함에 0.9, 조용함에 0.8을 줍니다. "깨끗함 AND 조용함"에 대해 얼마나 확신해야 할까요? 분별 있는 친구 셋에게 물어봅시다. 신중한 친구는 논리곱이란 더 약한 쪽만큼만 좋을 수 있다고 말합니다: 0.8입니다. 확률론자는 둘을 독립적인 동전 던지기로 보고 곱합니다: 0.72입니다. 엄격한 회계사는 의심을 합산하고(깨끗함에 대한 의심 0.1에 조용함에 대한 의심 0.2를 더해) 그 총합을 1에서 뺍니다: 0.7입니다. 세 답 모두 방어 가능하고, 세 답 모두 같은 상식적 기본 규칙(두 평점의 순서는 중요할 수 없다, 완벽한 1.0짜리 평점은 아무것도 바꾸지 말아야 한다, 더 좋은 평점이 평결을 낮춰서는 안 된다)을 지키며, 어떤 논리 규칙도 승자를 골라 주지 않습니다. 이 장은 그 기본 규칙들, 그 세 친구, 그리고 각 친구의 기질이 결론의 사슬에 무엇을 하는지에 관한 이야기입니다.

이 장에서 다루는 내용

  • 네 가지 t-노름 공리: 가환성, 결합성, 단조성, 그리고 항등원 1을, 등급 매겨진 논리곱이 각각을 포기할 수 없는 이유 한 줄과 함께 해독하고, 모든 t-노름이 값 0과 1 위에서는 고전적 AND로 제한된다는 모서리 검사를 더합니다.
  • 세 가지 근본 t-노름과 그 성격: 괴델 최솟값(멱등적), 곱(엄격: 0에서만 0), 우카시에비치 노름(멱영: 절반짜리 진리 둘이 거짓을 만듭니다)을 다루며, 조밀한 격자 위에서 모든 공리가 편차 정확히 0.0으로 검증되고, 그곳에서 정확한 등식을 요구하는 것이 왜 정당한지도 설명합니다.
  • 보편 순서, 유도한 뒤 검사하기: TŁTPTGT_{\text{Ł}} \le T_P \le T_G(우카시에비치가 곱 아래, 곱이 괴델 최솟값 아래)의 점별 증명, 최솟값이 존재하는 가장 큰 t-노름이라는 네 줄짜리 증명, 그리고 최솟값이 유일한 멱등적 t-노름이라는 논증입니다.
  • 드모르간 쌍대: 강한 부정 1x1-x가 각 AND를 어떻게 OR로 바꾸어 최댓값, 확률적 합, 유계합을 낳는지, 그리고 세 성격을 직관적으로 만들어 주는 "논리곱의 의심" 독법을 다룹니다.
  • 잉여, 이 장의 정리: 상한(supremum)으로부터 유도되는 각 t-노름의 잉여 함의, 양방향으로 증명되고 274,625개의 격자 삼중항 전부에서 검사되는 수반 관계 T(x,z)y    zI(x,y)T(x,z) \le y \iff z \le I(x,y)(겹화살표는 "필요충분"으로 읽습니다), 그리고 그 부등식이 왜 정확히 퍼지 전건 긍정(modus ponens)의 건전성인지를 다룹니다.
  • 실행 예제: 2권의 주석 달린 인용 사슬(신뢰도 0.9, 0.8, 0.5, annotated.py에서 읽어 오며 결코 다시 타이핑하지 않습니다)을 두 링크짜리, 그리고 세 링크짜리 논리곱으로 세 t-노름 모두에서 합성합니다: 같은 사실, 방어 가능한 세 가지 신뢰도, 그리고 이제 여러분이 물을 줄 알게 된 모델링 질문입니다.
  • 앞으로의 메뉴: 이후의 시스템들이 각각 어떤 t-노름을 고르는지, 그리고 2부가 왜 진리함수적 전제 자체를 거부할 것인지를 다룹니다.

어떤 퍼지 AND든 반드시 만족해야 하는 것은?

고전 논리에서 논리곱이 하는 일에서 출발하여, 그중 무엇도 잃지 않겠다고 버텨 봅시다. 두 논리곱 항의 진리 정도를 xxyy로, 그 논리곱의 정도를 T(x,y)T(x, y)로 씁시다. 두 개의 진리값에서 연속체로 넘어가는 과정에서 네 가지 요구가 살아남으며, 이들이 함께 t-노름(t-norm, triangular norm, 삼각 노름의 준말)을 정의합니다 [1]:

  1. 가환성: T(x,y)=T(y,x)T(x, y) = T(y, x). 논리곱 항을 나열하는 순서는 무의미합니다; "깨끗하고 조용하다"는 "조용하고 깨끗하다"입니다.
  2. 결합성: T(x,T(y,z))=T(T(x,y),z)T(x, T(y, z)) = T(T(x, y), z). 사슬은 잘 정의되어야 합니다: 세 항짜리 논리곱은 괄호 묶음마다 하나씩이 아니라 단 하나의 값을 가져야 하므로, 괄호 없이 xyzx \otimes y \otimes z라고 쓸 수 있습니다. (기호 \otimes, 즉 동그라미 친 곱셈 기호는 t-노름의 일반적인 중위 기호로, 2권의 세미링 표기법에서 빌려 왔습니다.)
  3. 단조성: xxx \le x'이면 T(x,y)T(x,y)T(x, y) \le T(x', y). 진리가 더 들어오면 진리가 더 나옵니다; 한 논리곱 항에 대한 확신을 높이는 것이 논리곱에 대한 확신을 낮출 수는 결코 없습니다.
  4. 항등원 1: T(x,1)=xT(x, 1) = x. 확실히 참인 것과 논리곱을 이루어도 아무것도 바뀌지 않습니다.

각 공리는 실질적인 일을 하고 있으며, 유용한 사실 하나는 다섯 번째 가정이 아니라 이미 네 공리의 정리입니다: 0은 소멸시킵니다. 유도는 하나의 연쇄이며 네 공리 중 세 개를 씁니다. x1x \le 1이므로, 첫 번째 인자에 단조성을 적용하면 T(x,0)T(1,0)T(x, 0) \le T(1, 0)이고; 가환성이 인자를 맞바꾸어 T(1,0)=T(0,1)T(1, 0) = T(0, 1)이 되며, 항등원 공리가 그 결과를 계산해 주어 T(0,1)=0T(0, 1) = 0입니다. t-노름의 출력은 [0,1][0,1] 안에 살므로 T(x,0)0T(x, 0) \ge 0이기도 하고, 두 부등식이 조여서 정확히 T(x,0)=0T(x, 0) = 0이 됩니다. 거짓과 논리곱을 이루면 모든 것이 무너지며, 우리는 그것을 가정할 필요조차 없었습니다.

이제 모서리들이 완전히 검증됩니다. 임의의 t-노름을 두 고전적 값으로 제한해 봅시다: 항등원 공리에 의해 T(1,1)=1T(1,1) = 1이고, 방금 유도한 소멸원(annihilator)에 의해 T(0,0)=T(0,1)=T(1,0)=0T(0,0) = T(0,1) = T(1,0) = 0입니다. 모든 t-노름은, 내부에서 무엇을 하든, 모서리에서는 정확히 불(Boolean) AND로 제한됩니다. 덧붙이자면 "삼각 노름"이라는 이름은 퍼지 논리보다 완전히 앞섭니다: 이 개념은 확률적 거리 공간(probabilistic metric space)을 위해 발명되었는데, 그곳에서는 거리가 확률 분포이고 t-노름이 보통의 거리에서 삼각 부등식이 맡는 역할을 맡습니다 [2]. 퍼지 논리가 도착했을 무렵, 확률적 거리 공간 문헌은 그 원래의 개념을 위의 네 공리로 다듬어 놓은 뒤였으므로, 퍼지 논리는 이미 완성된 공리계를 물려받았습니다.

세 가지 근본 t-노름

무한히 많은 함수가 네 공리를 만족하지만, 그중 세 개가 퍼지 논리의 사실상 전부를 짊어지며, 각각은 뚜렷한 성격을 지닙니다. 동반 모듈은 이들을 아홉 줄로 정의합니다(tnorms.py 66–78행):

def t_min(x, y):
# T_G(x, y) = min(x, y) (Gödel)
return np.minimum(x, y)


def t_prod(x, y):
# T_P(x, y) = x · y (product / Goguen)
return x * y


def t_luk(x, y):
# T_Ł(x, y) = max(0, x + y - 1) (Łukasiewicz)
return np.maximum(0.0, x + y - 1.0)

괴델 t-노름 TG(x,y)=min(x,y)T_G(x, y) = \min(x, y)멱등적(idempotent)입니다: TG(x,x)=min(x,x)=xT_G(x, x) = \min(x, x) = x이므로, 어떤 진술을 자기 자신과 논리곱해도 아무것도 바뀌지 않습니다. 사슬 안에서 최솟값은 가장 약한 고리만을 기억하고 다른 모든 수를 지워 버립니다: min(0.9,0.8)=0.8\min(0.9, 0.8) = 0.8이고, 0.9는 결과에 아무런 흔적도 남기지 않습니다. 곱 t-노름 TP(x,y)=xyT_P(x, y) = x \cdot y엄격(strict)합니다: 연속이고, 열린 정사각형 위에서 각 인자에 대해 엄격히 증가하며, 어떤 인자가 0일 때에만 0을 돌려줍니다. 이 노름은 진리 정도를 독립적인 사건들의 확률로 읽고 증거를 곱하므로, 모든 논리곱 항이 흔적을 남깁니다. 우카시에비치 t-노름 TŁ(x,y)=max(0,x+y1)T_{\text{Ł}}(x, y) = \max(0, x + y - 1)멱영(nilpotent)입니다: 연속이고, 아르키메데스적(Archimedean)이며(0보다 크고 1보다 작은 모든 xx에 대해 T(x,x)<xT(x, x) \lt x라는 뜻이어서, 내부의 어떤 점도 멱등적이지 않습니다), 엄격히 양수인 두 입력으로부터 정확히 0을 출력할 수 있습니다; 표준 분류는 세 성질을 모두 함께 요구합니다. 절반짜리 진리 둘이 거짓을 만든다는 것, TŁ(0.5,0.5)=max(0,0.5+0.51)=max(0,0)=0T_{\text{Ł}}(0.5, 0.5) = \max(0, 0.5 + 0.5 - 1) = \max(0, 0) = 0은 버그가 아니라 방어 가능한 것 가운데 가장 엄격한 회계입니다: x+y1x + y - 1x(1y)x - (1 - y)로 다시 쓰면 이 공식은 "xx에서 출발하여 다른 논리곱 항의 의심을 전액 지불하라"고 말합니다.

이 모듈은 공리를 그냥 믿고 넘어가지 않습니다. 조밀한 격자 전체에 걸쳐 각 공리를 평가하고, 최악의 위반이 그저 작은 것이 아니라 정확히 0일 것을 요구합니다. 격자는 k=0,1,,64k = 0, 1, \ldots, 64에 대한 x=k/64x = k/64, 즉 균일한 간격의 65개 점이며(tnorms.py 57–61행), 64라는 선택은 의도적입니다: 각 격자 값은 이진 가수(mantissa, 부동소수점이 실제로 저장하는 이진 숫자열) 비트를 많아야 7개만 필요로 하는 이진 유리수(dyadic rational, 2의 거듭제곱을 분모로 갖는 정수 분수)이므로, 격자 값 세 개의 곱은 많아야 21비트가 필요하고, IEEE(Institute of Electrical and Electronics Engineers, 전기전자기술자협회) 배정밀도 부동소수점은 가수 53비트를 담습니다. 따라서 격자 값들의 모든 곱, 합, 차, 최솟값, 최댓값은 정확한 이진 부동소수점입니다; 반올림은 결코 일어나지 않으며, 등식 검사는 정당합니다. 이것이 중요한 이유는 이 세 연산이 무언가의 근사가 아니라 정확한 닫힌 형식 산술이기 때문입니다: 이 검사는 커밋된 코드와 수학이 동일한 대상임을, 가환성에 대해서는 652=4,22565^2 = 4{,}225개의 쌍 전부에서, 결합성에 대해서는 653=274,62565^3 = 274{,}625개의 삼중항 전부에서, 단조성에 대해서는 전체 65×6565 \times 65 표의 인접 행 차분에서, 그리고 항등원과 소멸원에 대해서는 각각 자유 변수가 하나뿐이어서 65개 점이 전부를 소진하는 65개의 격자 점에서 인증합니다(axiom_deviations, tnorms.py 86–110행). 커밋된 실행은 다음을 보고합니다:

[1] the t-norm axioms, verified numerically (max |violation|;
the grid is dyadic, so every value below is EXACTLY 0.0)
t-norm commut. assoc. monot. T(x,1)=x T(x,0)=0
Godel(min) 0.0 0.0 0.0 0.0 0.0
product 0.0 0.0 0.0 0.0 0.0
Lukasiewicz 0.0 0.0 0.0 0.0 0.0

열다섯 개의 0, 각각이 자기 검사 영역 전체에 대한 정확한 등식입니다. 항등원과 소멸원 열의 65개 점부터 결합성 열의 274,625개 삼중항까지 말입니다. 격자는 연속체가 아니므로 이것이 연필 증명을 대신하지는 않습니다; 대신 연필이 지킬 수 없는 것을 지킵니다. 즉, 이후 장들이 미분해 나갈 구현이 이 정리들이 말하는 바로 그 함수라는 사실 말입니다.

보편 순서, 유도하고 나서 검사하기

세 t-노름은 그저 서로 다르기만 한 것이 아닙니다; 어디에서나 순서 지어져 있으며, 그 순서가 바로 세 친구의 기질 뒤에 있는 수학적 내용입니다. 주장은 모든 x,y[0,1]x, y \in [0,1](기호 \in은 "~의 원소이다"로 읽습니다: 두 정도 모두 단위 구간에서 뽑힙니다)에 대해

TŁ(x,y)    TP(x,y)    TG(x,y),T_{\text{Ł}}(x, y) \;\le\; T_P(x, y) \;\le\; T_G(x, y),

이고, 각 부등식에는 두 줄짜리 증명이 있습니다. 오른쪽 부등식 xymin(x,y)x y \le \min(x, y)의 경우: y1y \le 1이고 x0x \ge 0이므로 xxyy를 곱해도 커질 수 없어 xyx1=xx y \le x \cdot 1 = x이며; 대칭적으로 x1x \le 1이고 y0y \ge 0이므로 xyyx y \le y입니다. xx 이하이면서 yy 이하인 수는 둘 중 작은 쪽 이하이므로 xymin(x,y)x y \le \min(x, y)입니다. 왼쪽 부등식 max(0,x+y1)xy\max(0, x + y - 1) \le x y의 경우, max가 어느 가지를 택하는지로 나눕니다. x+y10x + y - 1 \le 0이면 max는 0이고 xy0x y \ge 0은 항상 성립하므로 부등식이 성립합니다. x+y1>0x + y - 1 \gt 0이면, 음이 아닌 두 인수의 곱을 전개하여 두 후보를 직접 비교합니다: 단위 구간에서 1x01 - x \ge 0이고 1y01 - y \ge 0이므로

(1x)(1y)  =  1xy+xy    0,(1 - x)(1 - y) \;=\; 1 - x - y + x y \;\ge\; 0,

이고, 양변에 x+y1x + y - 1을 더하면 xyx+y1x y \ge x + y - 1로 재배열됩니다. 두 가지가 모두 일치하므로 TŁTPT_{\text{Ł}} \le T_P가 점별로 성립하고, 샌드위치가 완성됩니다.

샌드위치의 위쪽 끝은 이 셋만의 우연이 아닙니다. 최솟값은 존재하는 가장 큰 t-노름이며, 그 증명은 공리 말고는 아무것도 쓰지 않습니다. 임의의 t-노름 TT와 임의의 x,yx, y를 잡습니다. y1y \le 1이므로 단조성이(두 번째 인자에 대한 단조성은 첫 번째 인자에 대한 단조성과 가환성으로부터 따라 나옵니다) T(x,y)T(x,1)T(x, y) \le T(x, 1)을 주고, 항등원 공리가 그 상계를 계산합니다: T(x,y)xT(x, y) \le x. 가환성으로 역할을 맞바꾸면 T(x,y)=T(y,x)T(y,1)=yT(x, y) = T(y, x) \le T(y, 1) = y입니다. 그러므로 모든 t-노름 TT에 대해 T(x,y)min(x,y)T(x, y) \le \min(x, y)이고; 최솟값 자신이 공리를 만족하므로, 그것은 전체 계열의 최댓값입니다 [1]. 같은 조임 논법은 최솟값이 유일한 멱등적 t-노름임을 증명합니다: 모든 xx에 대해 T(x,x)=xT(x, x) = x라면, 임의의 xyx \le y를 잡습니다; 단조성이 T(x,y)T(x,x)=xT(x, y) \ge T(x, x) = x를 주고, 보편 상계가 T(x,y)min(x,y)=xT(x, y) \le \min(x, y) = x를 주며, 둘이 조여서 T(x,y)=x=min(x,y)T(x, y) = x = \min(x, y)가 됩니다(남은 경우 yxy \le x는 가환성 T(x,y)=T(y,x)T(x, y) = T(y, x)로 따라 나옵니다). 다른 둘에 대해서는 멱등 방정식이 모서리 해만을 갖습니다: x2=xx^2 = xx(x1)=0x(x - 1) = 0으로 재배열되므로 x{0,1}x \in \lbrace 0, 1 \rbrace이고; max(0,2x1)=x\max(0, 2x - 1) = x는 가지 x<12x \lt \tfrac12에서는(방정식이 0=x0 = x로 읽히는 곳) x=0x = 0을, 가지 x12x \ge \tfrac12에서는(2x1=x2x - 1 = xx=1x = 1을 주는 곳) x=1x = 1을 강제합니다.

커밋된 실행은 두 사실 모두를 격자 위에서 확인하며, 엄격 성립 개수는 세 t-노름이 단순한 재배열이 아니라 진정으로 서로 다른 함수임을 보여 줍니다(tnorms.py 218–223행과 247–252행):

[2] the fundamental ordering T_Ł ≤ T_P ≤ T_G on all 65² cells
T_Ł ≤ T_P everywhere, strict on 3969/4225 cells (equal on the boundary max(0,x+y-1) = xy)
T_P ≤ T_G everywhere, strict on 3969/4225 cells (equal where the other factor is 1, or one is 0)
min is the LARGEST t-norm; T_Ł is the smallest of these three
(the drastic t-norm lies lower still).
[5] idempotence T(x,x) = x — grid points where it holds:
Godel(min) 65/65 ALL points (min is the only idempotent t-norm)
product 2/65 only the fixed points {0, 1}
Lukasiewicz 2/65 only the fixed points {0, 1}

이 개수들을 대수와 맞대어 읽어 봅시다: 부등식은 4,225개 셀 중 3,969개에서 엄격하고, 증명이 말한 바로 그곳(한 인수가 1인 곳, 한 입력이 0인 곳, 경계 곡선 xy=x+y1x y = x + y - 1 위)에서 정확히 등식으로 무너지며, 멱등성은 최솟값에 대해서는 65개 격자 점 전부에서 성립하지만 다른 둘에 대해서는 정확히 두 개의 모서리 해에서만 성립합니다. 출력의 괄호 단서는 범위 방어막입니다: 우카시에비치는 모든 t-노름이 아니라 이 셋 가운데 가장 작은 것입니다; 한 인자가 1일 때 min(x,y)\min(x, y)를 돌려주고 그 밖의 모든 곳에서 0을 돌려주는 극단 t-노름(drastic t-norm)은 그 아래에 놓이는 합법적인 t-노름입니다(TŁT_{\text{Ł}}가 0.8을 주는 쌍 (0.9,0.9)(0.9, 0.9)를 0으로 보냅니다). 극단 t-노름은 엄격히 양수인 쌍을 0으로 보내는 능력을 우카시에비치와 공유하지만, 불연속이므로 멱영으로 분류되지는 않습니다.

모든 AND는 OR을 빚진다: 드모르간 쌍대

고전 논리는 OR을 처음부터 새로 정의하지 않습니다; 드모르간 법칙이 AND와 NOT으로부터 그것을 만들어 냅니다, ab=¬(¬a¬b)a \vee b = \neg(\neg a \wedge \neg b). 같은 공장이 정도 위에서도 작동합니다. 강한 부정(strong negation) n(x)=1xn(x) = 1 - x(순서를 뒤집는 대합(involution): 두 번 적용하면 xx로 되돌아오고, 더 큰 진리는 더 작은 거짓이 됩니다)를 고정하고, t-노름 TT에 쌍대인 t-코노름(t-conorm)을 다음과 같이 정의합니다:

S(x,y)  =  1T(1x,  1y),S(x, y) \;=\; 1 - T(1 - x,\; 1 - y),

이것이 정확히 dual_conorm이 계산하는 것입니다(tnorms.py 115–120행). t-코노름은 거울에 비친 공리들을 만족합니다: 가환적, 결합적, 단조적이며, 항등원은 0입니다(S(x,0)=xS(x, 0) = x: 거짓과 논리합을 이루어도 아무것도 바뀌지 않습니다). 셋 각각을 대수를 보여 가며 계산해 봅시다. 최솟값의 경우, 1에서 빼는 것이 순서를 뒤집는다는 사실을 씁니다. 1x1-x1y1-y 중 작은 쪽은 xxyy 중 큰 쪽에 대응하므로 1min(1x,1y)=max(x,y)1 - \min(1-x, 1-y) = \max(x, y)입니다. 곱의 경우, 전개합니다:

1(1x)(1y)  =  1(1xy+xy)  =  x+yxy,1 - (1-x)(1-y) \;=\; 1 - (1 - x - y + x y) \;=\; x + y - x y,

이것이 확률적 합(probabilistic sum), 즉 두 독립 사건의 합집합에 대한 포함–배제 공식입니다. 우카시에비치의 경우, 대입한 뒤 안쪽 식을 정리합니다, (1x)+(1y)1=1xy(1-x) + (1-y) - 1 = 1 - x - y:

1max(0,1xy)  =  min(10,  1(1xy))  =  min(1,x+y),1 - \max(0,\, 1 - x - y) \;=\; \min(1 - 0,\; 1 - (1 - x - y)) \;=\; \min(1,\, x + y),

이것이 유계합(bounded sum)입니다(가운데 단계는 1 빼기 max가 1 빼기 값들의 min이라는 항등식을 씁니다). 커밋된 실행은 각 닫힌 형식을 공장 출력과 대조하여, 역시 편차 정확히 0으로 검사합니다(tnorms.py 227–231행):

[3] De Morgan duals: S(x,y) = 1 - T(1-x, 1-y), max |dev| from
the closed forms (exact):
Godel(min) -> max dev = 0.0
product -> prob-sum dev = 0.0
Lukasiewicz -> bounded-sum dev = 0.0
계열t-노름 T(x,y)T(x,y)쌍대 t-코노름 S(x,y)S(x,y)한 줄로 본 성격
괴델min(x,y)\min(x, y)max(x,y)\max(x, y)멱등적: 극단의 논리곱 항/논리합 항만이 중요합니다
곱(고겐)xyx\,yx+yxyx + y - x y엄격: 모든 입력이 흔적을 남깁니다; 독립-증거 독법
우카시에비치max(0,x+y1)\max(0,\, x + y - 1)min(1,x+y)\min(1,\, x + y)멱영: 정도가 더해지다 포화합니다; 절반짜리 진리 둘이 바닥에 닿습니다

이 쌍대성은 세 성격도 한 번에 설명해 줍니다. 어떤 진술의 의심(doubt)을 d=1xd = 1 - x로 정의합시다. 드모르간 항등식에 대입하고 양변을 부정하면 1T(x,y)=S(1x,1y)1 - T(x, y) = S(1 - x, 1 - y)가 됩니다: 논리곱의 의심은 의심들의 t-코노름입니다. 최솟값 아래에서 의심은 max로 결합되므로, 여러분의 단 하나의 최악의 의심만이 중요합니다. 곱 아래에서 의심은 확률적 합으로 결합되어, 각 의심이 기여하되 겹침이 점점 줄어듭니다. 우카시에비치 아래에서 의심은 1에서 포화할 때까지 말 그대로 더해지며, 회계사가 모든 결함을 액면 그대로 청구하는 셈입니다. 호텔 비유의 세 기질은 세 가지 의심 회계 정책입니다.

단위 구간 위의 세 근본 t-노름을 계열마다 한 열씩 보여 주는 세 열짜리 참조 카드입니다. 초록으로 칠해진 왼쪽 열은 괴델 계열입니다: 멱등적이라는 성격 이름표가 붙은 t-노름 min(x, y), 그 드모르간 쌍대 t-코노름 max(x, y), 그리고 x가 y 이하일 때 1을, 그렇지 않으면 y를 돌려주는 잉여 함의입니다. 청록으로 칠해진 가운데 열은 곱 계열입니다: 엄격이라는 성격 이름표가 붙은 t-노름 x 곱하기 y, 그 쌍대인 확률적 합 x 더하기 y 빼기 xy, 그리고 x가 y 이하일 때 1을, 그렇지 않으면 y 나누기 x를 돌려주는 고겐 잉여입니다. 장미색으로 칠해진 오른쪽 열은 우카시에비치 계열입니다: 멱영이라는 성격 이름표가 붙은 t-노름 max(0, x + y − 1), 그 쌍대인 유계합 min(1, x + y), 그리고 잉여 min(1, 1 − x + y)입니다. 열들 아래의 가로 띠는 보편 점별 순서를 서술하는데, 우카시에비치 t-노름이 곱 이하이고 곱이 괴델 최솟값 이하이며, min이 모든 t-노름 가운데 가장 크다는 주석이 달려 있습니다. 맨 아래에는 실행 예제의 인용 사슬, 즉 논문 p3에서 p2를 거쳐 p1으로 이어지는 사슬이 엣지 신뢰도 0.9, 0.8, 0.5와 함께 각 계열로 합성됩니다: 두 링크 사슬은 min에서 0.8, 곱에서 0.72, 우카시에비치에서 0.7을 얻고, 세 링크 논리곱은 0.5, 0.36, 0.2를 얻으며, 각 삼중 값은 벌어지는 세 개의 막대로 그려져 그 격차가 0.1에서 0.3으로 넓어집니다. 하나의 AND, 방어 가능한 세 가지 답: 각 근본 t-노름과 그 쌍대 t-코노름 및 잉여 함의, 그들 사이의 보편 순서, 그리고 세 t-노름 모두로 합성된 2권의 인용 사슬. 저자가 AI의 도움을 받아 직접 제작한 원본 도해.

잉여: 각 논리곱이 빚진 함의

다음은 이 장의 정리이며, 퍼지 AND에서 퍼지 IF–THEN으로 건너가는 다리입니다. 고전 논리에서 전건 긍정(modus ponens)이 건전한 이유는 a(ab)a \wedge (a \to b)bb를 함의하기 때문입니다(여기서 화살표 \to는 이 장 서두의 함수 화살표가 아니라 고전적 함의 결합자이며, "aa이면 bb"로 읽습니다). 등급 매겨진 논리에는 선택한 t-노름에 대해 같은 역할을 하는 함의 I(x,y)I(x, y)("xxyy를 함의한다"가 성립하는 정도)가 필요하며, 표준적인 구성이 있습니다: 잉여(residuum)

IT(x,y)  =  sup{z[0,1]  :  T(x,z)y}.I_T(x, y) \;=\; \sup\,\lbrace\, z \in [0,1] \;:\; T(x, z) \le y \,\rbrace .

쓰기 전에 해독합시다. 기호 sup\sup상한(supremum), 즉 수 집합의 최소 상계입니다; 중괄호 안의 집합은 전제의 정도 xx와 논리곱을 이루었을 때 결론의 정도 yy 안에 머무는 모든 정도 zz를 모읍니다. 그러므로 잉여는 결론을 결코 넘어서지 않으면서 주장할 수 있는 최대한의 함의입니다: "전제 AND 허가"가 결코 yy를 초과하지 않는 가장 큰 허가 zz입니다. 이 구성은 퍼지 논리를 잉여 격자(residuated lattice)로 보는 관점의 심장이며 [3], 모든 좌연속(left-continuous) t-노름에 적용됩니다(TT가 좌연속이라는 것은, 다른 인자를 고정한 채 한 인자가 아래에서 어떤 점으로 기어오를 때 TT의 값들의 극한이 그 점에서의 TT의 값과 같다는 뜻입니다; 모든 연속 t-노름이 여기에 해당합니다). 이 일반성 위에서 그 체계가 완성되었습니다 [4].

세 가지 닫힌 형식을 경우별로 유도해 봅시다. 괴델. xyx \le y인 경우: 모든 zz에 대해 min(x,z)xy\min(x, z) \le x \le y이므로 정의 집합은 [0,1][0,1] 전체이고 상한은 1입니다. x>yx \gt y인 경우: zyz \le y인 후보는 자격이 있습니다. min(x,z)zy\min(x, z) \le z \le y이기 때문입니다; z>yz \gt y인 후보는 자격이 없습니다. 그때는 x>yx \gt yz>yz \gt y가 모두 성립하여 min(x,z)>y\min(x, z) \gt y이기 때문입니다. 집합은 정확히 [0,y][0, y]이고 상한은 yy입니다. 그러므로 xyx \le y이면 IG(x,y)=1I_G(x, y) = 1이고, 아니면 yy입니다. 고겐(곱의 잉여). x=0x = 0인 경우: 0z=0y0 \cdot z = 0 \le y가 항상 성립하므로 상한은 1입니다. x>0x \gt 0인 경우: xzyx z \le y는 정확히 zy/xz \le y / x일 때 성립하고(양수 xx로 양변을 나누면 부등식이 보존됩니다), [0,1][0,1]과 교집합을 취하면 IP(x,y)=min(1,y/x)I_P(x, y) = \min(1,\, y/x)입니다; xyx \le y일 때 비율은 1 이상이고 답은 1입니다. 우카시에비치. 조건 max(0,x+z1)y\max(0, x + z - 1) \le y는 정확히 x+z1yx + z - 1 \le y일 때 성립합니다. max의 다른 가지인 0은 자동으로 yy 이하이기 때문입니다(y0y \ge 0). zz에 대해 풀면 z1x+yz \le 1 - x + y이므로 IŁ(x,y)=min(1,1x+y)I_{\text{Ł}}(x, y) = \min(1,\, 1 - x + y)입니다. 이 마지막 공식은 낯익어 보여야 합니다: 이것은 정확히 이전 장의 3치 논리에 나온 우카시에비치 함의를 구간 전체로 확장한 것이며, 동반 코드는 그 연결을 수치적으로 단언합니다, IŁ(0.5,0.5)=1I_{\text{Ł}}(0.5, 0.5) = 1(tnorms.py 243행). 코드는 세 가지 닫힌 형식을 모두 담고 있습니다(tnorms.py 145–161행):

def i_godel(x, y):
# I_G(x, y) = 1 if x ≤ y else y (Gödel implication)
return np.where(x <= y, 1.0, y)


def i_goguen(x, y):
# I_P(x, y) = 1 if x ≤ y else y / x (Goguen implication)
x_b, y_b = np.broadcast_arrays(np.asarray(x, float), np.asarray(y, float))
out = np.ones_like(x_b)
mask = x_b > y_b # x > y ≥ 0 there, so x > 0: safe divide
np.divide(y_b, x_b, out=out, where=mask)
return out


def i_luk(x, y):
# I_Ł(x, y) = min(1, 1 - x + y) (Łukasiewicz; Ł3 arrow)
return np.minimum(1.0, 1.0 - x + y)

잉여를 여러 선택지 가운데 하나가 아니라 바로 올바른 함의로 만드는 것은 수반(adjunction, 잉여 법칙(residuation law)이라고도 합니다)입니다: [0,1][0,1] 안의 모든 x,y,zx, y, z에 대해,

T(x,z)yzIT(x,y).T(x, z) \le y \quad\Longleftrightarrow\quad z \le I_T(x, y).

겹화살표 \Longleftrightarrow는 "필요충분"으로 읽습니다: 어느 쪽이 성립하든 다른 쪽도 반드시 성립하므로, 이 법칙은 두 방향을 따로 확립하여 증명합니다(논증을 끝맺는 채워진 사각형 ∎은 표준적인 증명 끝 표시입니다). 왼쪽에서 오른쪽으로. T(x,z)yT(x, z) \le y라고 합시다. 그러면 zzIT(x,y)I_T(x, y)를 정의하는 상한의 대상 집합의 원소이고, 상한은 자기 집합의 상계이므로 zIT(x,y)z \le I_T(x, y)입니다. 오른쪽에서 왼쪽으로. zIT(x,y)z \le I_T(x, y)라고 합시다. TT의 두 번째 인자에 대한 단조성이 T(x,z)T(x,IT(x,y))T(x, z) \le T(x, I_T(x, y))를 주므로, T(x,IT(x,y))yT(x, I_T(x, y)) \le y를 보이면 충분합니다. 여기서 좌연속성(left-continuity)이 제 몫을 합니다: 좌연속인 TT는 각 인자에서 상한과 교환됩니다. 이유를 보려면 방금의 정의를 떠올리면 됩니다: 상한은 자기 집합의 원소들을 통해 아래에서 접근할 수 있고, 단조성이 그에 대응하는 TT 값들을 함께 기어오르게 하며, 좌연속성은 그 값들의 극한이 정확히 상한에서의 TT의 값이라고 말하므로, TT를 상한에 적용한 것은 적용된 값들의 상한과 같습니다. 그러므로

T(x,  IT(x,y))  =  T(x,  sup{z:T(x,z)y})  =  sup{T(x,z)  :  T(x,z)y}    y,T\big(x,\; I_T(x, y)\big) \;=\; T\Big(x,\; \sup\lbrace z : T(x,z) \le y\rbrace\Big) \;=\; \sup\big\lbrace\, T(x, z) \;:\; T(x, z) \le y \,\big\rbrace \;\le\; y,

마지막 집합의 모든 원소는 자기 자신의 소속 조건에 의해 yy 이하이고, yy 이하인 수들의 상한은 yy 이하이기 때문입니다. 우리의 세 t-노름은 모두 연속이므로 좌연속이고, 따라서 수반은 세 쌍 모두에 대해 성립합니다. ∎

증명에서 떨어져 나온 부등식 T(x,IT(x,y))yT(x, I_T(x, y)) \le y는 퍼지 전건 긍정의 건전성 증명서이며, 소리 내어 읽을 가치가 있습니다: 전제가 정도 xx로 성립하고 함의가 정도 IT(x,y)I_T(x, y)로 성립한다면, (동일한 t-노름으로) 둘을 논리곱하면 많아야 yy가 나옵니다; 등급 매겨진 추론은 함의가 허가한 것보다 더 많은 것을 결론에 대해 결코 주장할 수 없습니다 [3]. 동반 코드는 수반을 모든 격자 삼중항에 대해 두 불리언 배열 사이의 쌍조건문으로서 전수 검사합니다(tnorms.py 168–179행):

def adjunction_holds(t, i) -> bool:
"""The adjunction (residuation) law T(x, z) ≤ y ⇔ z ≤ I(x, y),
checked EXHAUSTIVELY over all 65³ grid triples (x, z, y). On this dyadic
grid the check is exact even for Goguen: y/x can round, but the nearest
grid point is ≥ 1/4096 away from any non-grid rational a/b it could
round to, vastly more than one float ulp, so no comparison flips."""
x = GRID[:, None, None] # (65, 1, 1)
z = GRID[None, :, None] # (1, 65, 1)
y = GRID[None, None, :] # (1, 1, 65)
lhs = t(x, z) <= y # (65, 65, 65) boolean
rhs = z <= i(x, y) # (65, 1, 65) → broadcasts to match
return bool(np.array_equal(lhs, np.broadcast_to(rhs, lhs.shape)))

독스트링의 용어 하나는 해독이 필요합니다: ulp(unit in the last place)는 어떤 배정밀도 부동소수점과 그다음 표현 가능한 수 사이의 간격으로, 이 크기의 수에서는 대략 101610^{-16}입니다. 따라서 독스트링의 1/40961/4096 여유는 나눗셈 y/xy/x가 끌어들일 수 있는 어떤 반올림도 압도하며, 어떤 비교도 뒤집히지 않습니다.

[4] residua and the adjunction T(x,z) ≤ y ⇔ z ≤ I(x,y),
checked exhaustively on all 65³ = 274,625 grid triples:
Godel I_G = (x≤y ? 1 : y) adjunction holds: True
Goguen I_P = (x≤y ? 1 : y/x) adjunction holds: True
Lukasiewicz I_Ł = min(1, 1-x+y) adjunction holds: True
cross-pairing T_P with I_G breaks it (checked): the residuum
is the UNIQUE arrow adjoint to its own t-norm.

마지막 두 줄은 가져 둘 가치가 있는 음성 대조군을 보고합니다: 이 모듈은 일부러 곱 t-노름을 괴델 화살표와 엇짝지어 놓고 수반이 실패함을 단언합니다(tnorms.py 240–241행). 이 검사에는 이빨이 있으며, 쌍조건문의 어느 절반이 깨지는지 말해 둘 가치가 있습니다. 곱을 더 작은 괴델 화살표와 짝지으면 건전성 부등식은 온전히 남지만 최대성을 잃습니다: TP(x,z)yT_P(x, z) \le y인데도 괴델 화살표가 허가를 거부하는 정도 zz들이 존재합니다. x=0.75x = 0.75, z=0.5z = 0.5, y=0.375y = 0.375를 잡아 봅시다. 셋 다 k/64k/64 꼴의 값이므로 이것은 전수 격자 검사가 실제로 보는 삼중항 가운데 하나입니다: 그러면 TP(0.75,0.5)=0.3750.375T_P(0.75, 0.5) = 0.375 \le 0.375인데도 z=0.5>IG(0.75,0.375)=0.375z = 0.5 \gt I_G(0.75, 0.375) = 0.375여서, 화살표가 곱이 지지하는 허가를 실제보다 낮게 팔아넘깁니다. t-노름을 더 큰 남의 화살표와 짝지으면 건전성 자체가 깨집니다: 최솟값과 고겐 화살표로는 min(0.5,  IP(0.5,0.3))=min(0.5,0.6)=0.5>0.3\min(0.5,\; I_P(0.5, 0.3)) = \min(0.5,\, 0.6) = 0.5 \gt 0.3이 되어, 결론의 정도가 허용하는 것보다 더 많은 것을 주장합니다. 함의는 갈아 끼울 수 있는 부속품이 아닙니다; 각 t-노름은 정확히 하나의 잉여를 빚지며, 오직 그 잉여만이 수반의 두 절반을 동시에 전달합니다.

실행 예제: 하나의 사슬, 방어 가능한 세 가지 신뢰도

2권의 주석 달린 추론기는 이 장에 유산을 남겼습니다. 그 CONFIDENCE 세미링 ([0,1],max,min)([0,1], \max, \min)은 학계 세계의 모든 인용 엣지에 신뢰도를 붙이고, 각 유도 사슬을 =min\otimes = \min으로 합성했으며, 대안 유도들은 =max\oplus = \max로 결합했습니다. 이제 두 연산 모두 이름과 계열을 갖습니다: min은 괴델 t-노름이고, max는 그 드모르간 쌍대이며, 이 쌍은 사실 존재하는 가장 오래된 퍼지 AND와 OR로, 퍼지 집합이 처음 정의될 때 선택된 결합자들입니다 [5]. 2권은 줄곧 퍼지 논리를 하고 있었던 것입니다. 특정한 하나의 t-노름 아래에서, 그 선택을 선택으로 제시한 적도 없이 말입니다. 동반 코드는 그 동일성을 언급에서 검사된 사실로 바꿉니다: 세미링 객체 자체를 임포트하여 CONFIDENCE.times가 4,225개의 격자 쌍 하나하나에서 t_min과 일치함을, 최대 편차 정확히 0.0으로 단언합니다(tnorms.py 254–257행).

데이터도 같은 규율로 도착합니다. 이 모듈은 2권의 디렉터리를 임포트 경로에 넣고 엣지 목록을 annotated.py에서 곧바로 읽어 오며, 숫자를 결코 다시 타이핑하지 않습니다(tnorms.py 51–54행과 185행; 엣지들 자체는 annotated.py 151–155행에 있습니다): cites(p3, p2)는 신뢰도 0.9를, cites(p2, p1)은 0.8을, 직접 엣지 cites(p3, p1)은 0.5를 지닙니다. 2-링크 열은 처음 두 신뢰도, 즉 유도 p3 → p2 → p1의 두 엣지를 논리곱합니다. 3-링크 열은 직접 엣지를 세 번째 링크로 논리곱하여, 인용된 세 주장이 동시에 성립할 신뢰도를 줍니다; 이 이름표는 인용 그래프에서의 경로 길이가 아니라 논리곱된 링크의 수를 세는데, 세 번째 링크는 추가 홉이 아니라 그 자체로 직접 엣지이기 때문입니다. 여기서 공리 2가 조용히 제 몫을 합니다: T(T(c1, c2), c3)는 누구든 쓸 필요가 있는 유일한 괄호 묶음입니다. 결합성이 다른 모든 괄호 묶음이 같은 값을 낸다는 것을 보장하기 때문입니다(chain_table, tnorms.py 188–201행):

c1, c2 = CONF[("p3", "p2")], CONF[("p2", "p1")]
c3 = CONF[("p3", "p1")]
rows = []
for name, t in TNORMS:
two = float(t(c1, c2))
# n-ary composition by associativity: T(T(c1, c2), c3).
three = float(t(t(c1, c2), c3))
rows.append({"tnorm": name, "2hop": two, "3hop": three})

커밋된 실행은 사슬을 세 t-노름 모두로 합성합니다:

[6] the running example: the citation chain of the academic
world under each t-norm (edge confidences read from Volume 2's
annotated.py; its CONFIDENCE semiring ⊗ = min is the Gödel
t-norm, asserted; max dev = 0.0)
links: cites(p3,p2) = 0.9, cites(p2,p1) = 0.8, cites(p3,p1) = 0.5
t-norm 2-link 0.9⊗0.8 3-link 0.9⊗0.8⊗0.5
Godel(min) 0.8000 0.5000
product 0.7200 0.3600
Lukasiewicz 0.7000 0.2000

각 행을 소리 내어 읽어 봅시다. 괴델: min(0.9,0.8)=0.8\min(0.9, 0.8) = 0.8이고, 0.9는 답에 아무 흔적도 남기지 않습니다; 3-링크 값 min(0.8,0.5)=0.5\min(0.8, 0.5) = 0.5는 정확히 사슬에서 가장 약한 엣지입니다. min으로 합성된 사슬은 가장 약한 고리만큼 강하고, 아무리 길어져도 그보다 약해지지 않습니다. 곱: 0.90.8=0.720.9 \cdot 0.8 = 0.72, 그다음 0.720.5=0.360.72 \cdot 0.5 = 0.36입니다. 모든 링크가 흔적을 남기고, 추가 홉 하나하나가 누적값에 1 이하의 수를 곱하므로, 신뢰도는 깊이에 따라 단조롭게 감쇠합니다. 우카시에비치: 0.9+0.81=0.70.9 + 0.8 - 1 = 0.7, 그다음 0.7+0.51=0.20.7 + 0.5 - 1 = 0.2입니다. 의심 독법이 이 산술을 투명하게 만듭니다: 세 링크는 의심 0.10.1, 0.20.2, 0.50.5를 지니고, 의심들의 유계합은 0.80.8이며, 살아남는 진리는 10.8=0.21 - 0.8 = 0.2입니다. 각 링크는 자기 의심을 액면 그대로 전액 청구당하므로, 이 열이 가장 빠르게 떨어집니다.

이제 열을 읽어 봅시다. 각 열 안에서 보편 순서 TŁTPTGT_{\text{Ł}} \le T_P \le T_G가 점별 증명이 요구하는 그대로 다시 나타나고, 양 극단 사이의 격차는 사슬 길이에 따라 넓어집니다: 두 링크에서 0.80.7=0.10.8 - 0.7 = 0.1, 세 링크에서 0.50.2=0.30.5 - 0.2 = 0.3이며, 이 부등식을 모듈이 단언합니다(열별 순서 단언 바로 뒤, tnorms.py 276–278행). 더 긴 사슬은 단지 모든 신뢰도를 낮추기만 하는 것이 아닙니다; 세 회계 정책을 서로 벌려 놓으므로, 추론이 깊어질수록 t-노름의 선택은 덜이 아니라 중요해집니다. 그리고 멱영성은 한 링크 앞까지 다가와 있습니다: 신뢰도 0.5짜리 링크 하나를 더 논리곱하면 우카시에비치 열은 max(0,  0.2+0.51)=max(0,0.3)=0\max(0,\; 0.2 + 0.5 - 1) = \max(0, -0.3) = 0에 도달합니다. 저마다 믿을 만한 네 링크로부터 제조된 명확한 거짓입니다. 반면 곱 열은 여전히 0.180.18을, min은 여전히 0.50.5를 보고할 것입니다.

어느 행이 옳을까요? 그것은 수학적 질문이 아니며, 이 장의 요점 전체가 그것이 수학적 질문일 수 없다는 데 있습니다: 세 행 모두 등급 매겨진 논리곱이 가져야 할 모든 공리를 만족합니다. 그것은 여러분의 증거가 어떻게 실패하는가에 관한 모델링 질문입니다. 링크들이 함께 서고 함께 무너져서 사슬이 가장 불안한 출처만큼만 못 미덥다면, min의 가장-약한-고리 회계가 충실합니다. 링크들이 독립적으로 실패하여 각 홉이 서로 무관한 오류 가능성이라면, 곱의 곱셈적 감쇠가 충실합니다. 모든 링크가 환불 불가능한 관용의 예산을 소비하여, 누적된 의심이 충분해지면 결론이 아예 무효가 되어야 한다면, 우카시에비치가 충실합니다. 같은 사실, 방어 가능한 세 가지 신뢰도. 같은 유도에 대해 다른 시스템이 0.36이나 0.2를 보고하는 곳에서 0.5를 보고하는 시스템은 틀린 것이 아닙니다; 그것은 다른 합성 의미론을 선언한 것이며, 독자가 감사해야 할 것은 숫자가 아니라 그 선언입니다.

메뉴에서 누가 무엇을 주문하는가

이 권의 나머지는 정확히 이 메뉴에서 주문하며, 세 가지 성격을 알고 있으면 각 시스템이 어떻게 행동할지 미리 알 수 있습니다. 논리 텐서 네트워크는 자신의 실수 논리(Real Logic)를 곱 계열 위에 짓습니다: 논리곱은 곱 t-노름, 논리합은 그 확률적 합 쌍대인데, 모든 논리곱 항이 0이 아닌 도함수를 유지하기 때문에 선택되었고, 값들을 정확한 끝점 0과 1로부터 아주 작은 오프셋 ε\varepsilon(엡실론, 클램프 폭; 여기서는 ε=104\varepsilon = 10^{-4}이며, 동반 코드의 ltn.py 79행이 이를 클램프들과 함께 fuzzy_grad.py에서 임포트합니다)만큼 떼어 놓는 작은 클램프로 안정화됩니다. 신경 정리 증명은 괴델 계열로 합성합니다: 증명 경로는 단계 점수들의 최솟값으로 채점되고 목표는 대안 증명들에 대한 최댓값을 취합니다(ntp_mini.py 20–21행). 가장 약한 고리와 최선의 증인이라는 쌍이며, 증명이란 그 가장 불안한 추론보다 더 믿음직해서는 안 되기 때문에 선택되었습니다. 그리고 질의별 학습 없이 복잡 논리 질의 응답(complex logical query answering, CLQA)을 다루는 장인 퍼지·무학습 CLQA의 무학습 질의 응답기들은 둘 다를 상에 올립니다: 원조 연속 질의 분해(continuous query decomposition, CQD) 레시피는 논리곱을 괴델 또는 곱 t-노름으로 평가하고, 동반 코드의 cqd.py는 곱을 끝에서 끝까지 실행합니다(그 독스트링과 연산자 표, cqd.py 11행과 155행). 이 선택들 가운데 어느 것도 우리가 그들을 만날 때 처음부터 정당화할 필요가 없을 것입니다; 각각은 이 장의 표의 한 행이고, 그 순서상 위치, 쌍대, 잉여, 기질이 이미 확립되어 있습니다.

한 시스템이 더 그 상에 앉게 되는데, 그것은 메뉴 자체를 통째로 거부합니다. 모든 t-노름은 진리함수적(truth-functional)입니다: ABA \wedge B의 정도는 AABB의 정도 그것만으로 계산되며, 다른 어떤 정보도 참조하지 않습니다. 확률론은 그 전제를 거부하며, 그 거부는 우리의 세 함수에 관한 정리로 진술될 수 있습니다. 두 사건의 확률을 x=P(A)x = P(A)y=P(B)y = P(B)라 합시다. 논리곱의 확률 P(AB)P(A \wedge B)는 쌍 (x,y)(x, y)의 함수가 아닙니다; 두 사건이 어떻게 겹치는지에 의존합니다. 그러나 임의적이지도 않습니다. ABA \wedge B의 모든 결과는 AA 안에 있으므로 P(AB)xP(A \wedge B) \le x이고, 대칭적으로 P(AB)yP(A \wedge B) \le y이므로 P(AB)min(x,y)P(A \wedge B) \le \min(x, y)입니다. 다른 방향으로는, 포함–배제가 P(AB)=x+yP(AB)P(A \vee B) = x + y - P(A \wedge B)를 주고, 확률은 많아야 1이므로 x+yP(AB)1x + y - P(A \wedge B) \le 1이며, 이는 P(AB)x+y1P(A \wedge B) \ge x + y - 1로 재배열됩니다; P(AB)0P(A \wedge B) \ge 0과 결합하면 P(AB)max(0,x+y1)P(A \wedge B) \ge \max(0,\, x + y - 1)입니다. 두 한계를 조립하면:

TŁ(x,y)  =  max(0,x+y1)    P(AB)    min(x,y)  =  TG(x,y).T_{\text{Ł}}(x, y) \;=\; \max(0,\, x + y - 1) \;\le\; P(A \wedge B) \;\le\; \min(x, y) \;=\; T_G(x, y).

논리곱의 참 확률은 그 양 끝점이 정확히 우리 세 t-노름 가운데 가장 작은 것과 가장 큰 것인 구간 안에 살며, 곱 TP(x,y)=xyT_P(x, y) = xy는 독립성이 골라내는 단 하나의 내부 점입니다 [1]. 퍼지 논리에 대한 평결로 읽어 봅시다: 진리함수적 논리곱은 모든 진술 쌍에 대해 그 구간의 한 점에 단 한 번, 영원히 결부되며, 서로 다르게 겹치는 사건들에 대해 어떤 단일한 선택도 옳을 수 없습니다. 이 권의 2부는 분포 의미론에서 시작하여 다른 길을 갑니다: 결합 분포 자체를 표현하고 각각의 특정한 논리곱이 구간의 어디에 떨어지는지를 계산하는 것입니다. 그 대가로 추론은 더 이상 두 인자짜리 공식이 아니라 세계들에 대한 합이 됩니다.

해결되지 않은 부분

네 공리는 핀이 아니라 울타리입니다. 울타리 안에는 무한히 많은 t-노름이 삽니다: 매개변수 계열 전체가 세 근본 t-노름 사이를 연속적으로 보간하는데, 매개변수 하나를 범위의 한쪽 끝에서 다른 쪽 끝으로 쓸어 가면 최솟값에서 곱을 거쳐 우카시에비치까지 지나가며, 그 사이의 모든 함수는 저마다 자신의 쌍대와 자신의 잉여를 갖춘 완전히 합법적인 t-노름입니다 [1]. 논리 안의 어떤 것도 그 다이얼 위의 한 점을 선택해 주지 않습니다. 모든 선택이 공리를 만족하고, 모서리에서 고전적 AND로 제한되며, 자신의 수반을 통해 퍼지 전건 긍정을 검증하므로, 연역 기계는 어느 논리곱이 인지에 대해 침묵합니다. 선택 기준은 모두 논리 바깥에 삽니다: 여러분의 증거가 실제로 합성되는 방식과의 적합성(사슬 표의 모델링 질문), 대수적 편의(멱등성, 또는 정확한 0에 도달하는 능력), 또는 이 권의 무대에서는 고전 문헌이 저울질할 필요조차 없었던 기준입니다. 논리식의 진리 정도가 훈련 목표가 되는 순간, TT에 관해 중요한 것은 그 값이 아니라 그 도함수입니다. 도함수는 경사 기반 학습기가 느낄 수 있는 유일한 부분이기 때문입니다. 여기서 인증된 세 성격은 세 가지 서로 다른 훈련 신호가 됩니다: min은 그래디언트를 가장 약한 논리곱 항 하나에만 보내고, 곱의 논리곱 항별 그래디언트는 다른 모든 논리곱 항들의 곱이어서 새 항이 더해질 때마다 줄어들며, 우카시에비치 노름은 내부 영역 x+y<1x + y \lt 1에서 0으로 일정하여 그곳에서 그래디언트가 항등적으로 소실됩니다(꺾임선 x+y=1x + y = 1 위에서 이 함수는 미분 불가능하며 부분경사(subgradient)만 존재합니다). 이들 중 어느 것이 장점이고 어느 것이 병리인지는 이 장의 공리로부터 판정할 수 없으며, 정확히 그것이 다음 장이 측정하는 질문입니다.

왜 중요한가

이 장은 설계의 수수께끼를 어휘로 바꿉니다. 이제부터 어떤 뉴로-심볼릭 시스템이 "우리는 논리곱을 완화한다"고 말할 때, 여러분은 그 행동을 실제로 결정하는 세 가지 질문을 물을 수 있습니다: 어떤 t-노름인가(따라서 보편 순서에서 어디에 앉는가, 증명 깊이에 따라 신뢰도가 어떻게 감쇠하는가, 명확한 거짓에 도달할 수 있는가), 어떤 쌍대인가(대안 유도들이 어떻게 집계되는가), 그리고 어떤 잉여인가(그 함의가 자신의 논리곱에 수반 관계로 붙어 있는가, 퍼지 전건 긍정의 건전성이 바로 그 위에 놓입니다). 앞으로의 시스템들은 마법이기를 멈추고 표의 행이 되기 시작합니다: 논리 텐서 네트워크는 클램프를 단 곱 행이고, 미분 가능 증명기는 괴델 행이며, CQD는 두 행짜리 메뉴이고, 각각은 자기 행의 기질을 증명 가능하게 물려받습니다.

이 장은 또한 두 기둥을 소급하여 벼립니다. 기호 쪽에서는, 2권의 CONFIDENCE 세미링이 이제 한 번도 논증된 적 없는 t-노름 결부였음이 드러납니다: 그 =min\otimes = \min은 셋 가운데 하나의 방어 가능한 정책이었고, 사슬 표는 그 논증되지 않은 선택에서 정확히 무엇이 걸려 있었는지를 보여 줍니다. 5권이 중심에 놓을 신뢰 쪽에서는, 보고된 신뢰도란 선언된 합성 정책에 상대적으로만 의미가 있다는 것이 교훈입니다. 동일한 세 사실이 0.5, 0.36, 0.2라는 답들을 정직하게 지지합니다; 그러므로 등급 매겨진 추론기에 대한 감사는 "숫자가 옳은가"가 아니라 "이 숫자는 대체 어느 t-노름 아래에서 주장이기라도 한가"를 묻는 데서 시작해야 합니다.

핵심 용어

  • t-노름(t-norm, triangular norm, 삼각 노름): 가환적이고 결합적이며 각 인자에 대해 단조이고 1을 항등원으로 갖는 함수 T:[0,1]2[0,1]T : [0,1]^2 \to [0,1]; 등급 매겨진 논리곱의 공리적 정의이며, T(x,0)=0T(x, 0) = 0은 공리가 아니라 정리입니다.
  • 괴델 t-노름(Gödel t-norm): min(x,y)\min(x, y); 멱등적이어서 가장-약한-고리 사슬 회계를 낳고; 존재하는 가장 큰 t-노름이자 유일한 멱등적 t-노름입니다.
  • 곱 t-노름(product t-norm): xyx\,y; 엄격하고(입력이 0일 때에만 0), 모든 논리곱 항이 곱셈적 흔적을 남기는 독립-증거 독법입니다.
  • 우카시에비치 t-노름(Łukasiewicz t-norm): max(0,x+y1)\max(0,\, x + y - 1); 멱영이고(연속이며 아르키메데스적이고, 엄격히 양수인 입력들로부터 정확한 0에 도달할 수 있습니다); 동치로 말하면, 의심 1x1 - x가 포화할 때까지 액면 그대로 더해집니다.
  • 보편 순서(universal ordering): 점별로 TŁTPTGT_{\text{Ł}} \le T_P \le T_G이며, 모든 t-노름 TT에 대해 T(x,y)min(x,y)T(x,y) \le \min(x,y); 4,225개 격자 셀 중 3,969개에서 엄격함이 검증되었습니다.
  • t-코노름(t-conorm): 드모르간 쌍대 S(x,y)=1T(1x,1y)S(x, y) = 1 - T(1-x, 1-y), 주어진 AND와 짝을 이루는 OR: 각각 최댓값, 확률적 합 x+yxyx + y - xy, 유계합 min(1,x+y)\min(1, x+y)입니다.
  • 강한 부정(strong negation): 쌍대성에 동력을 공급하는, 순서를 뒤집는 대합 n(x)=1xn(x) = 1 - x; 논리곱의 의심은 의심들의 t-코노름입니다.
  • 잉여(residuum): IT(x,y)=sup{z:T(x,z)y}I_T(x, y) = \sup\lbrace z : T(x, z) \le y\rbrace, 결론을 결코 넘어서지 않는 가장 큰 함의의 정도; 닫힌 형식은 IGI_G, IPI_P(고겐), IŁI_{\text{Ł}}입니다.
  • 수반(adjunction, 잉여 법칙(residuation law)): T(x,z)y    zIT(x,y)T(x, z) \le y \iff z \le I_T(x, y), 모든 좌연속 t-노름에 대해 증명되고 여기서는 274,625개의 격자 삼중항 전부에서 검사되었습니다; 오른쪽에서 왼쪽 절반이 퍼지 전건 긍정의 건전성이고 왼쪽에서 오른쪽 절반이 잉여의 최대성인 쌍조건문이며, 계열을 엇짝지으면 적어도 한쪽 절반을 잃습니다.
  • 진리함수성(truth-functionality): 결합자의 출력 정도가 오직 입력 정도에만 의존한다는 성질; 모든 t-노름은 이를 갖고, 확률은 갖지 않으며, 참 P(AB)P(A \wedge B)는 구간 [TŁ(x,y),TG(x,y)][T_{\text{Ł}}(x,y),\, T_G(x,y)]에 걸쳐 있습니다.
  • 이진 격자(dyadic grid): 65개의 점 k/64k/64; 격자 값들의 모든 합, 차, 세 값의 곱, 최솟값, 최댓값이 정확한 이진 부동소수점이므로, 동반 코드의 단언들이 편차 정확히 0.0을 요구할 수 있습니다.

이 장이 이어지는 곳

이 장은 세 t-노름을 논리학자의 방식으로 심판했습니다: 공리, 쌍대, 잉여, 그리고 각각이 증거의 사슬이 얼마의 값어치라고 말하는지로 말입니다. 그 채점표에서 셋 모두 전 과목을 통과했습니다. 다음 장 퍼지에서 신경망으로는 경사 기반 학습기가 지각할 수 있는 유일한 성질인 도함수로 이들을 다시 심판하며, 동점은 산산이 깨집니다. 괴델 최솟값은 훈련 신호 전체를 단 하나의 논리곱 항으로 보내고 나머지를 굶기며; 곱의 논리곱 항별 그래디언트는 논리곱 항의 수에 따라 기하급수적으로 감쇠하고; 우카시에비치 노름은 모든 그래디언트가 정확히 0인 죽은 구간을 소유하며, 그 구간은 논리곱이 커질수록 정육면체의 거의 전부를 집어삼킵니다. 동반 모듈 fuzzy_grad.py는 세 병리 모두를 같은 학계 세계에서 측정한 다음, 두 가지 표준 수리책인 부드럽게 만든 최솟값과 끝점 클램프를 살펴보며, 그 대가를 다음 장은 이 장이 확립한 화폐로 밝힙니다: 각 수리책이 어느 공리를 깨는지 말입니다.


동반 코드: examples/integration/tnorms.py는 이 장 전체를 구현합니다: 세 t-노름(66–78행), 정확성 논증을 갖춘 공리 격자(57–110행), 드모르간 쌍대(115–138행), 잉여와 엇짝짓기 음성 대조군을 갖춘 전수 수반 검사(145–179행과 233–241행), 멱등성 조사(245–252행), 그리고 2권과의 악수와 인용 사슬 표(254–278행)이며, 모든 주장은 run() 안의 단언으로 지켜집니다. 여기 인용된 모든 숫자를 재현하려면 python3 examples/integration/tnorms.py를 실행하십시오; 실행은 다음으로 끝납니다: SUMMARY tnorms: axioms_exact=3/3 adjunction=3/3 idem_min=65/65 chain2=(0.80, 0.72, 0.70) chain3=(0.50, 0.36, 0.20).