드림로그
Source: Dev.to
Source: …
DreamLog: 논리 프로그래밍과 웨이크‑슬립 사이클
스스로를 개선하기 위해 꿈을 꾸는 추론 엔진으로, 뇌가 수면 중에 지식을 통합하는 방식을 모티브로 합니다.
DreamLog란?
DreamLog는 웨이크‑슬립 사이클을 구현하여 지속적인 자기 개선을 가능하게 하는 혁신적인 논리 프로그래밍 언어입니다. 인간의 REM 수면 동안 뇌가 하는 일처럼 DreamLog는 다음을 번갈아 수행합니다:
- 🌞 Wake Phase – 기존 지식을 활용해 질의에 효율적으로 답변
- 🌙 Sleep Phase – “꿈꾸기”를 통해 새로운 추상화, 압축, 일반화를 탐색
DreamCoder와 신경과학에서 영감을 받아, DreamLog는 압축을 통해 일반 원리를 발견합니다—더 많은 경우를 포괄하는 단순한 설명이 더 진실에 가깝다는 통찰을 따릅니다.
핵심 혁신: 최적화를 위한 Dreaming
from dreamlog.pythonic import dreamlog
from dreamlog.kb_dreamer import KnowledgeBaseDreamer
# Wake phase: Use knowledge
kb = dreamlog(llm_provider="openai")
kb.fact("parent", "john", "mary")
kb.fact("parent", "mary", "alice")
# Sleep phase: Dream to optimize
dreamer = KnowledgeBaseDreamer(kb.provider)
session = dreamer.dream(
kb,
dream_cycles=3, # 여러 REM 사이클
exploration_samples=10, # 다양한 최적화 탐색
verify=True # 동작 보존 확인
)
print(f"Compression achieved: {session.compression_ratio:.1%}")
print(f"Generalization score: {session.generalization_score:.2f}")
특징
🧠 자기‑향상 지식 베이스
- 자동으로 추상화와 패턴을 발견
- 중복 규칙을 일반 원리로 압축
- 최적화가 기존 동작을 유지하는지 검증
🤖 LLM‑구동 학습
- 필요 시 누락된 지식을 생성
- 기존 사실에 기반한 컨텍스트‑aware 생성
- 다중 제공자 지원 (OpenAI, Anthropic, Ollama)
🎯 최신 파이썬 통합
kb = dreamlog()
kb.fact("likes", "alice", "bob") \
.fact("likes", "bob", "alice") \
.rule("friends", ["X", "Y"]) \
.when("likes", ["X", "Y"]) \
.and_("likes", ["Y", "X"])
for result in kb.query("friends", "X", "Y"):
print(f"{result.bindings['X']} and {result.bindings['Y']} are friends")
🔄 웨이크‑슬립 아키텍처
- Exploitation – 깨어 있을 때 빠른 질의 응답
- Exploration – 잠자는 동안 창의적인 재구성
- Verification – 개선이 기존 동작을 깨뜨리지 않도록 보장
설치
pip install dreamlog
빠른 시작
from dreamlog.pythonic import dreamlog
# 지식 베이스 생성
kb = dreamlog()
# S‑expression으로 사실 추가
kb.parse("""
(parent john mary)
(parent mary alice)
(parent bob charlie)
""")
# 규칙 추가
kb.parse("""
(grandparent X Z) :- (parent X Y), (parent Y Z)
""")
# 질의
for result in kb.query("grandparent", "X", "alice"):
print(f"{result.bindings['X']} is Alice's grandparent")
# 정의되지 않은 프레디케이트에 LLM 활성화
kb_with_llm = dreamlog(llm_provider="openai")
# 이제 정의되지 않은 프레디케이트에 대한 질의가 자동으로 지식을 생성합니다
철학
DreamLog는 탐색과 활용의 상호작용에서 지능이 탄생한다는 원리를 구현합니다:
- Consolidation – 중요한 패턴을 강화
- Abstraction – 일반 원리를 발견
- Compression – 적은 자원으로 더 많은 것을 달성
- Creativity – 새로운 재구성을 탐색
이는 단순히 LLM을 얹은 논리 프로그래밍이 아니라, 시스템의 지식 표현이 사용을 통해 진화하는 근본적인 새로운 패러다임입니다.
문서
전체 문서는 full documentation에서 확인하세요:
기여
기여를 환영합니다! 자세한 내용은 [CONTRIBUTING.m] 를 참고하세요.
d](https://contributing.md/)에 대한 지침.
라이선스
MIT 라이선스 – 자세한 내용은 LICENSE를 참조하십시오.
인용
연구에 DreamLog를 사용한다면, 다음을 인용해 주세요:
@software{dreamlog2025,
title = {DreamLog: Logic Programming with Wake-Sleep Cycles},
author = {queelius},
year = {2025},
url = {https://github.com/queelius/dreamlog}
}
추론 시스템은 잠을 자야 하며, 어쩌면 꿈을 꿀 수 있다고 믿는 꿈꾸는 사람들에 의해 만들어졌습니다