dev.to

I connected a fruit fly connectome to tic-tac-toe (with a minimax safety net)

초파리 신경 연결망으로 틱택토를 두게 했습니다 — minimax 안전망을 더해

초파리 신경계 연결 데이터 일부를 틱택토 입력과 출력 신호로 매핑한 프로젝트입니다. 원시 회로는 다음 수를 내다보지 못해 minimax가 최선의 수를 추리고, 회로는 그중 하나를 고릅니다. 연결망은 실제 데이터를 쓰지만 게임판 매핑과 시뮬레이션은 저자의 설계입니다.

AI 요약

개발자인 글쓴이는 공개된 초파리 신경계 연결망(connectome)에서 일부 뉴런과 연결 정보를 가져와 틱택토 에이전트 FlyCNS-TicTacToe를 만들었습니다. 3×3 칸마다 뉴런 그룹을 배정하고, 각 칸에 둔 표식을 신호로 입력합니다. 신호를 간단히 흘려보낸 뒤 활동량이 가장 큰 빈칸을 다음 수로 고릅니다.

실제 연결 데이터를 게임에 적용

뉴런 연결과 연결 강도는 수컷 초파리 connectome 데이터에서 가져왔습니다. 연결 강도에는 시냅스 수를 쓰고, 다음 뉴런을 흥분시키거나 억제하는 성질은 데이터베이스의 신경전달물질 예측값으로 정했습니다. 글쓴이는 아세틸콜린은 흥분, GABA와 글루타메이트는 억제, 그 밖의 물질은 중립으로 처리했습니다. 다만 신경전달물질 정보는 확정값이 아니라 예측입니다.

틱택토 판을 신경계가 실제로 인식하는 것은 아닙니다. 중앙 뇌 뉴런을 아홉 입력 그룹으로 나누고 출력 뉴런 그룹 아홉 개를 각 칸에 대응시킨 방식은 글쓴이가 정했습니다. 뉴런 선택에도 자체 기준을 적용했으며, 주로 출력 뉴런으로 들어가는 연결이 강한 뉴런을 골랐습니다. 시뮬레이션은 스파이크나 실제 신경 신호의 시간 변화를 재현하지 않는 단순 신호 계산입니다. 학습도 없고 연결은 고정돼 있습니다.

minimax가 수를 제한합니다

회로만으로 두면 포크를 놓치거나 상대의 승리를 막지 못해 패배할 수 있습니다. 기본 설정에서는 minimax가 가능한 수를 평가해 최선의 수만 남깁니다. 그 안에서 초파리 회로가 하나를 고르며, 승리·무승부·패배 여부는 minimax가 결정합니다. 최선의 수가 하나뿐이면 회로가 선택에 관여하지 않습니다. unbeatable=False로 만들면 minimax를 끄고 원시 회로만으로 둘 수 있습니다.

Python, neuprint-python, NetworkX, pandas를 사용합니다. 회로를 만드는 파이프라인을 한 번 실행한 뒤 터미널에서 게임을 진행하며, 무료 neuPrint 토큰이 필요합니다. 코드는 MIT 라이선스, connectome 데이터는 CC-BY 라이선스입니다.

dev.to 반응

  • @ivannovazzi — minimax가 매 수마다 돌봐주는 동안 초파리가 포크에 걸려드는 설정이 재미있네요. 신호 시뮬레이션은 결정론적인가요? 같은 판에서 항상 같은 수를 두는지, 아니면 뉴런 그룹을 연결한 방식 때문에 특정 칸에 편향이 생기는지 궁금합니다.
    • @asyncinnovator — 고맙습니다, Ivan! 네, 결정론적입니다. 같은 판이면 같은 수를 두고 무작위성은 없습니다. 칸 순서는 제가 정했으니 편향이 있을 가능성이 큽니다. 아직 측정하진 않았는데, 다음 테스트 아이디어로 좋네요!
  • @davidwest — 신경과학 데이터와 간단한 게임을 연결한 방식이 정말 흥미롭습니다.

원문: dev.to / 번역·요약: Trawling