1P by GN⁺ | ★ favorite | 댓글 1개
  • 대부분의 LLM이 체스를 못 두는 가운데 gpt-3.5-turbo-instruct만 유독 강했던 현상은, 프롬프트 인터페이스를 바꾸면 gpt-4ogpt-4o-mini도 상당히 나아진다는 실험으로 일부 설명됨
  • OpenAI가 체스 엔진을 몰래 호출한다는 가설은 약함: 같은 보드라도 도달 수순에 따라 다른 수를 두고, 프롬프트 변화에 민감하며, 성능도 엔진이 아닌 약 1750 Elo 수준에 머묾
  • 세 개의 짧은 인컨텍스트 예시만으로 성능이 크게 올랐고, Stockfish 자가 대국 100개에서 뽑은 예시로 파인튜닝해도 개선이 확인됨
  • 반대로 현재 가능한 합법 수를 알려주면 성능이 크게 나빠졌고, 전체 기보를 반복한 뒤 다음 수를 붙이는 기보 반복(regurgitation) 방식은 chat 모델을 completion 모델처럼 행동하게 만들어 성능을 끌어올림
  • 최종 조합인 gpt-4o + regurgitation + examplesgpt-3.5-turbo-instruct와 50판에서 10승 5무 35패를 기록했고, 백의 이점을 감안하면 약 1540 Elo로 추정돼 gpt-3.5-turbo-instruct의 약 1750 Elo에는 못 미침

문제 설정: 왜 gpt-3.5-turbo-instruct만 체스를 잘 두는가

  • 기존 관찰의 출발점은 대부분의 LLM이 체스를 매우 못 두지만, gpt-3.5-turbo-instruct고급 아마추어 수준으로 둔다는 점임
  • 이 모델은 1년 이상 된 비교적 작은 모델인데도 최신 모델보다 체스를 잘 두는 것으로 나타남
  • 가능한 설명은 크게 네 가지였음
    • base 모델은 체스를 잘 두지만 instruction tuning을 거친 chat 모델에서는 능력이 유지되지 않음
    • gpt-3.5-turbo-instruct가 더 많은 체스 데이터로 학습됨
    • 특정 LLM 아키텍처에 특별한 요소가 있음
    • 체스 데이터가 전체 학습 데이터에서 충분히 큰 비중을 차지해야 함
  • 이후 논의는 OpenAI의 체스 엔진 호출 가능성, LLM이 실제로 체스를 두는지 여부, base 모델과 chat 모델의 차이로 좁혀짐

체스 엔진을 몰래 쓰는 가설은 설득력이 낮음

  • gpt-3.5-turbo-instruct가 체스 표기법을 인식해 외부 체스 엔진을 호출한다는 의심은 가능성이 매우 낮아 보임
  • 근거는 여러 갈래로 나뉨
    • OpenAI 관계자들이 그런 처리를 하지 않았다고 말함
    • 체스 엔진은 같은 보드 상태라면 수순과 무관하게 평가하지만, gpt-3.5-turbo-instruct는 같은 보드라도 도달 수순이 다르면 다른 수를 둠
    • 체스 아마추어 기준으로는 좋지만 전문가 기준으로는 약하고, 체스 엔진과 비교하면 매우 낮은 성능임
    • 프롬프트를 바꾸면 플레이가 미묘하게 달라짐
    • 이후 OpenAI 모델들은 기본 상태에서 훨씬 못 두지만, 적절한 프롬프트를 쓰면 잘 둘 수 있음
  • 만약 부정행위가 있었다면 외부 엔진 호출처럼 보이지 않게 하면서 LLM이 직접 수를 고르는 듯 보이도록 매우 복잡한 방식을 택한 셈임

LLM은 단순 암기만으로 두는 것이 아님

  • gpt-3.5-turbo-instruct는 후반부에서도 불법 수를 드물게 제안함
  • 1. e4 d5 2. exd5 Qxd5 3. Nc3 같은 문자열에서 마지막 수가 합법인지 판단하려면 체스 규칙과 상태 추적이 필요함
  • 실제 대국에서도 gpt-3.5-turbo-instruct는 역사상 존재한 적 없는 새 보드 상태에서 꽤 잘 둠
  • 따라서 오프닝을 암기한 뒤 이후에는 무작위로 둔다는 설명은 맞지 않음

기본 실험: completion 모델과 chat 모델의 차이

  • gpt-3.5-turbo-instructcompletion 모델이라 PGN 형태의 텍스트를 이어 쓰게 하는 방식으로 다음 수를 얻음
    • 예시는 [Event "Shamkir Chess"], 선수 이름, Elo, 결과, 1. e4 e5 2. Nf3 Nc6 3. 같은 기보를 제공하는 방식임
  • gpt-4o-minigpt-4ochat 모델이라 system prompt와 user prompt를 통해 다음 수만 표준 대수 표기법으로 내게 함
  • Stockfish level 1을 상대로 각 수에 최대 0.01초를 주고 50판 평균을 냈으며, 게임 뒤 각 턴의 점수를 centipawn으로 계산함
    • pawn은 100점으로 계산
    • ±1500은 승패에 해당
  • 기본 프롬프트에서는 gpt-3.5-turbo-instruct가 강하고, gpt-4ogpt-4o-mini 같은 chat 모델은 약하게 나타남

프롬프트 구성 실험

  • user prompt 맨 위에 system prompt를 반복할지, 선수 이름과 Elo 같은 메타데이터를 넣을지 조합을 바꿔 실험함
  • gpt-4o-mini에서는 큰 차이가 거의 없어 보임
  • gpt-4o에서는 system prompt 반복이 약간 도움이 되고 메타데이터는 약간 해로운 것처럼 보였지만, 노이즈일 가능성도 남아 있음
  • 이후 실험에서는 단순화를 위해 system prompt 반복과 메타데이터를 모두 끔

세 개의 예시만으로 성능이 크게 개선됨

  • LLM에 작업을 시킬 때 흔히 쓰는 방식처럼 세 개의 짧은 입출력 예시를 API로 제공함
    • 입력 1. → 출력 e4
    • 입력 1. e4 → 출력 d5
    • 입력 1. e4 e5 2. Nf3 Nc6 3. → 출력 Bb5
  • 이 세 예시만으로 결과가 매우 좋아짐
  • 더 많거나 다른 예시가 더 나을 수 있지만, 각 그림을 만들기 위해 매우 많은 쿼리가 필요해 추가 확인은 하지 않음

파인튜닝은 도움되지만 예시와의 조합은 불안정함

  • gpt-4o-minigpt-4o 모두에 파인튜닝을 수행함
  • 데이터 생성 방식은 다음과 같음
    • Stockfish가 최고 난이도로 자기 자신과 100판을 둠
    • 각 게임에서 임의의 한 수를 골라 학습 예시로 사용함
    • 별도로 Stockfish 자가 대국 100판을 검증 데이터로 사용함
  • 파인튜닝 자체는 성능을 개선함
  • 다만 gpt-4o의 첫 파인튜닝 결과가 나빠 보여 더 작은 step size로 다시 실행했고, 이 점은 불안 요소로 남음
  • 예시와 파인튜닝을 결합하면 기대처럼 일관되게 좋아지지 않음
    • 파인튜닝만 있으면 도움이 됨
    • 예시만 있어도 도움이 됨
    • 파인튜닝 뒤 예시를 더하면 거의 효과가 없음
    • 예시가 있는 상태에서는 파인튜닝이 오히려 해로운 결과를 냄

합법 수 목록 제공은 성능을 망침

  • 모델이 가끔 불법 수를 내기 때문에, 현재 가능한 합법 수 목록을 기보 앞에 제공하는 실험을 함
  • system prompt도 합법 수 목록과 부분 기보를 받는 형태로 바꿈
  • 결과는 매우 나빴음
    • 승률이 낮아졌을 뿐 아니라 더 이른 턴부터 실수를 시작함
  • 합법 수 목록 제공은 이후 사용하지 않음

핵심 아이디어: 전체 기보를 반복하게 만들기

  • chat 모델은 special token과 instruction tuning을 통해 <|SYSTEM|>, <|USER|>, <|ASSISTANT|> 같은 대화 형식으로 동작함
  • base 모델은 문자열을 이어 쓰는 completion 모델에 가깝고, PGN 기보도 그런 방식과 더 잘 맞음
  • OpenAI의 gpt-4-base에 직접 접근할 수 없고, gpt-4o를 completion mode로 호출할 수도 없어 직접 비교는 불가능함
  • 대신 gpt-4o가 completion 모델처럼 행동하도록, 다음 수만 내지 말고 전체 게임을 반복한 뒤 새 수를 하나 더 붙이게 함
  • 예를 들어 입력이 1. e4 e5 2.라면 출력이 1. e4 e5 2. Nf7 같은 형태가 되도록 요구함
  • 이 방식은 gpt-4o-minigpt-4o의 체스 성능을 개선함
  • 전체 수순을 반복하게 하면 모델이 좋은 수를 고를 가능성이 높은 문맥을 스스로 만들게 됨
  • 이 결과는 접근 불가능한 gpt-4-base를 completion mode로 호출할 수 있다면 체스를 꽤 잘 둘 것이라는 근거로 작용함

기보 반복, 예시, 파인튜닝의 조합

  • 기보 반복 방식에서도 별도의 파인튜닝 실험을 다시 수행함
    • 입력은 기존처럼 부분 기보
    • 원하는 출력은 입력 기보 전체를 반복한 뒤 다음 수를 붙인 형태
  • 이 방식의 파인튜닝은 약간 도움이 된 것처럼 보임
  • 기보 반복 방식에 맞춰 세 개의 예시도 다시 구성함
    • 입력 1. → 출력 1. e4
    • 입력 1. d4 → 출력 1. d4 d5
    • 입력 1. e4 e5 2. Nf3 Nc6 3. → 출력 1. e4 e5 2. Nf3 Nc6 3. Nf3
  • 적은 정보량에도 예시는 다시 큰 영향을 줌
  • 예시와 파인튜닝을 함께 쓰면 이상한 패턴이 반복됨
    • 파인튜닝에 예시를 더하면 도움이 됨
    • 하지만 예시만 쓴 경우보다 여전히 나쁨

실험 결과와 Elo 추정

  • 실험 결과는 세 부류로 정리됨
    • 좋음: 기보 반복, 예시, 예시 없는 파인튜닝
    • 불명확: 메타데이터, system prompt 반복, 예시와 함께 쓰는 파인튜닝
    • 나쁨: 합법 수 목록 제공
  • 최종 조합은 기보 반복과 예시를 사용하고 나머지는 끈 방식임
  • gpt-4o + regurgitation + examples는 꽤 괜찮지만 gpt-3.5-turbo-instruct만큼 강하지는 않았음
  • 두 모델이 50판을 뒀고, 모든 판에서 gpt-4o가 백을 잡음
gpt-4o 결과 횟수
10
5
35
  • 이 결과는 Elo 차이 약 -191과 일치함
  • 백의 선공 이점이 약 35 Elo로 알려져 있다는 점을 반영하면, gpt-4o + regurgitation + examples는 약 1750 - 191 - 35/2 ≈ 1540 Elo로 추정됨
  • 이는 중급 아마추어 수준으로 평가됨

현재 가설: 데이터와 인터페이스가 함께 작용함

  • 현재 가설은 두 부분으로 나뉨
    • OpenAI의 base 모델은 오픈 모델보다 더 많거나 더 좋은 체스 게임 데이터로 학습됨
    • 최신 OpenAI base 모델은 completion mode에서 체스를 잘 둘 가능성이 있지만, 실제 접근 가능한 chat 모델은 그렇지 않음
  • 오픈 모델들은 base 모델이든 chat 모델이든 체스를 못 두는 것으로 나타났고, 이는 아키텍처 한계보다는 데이터 차이일 가능성이 더 큼
  • 한 논문 A.2 절에는 GPT-4가 PGN 표기의 체스 게임으로 학습됐고, Elo 1800 이상 플레이어의 게임만 포함하도록 필터링했다는 내용이 있음
  • gpt-3.5-turbo-instruct가 같은 데이터를 썼다는 공개 확인은 없지만, PGN 표기로 체스를 두고 측정 Elo가 약 1750이라는 점은 우연처럼 보이지 않음
  • Llama 등 오픈 모델 학습에 체스 데이터가 얼마나 포함됐는지는 확인하지 못함
  • 오픈 인터넷에서 많은 게임이 들어갔을 수는 있지만, 고품질 게임을 대규모로 선별한 데이터베이스가 더 나은 결과를 냈을 가능성이 있음
  • 너무 많은 저숙련 체스 데이터 때문에 모델이 낮은 품질의 수를 예측할 가능성도 있지만, 강한 수순이 이어진 상황에서는 강한 플레이어의 다음 수를 예측해야 하므로 주된 설명은 아니라고 봄

남은 불확실성과 실무적 인상

  • gpt-4o chat mode가 gpt-4-base completion mode보다 약하다면, 원인이 chat interface인지 instruction tuning인지, 또는 둘 다인지는 알 수 없음
  • gpt-4-base를 chat mode처럼 시뮬레이션하면 잘 둘지, gpt-4o를 completion mode로 호출하면 잘 둘지도 실험할 수 없음
  • gpt-4o에서 더 나은 행동을 끌어내는 방법은 더 있을 가능성이 큼
  • 프롬프트, 예시, 파인튜닝의 최적 조합을 찾기는 매우 어려움
    • 탐색 공간이 큼
    • 쉬운 추상화가 없음
    • LLM은 예측하기 어렵고 취약함
    • 실험은 느리고 비용이 많이 듦
  • 같은 최종 레시피를 gpt-4에 적용했을 때는 체스를 잘 두지 못함
  • 찾은 조합은 gpt-4o에 특화됐을 수 있으며, gpt-4에는 다른 프롬프트, 더 많은 예시, 또는 파인튜닝이 필요할 수 있음
  • 이 과정은 공학이라기보다 주문 찾기에 가깝게 느껴질 정도로 모델별 민감도가 큼

댓글과 토론

Hacker News 의견들
  • gpt-3.5-turbo-instruct가 정말 체스를 이해하는지 보려면, 체크메이트가 아닌 무작위 합법 포지션 1000개에서 다음 수를 두게 하면 됨
    이런 포지션은 https://github.com/tromp/ChessPositionRanking로 만들 수 있고, 훈련 데이터에서 봤을 법한 정상 대국과 완전히 다르며 합법 수 선택지가 매우 제한된 경우도 많음
    다음 수의 합법성 테스트에는 좋지만, 보통 한쪽이 압도적으로 유리해서 수의 품질을 구분하는 데는 덜 유용함

    • 체스 라이브스트림에서 들은 흥미로운 점인데, 인간 슈퍼 그랜드마스터도 논리적인 오프닝-중반-엔드게임 흐름에서 나온 게 아닌 극단적으로 이상한 포지션은 평가하거나 푸는 데 매우 어려움을 겪음
      Hikaru가 어떤 포지션을 보고 처음부터 “실황 해설”하듯 어떻게 그 포지션에 도달했는지 보여주는 건 놀라웠지만, 같은 영상에서 이상한 무작위 체스 퍼즐에는 그런 방식이 거의 통하지 않는다고 설명했음
      실제 대국에서 나온 퍼즐이 무작위 생성 퍼즐보다 훨씬 낫고, 최상위 인간에게도 더 말이 됨
    • 시스템이 체스를 이해한다고 주장하면서, 글 아래쪽에서는 10번 시도해도 합법 수를 못 얻어 무작위 수로 대체했다는 점이 꽤 이상함
      체스를 잘 이해하는 사람, 예컨대 Elo 1800 수준이라면 첫 시도에서 합법 수를 내지 못하는 일은 사실상 없음
    • 지금 시점에서는 LLM이 일반적으로 말하는 추론을 달성하지 못한다는 점이 매우 분명해 보임
      진짜 추론에는 상징 논리와 추상화가 필요하다고 볼 수 있는데, LLM은 다음 토큰 예측기임
    • 그 테스트만으로 충분히 증명될까? LLM이 합법 수 집합으로만 학습됐다면, 실제로 추론하지 않고도 각 말이 어떻게 움직일 수 있는지 기능적으로 배웠을 가능성이 있음
      예를 들어 비숍이 항상 대각선으로만 움직이는 걸 봤기 때문에 그런 수만 고려할 수는 있지만, 합법/불법 수 개념을 추론한 건 아닐 수 있음
    • 문제는 LLM이 어떤 포지션에서 수를 두는 법을 배우는 게 아니라, 인터넷 아카이브에는 보통 대국 기록만 있다는 점임
      내부적으로 포지션을 표현하는 무언가를 만들 수도 있지만, 인코딩된 체스 포지션을 줬을 때 그 표현이 자동으로 활성화되지는 않을 것임
  • gpt-3.5-turbo-instruct가 체스를 “이해”하고 “추론”하며 “실제 논리”를 수행한다고 주장한다면, 글에서 말한 고급 아마추어 수준 체스 플레이어 중 불법 수를 두는 사람을 찾아보라고 하고 싶음
    체스를 아는 사람이라면 그런 일은 거의 일어나지 않는다는 걸 확인해 줄 수 있음
    불법 수가 나온 대국 링크가 있는지도 궁금함

    • 전문가 수준 체스 플레이어인데, 내 수준 근처의 여러 사람이 오프라인 클래식 시간제 대국에서 불법 수를 둔 걸 봤음
      나보다 훨씬 높은 수준의 스트리머들도 인터페이스가 불법 수라서 거부하는 걸 깨닫기 전까지 반복해서 불법 수를 시도하는 걸 본 적 있음
    • “체스를 아는 사람은 불법 수를 두지 않는다”는 표현은 다소 부정확함
      YouTube에서 “GM illegal moves”만 검색해도 그랜드마스터가 불법 수를 둔 사례가 모음집으로 나올 만큼 충분히 있음
      예: https://www.youtube.com/watch?v=m5WVJu154F0 — Vidit vs Hikaru 사례가 특히 인상적인데, Vidit이 자기 킹으로 Hikaru의 킹을 공격함
    • LLM 연구자들이 LLM 내부가 실제로 어떻게 작동하는지 살펴보는 문제를 거의 포기한 게 문제임
      LLM이 블랙박스인 한, 규칙을 따라 추론해서 합법 수를 이해한 것인지, 아니면 합법 수 데이터만 많이 학습해서 합법 수를 내는 법만 배운 것인지 알 수 없음
      어느 쪽이 진실이라고 주장할 수는 있지만, LLM이 무엇을 “생각”했는지 실제로 이해할 방법은 전혀 없음
    • LLM이 수순만 받고 포지션을 받지 않는다면 사실상 눈가림 체스를 하는 셈임
      눈가림 체스에서 불법 수를 절대 두지 않으려면 꽤 잘해야 함
    • 이 스레드의 논의가 놀라움
      사람은, 심지어 자기 분야의 저명한 전문가도 실수를 많이 하고, 때로는 매우 비싸고 돌이켜 보면 명백한 실수를 자기 전문 영역에서 저지름
      그런데 인간의 어리석음이 담긴 말뭉치로 학습한 LLM이 체스에서 불법 수를 두면, 뇌는 바로 “나는 체스에서 불법 수를 안 두는데, 컴퓨터가 그러면서 어떻게 체스를 한다는 거지?”라고 반응함
      적어도 메타인지 편향과 일반적 귀인 오류의 완벽한 예로 보임
  • 이 글도 이전 글과 같은 문제가 있음. 저자가 불법 수 빈도에 대한 데이터를 전혀 제공하지 않음
    그래서 의미 있는 결론을 낼 수 없음
    마치 LLM이 전문 의사라고 주장하면서, 잘못된 의학 조언을 한 경우를 데이터에서 모두 걸러낸 것과 비슷함

    • 그게 아주 핵심적이라고 보지는 않음
      불법 수 시도 횟수가 접근법별로 의미 있게 달랐고, 특히 그 차이가 불법 수를 제거한 뒤의 성능과 상관되지 않는다면 흥미롭겠지만, 글의 결론 자체를 크게 흔들지는 않음
      합법 수 집합에서 무작위로 고르면 정말 형편없는 체스 플레이어가 되므로, LLM 출력에서 샘플링했을 때 훨씬 더 잘한다면 LLM이 무언가를 제공하고 있는 건 분명함
      불법 수 시도를 모두 패배로 처리해야 한다며 LLM 단독 능력 정의를 따지는 건 핵심에서 벗어난 느낌임
    • 불법 체스 수는 계산적으로 감지하기 trivial하므로, 잘못된 의학 조언을 걸러내는 것과는 전혀 다름
    • 잘못된 의학 조언을 자동으로 제거하는 스크립트를 쓸 수 있다면 그 비유가 맞을 수 있음
      그렇다면 실제로 “LLM+스크립트”가 전문 의사가 되는 셈이겠지만, 체스의 불법 수에는 가능해도 의학 조언 평가에는 당연히 불가능함
    • 3-turbo-instruct는 8205수 중 불법 수가 대략 5개 이하
      여기에는 없지만 turbo instruct는 예전에 평가된 적이 있음
      https://github.com/adamkarvonen/chess_gpt_eval
    • 예리한 관찰임. 비슷하게 Andrew Ng와 Stanford University 팀도 Nature Medicine에 낸 유명한 심장전문의 수준 논문에서 훈련-테스트 비율 과적합이라는 같은 장난을 쳤음
      훈련 비율이 99%를 넘고 테스트는 1% 미만이라, AI 검증 기본도 통과하지 못함
      대부분의 AI 학회에서는 버티기 어려운 논문이었겠지만, 영향력 지수가 매우 높은 Nature Medicine에 실렸고 의료 AI 분야에서 많이 인용됨
      https://www.nature.com/articles/s41591-018-0268-3
  • “여러 면에서 공학이라기보다 주문을 찾는 일처럼 느껴진다”는 표현은 여전히 LLM 전반에 대한 내 인상과 같음
    작동한다는 점은 놀랍지만, 다음 기술 혁신은 매번 나쁜 SF 영화 속에 있는 느낌을 주지 않는 것이었으면 함

  • “모두가 틀렸다”는 건 아니라고 봄
    나만 이 점을 말한 것도 아니어서 이 이론이 목록에 없던 게 놀라웠는데, 7일 전에도 이렇게 썼음: https://news.ycombinator.com/item?id=42145710
    “공개 벤치마크가 된 것은 무엇이든 훈련 중에 구체적으로 겨냥된다고 봐야 한다.”
    이는 글에서 언급하고 반박한 “부정행위/LLM 출력 대체” 이론과 다름
    후속 글은 이 추측에 힘을 보탬. OpenAI가 오픈 모델보다 더 많고 더 나은 체스 대국 데이터로 기본 모델을 훈련했고, 어떤 논문의 A.2에서는 GPT-4가 Elo 1800 이상 플레이어의 PGN 표기 체스 대국으로 훈련됐다고 OpenAI 저자들이 밝힘
    OpenAI가 사람들이 실제로 시도해 볼 만한 작업의 데이터로 훈련 데이터를 보강하는 건 완전히 말이 됨
    이는 비윤리적이지도 않음. 어떤 데이터셋도 진짜로 “중립적”이지 않으니, 어차피 선택을 해야 한다면 잠재적으로 유용한 답을 잘하도록 훈련하지 않을 이유가 없음

    • 수학과 코드 학습이 논리적 사고의 다른 측면도 개선하는 것처럼, 체스를 잘하게 훈련하면 일반 지능에 도움이 되는지 보기 위해 모델을 훈련했을 수 있다고 제안한 적 있음
      어쨌든 OpenAI는 게임 AI 경험이 많음
      https://news.ycombinator.com/item?id=42145215
    • 이건 조금 편집증적으로 보임
      누군가 블로거가 우연히 1800 Elo 수준의 서툰 성능을 발견해 트윗하길 기대하면서, 엄청나게 비싼 대형 LLM을 거대한 데이터셋으로 훈련하지는 않음
      체스는 Goodhart 대상이 될 만큼 표준 LLM 벤치마크도 아니고, OpenAI는 대체로 지름길이나 부정행위보다 올바른 방식으로 문제를 풀려 해왔음
      GPT 계열은 표준 벤치마크나 반례에 쉽게 과적합할 수 있었고 홍보 가치도 훨씬 컸을 텐데도 심하게 과적합하지 않았음. 예컨대 “딸기 문제” 같은 것에 학습시키는 건 아주 쉬웠을 것임
      반면 일부 다른 LLM 제공자는 암기 방지 논문에서 점수가 훨씬 크게 떨어짐
      또한 해당 데이터셋을 언급한 논문 자체에서 분명한 연구 용도가 있고, 체스는 오라클을 사용할 수 있어 LLM의 지도와 세계 모델링을 분석하는 모델 생물로 관심이 있음
      DeepMind의 초읽기 체스 LLM 논문도 Gemini가 체스 실력을 속여 GCP 마케팅에 쓰도록 하려는 교활한 계획의 일부는 아님
    • OpenAI가 훈련 목표를 바꿨다는 설명이 가장 단순하고 말이 됨
      처음에는 체스가 멋지다고 생각했을 수 있고, 내일은 바둑이나 시 쓰기 능력이 멋지다고 생각할 수도 있음
    • 이런 접근이 더 실용적인 다른 영역에도 쓰였으면 함
      분야와 상관없이 훈련 데이터에 “아마추어” 콘텐츠보다 전문가 콘텐츠를 더 많이 넣는 식임
  • 프롬프트에 “게임에서 이기려고 해라”라는 말이 없는데 결과는 LLM이 얼마나 이기는지로 측정됨
    이게 “당신은 체스 그랜드마스터입니다”라는 프롬프트에 암묵적으로 들어 있는 걸까?
    LLM 훈련 어딘가에 “게임이면 항상 이기려고 한다”는 패턴이 있는 걸까?
    그냥 이기라고 말하면 승률이 올라갈 수 있을까?

    • 의도에 너무 큰 비중을 두는 것 같음. LLM에는 의도가 없고, 가장 그럴듯한 출력을 내도록 훈련된 수학적 모델
      체스 대국 예시와 설명에서 거의 항상 각 플레이어는 이기려 하므로, 이기는 수를 두는 것이 가장 논리적인 출력일 뿐임
      그래서 명시적으로 이기라고 프롬프트해도 성능이 크게 좋아질 것 같지는 않음
      반대로 지는 수나 나쁜 수를 두라고 하면 어떻게 되는지가 흥미로움. 그걸 효과적으로 할 수 있는지, 그리고 수가 여전히 대부분 합법인지 보면 얼마나 기존에 본 개념에 의존하는지 더 드러날 수 있음
    • “당신은 체스 그랜드마스터입니다”라는 프롬프트에 분명히 암묵적으로 포함된다고 봄
      그 문장이 가능한 최선의 수 토큰을 생성할 확률을 높일 것임
    • 프롬프트에 넣어도 그냥 장식에 가까울 것임
      모델의 체스 시퀀스 생성 능력은 훈련 데이터의 대국 풀에 들어 있는 전문성으로 제한됨
      일부 플레이어가 일부러 지려 하는 대국이 섞여 있었다 해도 아마 미미하고, 체스 대국에는 플레이어 의도를 주석으로 달지 않으므로 이기거나 지라고 프롬프트해도 LLM이 그걸 구분해 잡아낼 수 없음
      LLM에게 일부러 지라고 시켜 보면 알 수 있음. ChatGPT는 내 경험상 스콜라 메이트를 당하게끔 스스로를 세팅하려 하지만, 상대가 그걸 받아주지 않으면 암묵적으로 이기려는 듯 상대의 무방비 기물을 잡기 시작함
      “왜?”라고 물으면 늘 그렇듯 사후 합리화를 내놓음
    • 코드 생성을 시킬 때도 “당신은 Python 전문가이고 여기 코드가 있습니다”라고만 하지 않고, 원하는 결과 방향을 말하면 보통 더 나은 결과가 나옴
      그래서 “그리고 이겨라”나 “흑이 이긴다” 같은 표현이 없던 게 놀라웠음
    • 게다가 프롬프트도 “최선의 수”가 아니라 “다음 수를 선택하라”고 되어 있음
      강화학습 때문에 LLM이 인간이 게임에서 져서 기분 나빠하지 않도록 일부러 피하고 있다면 꽤 웃길 것임
  • 프롬프트를 개선한 건 좋지만, 여전히 매우 큰 개선 가능성 두 가지를 빼먹고 있음
    첫째, 수를 제안하기 전에 현재 보드 포지션과 앞으로의 계획을 설명하게 하는 것. 모델이 실제로 더 생각하게 해 주며, o1과 비슷하지만 여기서는 더 집중된 처리를 보장할 수 있음
    둘째, 매 단계마다 ASCII 보드를 실제로 그리게 하는 것. 보드+수 형태가 20수 나열보다 안정적으로 처리하기 쉬워 합법 수가 늘 수 있음

    • ASCII 보드를 그리게 해도 큰 차이는 없을 것 같음
      ASCII 아트 같은 2차원 “그래픽”은 언어 모델에 낯설고, 모델은 텍스트를 줄바꿈을 포함한 토큰 스트림으로 인식하기 때문에 줄 사이의 “수직” 관계가 인간에게 보이는 것처럼 명확하지 않음
      컨텍스트 창에 보드 다이어그램이 있어도 모델이 대국을 추론하는 데 별 도움이 되지 않을 가능성이 큼
      대신 “c5에 흑 나이트”처럼 각 말의 위치를 일반 텍스트로 나열하게 하는 편이 포지션 인식을 강화하는 데 더 적합할 수 있음
    • 2번은 이미 다른 사람들이 말한 이유들 때문에 도움이 될 것 같지 않음
      1번은 확실히 시도할 가치가 있고, 모델별로 통하는 변형도 더 있음
      Anthropic 모델에서는 문서상 XML 표기법으로 입력의 중요한 부분을 라벨링하고 분류하라고 권장함. 이런 부드러운 구조가 Claude 모델 결과를 개선하는 듯하고, 아마 모델이 이를 인식하도록 특별히 훈련됐을 것임
      참고: https://docs.anthropic.com/en/docs/build-with-claude/prompt-...
      Anthropic 모델이라면 최종 프롬프트는 “체스 그랜드마스터다. 태그 안의 미완성 대국을 보고 전체 대국을 반복한 뒤 새 수 하나를 표준 대수 표기법으로 주고, 새 기보를 내기 전에 태그 블록 안에서 추론을 설명하라”는 식이 될 수 있음
      이런 프롬프트는 Anthropic 모델에서 눈에 띄는 개선을 주도록 되어 있음
      아이러니하게도 Claude 3.5 Sonnet을 몇 달간 많이 쓰고도 이걸 몇 주 전에야 발견했음. RTFM은 여전히 유용한 기술임
      OpenAI 모델에도 비슷하게 단순하지만 잘 안 알려진 affordance가 있을 수 있음
    • 사고의 연쇄는 많은 문제에 도움이 되지만, GPT의 체스 성능은 오히려 크게 떨어뜨림
      내 1.5년 전 체스 실험에서는 전체 수순 반복 트릭이 미세조정 없이 가장 좋은 기법이었음
    • 이 표현이 훈련 데이터에서 상대적으로 드물기 때문에 응답을 개선하기보다 악화시킬 가능성이 큼
      결과는 보고 싶지만, 좋아진다면 꽤 놀랄 것 같음
    • 지금까지의 모든 수를 반복하게 했을 때 개선된 것은 LLM에게 생각할 시간과 공간을 더 줬기 때문이라고 봄
      다른 방식으로도 더 많은 시간과 공간을 주면 성능이 더 나아질 수 있다는 가설이 있음
      예를 들어 현재 보드 포지션을 보여주고, 포지션 분석, 핵심 약점과 강점 목록, 가능한 전략 목록, 그중 전략 선택, 마지막으로 수 선택을 하게 하는 식임
      즉 수를 바로 뱉게 하지 말고 정말 생각하게 만드는 것임. 여기서는 예시가 핵심일 것임
      이런 아이디어는 ReAct 논문과 사고의 연쇄 논문에서 잘 작동함이 보였고, 여기에 N번 반복해서 다수결 답이 나올 때 멈추는 방식도 붙일 수 있음. 이는 사고의 연쇄 자기일관성 논문에서 가져온 아이디어임
  • “미세조정은 도움이 되고 예시도 도움이 되지만, 미세조정을 불필요하게 만드는 것은 예시이지 그 반대가 아니다”라는 대목이 매우 흥미로움
    이 특정 사례에서는 단순히 예시 제공이 미세조정과 동등함
    나에게는 큰 발견이라 앞으로 예시를 더 자주 써볼 생각임

    • 직관적으로 매우 맞다고 느껴짐
      이유를 설명하긴 어렵지만 항상 미세조정이 과대평가됐다는 직감이 있었음
      한 가지 이유는 예시가 “바로 거기”에 있어서 미세조정된 뉴런에 비해 암묵적으로 훨씬 큰 가중치를 받기 때문일 수 있음
    • 미세조정보다 예시 제공이 유용하다는 통찰에는 동의함
      이 장난감 사례에서는 그리 중요하지 않지만, 입력에 제공하는 각 예시는 미세조정에 비해 예측 시간과 비용을 늘린다는 점은 기억할 필요가 있음
  • 상용 LLM으로 어둠 속에서 더듬는 식의 실험은 그만해야 함
    이 문제의 바닥을 보려면 체스 대국만으로 LLM을 훈련해 보는 게 흥미로울 것임. Stockfish가 자기 자신과 두게 해서 무한히 합성할 수 있고, 체스 해설과 “보드에 폰이 몇 개 있나?”, “내 룩은 어디 있나?”, “보드를 그려라” 같은 체스 대화 예시를 약간 섞어 보드 표현을 갖고 있는지 보여줄 수 있음
    “창발 현상”이나 일반 언어 능력, 능력을 가진 척하는 능력이 체스 플레이에 필요하다고 믿지 않음. 체스를 잘한다고 다른 것도 똑똑한 건 아니고 그 반대도 마찬가지임
    이런 실험이라면 내가 틀렸다는 걸 증명할 수도 있음
    약 일주일 전에 나온 논문 https://arxiv.org/pdf/2411.06655은 미세조정된 Llama로 좋은 결과를 얻는 듯함
    체스 해설 능력을 다룬 이 논문도 마음에 듦: https://arxiv.org/abs/2410.20811

    • 전문가 체스 정책의 다음 수를 예측하는 건 잘 연구된 모방 학습일 뿐임
      남은 보상을 추가해 네트워크가 좋은 대국과 나쁜 대국에서 어떤 수가 나오는지 학습하게 할 수도 있고, 이는 Decision Transformer 같은 오프라인 강화학습 체계가 됨
      체스 실력은 일반 LLM에는 완전히 쓸모없고 창발 현상도 아니며, 그저 이 멋진 묘기를 위해 그래디언트 대역폭과 매개변수 공간을 소비하는 것이라고 봄
      체스에 특화해 훈련되지 않은 LLM들이 체스를 잘 못한다는 점에서 그게 명확함
  • 체스 수 표현에 최적화된 토크나이저를 만들고, Stockfish 대국으로 LLM을 처음부터 훈련하면 흥미로울 수 있음
    맞춤 토크나이저를 쓰면 같은 모델 크기에서 품질이 좋아질 것임
    인코딩과 디코딩에 많은 층을 낭비하지 않아도 되고, “자연스러운” 잠재 표현도 더 직관적일 수 있음