尚未检测到更新。GitHub 发布版本后会显示在这里。
正在加载完整 README。 以下为已保存的摘录。
아무도 가르치지 않은 신경망이 스스로 사냥을 배우는 인공생명 생태계 시뮬레이터. 모든 개체는 137개 가중치의 작은 신경망(뇌)을 갖고 태어나고, 돌연변이와 자연선택만으로 먹이 추적·종 분화(초식 → 포식자)·포식자-피식자 진동이 창발합니다. 순수 바닐라 JavaScript + Canvas 2D, 단일 HTML 파일 하나입니다. ▶ 브라우저에서 바로 실행 — 설치·빌드 없음 이 프로젝트의 출발점은 시뮬레이터가 아니라 모델 실험이었다. Anthropic의 창작 특화 모델 Fable로 "생성형 모델이 어디까지 만들어 내는가"를 시험해 보려 했고, 주제로 인공생명을 골랐다. 주제를 그렇게 잡은 이유는 정답을 미리 정할 수 없는 문제여서다. 화면에 무엇이 나타날지는 만드는 사람도 모른다. 무작위 뇌를 가진 개체들이 대부분 굶어 죽고, 우연히 "먹이 쪽으로 도는" 뇌가 살아남아 퍼지고, 식성이 갈라지며 종이 분화되고, 포식자와 피식자가 서로를 조절하는 진동이 나타난다 — 그걸 설계한 게 아니라 규칙만 주고 지켜보는 것이 목적이었다.查看完整 README ↗
🇰🇷 한국어 · 🇬🇧 English
아무도 가르치지 않은 신경망이 스스로 사냥을 배우는 인공생명 생태계 시뮬레이터. 모든 개체는 137개 가중치의 작은 신경망(뇌)을 갖고 태어나고, 돌연변이와 자연선택만으로 먹이 추적·종 분화(초식 → 포식자)·포식자-피식자 진동이 창발합니다. 순수 바닐라 JavaScript + Canvas 2D, 단일 HTML 파일 하나입니다.
▶ 브라우저에서 바로 실행 — 설치·빌드 없음
이 프로젝트의 출발점은 시뮬레이터가 아니라 모델 실험이었다. Anthropic의 창작 특화 모델 Fable로 "생성형 모델이 어디까지 만들어 내는가"를 시험해 보려 했고, 주제로 인공생명을 골랐다.
주제를 그렇게 잡은 이유는 정답을 미리 정할 수 없는 문제여서다. 화면에 무엇이 나타날지는 만드는 사람도 모른다. 무작위 뇌를 가진 개체들이 대부분 굶어 죽고, 우연히 "먹이 쪽으로 도는" 뇌가 살아남아 퍼지고, 식성이 갈라지며 종이 분화되고, 포식자와 피식자가 서로를 조절하는 진동이 나타난다 — 그걸 설계한 게 아니라 규칙만 주고 지켜보는 것이 목적이었다.
만드는 방식에도 제약을 하나 걸었다. 단일 HTML 파일, 빌드 없음, 의존성 0개. 링크만 열면 바로 돌아가야 실험 결과를 남에게 보여줄 수 있다고 봤다.
Q. 왜 바닐라 JS 단일 HTML 파일인가?
이 프로젝트의 볼거리는 UI가 아니라 시뮬레이션 자체입니다. 프레임워크·빌드 도구·외부 라이브러리를 전부 빼고 파일 하나(index.html, 약 950줄)로 만들면, 누구든 더블클릭 한 번으로 오프라인에서도 돌려볼 수 있습니다. 의존성 0은 데모 접근성이자 제약 조건이었습니다: 렌더링(Canvas 2D), 신경망, 공간 분할까지 전부 직접 작성했습니다.
Q. 신경망이 왜 137개 가중치뿐인가?
구조는 입력 12(가장 가까운 먹이/이웃의 방향·거리·크기·식성, 자기 상태 등) → 은닉 9 → 출력 2(회전·추진)의 완전연결망으로, 편향 포함 9×(12+1) + 2×(9+1) = 137개입니다. 수백 개체가 매 틱 forward를 돌려야 하므로 작아야 실시간이 나오고, 무엇보다 "이 정도로 작은 뇌도 학습 없이 선택압만으로 사냥을 익힌다"를 보여주는 것이 목적이라 일부러 최소로 잡았습니다.
Q. 왜 학습(역전파)이 없나? 개체는 태어난 뇌 그대로 평생을 삽니다. 잘 움직인 개체가 번식하고, 자식의 뇌 가중치에 가우시안 돌연변이가 들어갈 뿐입니다. 보상 함수를 설계하는 순간 "내가 정의한 행동"이 나오므로, 순수 자연선택만으로 무엇이 창발하는지 보는 실험입니다.
Q. 종 분화를 왜 하드코딩하지 않았나? 초식/육식을 이산적인 종으로 구현하면 종 분화는 '기능'이지 '창발'이 아닙니다. 대신 식성을 0~1 연속 스펙트럼으로 두고, 사체(고기)라는 중간 먹이 니치를 만들어 잡식 단계도 생존 가능하게 했습니다. 그 결과 분포가 스스로 갈라지는 순간을 차트에서 관찰할 수 있습니다.
Q. 성능은 어떻게 확보했나? 이웃 탐색이 병목이라 공간 해시 그리드로 주변 셀만 조회합니다(전수 비교 O(n²) 회피). 핫루프에서는 조회 결과 배열을 재사용해 할당을 줄였습니다.
index.html
├─ 1부. 시뮬레이션 코어 — DOM 의존 없음 (유전자·신경망·생태계 로직)
└─ 2부. UI — Canvas 렌더링, 카메라, 차트, 인스펙터, 신의 손
코어와 UI를 분리한 이유는 아래 '검증' 때문입니다.
index.html을 브라우저에서 열기만 하면 됩니다. (또는 위 데모 링크)
시뮬레이션 코어가 DOM과 분리되어 있어 Node.js로 헤드리스 장기 실행이 가능합니다. 60,000틱 테스트에서 절멸 없이 90세대 이상 진화, 평균 이동 속도 3배 향상, 포식자 종 분화를 확인했습니다.
같은 작성자의 Mindlings(Godot 4)는 여기서 탐구한 "신경망 + 자연선택" 주제를 다른 방향으로 파고듭니다 — 고정 토폴로지 137 가중치 대신 NEAT식 토폴로지 진화 + 생애 내 학습, 수백 개체 군집 대신 소수 개체를 가까이서 돌보는 신 시점 샌드박스입니다.
MIT