프로젝트 소개
NEAT-AI는 Deno/TypeScript로 작성된 신경진화 라이브러리로, Stanley와 Miikkulainen이 2002년에 발표한 NEAT(NeuroEvolution of Augmenting Topologies) 알고리즘을 구현하고 확장합니다. 이 프로젝트는 고전적인 NEAT 접근 방식 위에 현대 연구 기법을 계층화한 하이브리드 진화 및 경사 기반 시스템으로 성장했습니다.
핵심 아키텍처는 TypeScript에서 돌연변이와 교배를 수행하는 '크리처'(게놈)를 중심으로 하며, 순전파는 벤더 제공 WebAssembly(WASM) 모듈 내에서 실행됩니다. 선택적 Rust 확장(NEAT-AI-Discovery)은 Deno FFI를 통해 GPU 가속 구조 분석을 제공하며, 오류 기반 분석을 기반으로 새로운 시냅스를 제안합니다.
주요 기능은 다음과 같습니다:
1. **확장 가능한 관측**: 입력 및 출력 특성은 위치 인덱스 대신 안정적인 UUID로 식별되어, 진화를 재시작하지 않고도 새로운 관측을 추가할 수 있고 다중 머신 재조합이 가능합니다.
2. **분산 훈련**: 훈련과 진화는 여러 독립 노드에서 실행될 수 있으며, 최우수 크리처는 중앙 컨트롤러에서 결합되어 진화 알고리즘의 섬 모델을 반영합니다.
3. **평생 학습**: 변화하는 환경에서 지속적인 학습을 위해 설계되어, 수주 또는 수개월에 걸쳐 새로운 데이터가 도착함에 따라 지속 학습을 지원합니다.
4. **WASM 활성화**: 라이브러리는 WASM 백엔드를 자동으로 초기화하며, 호출자는 단일 순전파를 위해 `activate()`를 호출하기만 하면 됩니다.
5. **고유 스쿼시 함수**: 표준 옵션 외에도 IF, MAX, MIN과 같은 활성화 함수를 지원합니다.
6. **뉴런 가지치기**: 훈련 중 활성화가 변하지 않는 뉴런을 제거하며, 0차 현저성 기준을 사용합니다.
7. **CRISPR**: 진화 중에 수작업으로 설계된 유전자(뉴런 및 시냅스)를 개체군에 주입할 수 있으며, 개체군 시딩을 위해 생물학 약어를 차용합니다.
8. **접목**: 유전적으로 호환되지 않는 부모 간의 교차 섬 교배를 가능하게 하여 다양성을 보존합니다.
9. **밈 진화**: 가장 적합한 크리처의 편향과 가중치를 기록하고 활용하여 미래 세대를 미세 조정하며, 학습된 가중치를 게놈에 다시 기록합니다(라마르크적 접근).
10. **오류 기반 구조 진화(발견)**: 뉴런 활성화와 오류를 분석하여 새로운 시냅스를 동적으로 식별하고 생성합니다. Rust 확장은 GPU 가속 분석을 수행하고 FFI를 통해 구조 후보를 제안합니다.
11. **적응형 돌연변이율**: 크리처 크기와 적합도 진행 상황에 따라 돌연변이 전략을 자동으로 조정하여 탐색과 활용의 균형을 유지합니다.
12. **전이 학습**: 훈련된 크리처를 메타데이터가 포함된 체크포인트로 내보내고, UUID 매핑으로 새 작업에 가져오며, 사전 훈련된 크리처로 개체군을 시딩합니다.
13. **ONNX 내보내기**: 훈련된 크리처를 ONNX 형식으로 내보내 표준 ML 추론 파이프라인에 배포할 수 있습니다.
14. **MCMC 돌연변이 수용**: Metropolis-Hastings 기준을 사용하여 돌연변이 수용 여부를 결정하며, 약 23.4% 수용률을 목표로 적응형 온도 조정을 수행합니다.
15. **고급 교배 전략**: 입력 가중치 코사인 유사도, 하위 그래프 이식, 다양성 기반 교배 등 유전적으로 호환되지 않는 크리처를 위한 여러 전략을 제공합니다.
16. **합성 시냅스 훈련**: 역전파 중에 층간 연결을 일시적으로 밀집시킨 후, 훈련 후 0에 가까운 시냅스를 가지치기합니다.
17. **무작위 이민자**: 개체군이 정체되면 가장 약한 비엘리트 크리처를 새로 시딩된 게놈으로 교체하여 새로운 유전 물질을 도입합니다.
이 프로젝트는 JavaScript 레지스트리(JSR)에 게시되며 설치가 필요 없습니다. WASM 백엔드는 첫 사용 시 자체 초기화됩니다. 이는 NEAT-AI-core(공유 Rust 계산 크레이트), NEAT-AI-Discovery(GPU 가속 구조 분석용 Rust FFI 확장), NEAT-AI-scorer(Rust 스코어링 애플리케이션), NEAT-AI-Backpropagation(네이티브 Rust 역전파), NEAT-AI-Lamarck(실험적 Rust 최적화기), NEAT-AI-Explore(TypeScript 시각화 도구) 및 기타 여러 실험적 최적화기와 도구를 포함하는 저장소 제품군의 일부입니다.
이 라이브러리는 DenoJS 환경에서 사용하도록 설계되었으며, 기본 크리처 생성 및 활성화부터 고급 분산 훈련, 구조 발견, ONNX 내보내기를 통한 프로덕션 배포까지 신경진화를 위한 포괄적인 툴킷을 제공합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.