--- id: wiki-2026-0508-neural-symbolic-integration title: Neural-Symbolic Integration category: 10_Wiki/Topics status: verified canonical_id: self aliases: [Neuro-Symbolic AI, NeSy, Hybrid AI, Symbolic-Neural Integration] duplicate_of: none source_trust_level: A confidence_score: 0.92 verification_status: applied tags: [neuro-symbolic, hybrid-ai, knowledge-graph, reasoning, alphageometry, scallop, deepproblog] raw_sources: [] last_reinforced: 2026-05-10 github_commit: pending tech_stack: { language: python, framework: pytorch-scallop-deepproblog } --- ## 한 줄 Neural-Symbolic Integration(NeSy)은 신경망의 패턴 인식·표현 학습 능력과 기호 시스템의 추론·해석성·구조화 지식을 결합해, 데이터 효율과 일반화·검증성을 동시에 추구하는 하이브리드 AI 방향이다. ## 핵심 ### Henry Kautz 분류 (2020) - **Type 1 — symbolic Neuro symbolic**: 입력/출력만 기호, 내부는 NN (대부분의 NLP). - **Type 2 — Symbolic[Neuro]**: 기호 시스템이 NN을 호출 (LLM tool use). - **Type 3 — Neuro;Symbolic**: 모듈 분리, 파이프라인. - **Type 4 — Neuro:Symbolic→Neuro**: 기호 지식을 NN에 주입 (KG embedding). - **Type 5 — Neuro_{Symbolic}**: 기호 제약을 NN 손실/구조에 통합 (DeepProbLog). - **Type 6 — Neuro[Symbolic]**: NN 내부에 진정한 기호 추론 모듈 — 미해결 목표. ### 대표 시스템 - **AlphaGeometry / AlphaGeometry 2** (DeepMind 2024–25): LLM이 보조선 제안 + symbolic deduction engine이 증명. IMO 금메달급. - **AlphaProof**: Lean + RL + LLM 결합 정리 증명. - **DeepProbLog**: 확률 논리 프로그램에 NN 술어 통합. - **Scallop**: differentiable Datalog, PyTorch 통합. - **Logic Tensor Networks (LTN)**: 1차 논리식을 fuzzy tensor 손실로. - **NS-CL** (MIT 2019): 시각 질의응답 via symbolic program execution. - **Knowledge Graph + LLM**: GraphRAG, retrieval-augmented reasoning. ### 강점 - Few-shot / zero-shot 추론. - 검증 가능 (proof, constraint). - 도메인 지식(KG, ontology) 활용. - Compositional generalization. ### 한계 - 통합 인터페이스 설계 어려움. - Symbolic 추론은 brittle, NN은 noisy → 경계 처리. - 학습 신호 전파 (미분 불가능 기호 연산). ### 응용 - 수학 정리 증명 (AlphaProof, AlphaGeometry). - 의학 진단 (KG + clinical NLP). - 로보틱스 task planning (LLM + PDDL). - 법률·규정 추론 (rule + NLP). ## 💻 패턴 ```python # 1. LLM + Symbolic solver — Sympy 호출 import sympy as sp def solve_with_llm(question_nl: str, llm) -> str: eq_str = llm.translate_to_sympy(question_nl) # NL → "x**2 - 4" x = sp.Symbol("x") roots = sp.solve(sp.sympify(eq_str), x) return llm.format_answer(roots) ``` ```python # 2. DeepProbLog — 확률 논리 + NN 술어 """ nn(mnist_net, [X], Y, [0,1,...,9]) :: digit(X, Y). addition(X, Y, Z) :- digit(X, A), digit(Y, B), Z is A+B. """ # X, Y는 MNIST 이미지, Z는 합. NN이 digit 술어를 학습. ``` ```python # 3. Scallop — differentiable Datalog import scallopy ctx = scallopy.ScallopContext(provenance="diffminmaxprob") ctx.add_relation("digit_1", (int, int)) # (img_id, value) ctx.add_relation("digit_2", (int, int)) ctx.add_rule("sum(a+b) = digit_1(a), digit_2(b)") ctx.run() ``` ```python # 4. Logic Tensor Network — 제약을 손실로 # ∀x: dog(x) → animal(x) 를 fuzzy 만족도로 변환 import torch def implies(p, q): return torch.clamp(1 - p + q, 0, 1) loss_logic = -torch.log(implies(dog_pred, animal_pred)).mean() total_loss = ce_loss + lambda_logic * loss_logic ``` ```python # 5. Knowledge Graph + Embedding — TransE # h + r ≈ t 가 성립하도록 entity/relation embedding 학습 score = -torch.norm(emb_h + emb_r - emb_t, p=2, dim=-1) ``` ```python # 6. GraphRAG — KG 검색 + LLM 답변 def graph_rag(query, kg, llm, embedder): nodes = kg.search(embedder.encode(query), top_k=10) subgraph = kg.expand_neighborhood(nodes, hops=2) context = serialize_graph(subgraph) return llm.complete(f"Context:\n{context}\n\nQ: {query}\nA:") ``` ```python # 7. LLM tool use — calculator/SQL tools = [{ "name": "calculator", "description": "evaluate math", "input_schema": {"type":"object","properties":{"expr":{"type":"string"}}} }] # Claude/OpenAI tool calling으로 symbolic 백엔드 호출 ``` ```python # 8. Constraint satisfaction in NN — projection layer def project_to_constraints(logits, constraints): # 분류 결과를 ontology 제약 만족 영역으로 투영 return solver.project(logits, constraints) ``` ```python # 9. Program induction — LLM이 DSL 프로그램 생성 def neuro_symbolic_qa(image, question, llm): program = llm.generate_program(question) # filter(color=red), count(...) return execute_dsl(program, image) # symbolic execution ``` ```python # 10. AlphaGeometry-style — 보조선 제안 + DDAR def prove_geom(problem, llm, ddar): state = parse(problem) while not ddar.solve(state): new_construction = llm.suggest_aux_line(state) state = state.add(new_construction) return ddar.proof(state) ``` ## 결정 기준 | 문제 | 추천 | |---|---| | 정확한 수치 계산 필요 | LLM + sympy/계산기 (Type 2) | | 도메인 KG 존재 | GraphRAG / TransE 임베딩 (Type 4) | | 논리 제약 강제 필요 | LTN / Semantic Loss (Type 5) | | 확률 + 논리 결합 | DeepProbLog / Scallop | | 시각 추론 (CLEVR류) | NS-CL, program induction | | 정리 증명 | AlphaProof / AlphaGeometry / Lean+RL | | 일반 작업 (대부분 데이터 ML) | NeSy 불필요, NN만으로 충분 | 기본값: LLM tool use(Type 2) + KG 보강(Type 4)이 가장 실용적이다. ## 🔗 Graph - 부모: [[Hybrid-AI]], [[Symbolic-AI]], [[Deep-Learning]] - 형제: [[Knowledge Graph|Knowledge-Graph]] - 응용: [[GraphRAG]] ## 🤖 LLM 활용 - LLM 자체가 Type 2 NeSy의 핵심 — tool use, code interpreter, RAG. - LLM + Lean/Coq/Sympy로 검증 가능한 답변 생성. - 2025–26 추세: agentic NeSy (LLM이 KG·solver를 자율 orchestration). ## ❌ 안티패턴 - 모든 문제에 NeSy 강제 — 단순 분류엔 과설계. - 미분 불가능 기호 연산을 학습 루프에 직접 (REINFORCE/STE 없이). - KG 품질 검증 없이 임베딩 → 노이즈 증폭. - LLM에게 추론 전체를 맡기고 검증 단계 생략. ## 🧪 검증 / 중복 - AlphaGeometry IMO 30문제 벤치, ProofNet, MATH 데이터셋. - 별칭 통합: [[Neural-Symbolic-Integration|Neuro-Symbolic-AI]], [[NeSy]], [[Hybrid-AI]]. - 검증: 기호 검증기(Lean, Z3) 통과 비율로 측정. ## 🕓 Changelog - Phase 1 (2026-05-08): 초기 생성. - Manual cleanup (2026-05-10): canonical 확정, Kautz 6분류, AlphaGeometry/AlphaProof 2024-25 사례 추가, 패턴 10개 정비.