원문 캡처 · github.com
원문 캡처 · github.com

NeuroMario는 신경망 집단이 진화만으로 마리오 스타일 플랫폼 게임을 학습하는 대화형 데모다. 빌드나 외부 의존성 없이 index.html을 열거나 ./serve.ps1을 실행한 뒤 http://localhost:8080에 접속해 이용할 수 있다. 프로젝트 저장소

게임 화면에는 신경망이 보는 입력 타일이 점선 격자로 표시되고, 가상 게임패드에는 출력 뉴런의 신호가 나타난다. 3D 뇌 화면에서는 노드 색으로 활성화를, 주황색과 파란색 선으로 흥분성·억제성 연결 가중치를 보여준다. 움직이는 점은 신호 흐름을 나타낸다. 대시보드 화면, 게임 화면, 3D 신경망 화면, 진화 화면

조작은 스페이스바로 시작·일시정지하고, 다음 세대 버튼으로 현재 세대 끝까지 빠르게 진행하는 방식이다. 속도, 레벨, 집단 크기, 변이율도 조절할 수 있다. 집단 그래프의 막대를 클릭하면 해당 개체의 3D 뇌를 고정해 볼 수 있으며, ‘follow leader’를 누르면 해제된다. AI와 경주하는 탭에서는 방향키 또는 WASD로 이동하고 스페이스바로 점프한다. Shift 또는 Z는 달리기, R은 재시작이다. 3D 화면은 드래그로 회전하고 스크롤로 확대·축소하며, 노드에 마우스를 올리면 값을 확인할 수 있다.

네트워크 입력은 마리오 주변 8×5 타일의 지형·적·가시·코인 정보와 지면 접촉 여부, 수직·수평 속도를 합친 43개다. 출력 4개는 왼쪽, 오른쪽, 점프, 달리기 조작에 대응한다. 적합도는 이동 거리와 코인, 적을 밟은 횟수에 더해 빠른 완주에 큰 보너스를 준다. 상위 8%는 그대로 살아남고, 나머지는 상위 40%에서 교배와 가우스 변이, 연결 토글을 통해 만들어진다. 새 무작위 신경망도 4% 포함되며, 진행이 정체되면 변이율이 자동으로 높아진다.

제작자가 제시한 일반적인 결과로는 레벨 1을 보통 약 10~30세대 안에 해결하고, 레벨 2에서는 긴 정체 뒤 진전이 나타나며, 레벨 3은 상당한 도전 과제다. 특정 장면을 공유하려면 URL 매개변수를 사용할 수 있다. 예를 들어 index.html?level=1&seed=3&warmup=85&frames=200&pause=1은 레벨과 시드를 지정하고 85세대를 미리 진화시킨 뒤 다음 세대에서 200프레임 진행하고 멈춘다. &only=game|brain|stats를 추가하면 해당 패널 하나만 표시한다.