การแก้ปัญหาโดยการวิวัฒนาการจำลองในคอมพิวเตอร์ (Evolutionary Computation)

วันนี้ผมบันทึกเสียงสั้นๆวิทยาศาสตร์ทั่วไปในรายการ Sci & Tech ที่วิทยุไทยพีบีเอสเรื่องการแก้ปัญหาโดยการวิวัฒนาการจำลองในคอมพิวเตอร์ เลยเอาสรุปและลิงก์ที่ผู้สนใจเข้าไปดูเพิ่มเติมมารวมไว้ที่นี่ครับ

สรุปคือ:

  1. การวิวัฒนาการ (Evolution) หรือเรียกอีกอย่างว่าการคัดเลือกพันธุ์โดยธรรมชาติ (Natural Selection) เป็นขบวนการสร้างสิ่งมีชีวิตแบบต่างๆบนโลก อธิบายความแตกต่างของสิ่งมีชีวิตแบบต่างๆว่าทำไมจึงมีหลายชนิด และทำไมสิ่งมีชีวิตต่างเป็นญาติกันเพราะเคยมีบรรพบุรุษร่วมกันในอดีต (ซึ่งอาจนานมากเป็นล้าน สิบล้าน ร้อยล้าน หรือพันล้านปีมาแล้ว)
  2. การวิวัฒนาการจะเกิดได้ด้วยขั้นตอนทั้งสี่นี้:

    A. ลูกๆคล้ายๆพ่อแม่ (คือมีการสืบทอดพันธุกรรม)
    B. ลูกๆไม่เหมือนกันหมดทุกตัว (คือมีความหลากหลายทางพันธุกรรม)
    C. โอกาสรอดชีวิตและแพร่พันธุ์ของลูกแต่ละตัวไม่เท่ากัน ลูกที่สามารถสืบพันธุ์ได้ก็จะเป็นพ่อแม่ในรุ่นต่อไป (คือมีการคัดเลือกพันธุ์)
    D. วนข้อ A, B, C หลายๆรอบ เป็นร้อยเป็นพัน…เป็นล้านรอบ

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

    (คำว่า พ่อ แม่ ลูก ด้านบน อาจไม่ใช่สิ่งมีชีวิตที่เราคุ้นเคยก็ได้ครับ จริงๆอะไรที่สามารถจำลองตัวเองแบบมีความหลากหลายได้ก็ใช้ขบวนการวิวัฒนาการได้ เช่นโปรแกรมคอมพิวเตอร์ไวรัส หรือไอเดียต่างๆในหัวคน เป็นต้น)
  3. นอกจากธรรมชาติจะเป็นตัวคัดเลือกพันธุ์สิ่งมีชีวิตต่างๆแล้ว คนเราเองก็สามารถทำการคัดเลือกพันธุ์ได้ ยกตัวอย่างเช่นคนเราคัดเลือกพันธุ์พืชและสัตว์เพื่อใช้เป็นประโยชน์โดยเลือกตัวพ่อพันธุ์แม่พันธุ์ที่มีลักษณะที่ต้องการโดยหวังว่าเราจะมีโอกาสได้ลูกๆที่มีลักษณะที่เราต้องการมากขึ้น เมื่อรุ่นลูกโตขึ้นเราก็เลือกบางตัวเป็นพ่อพันธุ์แม่พันธุ์อีก เมื่อทำอย่างนี้หลายๆรอบเราก็จะได้สิ่งมีชีวิตอย่างที่เราต้องการ อาหารและสัตว์เลี้ยงต่างๆของมนุษย์ผ่านการคัดเลือกพันธุ์มานับร้อยนับพันปี
  4. มีนักวิทยาศาสตร์หลายทีมทดลองเลียนแบบขบวนการวิวัฒนาการนี้ในคอมพิวเตอร์ คือเมื่อจะแก้ปัญหาอะไร ก็ลองสร้างพันธุกรรมจำลองขึ้นมาหลายๆแบบ (เปรียบเสมือนสิ่งมีชีวิต) แล้วดูว่าพันธุกรรมแบบไหนแก้ปัญหาที่ต้องการได้ดีกว่า อันที่แก้ปัญหาได้ดีกว่าก็จะมีโอกาสแพร่พันธุ์มากกว่าแบบที่ไม่เก่งเท่า พอทำไปหลายๆรอบก็จะได้พันธุกรรมแบบที่แก้ปัญหาที่ต้องการได้ดี แล้วก็สามารถเอารูปแบบที่วิวัฒนาการได้มาผลิตใช้จริงๆ
  5. การทำแบบนี้ต้องใช้การคำนวณมากมาย แต่ก็เหมาะกับคอมพิวเตอร์สมัยใหม่ที่มีหน่วยคำนวณหลายๆหน่วยที่ทำงานพร้อมๆกันได้
  6. ตัวอย่างการแก้ปัญหาโดยวิธีนี้ก็เช่นการออกแบบใบพัดเรือ เสาอากาศ ส่วนผสมวิสกี้ ออกแบบเครือข่ายประสาทเทียมหุ่นยนต์ ออกแบบการเดินและเคลื่อนไหวของหุ่นยนต์ และที่น่าตื่นเต้นมากๆคือออกแบบหุ่นยนต์ขนาดเล็กที่ทำจากเซลล์มีชีวิต (xenobot)

ลิงก์ที่น่าสนใจ:

อธิบายเรื่องวิวัฒนาการเทียมในคอมพิวเตอร์:

หุ่นยนต์สร้างจากเซลล์กบ ออกแบบด้วยวิธีวิวัฒนาการในคอมพิวเตอร์ สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ A scalable pipeline for designing reconfigurable organisms:

วิวัฒนาการหุ่นยนต์เดินสองขา:

ตัวอย่างโปรแกรมในภาษาไพธอน: Genetic Algorithm Implementation in Python

เสาอากาศที่วิวัฒนาการขึ้นมาโดย NASA

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.