10개월 몰두해 Lichess 랜덤 상대처럼 두는 체스 봇을 만들었다
Spending 10 months building the most human-like chess bot
Stockfish 같은 엔진과 두는 건 인간과 전혀 다르다. 저자는 Lichess의 아무 레이팅, 아무 시간제한에서나 실제 상대처럼 두는 스파링 파트너를 원했고, 10개월에 걸쳐 Chessbook-1을 만들었다. 2026년 9월 Lichess 기보로 평가한 결과, Maia-3의 홈그라운드인 블리츠에서는 세 모델이 사실상 동률이었지만, Chessbook-1은 모든 레이팅에서 실력이 정확히 보정되고 시간 압박에서도 인간처럼 실수하며, 남은 시간을 얼마나 쓸지까지 예측한다.
엔진이 네 가지 중 가장 나쁜데, +1.5 폰의 우세가 900에게와 2500에게 완전히 다른 의미이기 때문이고, 모델들은 그걸 안다.
- fps-hero
여기에는 감상할 만한 참신한 아이디어가 몇 가지 있습니다. 고전적인 “타임 스크램블”은 최상위 인간 대국에서도 충분히 고려할 가치가 있습니다.
Lichess처럼 상당히 풍부한 데이터셋이 있음에도 불구하고 여전히 봇으로 인간의 강도를 근사하기 어렵다는 점이 이상하게 느껴집니다.
“저강도 인간”으로서 전통적인 체스 엔진이 인간을 모방하지 못하는 방식을 보는 것은 매우 쉽습니다.
실제 계산 예측 측면에서 인간은 체스 엔진의 깊이까지 계산하지 않습니다. 인간이 실제로 3수 이상의 깊이로 모든 가능한 수를 고려하는 경우가 얼마나 자주 있을까요?
인간은 본능으로 움직입니다. 우리는 가지가 얼마나 유망해 보이는지에 대한 평가를 바탕으로 결정 트리를 쳐내지, 객관적으로 계산된 강도를 기준으로 하지 않습니다. 바로 이 지점에서 체스 엔진이 무너집니다.
인간은 본능, 패턴 인식, 전략에 의존합니다. 거의 완벽한 본능과 패턴 인식을 가진 최상위 선수가 아니라면 이 중 어느 것도 체스 엔진으로 번역되지 않습니다.
내 직감으로는 대략적인 인간 강도를 위해서는 가장 낮은 ELO의 인간은 완전히 무작위로 수를 두고, 가장 높은 ELO의 인간은 무차별 대입된 최상위 라인을 따를 것입니다. 과제는 결정 트리를 조정하여 기술 수준에 따른 인간의 가지 평가와 일치시키고, 플레이어의 ELO에 따라 가지를 선택하는 두 번째 조건부 확률을 맞추는 것입니다.
체스 엔진의 출력은 결정론적이어서는 안 되고 확률적이어야 합니다. 역사가 보여주듯 문제에 확률적 접근을 취하면 보통 마법 같은 일이 […]
- matsemann
> 이것은 또한 모델이 더 일관된 플레이 스타일을 유지하는 데 도움이 됩니다. 때때로 보드에는 여러 턴에 걸쳐 희생 수가 가능합니다. 인간은 보통 그것을 할지 말지 결정하고, 구체적인 변화가 생길 때까지 그 결정을 고수합니다. 하지만 최근성(recency)을 추가하기 전에 이 봇과 대국했을 때, 봇은 여러 수 동안 그 전술을 무시하다가 관련 없는 조용한 수 이후에 그것을 선택했습니다. 매우 이질적이고 불쾌하게 느껴졌습니다.
이전 글의 포지션 기록에서. 좋은 지적입니다. 비숍의 “저격”도 마찬가지입니다. 비숍이 b2로 이동해 그곳에 있거나 20수 동안 머무르면 “잊혀질” 수 있고 상대가 갑자기 핀을 걸거나 보호가 부족한 무언가를 갖게 됩니다. 하지만 정확히 같은 보드를 보면서 이전 수가 비숍을 b2로 이동시키는 것이었다면, 나는 그것을 인지할 것입니다. 그런 종류의 국소적 사고는 물론 하지 않도록 배워야 할 것이지만, 내 수준(FIDE 1700-1800)에서는 인간이 그렇게 둡니다.
- hyperbolablabla
chessbook.com에서 이 봇과 그냥 평범한 대국을 할 수 있을 거라고 생각했는데, 아닌가 보네요?