누가 운영하나요?
안녕하세요, 주인장 생각나무입니다. 저는 사람 냄새가 나는, 인간처럼 생각하는 AI 모델을 만들기 위해 여러 가지 AI 모델을 만들고 있는 32년 차 개발자입니다. AI가 널리 쓰이면서 혼자서도 개발할 수 있게 되자 여러 가지 과제에 도전하게 되었습니다.
그러다 스도쿠를 푸는 AI를 보게 되었습니다. AI는 사람의 생각 방식과 전혀 다르게, 마치 답을 이미 아는 어린아이처럼 첫 칸부터 가로로 차례차례 답을 채워 나갔습니다. 그건 치팅이라고 말하자, 그제야 스도쿠의 규칙대로 가로줄과 세로줄, 9칸 네모(3×3)를 비교해서 답을 냈습니다. 이 모습을 보고 허깅 페이스(Hugging Face)에서 모델을 받아 직접 학습시키기 시작했습니다. 그 뒤로 여러 모델이 두뇌 훈련 게임을 이렇게 답을 아는 것처럼 풀고 있다는 것을 알게 되었습니다.
MariaGO의 모델 학습, 게임 엔진, 웹 화면과 서버 운영은 모두 제가 직접 맡고 있습니다. 이곳의 글은 일반적인 게임 백과사전을 다시 요약한 내용이 아니라, 구현 중 확인한 코드와 실험 기록을 바탕으로 작성합니다.
프로젝트 이름의 ‘GO’는 첫 출발점인 바둑을 뜻합니다. 바둑에서 시작한 질문은 오목과 오델로, 장기, 체스, 숫자와 낱말 퍼즐로 넓어졌습니다. 게임마다 규칙은 다르지만 “현재 상태를 AI가 어떻게 읽고 다음 행동을 고르는가”라는 공통 주제가 있습니다.
왜 또 하나의 게임 사이트를 만들었나요?
온라인 대국 서비스는 이미 많습니다. MariaGO가 해결하려는 문제는 상대를 빨리 찾아 경쟁하는 일이 아닙니다. 사람과 약속을 잡지 않아도 원하는 때 한 수를 두고, 시간이 부족하면 멈췄다가 같은 판으로 돌아오는 개인적인 대국 환경을 만들고 싶었습니다.
목표는 가장 강한 AI를 자랑하는 것이 아니라, 학습한 모델의 판단을 누구나 브라우저에서 직접 만나고 그 과정까지 이해할 수 있게 하는 것입니다.
저는 영화 〈블레이드 러너〉를 좋아합니다. 그 영화에는 J.F. 세바스찬과 타이렐 박사가 서로 떨어진 곳에서 체스를 말로 한 수씩 주고받으며 이어 두는 장면이 있습니다. MariaGO의 바둑도 그런 성격을 갖도록 턴 시간 제한을 두지 않았습니다.
사용자의 착수가 확정될 때마다 서버에 판과 수순을 저장하고, 다음 방문에는 진행 중인 대국을 다시 불러옵니다. 기보를 앞뒤로 살핀 뒤 특정 수부터 다시 둘 수 있습니다.
주의: 대국은 브라우저마다 만들어지는 ID로 저장됩니다. 시크릿 모드나 다른 브라우저에서 두면 기존 대국을 불러오지 못하고 새로운 저장이 생깁니다.
어떻게 개발하나요?
바둑 모델은 상급자와 프로의 SGF 기보에서 국면과 다음 수를 추출해 학습합니다. 원본 기보를 그대로 넣는 것으로 끝나지 않습니다. 19×19 좌표를 모델이 읽을 수 있는 정렬 격자로 바꾸고, 중복 국면을 제거하며, 학습 자료와 실제 대국 서버가 같은 판 표현을 쓰는지 확인합니다.
모든 AI 모델이 같은 바둑 좌표를 쓰는 것은 아니라는 사실은 개발을 시작하고 한참이 지나서야 알았습니다. 구글 Gemma를 오래 학습시켰지만 모델이 두는 자리는 언제나 4사분면이었습니다. 그래서 여러 가지 제한을 두게 되었고, 그 제한 때문에 또 다른 오류가 생겼습니다.
나중에야 모델마다 서로 다른 좌표를 쓰고 있고, 심지어 SGF 기보와 우리 모델조차 다른 좌표를 쓰고 있다는 것을 알게 되었습니다. 사람이 둔 수를 모델에게 알려 주면 다른 좌표로 돌려준다는 사실도 그때 알았습니다. 그래서 초반에는 좌표를 맞추는 훈련을 아주 오래 했고, 그러고 나서야 모델들의 바둑 실력이 급격하게 오르기 시작했습니다.
학습 뒤에는 승률 하나만 보지 않습니다. 모델이 네 귀의 좌표를 비슷한 정확도로 찾는지, 이미 돌이 놓인 점을 다시 고르지는 않는지, 지나치게 이른 시점에 패스하지는 않는지 기록합니다. 웹 대국에서도 AI의 수를 그대로 적용하지 않고 게임 엔진이 자충·패·중복 착수 같은 불법수를 검사합니다.
| 학습 자료 | 상급자·프로 SGF에서 추출한 국면과 실제 다음 수 |
|---|---|
| 국면 표현 | 행과 열 번호를 두 자리로 정렬한 19×19 텍스트 격자 |
| 실전 검증 | 좌표 정확도, 합법수 비율, 조기 패스와 방향 편향을 별도 확인 |
| 대국 저장 | 판 상태와 전체 수순을 착수 단위로 저장해 복기와 이어두기에 사용 |
콘텐츠와 운영 원칙
직접 확인한 내용을 씁니다
기능 설명은 지금 실제로 동작하는 그대로 씁니다. 새 기능은 생각날 때마다 만들어 붙이고, 글도 그때그때 함께 고칩니다.
한계를 함께 공개합니다
모델의 실수, 자동 계가의 사활 판정 한계처럼 구독자가 알아야 할 조건을 결과와 함께 밝힙니다.
만드는 과정을 글로 남깁니다
게임 링크만 모아 두지 않고, 규칙과 구현 방식, 실패하고 고친 기록까지 글로 읽을 수 있게 합니다.
서두르지 않는 경험을 지향합니다
일이 생기면 언제든지 멈추면 됩니다. 이후에 다시 여유가 생기고 수가 생각나면 그때 다시 두면 됩니다. 잘못 둔 수가 있다면 언제든지 그 자리로 돌아가서 다시 둘 수 있습니다.
현재의 한계도 분명히 말합니다
MariaGO의 모든 게임이 같은 수준으로 완성된 것은 아닙니다. 바둑은 기보 저장과 이어두기를 지원하지만 다른 게임의 기능 범위는 서로 다릅니다. 바둑 자동 계가는 둘러싸인 빈 영역과 사석을 계산하되 죽은 돌을 완전히 판별하지 못합니다. 계가 값은 심판의 확정 결과가 아니라 대국자가 판을 검토하기 위한 참고치입니다.
이 차이와 실패 사례가 오히려 프로젝트 기록의 핵심입니다. 기능이 달라지면 이 소개와 연구노트도 함께 고치겠습니다.