docs(10_Wiki): Topic_Business/General/Graphic/Programming을 Topics/ 하위로 이동
최상위 10_Wiki/Topic_*였던 4개 카테고리 폴더를 10_Wiki/Topics/Topic_* 로 재배치. 콘텐츠 변경 없음(순수 폴더 이동) — Topics/ 하위 나머지 폴더는 이미 지난 커밋에서 전부 정리된 상태(잔존 항목은 에이전트 운영 상태 및 사용자가 보존을 요청한 업데이트0615/무제 3.canvas 뿐).
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
---
|
||||
id: wiki-2026-0508-probability-and-logic-fusion
|
||||
title: Probability and Logic Fusion
|
||||
category: 10_Wiki/Topics
|
||||
status: verified
|
||||
canonical_id: self
|
||||
aliases: [Probabilistic Logic, StaR-AI, Statistical Relational Learning, Neuro-Symbolic AI]
|
||||
duplicate_of: none
|
||||
source_trust_level: A
|
||||
confidence_score: 0.85
|
||||
verification_status: applied
|
||||
tags: [neuro-symbolic, probabilistic-programming, knowledge-representation, reasoning]
|
||||
raw_sources: []
|
||||
last_reinforced: 2026-05-10
|
||||
github_commit: pending
|
||||
tech_stack:
|
||||
language: Python
|
||||
framework: Pyro / PyMC / DeepProbLog / Scallop
|
||||
---
|
||||
|
||||
# Probability and Logic Fusion
|
||||
|
||||
## 매 한 줄
|
||||
> **"매 unify symbolic logic (rules, KGs) with probability (uncertainty) — and now neural networks"**. 1990s-2010s 의 Statistical Relational Learning (SRL) 의 lineage: PRMs, MLNs, ProbLog, Bayesian networks + FOL. 2020s 에 neuro-symbolic 으로 reborn (DeepProbLog, Scallop, Logical Neural Networks, Differentiable Theorem Provers). 2026 currently driving verifiable LLM reasoning.
|
||||
|
||||
## 매 핵심
|
||||
|
||||
### 매 problem statement
|
||||
- **Logic alone**: brittle to noise, uncertainty, exceptions.
|
||||
- **Probability alone**: no compositional / relational structure.
|
||||
- **Neural alone**: opaque, no symbolic guarantees.
|
||||
- **Goal**: compositional + uncertain + learnable.
|
||||
|
||||
### 매 historical landmarks
|
||||
- **Bayesian networks** (Pearl 1988) — DAG of conditional dists.
|
||||
- **PRMs** (Friedman et al 1999) — BNs over relational schemas.
|
||||
- **Markov Logic Networks** (Richardson & Domingos 2006) — FOL formulas with weights.
|
||||
- **ProbLog** (De Raedt et al 2007) — probabilistic Prolog.
|
||||
- **PSL** (Bach et al 2017) — soft logic with hinge-loss inference.
|
||||
- **DeepProbLog** (Manhaeve et al 2018) — neural predicates inside ProbLog.
|
||||
- **Scallop** (Li et al 2023) — differentiable Datalog for ML.
|
||||
- **Logical Neural Networks** (Riegel et al 2020 IBM).
|
||||
|
||||
### 매 representations
|
||||
- **MLN**: weighted FOL formulas → ground Markov network.
|
||||
- P(world) ∝ exp(Σ w_i × #true_groundings(F_i)).
|
||||
- **ProbLog**: Prolog clauses with probabilities `0.7::burglary.`
|
||||
- **PSL**: soft truth values in [0,1], conjunction = Lukasiewicz t-norm.
|
||||
- **DeepProbLog**: `nn(mnist_net, [X], Y, [0..9]) :: digit(X, Y).`
|
||||
|
||||
### 매 modern (2024-2026) directions
|
||||
- **LLM + verifier** (Lean, Coq, Z3): generate → check → repair. AlphaProof, AlphaGeometry style.
|
||||
- **Differentiable logic**: gradients through soft-logic for end-to-end training.
|
||||
- **Neuro-symbolic agents**: LLM generates programs, symbolic engine executes.
|
||||
|
||||
## 💻 패턴
|
||||
|
||||
### Markov Logic Network (PRACMLN-style)
|
||||
```python
|
||||
# Formulas with weights
|
||||
formulas = [
|
||||
(1.5, "Smokes(x) => Cancer(x)"),
|
||||
(1.1, "Friends(x,y) ^ Smokes(x) => Smokes(y)"),
|
||||
]
|
||||
# P(world) ∝ exp(Σ w * count_true_groundings)
|
||||
# Inference: MC-SAT or Gibbs sampling over ground atoms.
|
||||
```
|
||||
|
||||
### ProbLog example
|
||||
```prolog
|
||||
0.1 :: burglary.
|
||||
0.2 :: earthquake.
|
||||
alarm :- burglary.
|
||||
alarm :- earthquake.
|
||||
0.7 :: john_calls :- alarm.
|
||||
|
||||
query(burglary).
|
||||
evidence(john_calls, true).
|
||||
```
|
||||
|
||||
### DeepProbLog (neural predicate)
|
||||
```python
|
||||
# Recognize MNIST digits and add them
|
||||
network = MNIST_Net()
|
||||
nn(mnist_net, [X], Y, [0,1,2,3,4,5,6,7,8,9]) :: digit(X, Y).
|
||||
addition(X, Y, Z) :- digit(X, A), digit(Y, B), Z is A + B.
|
||||
|
||||
# Train: end-to-end gradient flows through neural digit predicate
|
||||
# from supervision on (image1, image2, sum_label).
|
||||
```
|
||||
|
||||
### Pyro probabilistic program (Bayesian + structure)
|
||||
```python
|
||||
import pyro, pyro.distributions as dist, torch
|
||||
|
||||
def model(data):
|
||||
# Latent disease probability
|
||||
p_disease = pyro.sample("p_disease", dist.Beta(1., 9.))
|
||||
for i, (test, outcome) in enumerate(data):
|
||||
d = pyro.sample(f"d_{i}", dist.Bernoulli(p_disease))
|
||||
# logical rule: P(test+ | disease) = 0.95, P(test+ | not disease) = 0.1
|
||||
p_test = 0.95 * d + 0.1 * (1 - d)
|
||||
pyro.sample(f"t_{i}", dist.Bernoulli(p_test), obs=test)
|
||||
```
|
||||
|
||||
### LLM + Z3 verifier (2024-2026 pattern)
|
||||
```python
|
||||
from z3 import Solver, Int, And, sat
|
||||
def llm_solve_with_check(problem):
|
||||
code = claude.complete(f"Translate to Z3 Python: {problem}")
|
||||
s = Solver()
|
||||
exec(code) # populates s
|
||||
if s.check() == sat:
|
||||
return s.model()
|
||||
else:
|
||||
return claude.complete(f"Z3 returned UNSAT. Repair: {code}")
|
||||
```
|
||||
|
||||
### PSL soft-logic rule
|
||||
```python
|
||||
# Lukasiewicz t-norm: A ^ B = max(0, A + B - 1); A => B = min(1, 1 - A + B).
|
||||
# Rule: similar(p,q) ^ likes(p, x) => likes(q, x) [weight 5]
|
||||
# Inference: minimize Σ w_i * max(0, body - head) over continuous truth values.
|
||||
```
|
||||
|
||||
### Scallop differentiable Datalog
|
||||
```python
|
||||
import scallopy
|
||||
ctx = scallopy.ScallopContext(provenance="difftopkproofs")
|
||||
ctx.add_relation("digit", (int, float), input_mapping=[(0,), (1,), ...])
|
||||
ctx.add_rule("sum(a + b) = digit(_, a), digit(_, b)")
|
||||
# Plug into PyTorch; gradients flow through proof structure.
|
||||
```
|
||||
|
||||
## 매 결정 기준
|
||||
| 상황 | Approach |
|
||||
|---|---|
|
||||
| Discrete random variables, known structure | Bayesian network (pgmpy) |
|
||||
| First-order rules + data | MLN / ProbLog |
|
||||
| Soft constraints, large scale | PSL |
|
||||
| Neural perception + symbolic reasoning | DeepProbLog / Scallop |
|
||||
| LLM reasoning correctness | LLM + Z3/Lean verifier |
|
||||
| Complex generative model | Pyro / PyMC |
|
||||
|
||||
**기본값**: For neuro-symbolic 2026 — Scallop 또는 LLM+verifier; for pure SRL, ProbLog.
|
||||
|
||||
## 🔗 Graph
|
||||
- 부모: [[Knowledge-Representation]] · [[Logic]]
|
||||
- 변형: [[Bayesian-Network]]
|
||||
- 응용: [[Neural-Symbolic-Integration|Neuro-Symbolic-AI]] · [[Knowledge-Graphs]]
|
||||
|
||||
## 🤖 LLM 활용
|
||||
**언제**: domain with both structured rules and uncertainty, verifiable LLM reasoning, knowledge-graph completion w/ noise.
|
||||
**언제 X**: pure pattern recognition (use NN), purely deterministic logic (use Prolog/Datalog).
|
||||
|
||||
## ❌ 안티패턴
|
||||
- **MLN at scale**: grounding explodes; use lifted inference or PSL.
|
||||
- **Probabilities as confidence scores**: must reflect actual frequencies / coherent priors.
|
||||
- **Mixing neural and symbolic without gradient story**: end-to-end requires differentiable bridge.
|
||||
- **Ignoring computational cost**: many SRL inferences are #P-hard.
|
||||
|
||||
## 🧪 검증 / 중복
|
||||
- Verified (Pearl 1988, Richardson & Domingos 2006 ML, De Raedt et al 2007 IJCAI, DeepProbLog NeurIPS 2018, Scallop ICLR 2023).
|
||||
- 신뢰도 A.
|
||||
|
||||
## 🕓 Changelog
|
||||
| 날짜 | 변경 |
|
||||
|---|---|
|
||||
| 2026-05-08 | Phase 1 |
|
||||
| 2026-05-10 | Manual cleanup — full SRL → neuro-symbolic timeline + 2026 LLM+verifier |
|
||||
Reference in New Issue
Block a user