สร้างเครื่องมือหมากรุก, การเรียนรู้ของเครื่องกับเครื่องมือแบบดั้งเดิม?


17

ฉันเป็นทั้งผู้เล่นหมากรุกตัวยงและโปรแกรมเมอร์คอมพิวเตอร์ ฉันจะบอกว่าการเล่นหมากรุกและการเขียนโปรแกรมเป็นสองสิ่งที่ฉันใช้เวลาทำมากที่สุด โดยธรรมชาติฉันต้องการสร้างเครื่องยนต์ของตัวเองและท้ายที่สุด Lichess bot

เมื่อปีที่แล้ว AlphaZero มีประสิทธิภาพในการป้องกันสต็อคฟิชเมื่อปีที่แล้วฉันกำลังพิจารณาว่าฉันควรสร้างเครื่องมือนี้ด้วยการเรียนรู้ด้วยเครื่อง (เครือข่ายประสาทบางประเภทอาจใช้ Tensorflow) หรือการเข้ารหัสแบบยาก

ฉันคุ้นเคยกับเครือข่ายประสาทน้อยกว่าการเข้ารหัสแบบอื่น ยังคงเป็นวิธีที่ดีสำหรับฉันที่จะเรียนรู้ที่จะทำงานกับเครือข่ายประสาท

อีกสิ่งที่ฉันกำลังพิจารณาคือเป็นสิ่งสำคัญหรือไม่ที่ฉันต้องใช้รหัสในการเขียนโปรแกรม ฉันรู้ว่าโปรแกรมหมากรุกจำนวนมากใช้ C ++ ซึ่งฉันไม่เคยใช้มาก่อน ฉันใช้ภาษาที่ใช้ภาษา C อื่น ๆ ซึ่งทำสิ่งเดียวกันหลาย ๆ อย่างโดยส่วนใหญ่มีไวยากรณ์ที่แตกต่างกัน ฉันคุ้นเคยกับ Swift และ Javascript มากที่สุด แต่ฉันก็คุ้นเคยกับ Python และรู้สึกว่ามันสามารถใช้กลอุบายให้ฉันได้

ดังนั้นในแง่ของการสร้างเอ็นจิ้นหมากรุกที่แข็งแกร่งที่สุดที่เป็นไปได้ฉันควรไปที่โครงข่ายประสาทเทียมหรือรหัสฮาร์ดโค้ด


4
พวกเขาสำคัญกับเครื่องยนต์ AI ใหม่ไม่ใช่ NN มากเท่าการเรียนรู้เสริม RL มีหัวข้อที่ซับซ้อน แต่มีแหล่งข้อมูลเบื้องต้นที่ดีทางออนไลน์เช่นการบรรยาย RL ของ David Silver ที่ UCL (สไลด์บนเว็บไซต์และการบรรยายบน YouTube เขาทำงานกับ Deepmind และ alphago ที่มีเนื้อหาครอบคลุมในการบรรยายครั้งสุดท้ายคุณอาจพัฒนา AI ที่น่าสนใจ เอ็นจิ้นที่ไม่มี NN โดยใช้ฮิวริสติกแบบเข้ารหัสยากและ RL นี่คือวิธีเริ่มต้น alphago!
asac - Reinstate Monica

มันไม่ใช่หมากรุก แต่หนังสือ "การเรียนรู้อย่างลึกซึ้งและเกมไป" เมื่อเร็ว ๆ นี้แสดงวิธีการใช้ NNs สำหรับเกมเอ็นจิ้น Alpha-Go และ Alpha-Zero คล้ายกันภายใต้ประทุน
John Coleman

ด้วยประสบการณ์ Python ของคุณมันอาจคุ้มค่าที่จะดูที่ Nim
Darren H

ถ้าคุณต้องการไปที่ NN สิ่งนี้น่าสนใจ: arxiv.org/abs/1509.01549นอกจากนี้ยังมีรหัสใน github :)
Ant

@ อย่าสังเกตว่ายีราฟนั้นไม่เคยแข็งแกร่งมากเมื่อเทียบกับเครื่องยนต์ยอดนิยม (~ 2800 elo)
ออสการ์สมิ ธ

คำตอบ:


8

ขั้นแรก: กำหนดเป้าหมาย / เหตุผลของคุณ

ฉันคิดว่านี่เป็นปัจจัยที่สำคัญ ข้อใดเหมาะกับคุณที่สุด (เลือกเพียงอันเดียว )

  1. คุณต้องการสนุกกับงานเขียนโค้ดที่ท้าทายและท้าทาย
  2. คุณต้องการสร้างเครื่องมือหมากรุกที่ดีมาก
  3. คุณต้องการเรียนรู้เกี่ยวกับกลไกการทำงานของหมากรุก
  4. คุณต้องการเรียนรู้ / ฝึกทักษะการเขียนโค้ด
  5. คุณต้องการเรียนรู้ / ใช้แนวคิด / ทฤษฎีวิทยาการคอมพิวเตอร์ (เช่นการเรียนรู้ของเครื่อง)
  6. (อื่น ๆ )

IMO เป็นเรื่องดีที่จะ "โยนเหรียญ" เพื่ออะไรก็ตามยกเว้น 2 สำหรับคนอื่น ๆ คุณจะบรรลุเป้าหมายของคุณไม่ว่าคุณจะเลือก ML หรือการเข้ารหัสแบบยาก อย่างไรก็ตามคุณอาจต้องการเปรียบเทียบระหว่างตัวเลือกที่จะช่วยคุณตัดสินใจ

กรณีสำหรับการเข้ารหัสยาก

การเล่นหมากรุก (เป็นมนุษย์) เกี่ยวข้องกับการคิดเชิงตรรกะ คุณสำรวจพื้นที่ของการกระทำที่เป็นไปได้ที่คุณและคู่ต่อสู้สามารถทำได้ สิ่งนี้ได้วางภาคสนามที่เรียกว่าทฤษฎีเกมซึ่งมีกรอบทางทฤษฎีสำหรับการวิเคราะห์เกมโดยทั่วไป

หากคุณสนุกกับการทำงานกับรายละเอียดและมีความเฉพาะเจาะจงและให้เหตุผลเกี่ยวกับสิ่งต่าง ๆ สิ่งนี้อาจใช้ได้ดีสำหรับคุณ ในการเปรียบเทียบการเรียนรู้ของเครื่องนั้นเกี่ยวข้องกับอัลกอริทึม "กล่องดำ" มากขึ้นซึ่งคลุมเครือและทึบแสง คุณไม่รู้แน่ชัดว่าเกิดอะไรขึ้น

นอกจากนี้ฉันคิดว่าคุณจะมีเวลาง่ายขึ้น "คิดออกเอง" ถ้าคุณไปเส้นทางเข้ารหัสยากมากกว่าการเรียนรู้เครื่อง สิ่งที่คัดลอกวางน้อยกว่าที่คุณไม่เข้าใจ

กรณีสำหรับการเรียนรู้ของเครื่อง

มันอาจเป็นเรื่องที่น่าตื่นเต้นที่จะให้กำเนิดสิ่งมีชีวิตและเฝ้าดูชีวิตของมันเอง ในขณะที่การเข้ารหัสอย่างหนักนั้นเกี่ยวกับความแม่นยำและรายละเอียดการเรียนรู้ของเครื่องมีความยืดหยุ่น กำจัดเซลล์ประสาทออกไปและผลลัพธ์ก็น่าจะคล้ายกัน

Hard-coding นั้นเกี่ยวกับการเรียนหมากรุก การเรียนรู้ด้วยเครื่องจักรเป็นเรื่องเกี่ยวกับการศึกษาสิ่งมีชีวิตที่คุณสร้างขึ้น

และแน่นอนว่าการเรียนรู้ของเครื่องนั้นเป็นหัวข้อที่ร้อนแรงมาก

ตัวเลือกภาษาสำหรับฮาร์ดโค้ด

ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "ภาษาที่ใช้ภาษา C อื่น ๆ " C ++ เป็นภาษาหลักเดียวที่เป็นสิ่งที่ชอบซีประโยชน์ของ C / C ++ ก็คือพวกเขาได้อย่างรวดเร็ว ถึงแม้ว่าภาษาอื่น ๆ จะใช้เวลานานหลายปี แต่ C ++ ก็ยังคงให้เงินกับพวกเขาอยู่

C ++ ไม่ใช่เรื่องง่าย คุณจะได้รับประสิทธิภาพที่ยอดเยี่ยมจากภาษาที่รวบรวมทันสมัยเช่น Rust, Golang หรือ Swift แต่มันก็ไม่ควรเลวร้ายไปกว่านี้หากคุณใช้ภาษา JIT นั่นคือไม่ใช้ล่าม CPython ใช้ IronPython หรือ Jython หรือ Node หรือ C # หรือ Java

การเขียนโปรแกรม GPU ต้องการวิธีการที่แตกต่างกันและฉันจะแนะนำกับมันในตอนนี้

ตัวเลือกภาษาสำหรับการเรียนรู้ของเครื่อง

ปัญหากับ TensorFlow คือมันอยู่ในระดับต่ำมาก มันเป็นเรื่องของการเขียนอัลกอริธึมการเขียนตัวเลข (ซึ่งสามารถทำฟาร์มกับฮาร์ดแวร์แบบขนาน) ได้มากกว่าเกี่ยวกับอินเตอร์เฟสที่อุทิศให้กับการเรียนรู้ของเครื่อง

แน่นอนว่ามันเป็นประสบการณ์การเรียนรู้ที่ยอดเยี่ยม! และแน่นอนว่าการเรียนรู้ในวันนี้คุ้มค่าอย่างยิ่ง อย่างไรก็ตามคุณอาจต้องการเริ่มต้นด้วย Keras หรือ PyTorch


1
นี่คือการตอบสนองที่ยอดเยี่ยมจริงๆทำให้ได้ทุกจุดที่ฉันกล่าวถึง มันยากที่จะบอกว่าทำไมฉันถึงต้องการสร้างเครื่องยนต์ ในความเป็นจริงฉันมีแนวโน้มที่จะไม่แข่งขันกับไลค์สต็อกปลาโคโมโดและลีลา (เหมือนฉันเป็นแค่นักศึกษาวิทยาลัยเท่านั้น) ยังคงเป็นเรื่องสนุกที่จะเห็นงานของฉันวางตัวแบบเผชิญหน้ากับเครื่องมืออื่น ๆ และไม่ถูกบดขยี้ทุกครั้ง แม้ว่าเหตุผลหลักของฉันคือการสร้างเครื่องมือที่แข็งแกร่งฉันอาจจะได้เรียนรู้ภาษาการเขียนโปรแกรมใหม่และพัฒนาความรู้หมากรุกของฉันเป็นผลิตภัณฑ์ด้านการสร้างเครื่องยนต์
David Chopin

1
ฉันคิดว่ามากกว่าสิ่งใดที่ฉันต้องการสิ่งที่ฉันสามารถทำ, บำรุง, และปรับแต่งในระยะยาว ฉันต้องการโครงการที่จะบอกฉันว่าโค้ดของฉันดีแค่ไหน (ชนะ / วาด / ขาดทุน ELO และอื่น ๆ )
David Chopin

1
นี่เป็นคำตอบที่น่าสนใจมาก แต่คุณแนะนำให้ใช้ Node over Cpython ในเรื่องของประสิทธิภาพหรือไม่
Evpok

> "C ++ เป็นภาษากระแสหลักเดียวที่มีลักษณะเหมือน C. " ค#? สนิม? Java? มีหลายภาษาที่อย่างน้อย "อะไรก็ได้เช่น C"
Maaark

ฉันใช้คำว่า "like C" เพื่อรวบรวมภาษาที่ได้รับการปรับให้เหมาะสมและมีประสิทธิภาพสูงพร้อมกับไวยากรณ์แบบ C C #, Java และ PHP ทั้งหมดใช้เครื่องเสมือนโดยโค้ดของพวกเขาถูกคอมไพล์ลงใน opcodes แทนที่จะเป็น bytecode เฉพาะ CPU (และการคอมไพล์ของ PHP นั้นโปร่งใสอย่างสมบูรณ์เช่น Python และ Bash) และสนิมไม่ใช่สิ่งสำคัญ เฉพาะ C ++ เท่านั้นที่ "เหมือน C" ในส่วนนี้แม้จะใช้รูปแบบไวยากรณ์ร่วมกับภาษาหลักอื่น ๆ
Ghedipunk

24

หากคุณพยายามทำให้เครื่องยนต์แข็งแกร่งที่สุดให้ไปกับเอ็นเอ็นเอ็นอย่างแน่นอน

เอ็นจิ้นแบบดั้งเดิมนั้นยอดเยี่ยม - สต็อคฟิชยังคงเป็นเครื่องยนต์ที่แข็งแกร่งที่สุดในโลกบนฮาร์ดแวร์ที่มีฉันทามติที่เท่าเทียมกัน - แต่มันยากที่จะเขียน เครื่องยนต์เหล่านี้ไม่สามารถไปถึงได้ในชั่วข้ามคืน พวกเขาใช้เวลาหลายปีและหลายปีในการทำงาน Stockfish ตัวอย่างเช่นได้รับการอย่างต่อเนื่องดึงดูด elo เวลาหกปี หากคุณเริ่มต้นจากศูนย์คุณจะไม่เข้าใกล้ความแข็งแกร่งของ Stockfish อย่างรวดเร็ว ในความเป็นจริงคุณมีแนวโน้มที่จะหยุดหลายร้อย elo จากที่ Stockfish ปัจจุบันคือ สำหรับการเปรียบเทียบเอ็นจิ้นผู้เขียนเดี่ยวที่แข็งแกร่งที่สุดในตอนนี้คือEthereal , LaserและXiphos (ฉันละเลย Houdini & Fire เนื่องจากไม่ใช่โอเพ่นซอร์ส) เครื่องมือเหล่านี้อ่อนแอกว่า Stockfish อย่างมาก

ทำไมพวกเขาถึงอ่อนแอกว่านี้มาก? เหตุผลสองประการ:

  1. ในระดับนี้การพัฒนาเครื่องยนต์ต้องใช้พลังการคำนวณมากมาย สิ่งที่คุณทำคือดูรหัสของคุณและระบุแนวคิดที่อาจได้รับ elo ตัวอย่างความคิดคือ "ถ้าเรารู้ว่าท่านี้น่าจะดีอย่าค้นหากิ่งไม้ที่ย้อนกลับท่านั้น" (ถ้าสิ่งนี้ไม่สมเหตุสมผลกับคุณนั่นหมายความว่าจะต้องมีช่วงการเรียนรู้สูงเช่นกัน) จากนั้นคุณเขียนแพทช์ที่ใช้ความคิดและทดสอบเอนจิ้นที่ดัดแปลงกับเวอร์ชั่นก่อนหน้า ในระดับนี้มันต้องใช้เวลาหลายหมื่นเกมเพื่อให้ได้ขนาดตัวอย่างที่ใหญ่พอที่จะบอกได้ว่าแพทช์มีประสิทธิภาพหรือไม่ การเล่นเกมเหล่านี้ต้องใช้พลังการคำนวณจำนวนมาก Stockfish มีการเข้าถึงฮาร์ดแวร์สุด: ณ เวลาที่เขียนที่ Stockfish ทดสอบพื้นFishtestingกำลังทำงานกับ 1,038 แกน สำหรับการเปรียบเทียบคอมพิวเตอร์เดสก์ท็อปทั่วไปอาจมี 4-8 คอร์

  2. อีกเหตุผลคือสต็อคฟิชได้รับการสนับสนุนจากสมองหลาย ๆ ณ เวลาที่เขียนมี 8 แพทช์ที่เขียนโดย 5 คนกำลังถูกทดสอบ หากคุณดูประวัติของโปรแกรมแก้ไขคุณจะพบนักพัฒนาซอฟต์แวร์จำนวนมากที่เคยเขียนโปรแกรมแก้ไข ฉันไม่ทราบว่ามีนักพัฒนา Stockfish ที่ใช้งานอยู่มีเท่าไร แต่แน่นอนว่า> 20

ในทางกลับกันเครื่องยนต์ NN (ค่อนข้าง) จะเข้าถึงจุดแข็งที่อยู่เหนือ Ethereal / Laser / Xiphos ได้ง่าย ดูตัวคุณเองในการแข่งขันTop Chess Engine Championship ครั้งล่าสุด ไม่มีตัวตน / เลเซอร์ / Xiphos อยู่ในลีก 1 ซึ่งเป็นที่น่าเชื่อถือพอ แต่เครื่องยนต์ในส่วนบน (Division P) คือ:

  • Stockfish (เครื่องยนต์แบบดั้งเดิมที่ได้รับการสนับสนุนโดยชุมชนทำงานด้วย Fishtesting)
  • Komodo (เอ็นจิ้นการค้าแบบดั้งเดิมมีผู้พัฒนาเต็มเวลา)
  • Komodo MCTS (เครื่องยนต์กึ่งพาณิชย์เชิงพาณิชย์มีผู้พัฒนาเต็มเวลา)
  • ฮูดินี่ (เครื่องยนต์แบบดั้งเดิมเชิงพาณิชย์เป็นความพยายามแบบคนเดียวยังไม่ได้รับการปรับปรุงเป็นเวลาสองปี)
  • Leela Chess Zero (เอ็นเอ็นเอ็นเอ็นเอ็นจากชุมชนที่ได้รับการสนับสนุนทำงานด้วยแอนะล็อกของ Fishtesting หรือที่รู้จักกันในชื่อฮาร์ดแวร์จำนวนหนึ่ง)
  • AllieStein (เครื่องยนต์เอ็นเอ็น 2 คน)
  • Stoofvlees (เอ็นเอ็นเอ็นเอ็น)
  • ScorpioNN (เอ็นจิ้น NN)

เอ็นจิ้นสามรายการล่าสุด - AllieStein, Stoofvlees และ ScorpioNN - เป็นความร่วมมือเล็ก ๆ ของคนที่เท่าที่ฉันรู้ว่าเป็นคนที่ชอบคุณและไม่ใช่นักพัฒนาเต็มเวลา พวกเขาได้รับพลัง Div P หลังจากพยายามน้อยกว่าสองปี (เอ็นจิ้น NN ทั้งหมดเหล่านี้ปรากฏหลังจาก AlphaZero) สำหรับการเปรียบเทียบในประวัติศาสตร์ล่าสุดของหมากรุกคอมพิวเตอร์มีเพียงคนเดียวเท่านั้นที่เคยเขียนโปรแกรมแบบดั้งเดิมที่สามารถแข่งขันกับ Stockfish & Komodo ได้สำเร็จด้วยตนเอง (Robert Houdart ผู้เขียน Houdini)

เป็นความจริงที่คุณอาจไม่มีฮาร์ดแวร์ในการแข่งขันกับ Lc0 แต่ Lc0 ใช้พลังการคำนวณมากเพราะมันเป็นเครื่องมือ "ศูนย์" - ควรเล่นหมากรุกโดยปราศจากความรู้ของมนุษย์ทุกชนิดยกเว้นกฎ คุณไม่จำเป็นต้องใช้วิธีการเดียวกัน คุณสามารถใช้เช่นวิธีการของสไตน์ที่ใช้การเรียนรู้แบบมีผู้สอน มันเป็นเนื้อหาที่ดียิ่งขึ้นกว่าการ "เป็นศูนย์" - หลังจากทั้งหมดมันคือ AllieStein ที่เล่นในสุดยอดไม่ใช่ Lc0

ผลลัพธ์ที่ได้คือ: หากเป้าหมายของคุณคือการแข่งขันกับเอ็นจิ้นที่ดีที่สุดในโลกคุณมีแนวโน้มที่จะประสบความสำเร็จกับเอ็นจิ้นเอ็นเอ็นมากกว่าแบบดั้งเดิม


6
อาจพูดถึงอีกด้านหนึ่งของข้อสรุปของคุณ: หากเป้าหมายของคุณคือการเพิ่มความเข้าใจหมากรุกในขณะที่ทำการเขียนโปรแกรมให้ลึกซึ้งยิ่งขึ้น
blues

1
ฉันเห็นด้วยกับข้อสรุปของคุณ แต่ฉันขอแนะนำให้ใช้เครือข่ายล่าสุดจากเอนจิ้นที่แข็งแกร่ง (ได้รับอนุญาตแน่นอน) เป็นจุดเริ่มต้นแทนที่จะเริ่มจากศูนย์ (แต่ดำเนินการต่อในวิธีที่แตกต่างจาก "รถไฟผ่านการเล่นด้วยตนเองและอัปเดต น้ำหนัก "โดยการเพิ่มหรือลบเลเยอร์เพิ่มคุณสมบัติการป้อนข้อมูลเรียกร้องผลลัพธ์เพิ่มเติม ฯลฯ ) ฉันจำไม่ได้ว่า Lc0 เป็นแบบ single head หรือ dual head แต่ฉันเชื่อว่า 3 head ( ijcai.org/proceedings/2018/0523.pdf ) ไม่ได้ถูกใช้งานโดยเอ็นจิ้นหมากรุกใด ๆ และอาจจบลงด้วยการปรับปรุงสถานะ -ศิลปะ.
Steven Jackson

ฉันคิดว่าการค้นหาของอัลลีที่ทำให้เครื่องยนต์แข็งแกร่งกว่า (KMCST, Stoofvlees) ไม่ใช่เครือข่ายสไตน์
ฉัน '

@ blues ฉันคิดว่าการเขียนโปรแกรมเครื่องมือหมากรุกไม่ได้ทำให้ผู้เล่นหมากรุกที่ดีกว่า - ยกเว้น Larry Kaufman (หนึ่งในผู้พัฒนาของ Komodo) ไม่มีเอ็นจิ้นอันดับต้น ๆ ที่มีผู้เล่นเป็นนักพัฒนาหรือมีนักพัฒนากลายเป็น ผู้เล่นที่มีบรรดาศักดิ์
Allure

@ ฉันเป็นไปได้ แต่ Leelenstein เป็นเครือข่าย Stein ที่ใช้ไบนารี Lc0 และทำได้ดีในการแข่งขันหมากรุกคอมพิวเตอร์ของ Chess.com ดังนั้นเครือข่าย Stein จึงเทียบได้กับเครือข่าย Lc0 อย่างน้อยที่สุด
เสน่ห์

9

ดังนั้นในแง่ของการสร้างเอ็นจิ้นหมากรุกที่แข็งแกร่งที่สุดที่เป็นไปได้ฉันควรไปที่โครงข่ายประสาทเทียมหรือรหัสฮาร์ดโค้ด

อย่าเลือก NN ยกเว้นว่าคุณสามารถเข้าถึงไร้สาระ (Nvidia V100s ไม่กี่ร้อย) การฝึกอบรม NN ในการเล่นหมากรุกต้องใช้ฮาร์ดแวร์มาก ดูผู้คนที่มีส่วนร่วมในLc0เพื่อฝึกฝนเกมมากกว่า 200 ล้านเกม เนื่องจากคุณอาจมีปัญหาในการเข้าถึงฮาร์ดแวร์ (คุณสามารถลองใช้งาน Google Colabatoryได้ แต่ด้วยการฝึกอบรมจะช้ามาก)

แก้ไข: การใช้ NN ด้วยการเรียนรู้ภายใต้การดูแลคุณอาจหนีไปกับ Google Colab และอาจเป็นหนึ่งใน GPU ที่แข็งแกร่ง (2080, 2080Ti, Radeon VII)

อีกสิ่งที่ฉันกำลังพิจารณาคือเป็นสิ่งสำคัญหรือไม่ที่ฉันต้องใช้รหัสในการเขียนโปรแกรม ฉันรู้ว่าโปรแกรมหมากรุกจำนวนมากใช้ C ++ ซึ่งฉันไม่เคยใช้มาก่อน ฉันใช้ภาษาที่ใช้ภาษา C อื่น ๆ ซึ่งทำสิ่งเดียวกันหลาย ๆ อย่างโดยส่วนใหญ่มีไวยากรณ์ที่แตกต่างกัน ฉันคุ้นเคยกับ Swift และ Javascript มากที่สุด แต่ฉันก็คุ้นเคยกับ Python และรู้สึกว่ามันสามารถใช้กลอุบายให้ฉันได้

Python และ Javascript อาจช้าเกินไปสำหรับเครื่องมือหมากรุกที่แข็งแกร่ง ฉันไม่ได้ใช้ Swift แต่อาจไม่ชอบแพลตฟอร์มอื่น ๆ มากกว่า macOS ดังนั้นจึงควรใช้ C หรือ C ++ คุณอาจใช้ Rust ได้ แต่มีคุณสมบัติด้านความปลอดภัยมากมายที่น่ารำคาญและคุณไม่ต้องการจริงๆซึ่งอาจทำให้รำคาญได้ นอกจากนี้ยังเป็นเรื่องยากที่จะได้รับประสิทธิภาพที่ดีจากการใช้งานเนื่องจากการเพิ่มประสิทธิภาพระดับต่ำบางอย่างยากที่จะทำ แน่นอนคุณสามารถเขียนลงในชุดประกอบได้เสมอ แต่นั่นอาจจะเป็นงานที่มากเกินไป ดูhttps://www.chessprogramming.org/Language/


1
เยี่ยมมากขอบคุณข้อมูลมากมาย! ฉันอาจลองสร้าง API ที่ใช้ในตำแหน่ง FEN และแสดงการคำนวณที่ออกมา ฉันคิดว่านี่เป็นวิธีที่ดีที่สุดในการรวมเข้ากับบอท Lichess
David Chopin


1
เป็นตัวเลือกในการใช้เอ็นจิ้น NN อื่นที่เพิ่งใช้เครือข่ายของ lc0 ​​หรือไม่?
RemcoGerlich

1
@RemcoGerlich ตามที่ฉันเข้าใจแล้วเอ็นจิ้น NN ใช้สองสิ่ง: ไบนารีและเครือข่ายประสาท การเขียนไบนารีนั้นไม่ใช่เรื่องง่าย แต่การฝึกอบรมเครือข่ายประสาทนั้นค่อนข้างง่าย ในแง่นี้มีอนุพันธ์ Lc0 อยู่แล้ว - Leelenstein & Deus X (aka Fat Fritz) เป็นอนุพันธ์ดังกล่าว
เสน่ห์

@RemcoGerlich ในกรณีที่ไม่ได้เป็นเอ็นจิ้นที่แตกต่างกันจริง ๆ นั่นก็คือเอ็นจิ้น Ic0 ที่มีการห่อหุ้ม / อินเตอร์เฟส / อะไรก็ตาม
Peteris

3

ฉันสร้างเอ็นจิ้นหมากรุกของเล่นล้วนๆโดยใช้: python Chessเป็นเรื่องดีมากที่ไม่ต้องเขียนกฎของเกมด้วยตัวเองและเพียงแค่มุ่งเน้นไปที่ตรรกะ อย่างไรก็ตามจำนวนตำแหน่งที่ฉันสามารถประเมินได้ต่อวินาทีนั้นต่ำมาก นี่อาจเป็นจุดเริ่มต้นที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.