NOOZUP

Download NOOZUP
App Store Play Store
ทำไมหนอ AI ถึงสามารถเรียนรู้เรื่องต่าง ๆ ได้เอง?
หมวด: Campus

ทำไมหนอ AI ถึงสามารถเรียนรู้เรื่องต่าง ๆ ได้เอง?

  • 600
  • 1
  • 0
Antfield

 จำโนเกีย 3310 ได้ไหมครับแล้วจำความยากของ "เกมส์งู" ได้หรือเปล่า?

วันนี้เราลองมาดูกันว่า "AI" สามารถชนะ "เกมส์งู" เองได้ยังไง

จริง ๆ แล้วเราไม่ต้องสอนอะไรมัน แค่ปล่อยงู AI ออกไปลองผิดลองถูก และส่งต่อความสามารถให้กับงู AI ในรุ่นต่อ ๆ ไป 

ซึ่งเมื่อไม่กี่วันที่ผ่านมาผู้ใช้งาน Youtube ชื่อ Chrispresso ได้ Up วีดีโออธิบายวิธีที่ทำให้ AI สามารถเรียนรู้ที่จะเล่นเกมส์งูเองโดยที่เราไม่ต้องสอนมันเลย 

มาพูดถึงกติกาเกมส์งูกันก่อน

ง่าย ๆ บังคับงูไปกินแอปเปิ้ล พอได้กินตัวก็จะยาวขึ้น แต่ถ้าบังคับไปชนกำแพงหรืองับตัวเองก็ตาย "Game Over" ถ้ากินจนงูเต็มจอได้ คุณชนะ!!

เครดิตรูป: raspberrypi.org 

สำหรับการสร้างให้ AI เรียนรู้เองได้เราจะใช้สิ่งที่เรียกว่า Neural Network กับ Genetic Algorithm ในการทำให้เหล่าประชากร " งู AI " ได้เรียนรู้วิธีการเล่นเกมส์ 

ด้วยการเลียบแบบการทำงานของเซลประสาทในร่างกายเราที่ทำงานสอดประสานกันเป็นโครงข่าย

Neural Network จะประกอบด้วย การเชื่อมโยงกันระหว่าง Node ดังภาพ

จากรูป Node หนึ่ง ๆ จาก Layer (แถว) แรกจะสามารถเชื่อมโยงไปได้ทุก Node ในแถวที่ 2 โดยเส้นที่เชื่อมโยงจะมี 2 สี โดยสีแดงหมายถึงเชื่อมต่อกันไม่ได้ ส่วนสีฟ้าเชื่อมต่อได้

Neural Network จะมี 3 layer หลัก อันได้แก่

1. Input Layer

2. Hidden Layer ซึ่งสำหรับ AI งูนี้จะมี 2 ชั้น

3. Output Layer

โดย Hidden Layer นั้นคือชั้นสำหรับการเรียนรู้สำหรับ AI

เมื่อ AI ได้ข้อมูลจาก Input Layer (จุดสีเขียว) ระบบก็จะเชื่อมต่อมายัง Learning layer (จุดสีฟ้า)

ยิ่งสีฟ้าสว่างมากแสดงว่ามีแนวโน้มในการส่งสัญญานต่อมาก และจะส่งสัญญานไปสู่ Node ใน Layer ถัดไปเรื่อยๆ จนเป็น Output ในที่สุด

สำหรับ AI เล่นเกมส์งูนี้ Output จะมีได้แค่ค่าเดียว ก็คือหัวงูจะหันไปทางไหน

 ในส่วน Input Layer ข้อมูล Input จะได้รับจากเซนเซอร์ ซึ่งแบ่งเป็น 3 ส่วน

  • ส่วนการมองของงู (Vision)
  • ทิศการเคลื่อนที่หัวงู (Direction)
  • ทิศการเคลื่อนที่หางงู (Tail Direction)

Direction และ Tail Direction เป็นข้อมูลแบบที่มีหลายทางเลือก แต่มีข้อมูลเกิดได้แค่ค่าเดียว

 เช่น หัวงูไปได้ 4 ทิศ ได้แก่ บน ล่าง ซ้าย ขวา แต่จากรูปนี้ หัวงูเลี้ยวซ้ายอยู่ ส่วนหางงูกำลังวิ่งขึ้น

และตอนนี้ " งู AI " ก็ยังตัดสินใจจะไปทางซ้ายต่อ (Output)

สำหรับการมอง (Vision) ของ AI งู เราสามารถกำหนดทิศการมองได้เป็น 4, 8, หรือ 16 ทิศ รอบหัวงูตามรูป โดย Vision สามารถมองเห็นข้อมูล Input ได้ 3 อย่างคือ

  1. ระยะห่างจากกำแพง (โดนกำแพงคือตาย)
  2. การมีหรือไม่มีแอปเปิ้ลในทิศที่มอง (กินแอปเปิลเพื่อให้ได้คะแนน)
  3. มีหรือไม่มีส่วนของตัวงูอยู่ในทิศที่มอง (งับตัวเองไม่ได้ ตาย)

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

จากรูป ตัวงูเริ่มที่ 3 ช่องสีแดง แอปเปิ้ลคือสีเขียว หัวงูคือช่องที่มีขีดการมอง 8 ทิศ จะเห็นได้ว่าหัวงูกำลังวิ่งไปทางซ้ายและหางวิ่งขึ้นบน และสำหรับการมอง 8 ทิศนี้ Input จะมีทั้งหมด 24 ตัวแปร ไล่จากทิศการมอง V0 ไป V7 หมุนตามเข็มนาฬิกา

ซึ่งนี่ก็คือ Neural Network ของ AI เล่นเกมส์งูตัวนี้

เครดิตรูป: medium.com 

โดย Neural Network นั้นสามารถนำมาประยุกต์ใส่ Hidden Layer ซ้อนเพิ่มให้เหมาะกับลักษณะงานที่ต้องการให้ AI เรียนรู้ 

เครดิตรูป: Pixabay by qimono 

แม้จะมี Neural Network แล้วแต่ถ้าไม่มี Genetic Algorithm เจ้างู AI ก็ยังไม่สามารถเรียนรู้ได้ ซึ่งปกติ Neural Network จะต้องมีข้อมูลเบื้องต้นป้อนให้กับระบบ เพื่อเริ่มการเรียนรู้ 

 

เครดิตรูป: researchgate.net 

แต่งานนี้เราไม่ทำ เริ่มต้น งูทุกตัวจะมี Genetic Algorithm แบบสุ่ม ที่เรียกว่า Weights ซึ่งทำหน้าที่เหมือนโครมาโซมในสิ่งมีชีวิต ที่เป็นตัวกำหนดพฤติกรรมของงูแต่ละตัว 

จากรูปแสดง Weights ของงู 2 ตัว รูปแบบการเชื่อมโยงของเส้นสีแดงและน้ำเงินที่เชื่อมต่อแต่ละ Layer ที่ต่างกัน ดังนั้นงู 2 ตัวนี้ก็จะมีพฤติกรรมต่างกันแม้ว่าจะได้รับ Input ชุดเดียวกัน 

เมื่อจบเกมส์แต่ละรอบงูตายหมด จะมีบางตัวที่ทำคะแนนได้ดี ซึ่งจะมีการนำมาคิดคะแนนผ่าน Fitness Function ตามสมการด้านบน

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

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

เครดิตรูป: towardsdatascience.com

การ Cross over ของข้อมูลทำให้เกิดการเบี่ยงเบนไปจากชุดข้อมูลตั้งต้น ซึ่งการกลายพันธุ์นั้นเป็นการสร้างโอกาสในการดำรงอยู่ของเผ่าพันธุ์ของสิ่งมีชีวิต ตามหลัก "Survival is the fittest" การคัดสรรตามธรรมชาตินั่นเอง

นั่นก็คือเป็นการเลือกถ่ายทอดรูปแบบ Weights ที่ดูจะเข้าแก๊ปที่สุดจากรุ่นหนึ่งไปสู่รุ่นถัดไปนั่นเอง

เครดิตรูป: towardsdatascience.com

ทำอย่างนี้แล้ว ในแต่ละรุ่นของงู AI พวกมันจะเกิดการเรียนรู้และส่งต่อรูปแบบพฤติกรรมที่เหมาะสมในการเอาชนะเกมส์ไปยังงูรุ่น ลูก หลาน เหลน โหลน..... และในที่สุดซักรุ่นหนึ่งก็จะทำภารกิจของเผ่าพันธุ์ได้สำเร็จ

และนี่ก็คือหลักการทำงานของ Neural Network กับ Genetic Algorithm ซึ่งเป็นการเลียนแบบธรรมชาตินั่นเอง

เครดิตรูป: Getty Creative 

ทั้ง Neural Network กับ Genetic Algorithm นั้นจะเห็นได้ว่า เราแค่ออกแบบวิธีให้งู AI สามารถออกไปเรียนรู้ที่จะเอาชีวิตรอดแค่นั้นเอง ไม่ได้ไปสอน ไปใส่ข้อมูลอะไรเลย แค่เพียงแต่ละ Node ใน network นั้นใส่เงื่อนไขของเกมส์เอาไว้ให้ครบ สุดท้ายจะเกิดรูปแบบการเล่นของ AI งูที่จะเอาชนะเกมส์ขึ้นมาได้เอง

ตอนนี้เรามาดูผลกัน

สนามแรก ขนาดสนาม 10x10 ช่อง งูทุกตัวเริ่มที่ความยาว 3 ช่อง หากเดินครบ 100 ช่องแล้วยังไม่ได้กินแอปเปิล = ตาย!! โดยแต่ละรุ่นจะประกอบด้วยประชากรงู 500 ตัว

 วิธีดูคะแนนความก้าวหน้าตามรูปด้านบนนะครับ 

แน่นอน รุ่นแรก วิ่งกันมั่วซั่ว ไปได้ไม่กี่ก้าวก็ชนกำแพงตาย 

บางตัว งงชีวิตเห็นแอปเปิลอยู่ตรงหน้า แต่ทำอะไรไม่ถูกเดินวนเป็นวงกลมจนตาย

โดยในแต่ละรุ่นของ AI งูจะยังไม่มีการวิวัฒนาการ จนกว่าจะตายหมดจบรุ่น แล้วค่อยวิวัฒน์ในรุ่นถัดไป

ให้เดาว่ารุ่นแรกทำคะแนนสูงสุดได้เท่าไหร่?? (คะแนนสูงสุดคือ 97)

  • คำตอบคือ 1 แต้ม จ้า

รุ่นแรก ๆ สาเหตุการตายหลักคืองูจะรีบวิ่งเข้างับแอปเปิลแล้วก็ชนกำแพงตาย 

ประมาณรุ่น 60+ งูเริ่มเรียนรู้แล้วว่ากำแพงนั้นทำให้ตายได้ พอมารุ่น 300+ เริ่มมีรูปแบบการเดินหลบกำแพง แต่กำแพงก็ยังคงเป็นสาเหตุการตายอันดับหนึ่งของงูอยู่ดี 

 500+ งูเริ่มเรียนรู้แล้วว่า อย่าตะกละ เน้นหลบกำแพงก่อน กินแอปเปิลไว้ทีหลังได้ 

 รุ่น 750: งู AI รุ่นนี้ ปรับพฤติกรรมจนสามารถทำคะแนนได้ถึง 68 แต้มแล้ว

สู้ต่อไปเจ้างูน้อย !!

ในที่สุด ตัวที่ 1 ของรุ่น 1453 ภารกิจสำเร็จ!! ฟลุคหรือเปล่า??

ไม่ใช่เลยจ้า ถ้าดูในวีดีโอจะรู้ รูปแบบการเดินเลาะขอบแล้วค่อย ๆ เลื้อยสลับขึ้นลง ระวังไม่ให้กินตัวเองเดินไล่ช่องไปเรื่อย ๆ แอปเปิลก็จะมาเข้าปากเราเอง

ผมมีเพื่อนเซียนเกมส์งูที่เล่นจนจบ วิธีเล่นก็แบบเดียวกันเลย เหมือนนั่งดูเพื่อนมันเล่นยังไงยังงั้น

ย้อนกลับไป Part แรก จำได้มั้ยครับ มีประเด็นว่าถ้าเรากำหนดรูปแบบการมองของงูต่างกัน (มองเป็นระยะห่างกับมองเป็นเงื่อนไข มีหรือไม่มี)

ผลที่ได้พบว่าการกำหนดแบบเห็นระยะห่าง งูจะเรียนรู้ได้ช้ากว่าพอสมควร ซึ่งงูทั้ง 2 กลุ่มนี้ เริ่มจากศูนย์เหมือนกัน

  

** เปลี่ยนกติกาให้โหดขึ้น **

จากตาราง 10x10 เพิ่มเป็น 50x50!!

เอางูที่จบการศึกษา มาปล่อยสนามใหญ่ต่อซิจะรอดมั้ย?

ผลคือ แค่เพียงในรุ่นที่ 8 เท่านั้น ก็เกิด Pattern การเดินที่ชัดเจน นี่มันเซียนเกมส์งูของจริง!! 

โดยใช้เวลา 10 ชั่วโมง 50 นาที ในการกินแอปเปิล 2497 ลูก ขอชาบู งู AI 

และนี่ก็คือผลสรุปการเรียนรู้โดยเริ่มจากศูนย์ของ AI เซียนเกมส์งู

จะเห็นได้ว่าเราไม่ได้เอาข้อมูลอะไรไปใส่ให้มันเลย แค่มันเรียนรู้และปรับจูน Weights หรือก็คือข้อมูลโครโมโซมส่งต่อไปยังรุ่นลูก หลาน จนกลายเป็น AI ยอดเซียนเกมส์งูในที่สุด

ด้วยแนวคิดที่เลียนแบบธรรมชาติ วิธีการที่มนุษย์เราวิวัฒน์กันจนได้มาครองโลก และเรากำลังนำไปใช้กับปัญญาประดิษฐ์ ทำให้สามารถวิวัฒน์สู่การเรียนรู้เองอย่างแท้จริง และด้วยกำลังการประมวลผล การเชื่อมโยงสอดประสานของแต่ละ Network การเรียนรู้ได้ตลอดทั้งวันทั้งคืน AI จึงมีศํกยภาพมหาศาล

แล้วคุณละคิดว่า AI จะก้าวล้ำแซงเราไปได้หรือไม่??

*******************************************************

Source:

https://towardsdatascience.com/genetic-algorithm-implementation-in-python-5ab67bb124a6

เครดิตภาพ: Cap จากวีดีโอใน youtube/chrispresso

*******************************************************

Related Content

Recommended by NoozUP

Apple Store Play Store