เอ็นจิ้นหมากรุก“ คิด” ได้อย่างไร?


28

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


เอ็นจิ้นหมากรุกดูที่หลายล้านตำแหน่งต่อวินาทีดังนั้นในความเป็นจริงพวกเขาสามารถดูพวกเขาทั้งหมดจนกว่าพวกเขาจะได้เคลื่อนไหวไม่กี่ลึก
RemcoGerlich

2
นี่เป็นคำถามที่ยอดเยี่ยมฉันมีความสุขกับคำตอบจริงๆ
เทรวิส J

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

คำตอบ:


22

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

http://www.chess.com/blog/zaifrunมีซีรี่ส์หรือบทความเกี่ยวกับการสร้างกลไกหมากรุกหากคุณต้องการดูรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการทำงานของหมากรุก


คำตอบที่ดีดังนั้นเมื่อคุณเห็นความลึก 30 นั่นหมายความว่าเอ็นจิ้นค้นหา 30 โหนดลึกหรือไม่? นอกจากนี้ Ply หมายความว่าอย่างไร
xaisoft

ฉันไม่แน่ใจว่า Ply นั้นหมายถึงอะไรโดยไม่ต้องทำวิจัยเพิ่มเติมฉันไม่เคยเก่งเรื่องย่อมาก่อน ค่อนข้างลึกหมายถึงจำนวนโหนดลึกแต่ละโหนดจะย้ายครึ่งหรือการย้ายลึกอาจขึ้นอยู่กับโปรแกรมเมอร์ อย่างไรก็ตามฉันคิดว่าการประชุมจะเป็นจำนวนของการเคลื่อนไหวที่ลึก
Edward Goodson

5
เร่คือครึ่งหนึ่งของการเคลื่อนไหว การย้ายไปเล่นหมากรุกเป็น 'set' ที่สมบูรณ์ถ้าคุณต้องการโดยขาว + ดำ เร่คือครึ่งหนึ่งของดังนั้นแค่หนึ่งสี
ErebusBat

21

คุณกำลังถามคำถามที่ค่อนข้างซับซ้อน แต่เป็นการดีที่จะกลับไปสู่พื้นฐาน มีแนวคิดสองสามข้อที่ควรพิจารณา:

การประเมินผล

หากผู้เล่น (จริง) แสดงตำแหน่งและถามว่า "ใครชนะเกมนี้" พวกเขาจะตัดสินใจอย่างไร ส่วนใหญ่แล้วพวกเขาจะตรวจสอบสิ่งพื้นฐานบางอย่างเช่น: ความแตกต่างของวัสดุ, ระดับที่ชิ้นส่วนได้รับการพัฒนาหรืออยู่ในตำแหน่ง "ดี", เพิ่มเป็นสองเท่า / แยก / เชื่อมต่อ / ผ่าน / จำนำ, เปิดไฟล์ กระดานจำนำเป็น

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

สิ่งนี้เรียกว่าการประเมินผลและโดยทั่วไปโปรแกรมหมากรุกทั้งหมดมีวิธีการประเมินตำแหน่ง (โดยไม่สนใจเครื่องมือหมากรุก AI แบบแปลกใหม่

แต่สิ่งที่เกี่ยวกับการเคลื่อนไหวตำแหน่งลึก

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

ค้นหา

ฉันได้ละทิ้งบางสิ่งบางอย่างจากด้านบนซึ่งผู้เล่นตัวจริงส่วนใหญ่จะนึกถึงทันที - มีวิธีใดบ้างที่จะชนะเกมทั้งสองข้างได้ทันที? มองเห็นชิ้นส่วนหรือ "แขวน" ชิ้นใด แม้ว่ามันจะเป็นเรื่องง่ายที่จะทำให้เรื่องเล็ก ๆ น้อย ๆ มันเป็นเรื่องง่าย

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

ตอนนี้เนื่องจากหมากรุกมีพื้นที่ค้นหาที่ใหญ่กว่า (นี่คือสิ่งที่เรียกว่า "การเคลื่อนไหวที่เป็นไปได้ทั้งหมดในอนาคต") กว่าสิ่งที่เป็นไปได้สำหรับคอมพิวเตอร์ที่จะคำนวณการประนีประนอมจะต้องทำ เช่นเดียวกับมนุษย์คอมพิวเตอร์สามารถตัดสินใจที่จะเพิกเฉยต่อแนวความคิดทั้งหมดตามเกณฑ์ที่กำหนด สิ่งนี้เรียกว่าฮิวริสติก มันคุ้มค่าที่จะสังเกตว่าในขณะที่คุณสามารถมั่นใจได้ว่ามีการรวมกันอย่างแน่นอนถ้าคุณบังคับให้มันทำงานอย่างหนัก แต่ฟังก์ชั่นการประเมินที่ซับซ้อนสามารถตรวจจับการคุกคามได้ (เช่นเรานับจำนวนส้อมโอกาสที่จะลด )

ในท้ายที่สุดแม้ว่าคอมพิวเตอร์จะเร็วมาก แต่ก็เป็นฮิวริสติกที่ช่วยให้พวกเขาสามารถคำนวณได้ลึก ที่กล่าวมาคุณอาจแปลกใจว่าเครื่องมือทันสมัยล้ำลึกคำนวณได้อย่างไรโดยทั่วไปแล้วมันเกิน 3 จังหวะแม้ในเกมที่รวดเร็ว

สรุป / รวมมันทั้งหมด

ดังนั้นเพื่อสรุป - ฟังก์ชั่นการประเมินผลมีสติปัญญามากมายอยู่ในตัว (เช่นพวกเขาคำนึงถึงสิ่งต่าง ๆ มากกว่าผู้เล่นทั่วไปของคุณ) ฮิวริสติกอนุญาตให้คอมพิวเตอร์กำจัดความคิดที่คิดว่ามันคงไม่จบ และคอมพิวเตอร์นั้นเร็วมาก เพิ่มเข้ามาและมันก็ยากที่จะเอาชนะ


6

ฉันเห็นด้วยกับคำตอบ

ฉันจำได้ว่าจีเอ็มโรมัน Dzindzichashviliพูดถึงมันในวิดีโอแล็บของโรมันฉันจำไม่ได้ว่าวิดีโอมันคืออะไร (ถ้าใครรู้รายละเอียดโปรดแก้ไขคำตอบของฉัน)

Roman กล่าวว่าผู้พัฒนาเครื่องมือ Fritzนั้นเป็นเพื่อนของเขา ดังนั้นโรมันจึงทดสอบฟริตซ์เพื่อดูว่ามันดีแค่ไหนและผู้พัฒนาบอกโรมันว่าเพื่อให้ฟริตซ์ตัดสินใจอย่างซับซ้อน (เสียสละวัสดุเพื่อแลกกับตำแหน่งที่ได้เปรียบตัวอย่าง) พวกเขาต้องเปลี่ยนค่าของชิ้นงานเช่นบอกโปรแกรม อธิการที่ไม่ดีมีค่า 1 คะแนนอธิการบดีในแนวทแยงมุมเปิดมีค่า 7 คะแนนอัศวินมีค่า 5 คะแนนในตำแหน่งปิด ...

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

แก้ไข

ดูเพิ่มเติมหมากรุก Programming วิกิพีเดีย


4

เป็นไปไม่ได้ที่คอมพิวเตอร์จะมองลึก (25 ply และมากกว่า) และตรวจสอบทุกการเคลื่อนไหวที่เป็นไปได้

สิ่งที่ทำให้เป็นไปได้คือเทคนิคที่เรียกว่าการตัดแต่งกิ่งอัลฟ่าซึ่งหมายความว่าคอมพิวเตอร์คล้ายกับมนุษย์ (แต่ดีกว่า) ตามด้วยการทำต่อเนื่องที่มีแนวโน้ม

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

มันยังคงใกล้เคียงกับเวทมนต์ที่พวกเขาจัดการให้ทำได้อย่างมีประสิทธิภาพเพียงพอที่จะประเมินตำแหน่งนับล้านในเวลาไม่กี่วินาที

ดังนั้นในการสรุป - คุณถูกต้องพวกเขาไม่สามารถดูการเคลื่อนไหวทั้งหมดหากพวกเขาเล่นหมากรุกเชิงกลยุทธ์ แต่พวกเขาสามารถดูการเคลื่อนไหวที่เหมาะสมได้อย่างรวดเร็วมาก ปัญหายังคงอยู่ในแผนระยะยาวและเส้นขอบฟ้าที่พวกเขาสามารถมองเห็นได้ แต่สิ่งนี้กำลังดำเนินการอยู่ (Rybka วิเคราะห์ช้ากว่ามาก แต่เล่นหมากรุกตำแหน่งมากกว่าในขณะที่ฮูดินี่โรแมนติคที่ 'หัวใจเชิงกล' คำนวณการเคลื่อนไหวมากขึ้น และเล่นอย่างจริงจังมากขึ้น) แม้แต่คอมพิวเตอร์ก็มีสไตล์เป็นของตัวเอง!


3

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

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

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

หนังสืออื่น ๆ ที่อาจเกี่ยวข้องกันคือท่าหมากรุกหมากรุกที่มองไม่เห็นของ Emmanuel Neimann และการย้ายบังคับหมากรุกของ Charles Hertan ซึ่งทั้งสองคนแย้งว่ามีความสำคัญในการพิจารณาท่าที่ไม่น่าแปลกใจ Hertan ยังพูดถึงการพัฒนา 'สายตาคอมพิวเตอร์' สำหรับกลวิธีดังกล่าว

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