ในกระทู้หลายๆครั้งมีคนชอบถามเกี่ยวกับวิวัฒนาการ วันนี้ผมเลยมีเว็บไซต์ของเล่นน่าสนใจมานำเสนอครับ
คือเว็บ BoxCar2D
http://boxcar2d.com
เป็นเว็บที่จำลองการสร้างรถด้วย genetic algorithm ครับ ซึ่งมันเทคนิคการเขียน AI แบบหนึ่งที่จำลองการวิวัฒนาการเพื่อแก้ปัญหา
อย่างในเว็บ BoxCar2D ก็คือการแก้ปัญหาการสร้างรถที่วิ่งได้ไกลที่สุด
Genetic Algorithm มีกระบวนการคร่าวๆนี้ครับ
0. กำหนด Chromozome ของตัวแก้ปัญหาซึ่งใช้แทนพารามิเตอร์ต่างๆของตัวแก้ปัญหา (เช่น มีกี่ล้อ ล้ออยู่ที่ไหนบ้าง ล้อไหนเล็ก ล้อไหนใหญ่ ตัวถังเป็นอย่างไร)
1. สุ่มสร้างสมาชิกรุ่นแรกด้วยการสุ่ม Chromozome ขึ้นมาในแต่ละตัว (สร้างรถตามพารามิเตอร์)
2. นำสมาชิกแต่ละตัวมาทดสอบ (ทดลองจับรถแต่ละคันมาวิ่ง)
3. คัดเลือกสมาชิกที่ให้คำตอบดี (คัดเลือกรถที่วิ่งได้ไกลที่สุด x ตัวแรก)
4. นำสมาชิกที่รอดมา "ผสมพันธุ์" (เอาสองคันมาสุ่มเอาล้อของ A, เอาตัวถังของ B), หรือเอามา "กลายพันธุ์" (เปลี่ยนขนาดล้อของ A)
5. นำสมาชิกที่รอดและลูกๆ มาทดสอบตามขั้นที่ 2 อีกครั้ง
6. วน 2-5 ไปเรื่อยๆจนกว่าจะพอใจ
ลองมาดูในเว็บไซต์กันครับ
http://boxcar2d.com
ทันทีที่คุณเปิดเว็บมา การจำลองก็จะเริ่มทันทีครับ คุณจะได้เห็นรถคันแรกของคุณตกลงมา ซึ่งก็จะสุ่มใหม่ในทุกๆครั้งครับ
น่าตื่นเต้นไหมครับกับรถคันแรกของผม ไม่ต้องกังวลไปครับ จากนั้นก็จะมีคันต่อๆไปมากมายเกิดขึ้นเรื่อยๆครับ
ทางซ้ายจะมีการบอกรุ่น (generation) ที่กำลังทำการทดสอบและระยะทางที่รถแต่ละคันทำได้
ก็อดทนรอกันไปนะครับ เหมือนดูเด็กหัดเดิน แต่ว่าซักรุ่นที่สี่ที่ห้าเราจะเริ่มเห็นหน้าตาที่ไปวัดไปวากับเขาได้เกิดขึ้นบ้างแล้วครับ
แต่บางทีก็อาจจะมีไอ้หน้าหนอนโผล่มาบ้าง
ยิ่งหลายรุ่นขึ้นเรื่อยๆ เราก็จะเห็นว่ารถของเราแล่นได้ไกลขึ้นเรื่อยๆครับ และสำหรับบางคนหน้าตารถที่ได้อาจจะใกล้เคียงกับรถยนต์หรือมอเตอร์ไซค์ในปัจจุบันจนเหมือนกับว่ามีใครจงใจบังคับรูปร่างของมันเลยทีเดียว แต่เปล่าครับเพียงรูปร่างที่ว่ามันเหมาะแก่การแล่นในด่านที่สร้างมาเท่านั้นเอง
ลองดูครับว่าที่ generation ที่ 30 รถของคุณจะหน้าตาเป็นอย่างไร
ก็นี่แหละครับ เกมจำลองการวิวัฒนาการของรถ ที่ผมคิดว่าอาจจะทำให้หลายคนเห็นภาพการวิวัฒนาการได้ชัดเจนขึ้น
คำถามที่ผมข้ามไปอย่างหนึ่ง และหลายๆคนก็คงสงสัยอยู่ในใจก็คือ
"แล้ว--ในธรรมชาติจริง--อะไรเป็นคนคัดเลือกว่ารถคันไหนจะได้อยู่ต่อไปในรุ่นถัดไปล่ะ? พระเจ้างั้นเหรอ?"
ในแบบจำลอง ระบบจะคัดเอารถที่วิ่งไกลอันดับต้นๆมาเป็นต้นแบบต่อไปเรื่อยๆ ซึ่งคนเขียนโปรแกรมเขาตั้งไว้ว่า "เป้าหมายของรถคือระยะทาง"
ดังนั้นจึงมีการคัดเลือกเอารถที่วิ่งได้ไกลมาสืบเผ่าพันธ์ต่อ
แต่ในธรรมชาติจริงๆล่ะ? อะไรคือ "เป้าหมาย"? ใครมากำหนดเป้าหมาย? มีผู้มีอำนาจเหนือธรรมชาติมากำหนดเป้าหมายและสร้างสิ่งมีชีวิตเหรอ?
คำตอบในทางวิทยาศาสตร์ก็คือ "มันต้องเป็นอย่างนั้นของมันเองครับ" เพราะการคัดเลือกนั้นมันเกิดอยู่แล้ว
ลองมองเทียบกับรถจำลองของเรา ในรุ่นแรกๆเราจะเห็นว่า รถหลายตัวไม่มีล้อ?
ลองเปรียบเทียบ "รถที่ไม่มีล้อ" กับ "สิ่งมีชีวิตที่ไม่ขยายพันธ์" หรือ "สิ่งมีชีวิตที่ไม่กิน" ดูสิครับ
รถไม่มีล้อมันก็ไม่ไปไหน มันก็อยู่อย่างนั้นของมัน
ถ้าเกิดเซลล์ที่ไม่กิน ไม่ขยายพันธ์ มันก็จบแค่นั้น มีเซลล์เดียวแล้วก็จบ ก็ตายไป มันก็ไม่มีใครพูดถึงต่อ
"เซลล์ที่จะสร้างรุ่นต่อๆไปได้ ก็ต้องเป็นเซลล์ที่มีความสามารถในการดูดซึมพลังงานที่จำเป็นและขยายพันธ์"
มันเป็นสัจจะนิรันดร์โดยไม่ต้องอาศัย "ใคร" หรือ "อำนาจใด" มากำหนดครับ
อีกคำถามก็คือ "แล้วทำไมต้องวิวัฒนาการเพิ่มต่อไปอีกล่ะ ใครกำหนดให้มันต้องวิวัฒนาการเรื่อยๆ ล้อวิ่งไกลขึ้นเรื่อยๆ"
นี่ก็เช่นกันครับ ตามทฤษฎีวิวัฒนาการแล้วไม่มีใครกำหนด แต่มันต้องเป็นอย่างนั้นของมัน
ในแบบจำลองคุณอาจจะเห็นรถคันเดียววิ่งไปไกลๆแล้วก็ถูกคัดเลือก
แต่ลองเปลี่ยนเป็นมีรถหลายคัน แล้วรถคันไหนวิ่งชนอีกคันก็จะได้น้ำมันเพิ่มสิครับ หรือคิดว่ามีปั๊มน้ำมันเป็นระยะๆสิครับ?
นี่ก็เหมือนการล่าครับ ถ้าเซลล์ไหนสามารถเคลื่อนที่ได้ ก็สามารถหาอาหารได้ไกลขึ้น ไปกินอย่างอื่นได้มากขึ้น ถูกกินได้ยากขึ้น มันก็อยู่รอดมากกว่า
จากนั้นมันก็เหมือนการแข่งขันที่เกิดขึ้นเองโดยไม่มีใครต้องกำหนดครับ "แข่งกันกิน แข่งกันไม่ถูกกิน และแข่งกันขยายเผ่าพันธ์" เพียงเท่านั้น
หวังว่าจะสนุกกับการเล่นเกมและเข้าใจวิวัฒนาการมากขึ้นครับ
BoxCar2D: ทำความเข้าใจกับทฤษฎีวิวัฒนาการผ่านการจำลองการวิวัฒนาการของรถกันเถอะ
คือเว็บ BoxCar2D http://boxcar2d.com
เป็นเว็บที่จำลองการสร้างรถด้วย genetic algorithm ครับ ซึ่งมันเทคนิคการเขียน AI แบบหนึ่งที่จำลองการวิวัฒนาการเพื่อแก้ปัญหา
อย่างในเว็บ BoxCar2D ก็คือการแก้ปัญหาการสร้างรถที่วิ่งได้ไกลที่สุด
Genetic Algorithm มีกระบวนการคร่าวๆนี้ครับ
0. กำหนด Chromozome ของตัวแก้ปัญหาซึ่งใช้แทนพารามิเตอร์ต่างๆของตัวแก้ปัญหา (เช่น มีกี่ล้อ ล้ออยู่ที่ไหนบ้าง ล้อไหนเล็ก ล้อไหนใหญ่ ตัวถังเป็นอย่างไร)
1. สุ่มสร้างสมาชิกรุ่นแรกด้วยการสุ่ม Chromozome ขึ้นมาในแต่ละตัว (สร้างรถตามพารามิเตอร์)
2. นำสมาชิกแต่ละตัวมาทดสอบ (ทดลองจับรถแต่ละคันมาวิ่ง)
3. คัดเลือกสมาชิกที่ให้คำตอบดี (คัดเลือกรถที่วิ่งได้ไกลที่สุด x ตัวแรก)
4. นำสมาชิกที่รอดมา "ผสมพันธุ์" (เอาสองคันมาสุ่มเอาล้อของ A, เอาตัวถังของ B), หรือเอามา "กลายพันธุ์" (เปลี่ยนขนาดล้อของ A)
5. นำสมาชิกที่รอดและลูกๆ มาทดสอบตามขั้นที่ 2 อีกครั้ง
6. วน 2-5 ไปเรื่อยๆจนกว่าจะพอใจ
ลองมาดูในเว็บไซต์กันครับ http://boxcar2d.com
ทันทีที่คุณเปิดเว็บมา การจำลองก็จะเริ่มทันทีครับ คุณจะได้เห็นรถคันแรกของคุณตกลงมา ซึ่งก็จะสุ่มใหม่ในทุกๆครั้งครับ
น่าตื่นเต้นไหมครับกับรถคันแรกของผม ไม่ต้องกังวลไปครับ จากนั้นก็จะมีคันต่อๆไปมากมายเกิดขึ้นเรื่อยๆครับ
ทางซ้ายจะมีการบอกรุ่น (generation) ที่กำลังทำการทดสอบและระยะทางที่รถแต่ละคันทำได้
ก็อดทนรอกันไปนะครับ เหมือนดูเด็กหัดเดิน แต่ว่าซักรุ่นที่สี่ที่ห้าเราจะเริ่มเห็นหน้าตาที่ไปวัดไปวากับเขาได้เกิดขึ้นบ้างแล้วครับ
แต่บางทีก็อาจจะมีไอ้หน้าหนอนโผล่มาบ้าง
ยิ่งหลายรุ่นขึ้นเรื่อยๆ เราก็จะเห็นว่ารถของเราแล่นได้ไกลขึ้นเรื่อยๆครับ และสำหรับบางคนหน้าตารถที่ได้อาจจะใกล้เคียงกับรถยนต์หรือมอเตอร์ไซค์ในปัจจุบันจนเหมือนกับว่ามีใครจงใจบังคับรูปร่างของมันเลยทีเดียว แต่เปล่าครับเพียงรูปร่างที่ว่ามันเหมาะแก่การแล่นในด่านที่สร้างมาเท่านั้นเอง
ลองดูครับว่าที่ generation ที่ 30 รถของคุณจะหน้าตาเป็นอย่างไร
ก็นี่แหละครับ เกมจำลองการวิวัฒนาการของรถ ที่ผมคิดว่าอาจจะทำให้หลายคนเห็นภาพการวิวัฒนาการได้ชัดเจนขึ้น
คำถามที่ผมข้ามไปอย่างหนึ่ง และหลายๆคนก็คงสงสัยอยู่ในใจก็คือ
"แล้ว--ในธรรมชาติจริง--อะไรเป็นคนคัดเลือกว่ารถคันไหนจะได้อยู่ต่อไปในรุ่นถัดไปล่ะ? พระเจ้างั้นเหรอ?"
ในแบบจำลอง ระบบจะคัดเอารถที่วิ่งไกลอันดับต้นๆมาเป็นต้นแบบต่อไปเรื่อยๆ ซึ่งคนเขียนโปรแกรมเขาตั้งไว้ว่า "เป้าหมายของรถคือระยะทาง"
ดังนั้นจึงมีการคัดเลือกเอารถที่วิ่งได้ไกลมาสืบเผ่าพันธ์ต่อ
แต่ในธรรมชาติจริงๆล่ะ? อะไรคือ "เป้าหมาย"? ใครมากำหนดเป้าหมาย? มีผู้มีอำนาจเหนือธรรมชาติมากำหนดเป้าหมายและสร้างสิ่งมีชีวิตเหรอ?
คำตอบในทางวิทยาศาสตร์ก็คือ "มันต้องเป็นอย่างนั้นของมันเองครับ" เพราะการคัดเลือกนั้นมันเกิดอยู่แล้ว
ลองมองเทียบกับรถจำลองของเรา ในรุ่นแรกๆเราจะเห็นว่า รถหลายตัวไม่มีล้อ?
ลองเปรียบเทียบ "รถที่ไม่มีล้อ" กับ "สิ่งมีชีวิตที่ไม่ขยายพันธ์" หรือ "สิ่งมีชีวิตที่ไม่กิน" ดูสิครับ
รถไม่มีล้อมันก็ไม่ไปไหน มันก็อยู่อย่างนั้นของมัน
ถ้าเกิดเซลล์ที่ไม่กิน ไม่ขยายพันธ์ มันก็จบแค่นั้น มีเซลล์เดียวแล้วก็จบ ก็ตายไป มันก็ไม่มีใครพูดถึงต่อ
"เซลล์ที่จะสร้างรุ่นต่อๆไปได้ ก็ต้องเป็นเซลล์ที่มีความสามารถในการดูดซึมพลังงานที่จำเป็นและขยายพันธ์"
มันเป็นสัจจะนิรันดร์โดยไม่ต้องอาศัย "ใคร" หรือ "อำนาจใด" มากำหนดครับ
อีกคำถามก็คือ "แล้วทำไมต้องวิวัฒนาการเพิ่มต่อไปอีกล่ะ ใครกำหนดให้มันต้องวิวัฒนาการเรื่อยๆ ล้อวิ่งไกลขึ้นเรื่อยๆ"
นี่ก็เช่นกันครับ ตามทฤษฎีวิวัฒนาการแล้วไม่มีใครกำหนด แต่มันต้องเป็นอย่างนั้นของมัน
ในแบบจำลองคุณอาจจะเห็นรถคันเดียววิ่งไปไกลๆแล้วก็ถูกคัดเลือก
แต่ลองเปลี่ยนเป็นมีรถหลายคัน แล้วรถคันไหนวิ่งชนอีกคันก็จะได้น้ำมันเพิ่มสิครับ หรือคิดว่ามีปั๊มน้ำมันเป็นระยะๆสิครับ?
นี่ก็เหมือนการล่าครับ ถ้าเซลล์ไหนสามารถเคลื่อนที่ได้ ก็สามารถหาอาหารได้ไกลขึ้น ไปกินอย่างอื่นได้มากขึ้น ถูกกินได้ยากขึ้น มันก็อยู่รอดมากกว่า
จากนั้นมันก็เหมือนการแข่งขันที่เกิดขึ้นเองโดยไม่มีใครต้องกำหนดครับ "แข่งกันกิน แข่งกันไม่ถูกกิน และแข่งกันขยายเผ่าพันธ์" เพียงเท่านั้น
หวังว่าจะสนุกกับการเล่นเกมและเข้าใจวิวัฒนาการมากขึ้นครับ