2 คะแนน โดย GN⁺ 2024-10-19 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • searchless_chess ของ Google DeepMind เป็นอิมพลีเมนเทชันของบทความ NeurIPS 2024 Amortized Planning with Large-Scale Transformers ที่ใช้หมากรุกเพื่อประเมินว่า Transformer ขนาดใหญ่สามารถทำงานด้านการวางแผนได้ดีเพียงใดโดยไม่ต้องใช้การค้นหาแบบชัดเจน
  • ชุดข้อมูลหลัก ChessBench ประกอบด้วยเกมหมากรุก 10 ล้านเกมที่มีคำอธิบายประกอบของตาที่ถูกกติกาและค่าประเมินจาก Stockfish 16 รวมทั้งหมด 15 พันล้านจุดข้อมูล
  • ฝึก Transformer ขนาดสูงสุด 270 ล้านพารามิเตอร์ ด้วย supervised learning และเปรียบเทียบผลกระทบโดยปรับขนาดชุดข้อมูล ขนาดโมเดล ประเภทสถาปัตยกรรม และเป้าหมายการทำนาย
  • โมเดลที่ใหญ่ที่สุดทำนาย action-value บนกระดานใหม่ได้ค่อนข้างแม่นยำ แก้โจทย์หมากรุกยาก ๆ ได้โดยไม่ใช้การค้นหาแบบชัดเจน และทำ Elo 2895 ใน Lichess blitz เมื่อเล่นกับมนุษย์
  • สามารถ distill อัลกอริทึมแบบใช้การค้นหาของ Stockfish ไปสู่ Transformer ขนาดใหญ่ได้ค่อนข้างดี แต่ยังไปไม่ถึงการ distill อย่างสมบูรณ์ ทำให้ ChessBench ยังคงเป็น benchmark สำหรับงานวิจัยต่อไป

เป้าหมายของโปรเจกต์และบริบทของบทความ

  • searchless_chess เป็นอิมพลีเมนเทชันของ Amortized Planning with Large-Scale Transformers: A Case Study on Chess
  • หมากรุกถูกใช้เป็น ปัญหาการวางแผน ตัวแทนใน AI และโปรเจกต์นี้ประเมินประสิทธิภาพของ Transformer ในงานที่การท่องจำไม่มีความหมาย แม้ในสเกลขนาดใหญ่
  • งานวิจัยตรวจสอบในบริบทของหมากรุกว่าสามารถ distill พฤติกรรมของเอนจินหมากรุกแบบใช้การค้นหาไปยัง Transformer ด้วย supervised learning ได้หรือไม่

ชุดข้อมูล ChessBench

  • ChessBench มีตาที่ถูกกติกาและคำอธิบายประกอบค่าประเมินจาก Stockfish 16
    • จำนวนเกมหมากรุก: 10 ล้านเกม
    • จุดข้อมูลทั้งหมด: 15 พันล้านจุดข้อมูล
    • Stockfish 16 ถูกใช้เป็นเอนจินหมากรุกระดับล้ำสมัย
  • ชุดข้อมูลแบ่งตามเป้าหมายการทำนาย
    • Action-Value

    • Behavioral Cloning

    • State-Value

      • puzzles.csv สำหรับการประเมินโจทย์
      • ตัวอย่างขนาดดาวน์โหลดมีดังนี้
      • Train Action-Value: shard แรก 1.2GB, ทั้งหมด 1.1TB, รวม 2148 shard
      • Train Behavioral Cloning: 34GB
      • Train State-Value: 36GB
      • Test Action-Value: 141MB
      • Test Behavioral Cloning: 4.1MB
      • Test State-Value: 4.4MB
      • Puzzles: 4.5MB

โมเดลและการตั้งค่าการทดลอง

  • Transformer ถูกฝึกสูงสุดถึง 270M พารามิเตอร์
  • การฝึกดำเนินด้วย supervised learning บน ChessBench
  • การทดลองเปรียบเทียบผลกระทบของปัจจัยต่อไปนี้
    • ขนาดชุดข้อมูล
    • ขนาดโมเดล
    • ประเภทสถาปัตยกรรม
    • เป้าหมายการทำนาย: state-values, action-values, behavioral cloning
  • โมเดลที่ใหญ่ที่สุดทำนาย action-values บนกระดานใหม่ได้ค่อนข้างแม่นยำ แสดงให้เห็นการ generalize ที่มากกว่าการท่องจำแบบง่าย ๆ

ประสิทธิภาพแบบไม่ใช้การค้นหาและตัวเปรียบเทียบ

  • นโยบายหมากรุกสุดท้ายแก้โจทย์หมากรุกยาก ๆ ได้ โดยไม่ใช้การค้นหาแบบชัดเจน
  • ทำ Elo 2895 ใน Lichess blitz เมื่อเล่นกับมนุษย์ แสดงประสิทธิภาพระดับแกรนด์มาสเตอร์
  • ตัวเปรียบเทียบมี Leela Chess Zero และ AlphaZero รวมอยู่ด้วย
    • ทั้งสองระบบถูกเปรียบเทียบในฐานะโมเดลที่ฝึกด้วย self-play
    • เปรียบเทียบทั้งกรณีที่ใช้การค้นหาและไม่ใช้การค้นหา
  • สามารถประมาณและ distill อัลกอริทึมแบบใช้การค้นหาของ Stockfish ไปยัง Transformer ขนาดใหญ่ได้ดีมาก แต่ การ distill อย่างสมบูรณ์ ยังทำไม่ได้

โครงสร้างรีโพซิทอรีและลำดับการรัน

  • ไดเรกทอรีและไฟล์หลักมีบทบาทดังนี้
    • src/engines: อินเทอร์เฟซของ Stockfish, Leela Chess Zero และเอนจินโครงข่ายประสาท
    • src/transformer.py: Decoder-only Transformer
    • src/train.py: สคริปต์ตัวอย่างสำหรับการฝึกและประเมิน
    • src/puzzles.py: สคริปต์ประเมินโจทย์
    • src/tournament.py: สคริปต์ทัวร์นาเมนต์ Elo
    • src/searchless_chess.ipynb: โน้ตบุ๊กวิเคราะห์พฤติกรรมโมเดล
    • src/tokenizer.py: การ tokenize กระดานหมากรุก
  • checkpoint ที่ฝึกล่วงหน้ามีให้สำหรับโมเดล 9M, 136M, 270M
  • ในโน้ตบุ๊กวิเคราะห์พฤติกรรมโมเดล สามารถทำการวิเคราะห์อย่างการคำนวณอัตราชนะของตาที่ถูกกติกาทั้งหมดได้

การติดตั้งและ dependency

  • สภาพแวดล้อมรันต้องใช้ Python 3.10
  • ติดตั้ง dependency ที่จำเป็นด้วย pip install -r requirements.txt
  • หากมี GPU แนะนำให้ติดตั้ง JAX ที่รองรับ CUDA เพื่อการฝึกที่เร็วขึ้น
    • ตัวอย่างใช้คำสั่งติดตั้ง jax[cuda12_pip] สำหรับ CUDA 12
    • เวอร์ชัน JAX ต้องตรงกับการติดตั้ง CUDA ที่ใช้อยู่
  • ต้องติดตั้งเอนจินและเครื่องมือภายนอก

การประเมินและวิธีใช้

  • การฝึกในเครื่องรันจาก src ด้วย python train.py
    • checkpoint จะถูกบันทึกไว้ที่ /checkpoints/local
  • การประเมินโจทย์รันในรูปแบบ python puzzles.py --num_puzzles 10 --agent=local
  • agent ที่ puzzles.py รองรับมีดังนี้
    • โมเดลที่ฝึกในเครื่อง: local
    • โมเดลที่ฝึกล่วงหน้า: 9M, 136M, 270M
    • Stockfish: stockfish, stockfish_all_moves
    • Lc0: leela_chess_zero_depth_1, leela_chess_zero_policy_net, leela_chess_zero_400_sims
  • การคำนวณ Elo ทำโดยสร้างเกมด้วย python tournament.py --num_games=200 แล้วใช้ BayesElo อ่าน data/tournament.pgn เพื่อคำนวณ

ไลเซนส์และข้อจำกัด

  • ซอฟต์แวร์เผยแพร่ภายใต้ Apache License 2.0
  • น้ำหนักโมเดลอยู่ภายใต้ไลเซนส์ Creative Commons Attribution 4.0
  • ชุดข้อมูลบางส่วนอยู่ภายใต้ไลเซนส์ Creative Commons CC0 public domain ของ lichess.org ส่วนที่เหลืออยู่ภายใต้ไลเซนส์ CC-BY
  • สิ่งที่เผยแพร่ให้มาในสภาพ "AS IS" โดยไม่มีการรับประกันทั้งโดยชัดแจ้งหรือโดยนัย
  • โปรเจกต์นี้ไม่ใช่ผลิตภัณฑ์อย่างเป็นทางการของ Google

1 ความคิดเห็น

 
GN⁺ 2024-10-19
ความคิดเห็นจาก Hacker News
  • อาจจะนอกประเด็นเล็กน้อย แต่ผมสงสัยว่า คอมพิวเตอร์หมากรุกที่ไม่ได้อยู่ระดับ GM ตอนนี้ไปถึงไหนแล้ว
    บางครั้งผมอยากเล่นกับคู่แข่งที่ฝีมือใกล้เคียงกับผม หรือคู่แข่งที่เรตติ้งสูงกว่าผมสัก 100 คะแนนเพื่อใช้ฝึกซ้อม
    เอนจินส่วนใหญ่ทำให้อ่อนลงได้ด้วยการลดความลึกในการค้นหา แต่โดยทั่วไปมันทำงานได้ไม่ค่อยดีนัก ถ้าลดลงพอ ผมก็จะชนะได้ประมาณครึ่งหนึ่งก็จริง แต่เกมส่วนใหญ่ยังให้ความรู้สึกว่าผมโดนกดอยู่ตลอด แล้วเอนจินพลาดหนักหนึ่งหรือสองครั้งจนผมชนะ
    สิ่งที่ต้องการคือคู่แข่งคอมพิวเตอร์ที่เล่นในระดับที่ผมเลือก แต่ให้ความรู้สึกเหมือน ผู้เล่นมนุษย์ทั่วไป ในช่วงเรตติ้งนั้นๆ เลยสงสัยว่ามีเอนจินแบบนี้หรือไม่

    • Maia ทำได้ค่อนข้างดี ลองเล่นด้วยได้บน Lichess
      มีอยู่หลายครั้งที่รู้สึกว่า “เหมือนมนุษย์” จริงๆ เช่น ตกหลุมพรางที่ถ้าเป็นอัลกอริทึมค้นหาแบบดั้งเดิมก็น่าจะหลบได้ง่าย แต่มนุษย์มีโอกาสติด
      ปรับแต่งไม่ได้ แต่มีอยู่หลายเวอร์ชันที่เรตติ้งต่างกัน อย่างไรก็ตามช่วงเรตติ้งไม่ได้กว้างมาก
      https://www.maiachess.com/
      https://lichess.org/@/maia1
    • ผมเคยทำอะไรคล้ายๆ กันไว้: chessmate.ai ถ้าเรตติ้งผู้เล่นไม่สูงเกินไปก็ทำงานได้ดี
      ยิ่งเรตติ้งผู้เล่นสูงขึ้น การคาดเดาตาถัดไปก็ยิ่งยากขึ้น เพราะต้องโมเดลไม่ใช่แค่การเลือกตาที่ดูเป็นธรรมชาติ แต่ต้องโมเดล กระบวนการค้นหา เองด้วย
      ยังสามารถฝึกจากบันทึกเกมของผู้เล่นคนใดคนหนึ่งโดยเฉพาะเพื่อทำให้เป็นส่วนตัวมากขึ้นได้
      ใช้แนวทางคล้าย Maia แต่เป็นโครงข่ายประสาทคนละแบบกัน จึงมีประสิทธิภาพในการทำนายตาให้ตรงกันดีกว่าเล็กน้อย และผมยังใส่อัลกอริทึมเพิ่มค่าสูงสุดของค่าคาดหวังเข้าไป เพื่อให้บ็อตเจาะจุดพลาดของผม
    • การชนะในหมากรุกสุดท้ายก็เป็นแบบนั้นแหละ คือ ลดความผิดพลาดให้น้อยที่สุด
    • นานมาแล้วผมเคยใช้ เอนจิน Fritz ของ ChessBase ซึ่งมีฟีเจอร์สปาร์ริง ถ้าคุณเล่นได้แน่นพอ ระหว่างเกมมันจะเปิดโอกาสแบบโจทย์แท็กติกให้ และสามารถเปิดหรือปิดคำเตือนได้
      ถ้าเล่นไม่นิ่งพอ ก็แพ้ไปเลย
      เท่าที่ผมดู ฟีเจอร์นี้ดูเหมือนจะหายไปแล้ว มันให้ความรู้สึกเหมือนพลาดแบบมนุษย์เมื่อโดนกดดัน ต่างจากการเล่นเหมือนคอมพิวเตอร์แล้วสุ่มเดินโง่ๆ เป็นบางครั้ง เป็นคอมพิวเตอร์ตัวเดียวที่ผมรู้สึกว่าเหมือนคู่แข่งจริงๆ
    • เพราะอย่างนั้นผมเลยไม่ค่อยชอบการชนะในเกมมัลติเพลเยอร์ ปกติเมื่อชนะ มันมักรู้สึกว่าคู่แข่งเล่นแย่แบบน่าขันหลายครั้ง หรือคู่แข่งเล่นดีแต่ผมโชคดีเกินไปอยู่ไม่กี่ครั้งจนชนะ
      ความรู้สึกว่าอีกฝ่ายก็เล่นดี แต่โดยรวมแล้วผมเล่นดีกว่านิดหน่อยจึงชนะอย่างสมควรนั้นเกิดขึ้นได้น้อยมาก
      แทบทุกครั้งมันดูเหมือนไม่ใช่ผมชนะ แต่เป็นอีกฝ่ายแพ้ เรื่องนี้ไม่ใช่ปัญหาของ AI เท่านั้น
      ถ้าสร้าง AI ที่แพ้ให้อย่างน่าพอใจใน เกมสมมาตร และทำให้การแพ้เป็นประสบการณ์การเรียนรู้ที่น่าพอใจได้ นั่นจะเป็นธุรกิจมูลค่า 1 พันล้านดอลลาร์ ผมคิดว่าทำได้ยากถ้าไม่มีงานวิจัยจิตวิทยาอย่างจริงจัง
  • ผมเคยบรรยายเรื่องนี้ และเขียนสรุปเนื้อหาบรรยายไว้ด้วย[1] งานวิจัยชิ้นนี้เป็นตัวอย่างที่ดีของ knowledge distillation
    มันไม่เชิงเป็นงานวิจัยเกี่ยวกับหมากรุกเอง แต่ใกล้เคียงกับงานที่แสดงให้เห็นว่า ฟังก์ชันค้นหาไม่เชิงเส้นที่ซับซ้อนซึ่งผู้เชี่ยวชาญปรับแต่งไว้ สามารถถูกกลั่นออกมาเป็น โมเดล Transformer ที่แทบจะเป็นเชิงเส้น เมื่ออินพุตถูกทำให้เป็นมาตรฐานแบบหมากรุก
    [1]: https://hlfshell.ai/posts/deepmind-grandmaster-chess-without...

    • ผมคิดว่าควรมองผลลัพธ์เมื่อเจอกับมนุษย์อย่างระมัดระวังพอสมควร นี่เป็น เกมบลิตซ์ และ Elo ของเอนจินนี้สูงกว่ามากเมื่อเล่นกับมนุษย์ เมื่อเทียบกับตอนเล่นกับบ็อตอื่น
      ดังนั้นเวลาอาจเป็นปัจจัยสำคัญ มนุษย์มีโอกาสแพ้เวลา หรือพลาดเมื่อเหลือเวลาน้อย
      จุดที่มันเรียนรู้ฟังก์ชันประเมินผลที่ดีมากได้แม้ไม่มีการค้นหายังคงน่าทึ่ง แต่ผมอยากให้ตัดเกมที่ Stockfish fallback ทำงานออกไปดูด้วย สำหรับมนุษย์ เมตใน 2 ตากับเมตใน 10 ตาก็เป็นความต่างระหว่างชนะกับเสมอ/แพ้ในแง่การแพ้เวลา
      ผมอยากเห็นการดวลตรงๆ กับ Stockfish ที่จำกัดความลึกการค้นหาด้วย แบบนั้นน่าจะพอทำให้รู้คร่าวๆ ได้ว่าฟังก์ชันประเมินผลนี้กลั่นส่วนใดของ search tree มาได้มากแค่ไหน
  • สำหรับคนที่อยากเริ่มต้นกับโครงข่ายประสาทสำหรับหมากรุก ขอแนะนำรีโปนี้อย่างยิ่ง: https://github.com/sgrvinod/chess-transformers
    เป็นโค้ด PyTorch ที่อ่านง่าย ทำตามแนวทางการใช้งานมาตรฐาน และโครงสร้างก็คล้ายกับโครงข่ายประสาทหมากรุกที่ทำผลงานดีในปัจจุบัน

  • https://lczero.org/blog/2024/02/how-well-do-lc0-networks-com...
    เป็นบทความที่ผู้เขียนเอนจินหมากรุกแบบโครงข่ายประสาทที่ดีที่สุดเขียนถึง งานวิจัยของ DeepMind ชิ้นนี้

    • หลังจาก Stockfish เพิ่ม NNUE ในปี 2020 แล้ว LC0 ก็ไม่ใช่เอนจินหมากรุกแบบโครงข่ายประสาทที่ดีที่สุดอีกต่อไป
  • ชุดข้อมูลสังเคราะห์ขนาดมหึมาที่ใช้ฝึก สุดท้ายแล้วก็สร้างขึ้นด้วยการค้นหาแบบดั้งเดิมจำนวนมากอยู่ดี จึงมีแง่ที่ชวนขำอยู่บ้าง แต่ก็ยังเจ๋งอยู่ดี

    • นี่คือ knowledge distillation หลังจากนั้นก็สามารถใช้โมเดลที่เล็กกว่าและมีประสิทธิภาพกว่าแทนโมเดลใหญ่ได้
    • กลับกัน มันแสดงให้เห็น ข้อจำกัดของโครงข่ายประสาท สมองมนุษย์เรียนรู้ได้จากตัวอย่างที่น้อยกว่านี้มาก
    • การค้นหาทำไปแค่ครั้งเดียว ถ้านำประสิทธิภาพแบบนี้ไปใช้กับความรู้อื่นๆ ได้ ก็ถือว่ามีอะไรบางอย่างจริงๆ
  • ผมจำได้ว่า Matthew Sadler ซึ่งเป็น GM และนักเขียนหมากรุก เคยตั้งค่า Leela Zero สำหรับเกมฝึกซ้อมให้เล่นแทบจะด้วยสัญชาตญาณล้วนๆ โดยให้ค้นหาน้อยมากหรือไม่ค้นหาเลย
    ปกติเขาจะชนะ แต่ก็ไม่ใช่ทุกครั้ง อาจจะอยู่ใน The Silicon Road to Chess Improvement

    • เขายังมีวิดีโอใน YouTube ที่สนุกมากด้วย โดยตั้งค่า contempt ไว้สูงมากเพื่อให้ Leela พยายามหลีกเลี่ยงการเสมอให้มากที่สุด แล้วแสดงให้เห็นว่ามันค้นพบโอเพนนิงแปลกๆ อะไรบ้าง พร้อมคำบรรยายระดับ 2700+
    • ถ้าเป็น lczero ก็แค่ตั้งค่าความลึกสูงสุด เช่น 1 ply ก็ได้
  • ถ้าสร้างข้อมูลฝึกโดยรัน Stockfish กับทุกตำแหน่งบนกระดานในทุกเกม สุดท้ายแล้วก็เท่ากับกำลัง encode search tree ลงในโมเดล Transformer ไม่ใช่หรือ?
    ถ้าอย่างนั้น ยิ่งเพิ่มจำนวนพารามิเตอร์ของโมเดล ก็ยิ่งบรรจุ search tree ได้มากขึ้นและประสิทธิภาพก็ดีขึ้น แต่มันดูไม่น่าสนใจเท่าไร

    • ผมไม่แน่ใจว่าการ encode search tree แบบนี้จะเป็นไปได้อย่างไร
  • repository นี้มี implementation ของบทความของเรา Grandmaster-Level Chess Without Search: https://arxiv.org/abs/2402.04494
    ความก้าวหน้าครั้งใหญ่ของแมชชีนเลิร์นนิงในช่วงหลังมักมาจาก scale เป็นหลัก กล่าวคือสถาปัตยกรรมขนาดใหญ่ที่อิง attention และชุดข้อมูลขนาดมหาศาลอย่างไม่เคยมีมาก่อน บทความนี้ศึกษาผลกระทบของการเรียนรู้ขนาดใหญ่ในหมากรุก
    ต่างจาก chess engine แบบดั้งเดิมที่พึ่งพา heuristic ซับซ้อน การค้นหาอย่างชัดเจน หรือการผสมผสานทั้งสองอย่าง เราใช้ supervised learning ฝึก โมเดล Transformer 270 ล้านพารามิเตอร์ ด้วยชุดข้อมูลเกมหมากรุก 10 ล้านเกม
    แต่ละกระดานในชุดข้อมูลถูกใส่ annotation เป็นค่าของการกระทำโดยเอนจิน Stockfish 16 ที่แข็งแกร่ง ทำให้มี data point ประมาณ 15 พันล้านรายการ
    โมเดลที่ใหญ่ที่สุดทำคะแนน Lichess blitz Elo 2895 เมื่อแข่งกับมนุษย์ และแก้ปริศนาหมากรุกยาก ๆ ได้โดยไม่ต้องมีการปรับแต่งเฉพาะโดเมนหรืออัลกอริทึมค้นหาอย่างชัดเจน
    นอกจากนี้ยังเหนือกว่า policy/value network ของ AlphaZero ที่ไม่มี MCTS และ GPT-3.5-turbo-instruct ด้วย จากการสำรวจขนาดของโมเดลและชุดข้อมูลอย่างเป็นระบบ พบว่าความสามารถเล่นหมากรุกที่แข็งแกร่งจะปรากฏเมื่อมีขนาดใหญ่เพียงพอเท่านั้น และยังทำ ablation experiment อย่างกว้างขวางกับทางเลือกด้านการออกแบบและไฮเปอร์พารามิเตอร์ด้วย

    • แต่ Lichess blitz Elo เมื่อแข่งกับบ็อตจะต่ำกว่าการแข่งกับมนุษย์ประมาณ 700 คะแนน
  • ถ้ามีเอนจินที่คิดเหมือนมนุษย์มากกว่านี้ก็คงดี วิธีนี้ใช้ บันทึกเกมที่ Stockfish ใส่ annotation ดังนั้นโดยพื้นฐานแล้วน่าจะทำให้คิดเหมือนคอมพิวเตอร์
    ถ้าคิดเหมือนมนุษย์ได้ มันจะเหมาะมากสำหรับการรีวิวเกม โดยช่วยชี้ในแต่ละตำแหน่งว่าควรมองอะไร ตามระดับ Elo ของผม

    • หรือจะมีโมเดลที่วัดประสิทธิภาพด้วย ประสิทธิภาพการเรียนรู้ ก็น่าสนใจ กล่าวคือดูว่าต้องเล่นกี่เกมจึงจะไปถึงระดับ X ได้
      เหตุผลที่ Magnus Carlsen ยอดเยี่ยมคือ เมื่อเทียบกับคอมพิวเตอร์แล้ว เขามาถึงระดับฝีมือหมากรุกปัจจุบันได้ภายใต้ข้อจำกัดด้านเวลาและการคำนวณที่มหาศาล ประสิทธิภาพการเรียนรู้ของเขาโดดเด่นเมื่อเทียบกับ chess engine ใด ๆ
    • ในทางกลับกันก็มีปลายอีกด้านของสเปกตรัมด้วย กรณีที่หน่วยความจำ ขนาดโปรแกรม และเวลาคำนวณถูกจำกัดอย่างสุดขีด: https://rlc-chess.com/
      ให้ความรู้สึกเหมือนโปรแกรมใน demoscene จริง ๆ แล้วก็มี โปรแกรมหมากรุกขนาด 1KB ที่ทำงานได้จริงอยู่ด้วย
  • ถ้าแก้หมากรุกได้สมบูรณ์ จะได้ tree ที่ใหญ่เกินกว่าจะคำนวณได้ในปัจจุบัน ผมจำได้คร่าว ๆ ว่าประมาณ 10^80 แต่อาจจำผิดก็ได้
    ถ้าใส่ annotation ให้ tree นั้นเป็นชนะ/แพ้/เสมอ ก็จะมีผู้เล่นที่เล่นได้เหมาะที่สุดโดยไม่ต้องค้นหา
    แนวทางที่ชัดเจนสองทางสำหรับการบีบอัดและการปรับให้เหมาะสมคือ การประมาณ tree หรือการประมาณ annotation วิธีทั้งสองจะทำงานได้ดีแค่ไหนขึ้นอยู่กับโครงสร้างของ tree เป็นอย่างมาก
    ผลลัพธ์นี้ดูเหมือนจะแสดงให้เห็นว่า game tree ของหมากรุกเข้ากับสองแนวทางนี้ได้ดีเพียงใด มากกว่าจะแสดงพลังสัมบูรณ์ของแนวทางการเรียนรู้เอง ข้อสรุปที่ผมได้คือ การประมาณ tree นั้นอย่างสมเหตุสมผลสามารถทำได้ด้วย ข้อมูลขนาด 270 ล้านคำ

    • เวอร์ชันที่แม่นยำของเทคนิคนี้ถูกใช้ใน endgame ของหมากรุกอยู่แล้ว และเรียกว่า tablebase
      หมากรุกถูกแก้แล้วเมื่อเหลือตัวหมากบนกระดาน 7 ตัว ด้วยฐานข้อมูลขนาด 18.4TB ซึ่งอธิบายไว้ที่นี่: https://lichess.org/@/lichess/blog/7-piece-syzygy-tablebases...