มาสร้าง Bot Game และเรียน Reinforcement Learning กับ Game Competition ครั้งแรกของ Kaggle  

  RSS
The Neural Engineer
(@neural-engineer)
Boltzmann Machine

มาสร้าง Bot Game และเรียน Reinforcement Learning กับ Game Competition ครั้งแรกของ Kaggle

ThaiKeras and Kaggle 25 มิย. 2563

เมื่อสัปดาห์ที่ผ่านมา Kaggle ได้พัฒนาการแข่งขันรูปแบบใหม่ขึ้นมาอีกครั้ง โดยเป็นการท้าประลองให้ผู้เข้าแข่งขันทั่วโลกเขียน Bot Game ยานอวกาศ  โดยเกมส์พาเราเข้าสู่ยุคอวกาศที่แร่ Halite นั้นมีความสำคัญมากทำให้อาณาจักรในแต่ละกาแลกซีต้องส่งยานบินเพื่อมาแย่งเก็บแร่ธาตุนี้กันครับ

โดยในแต่ละเกมส์จะแข่งกันทั้งหมด 400 turns บนตารางขนาด 21x21 โดยทุกเกมส์จะมี Bot จากผู้เล่นทั้งหมด 4 คน นั่นคือเราจะได้แข่งกับ bot ของผู้เล่นคนอื่นๆ อีก 3 คนนั่นเอง โดยเราจะเป็นผู้ชนะก็ต่อเมื่อ เรากำจัดยานทั้งหมดของผู้เล่นคนอื่นก่อนหมดเวลา หรือเราเป็นผู้ที่รวบรวม Halite ได้มากที่สุดเมื่อจบ 400 turns ครับ

 

โดยในตอนเริ่มต้นผู้เล่นแต่ละรายจะได้รับแร่เริ่มต้นมา 5000 Halites และยานหนึ่งลำ โดยในแต่ละ turn นั้นเราสามารถสั่งให้ยานบินแต่ละลำ เคลื่อนที่ได้ 1 ช่อง หรือจะเก็บแร่ในตำแหน่งปัจจุบัน (เก็บได้ครั้งละ 25% ของแร่ทั้งหมดในตำแหน่งนั้น) หรือจะจ่าย 500 Halite เพื่อให้ยานบินของเราเปลี่ยนสภาพเป็น "ฐานทัพ" (Shipyard) ก็ได้ โดยในทุก turn เจ้า shipyard นี้จะสามารถใช้สร้างยานบินลำอื่นๆ ออกมาได้ โดยมีค่าใช้จ่าย 500 Halite ต่อลำครับ 

 

นอกจากนี้เจ้า shipyard นี้ยังเป็นสถานที่ที่ให้ยานบินแต่ละลำนำ Halite เข้ามาเก็บเพื่อส่งไปยังอาณาจักรของตนได้อีกด้วย

 

Halite ยังมีกติการายละเอียดอีกหลายอย่าง เช่น ถ้ายานสองลำชนกัน ยานที่มีแร่ Halite น้อยกว่าจะทำลายยานลำอื่นได้และแย่งชิง Halite จากผู้เล่นอื่นๆ ทั้งหมดมา กติกาทั้งหมดศึกษาได้อย่างละเอียดที่นี่ครับ https://www.kaggle.com/c/halite/overview/halite-rules

 

วางกลยุทธ

การเขียน Bot Game นี้จำเป็นต้องวางกลยุทธทั้งระยะสั้น กลาง ยาวหลายด้าน เช่น

ระยะสั้น : ยานแต่ละลำควรจะเคลื่อนที่ไปทางไหน หรือทำอะไร

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

ระยะยาว : เมื่อไรที่เราควรจะสร้าง Shipyard หรือเราควรจะมี Shipyards ทั้งหมดกี่ฐานในแต่ละสถานการณ์เพื่อประสิทธิภาพสูงสุด

 ฯลฯ

นอกจากเราจะสามารถกำหนดและออกแบบกลยุทธขึ้นมาได้เองแล้ว เรายังสามารถประยุกต์ใช้เทคนิก Deep Learning เพื่อให้ Bot ของเราสามารถเรียนรู้และคิดกลยุทธได้อีกด้วย ด้วยเทคนิกที่เรียกว่า Deep Reinforcement Learning ! (Kaggle มีคอร์สสอนตามรายละเอียดด้านล่าง)

.

 

เริ่มต้นเขียน Bot รวมทั้งเรียนรู้ Reinforcement Learning

ทาง Kaggle ได้เตรียมโค้ดเริ่มต้นของ Bot ให้เราดัดแปลงที่นี่ครับ

https://www.kaggle.com/alexisbcook/getting-started-with-halite

 

และยังได้ให้เราตรวจสอบสถานะของเกมส์ รวมทั้งสั่งงานต่างๆ ได้อย่างง่ายๆ บน Halite SDK:

https://www.kaggle.com/sam/halite-sdk-overview

 

และที่พิเศษสุด Kaggle ยังได้ทำคอร์สสั้น 4 บทเรียนสำหรับ Bot เกมส์อีกด้วยครับ

https://www.kaggle.com/learn/intro-to-game-ai-and-reinforcement-learning

บทเรียน 1: ทำความรู้จัก Environment ของเกมส์บน Kaggle

บทเรียน 2: วิธีการเขียนให้ Bot คิดล่วงหน้า 1 Steps

บทเรียน 3: วิธีการเขียนให้ Bot คิดล่วงหน้า N Steps

บทเรียน 4: ติด Super Power ให้ Bot ด้วย Deep Reinforcement Learning

.

 

อนึ่ง เกมส์ Halite บน Kaggle นี้นับว่าเป็นปีที่ 4 แล้วโดยก่อนหน้านี้ยังไม่ได้ทำการแข่งขันบน Kaggle ก็ได้โปรแกรมเมอร์ระดับโลกมาร่วมแข่ง อาทิเช่น ผู้ชนะเลิศ Halite-2 นั้นมาจากทีม Ubisoft ผู้สร้างเกมส์ Assasin's Creed และรองแชมป์ก็เป็น Puzzle Champion และปัจจุบันทำงานที่ OpenAI เป็นต้น (รายละเอียด https://www.twosigma.com/news/article/halite-ii-concludes-winners-announced/ )

ในการแข่งขันทั้งสามปีก่อนที่จบไปแล้วนั้น Bot ที่เป็นแชมป์ล้วนแต่เป็น Bot ที่ถูกวางกลยุทธมาอย่างดีโดยโปรแกรมเมอร์ทั้งสิ้น โดย Bot ที่มาจาก Reinforcement Learning นั้นทำได้ดีที่สุดที่อันดับ 11 ในปีที่แล้วครับ  

This topic was modified 10 months ago by The Neural Engineer
อ้างอิง
Posted : 25/06/2020 5:04 am
Share:

Please Login or Register