
컴퓨터와 오셀로 대전 63 ~LLM에게 판단하게 하는 것에 의미가 있을까~
요약
오셀로 게임에서 LLM이 최적의 수를 판단할 수 있는지 검증하기 위해 알고리즘 기반 선택 방식과 비교 실험을 진행했습니다. 실험 결과, LLM의 선택은 랜덤 선택보다도 낮은 승률을 기록하며 성능이 매우 낮음을 확인했습니다.
핵심 포인트
- LLM의 수 선택이 단순 랜덤 선택보다 성능이 낮음
- 필터링된 유효수 목록 중 LLM의 판단력 부재 확인
- LLM을 게임 에이전트로 활용할 때의 한계 노출
이전 기사에서, "LLM은 주어진 수 중에서 랜덤하게 선택하고 있을 뿐, 한 수 앞이나 두 수 앞의 정보는 참고하지 않는 것이 아닌가?"라는 의구심이 제기되었습니다.
이번 기사에서는 이 의구심에 대해 검증하여, LLM을 사용하는 방침에 애초에 무리가 있었던 것인지, 아니면 방법을 바꿈으로써 어떻게든 해결할 수 있는 것인지에 대해 검토해 나가겠습니다.
LLM에는 해당 턴에 둘 수 있는 유효수(Valid moves) 목록을 전달하고 있지만, 모든 유효수를 전달하고 있는 것은 아닙니다.
다음과 같이 필터링하여 줄이고 있습니다.
- X 위치와 C 위치는 전달하지 않음 (그 외에 유효수가 없는 경우에는 전달함)
- 턴마다 스코어(Score)를 산출하여, 그 스코어의 상위 절반만을 전달
스코어 산출 방법에 대해 복습하자면 다음과 같습니다.
- 초반(~19수째): 상대방이 둘 수 있는 수의 -1배 (상대방이 둘 수 있는 수가 적을수록 고득점)
- 중반(20~49수째): 안정석(Stable stones)의 증가수가 그대로 스코어가 됨 (안정석이 많이 늘어날수록 고득점)
- 종반(50~60수째): 자신의 돌의 수가 그대로 스코어가 됨 (단순히 자신의 돌의 수가 늘어날수록 고득점)
LLM은 이 중에서 현재 가장 유효하다고 생각되는 수를 단 하나만 골라서 반환합니다.
하지만 이 "단 하나를 고른다"는 것이, 그저 찍어서 고르는 것인지, 제대로 근거를 가지고 고르는 것인지는 알 수 없습니다.
따라서 이번 실험에서는 위 알고리즘으로 합법수(Legal moves)를 좁힌 후,
- 그중에서 LLM이 고른다
- 그중에서 랜덤하게 고른다
- 그중에서 스코어 톱(Top)인 것을 사용한다
를 대전시켜, 어느 쪽이 강한지를 확인하겠습니다.
만약 승률에 큰 차이가 없다면, 안타깝게도 LLM에 의한 선택은 별로 의미가 없으며, 필터링(絞り込み)이 강력했을 뿐이라는 결론이 됩니다.
실제로 대전시켜 보았습니다. 그 결과가 여기 있습니다.
[llm_simV2_m3 vs random_m3] 완료 흑 22승72패6무600 (16%) | 경과 13m05s 남은 시간 약 65m25s
[llm_simV2_m3 vs top_m3] 완료 흑 15승84패1무600 (33%) | 경과 25m06s 남은 시간 약 50m12s
[random_m3 vs llm_simV2_m3] 완료 흑 70승30패0무600 (50%) | 경과 37m36s 남은 시간 약 37m36s
...
LLM 너무 약한 거 아니냐.
상당히 압도적인 차이가 나고 있네요.
제대로 그래프로 그려봅시다.
먼저, 합법수로부터의 선택 방법에 대해 대략적인 승률을 그린 것이 이것입니다.

LLM이 최약체네요.
평소처럼 히트맵(Heatmap)도 만들어 봅시다.
이번 경우에는 별로 필요 없을 것 같기도 합니다만.
뭐, 네.
위의 그래프에서 받는 인상 그대로인 그래프네요.
각각의 선택 방법에 대해, 대전 상대별로 신뢰 구간(Confidence interval)도 산출하여 그래프로 그려봅시다.
경기 수가 많아서 신뢰 구간도 꽤 작네요.
의심할 여지 없이 "LLM은 약하다"가 시각화되어 버렸습니다.
하지만 랜덤하게 선택하는 것보다 약하다는 점은 놀랍네요.
승률이 변하지 않는 정도가 아니라 오히려 약해졌다는 것은, 완전히 불필요한 짓을 하고 있는 상태입니다.
게다가 실행 결과의 표준 출력(Standard output)을 보면 알 수 있듯이, LLM을 사용하지 않는 대전은 100경기를 해도 1분도 채 걸리지 않거든요.
LLM을 사용하면 랜덤하게 고르는 것보다 약해질 뿐만 아니라, 대전 시간도 매우 방대해지고 맙니다.
좋은 점이 하나도 없잖아요.
여기서 약간 의문이 생겼습니다.
사실, LLM에 전달하고 있는 유효수는 "스코어가 높은 순서"로 되어 있습니다.
LLM은 이 중에서 끝에 있는 것, 즉 스코어가 낮은 것을 우선적으로 선택하고 있는 것은 아닐까?
라는 생각에 그것을 실제로 시각화하여 확인해 보았습니다.
실행 로그가 남아있기에 가능한 일이네요.
로그에는 "LLM에 전달한 합법수 목록"과 "그중에서 LLM이 실제로 무엇을 골랐는가"가 기록되어 있습니다.
그것을 사용하여 그래프로 만들어 주었습니다.
반드시 끝을 고르는 것은 아니지만, 높은 확률로 뒤쪽의 수를 고르고 있는 것 같습니다.
대책으로 생각할 수 있는 것은 "합법수를 전달하는 방식을 스코어 오름차순으로 한다"는 것이지만, 그렇게 해서 끝에서 골라도 딱히 LLM이 강해진다는 뜻은 아니니까...
합법수를 랜덤하게 전달하며 시도해 볼 수도 있겠지만, 솔직히 지금까지의 실험 결과로 보아 큰 기대는 할 수 없을 것 같다는 생각이 듭니다.
지금까지의 실험 전부를 뒤흔들 만한 사실이 발각되어 버렸습니다.
솔직히, 향후 방침이 전혀 상상되지 않습니다.
Osero.java
import java.io.*;
import java.net.URI;
import java.net.http.*;
...
Evaluator.java
import java.io.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
...
analysis.ipynb
{
"cells": [
{
...
역시 LLM (Large Language Model)에게 선택하게 한다는 방침에는 무리가 있었던 것일까.
아니면, 좀 더 다른 방법이 있는 것일까.
검토해보고 무언가 떠오르면 다시 실험해보고 싶다.
또한, 연 단위로 포스팅이 끊기지 않기를 기도하며….
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기