Genetic Algorithm (GA) ตอนที่ 1 : ชีววิทยา

Three quarter length portrait of Darwin aged about 30, with straight brown hair receding from his high forehead and long side-whiskers, smiling quietly, in wide lapelled jacket, waistcoat and high collar with cravat.
By George Richmond -
From Origins, Richard Leakey and Roger Lewin,
Public Domain, 
Link

การวิวัฒนาการ (evolution) [1] ของสิ่งมีชีวิตด้วยกระบวนการคัดเลือกโดยธรรมชาติ  (natal selection) [2] ที่เสนอโดย Charles Darwin [3] พอสรุปแนวคิดหลักคร่าว ๆ ได้ดังนี้

1. สิ่งมีชีวิตมีความหลายหลาย  เช่น  มนุษย์มีสีผม สีผิว สีตา ความสูง ความแข็งแรง ว่องไว ฯล แตกต่างกัน

2. สภาพแวดล้อมมีผลต่อการอยู่รอด และขยายพันธุ์ สิ่งมีชีวิตที่อยู่ในสภาพแวดล้อมที่ปลอดภัย อุดมสมบูรณ์ย่อมมีทางรอดมากกว่า

3. มีการถ่ายทอดลักษณะไปยังรุ่นต่อไปผ่านระบบพันธุกรรม

4. ลักษณะสอดคล้องกับสภาพแวดล้อมย่อมมีโอกาสขยายพันธุ์ต่อไป

 ความแตกต่างของลักษณะที่แสดงออกมาในสิ่งมีชีวิตถูกกำหนดไว้ในสิ่งที่เรียกว่า gene [4][7]  อยู่เรียงตัวเป็นสายยาว แล้วม้วนตัวเข้าหากันคล้ายไหมพรม เรียกว่า chromosome [5] ซึ่งถูกเก็บไว้ใน nucleus ของเซลล์อีกทีหนึ่ง


รูปที่  2 แสดงตำแหน่งของ gene และ chromosome ภายในเซลล์ของสิ่งมีชีวิต gene แต่ละตำแหน่งบน chromosome อาจมีความยาวแตกต่างกันไป

การถ่ายทอดลักษณะของสิ่งมีชีวิตอาศัยกระบวนการที่เรียกว่าการจับคู่ (mating) [8] กันระหว่างสิ่งมีชีวิตชนิดเดียวกันในรุ่นหนึ่ง การจับคู่ทำให้เกิดการแลกเปลี่ยน gene (crossover) ระหว่าง individual แล้วสำเนาส่งต่อไปสู่รุ่นถัดไป (offspring)  การแลกเปลี่ยน gene ส่งผลทำให้เกิดการหมุนเวียนของ gene ในประชากร นำไปสู่การเกิดขึ้นของลักษณะแสดงออกที่หลากหลาย ซึ่งอาจเป็นลักษณะที่เหมาะต่อการอยู่รอดของเผ่าพันธุ์ต่อไปได้ จากรูปที่ 3 เป็นการจับคู่กันระหว่างผีเสื้อพันธุ์เดียวกันแต่มีลักษณะที่แสดงออก (สี) ต่างกัน (มี gene บางส่วนต่างกัน) อาจส่งผลให้รุ่นลูกที่ออกมาอาจมีสีต่างไปจากรุ่นพ่อ-แม่ ได้

รูปที่ 3 Chalkhill blue butterflies (Lysandra coridon) mating
By Charles J Sharp - Own work, from Sharp Photography, CC BY-SA 4.0,
https://commons.wikimedia.org/w/index.php?curid=38295927

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

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

รูปที่ 4 ตัวอย่างวงจรการถ่ายทอดลักษณะของสิ่งมีชีวิต

Genetic Algorithm เขียนอย่างย่อเป็น GA [6] เป็น search algorithm ที่อยู่ในกลุ่ม evolutionary algorithm [11] เกิดจากการนำแนวคิดการคัดเลือกโดยธรรมชาติของ Charles Darwin ดังที่กล่าวมาแล้ว นำมารวมเข้ากับเทคนิคที่เรียกว่า Generate and Test แนวทางใน GA คือ
  • มี candidate solution หรือ individual (เทียบได้กับสิ่งมีชีวิตแต่ละ unit) รวมตัวเป็น population 
  • แต่ละ individual จะมีลักษณะหรือคุณสมบัติ (feature) ซึ่งจะถูกแทนที่อย่างเหมาะสมและจัดให้รูปในรูปแบบเดียวกับ gene บน chromosome ของสิ่งมีชีวิต 
  • ทุก individual จะถูกทดสอบว่ามีคุณสมบัติเหมาะสมต่อการแก้ปัญหามากน้อยเพียงใด ผ่าน function ที่เรียกว่า fitness function
  • แต่ละ individual จะแข่งกันจับคู่กับ individual อื่นที่ใน population เดียวกัน เพื่อผสม gene แล้วส่งต่อไปยัง individual รุ่นถัดไป (offspring)
  • ในขั้นตอนของการส่งต่อ gene อาจกำหนดให้มีการเพิ่ม gene เข้าไปใน chromosome ทำนองเดียวกันกับการเกิด mutation ของสิ่งมีชีวิตได้
เขียนในรูปแบบของ pseudo code 

generate initial population , G(0)
evaluate G(0)
t := 1
repeat :
     generate population G(t)  using G(t-1)
     evaluate G(t)
     t = t + 1
until solution is found


รูปที่ 5 Flowchart ของ GA

ยกตัวอย่างปัญหาการเดาคำ

สมมุติว่าต้องการให้ GA ทำการสร้างคำ "genetic"  ขั้นตอนตาม flowchart ในรูปที่ 5 คือ

Initiate population

ใน population ประกอบด้วย individual แต่ละ individual ในปัญหานี้คือตัวแทนของคำที่มีความยาว 7 ตัวอักษร (ใช้อักษรภาษาอังกฤษ)  สร้าง individual ขึ้นมาแบบสุ่ม สมมุติกำหนดให้มี individual ทั้งหมด 10 individual สำหรับ population รุ่นแรก (\(G_0\))

รูปที่ 6 ตัวอย่าง population ใน Generation ที่ t=0 (G0)


Evaluation 

ในธรรมชาติสิ่งมีชีวิตมีการเปลี่ยนแปลงโดยตอบสนองต่อสิ่งแวดล้อม ใน GA ใช้ fitness function เป็นตัวทำหน้าที่แทนสิ่งแวดล้อม ในตัวอย่างนี้ เป้าหมายคือการสร้างคำ 'genetic' ขึ้นมา ดังนั้น fitness function จึงเป็น function ที่ใช้บอกว่า  chromosome ในแต่ละ individual ต่างจาก 'genetic' เท่าใด เราอาจใช้การวัดแบบง่ายคือการนับจำนวนตัวอักษรที่ตรงกันก็ได้ จากตัวอย่างนี้จะเห็นใน \( G_0 \) ไม่มี individual ใดที่มี chromosome ที่ตรงกับ "genetic" เลย ดังนั้น ทุก individual มี fitness เป็น 0

Mating
ทำการเลือก individual ใน \( G_0 \)มาครั้งละ 1 คู่แบบสุ่ม (การเลือกทำได้หลายวิธี จะกล่าวถึงต่อไป) เพื่อสร้าง generation ต่อไป \( G_1\)

รูปที่ 7 Generation ถัดมา มีการเปลี่ยนแปลง chromosome เนื่องจาการ crossover

ลำพังการ crossover มักจะไม่ทำให้เกิดการเปลี่ยนแปลงมากนัก เพื่อให้การเพิ่ม gene เข้าไปใน population จึงต้องเพิ่มกระบวนการ mutation เข้าไป  โดย gene ใหม่จะถูกนำมาจาก gene pool แบบสุ่ม ซึ่งจะโยงกับกรอบปัญหาที่กำลังสนใจ ในกรณีนี้ gene pool คือ อักษรตัวเล็กในภาษาอังกฤษ

รูปที่ 8 ตำแหน่งของ genet ที่เกิด mutant แทนที่ด้วยสีแดง

Iteration 
หลังจากได้ population ในรุ่นถัดไปแล้ว \(G_t \) ก็กลับไปสู่ขั้นตอน evaluation อีกครั้ง เรื่อยไปจนกว่าจะได้ population ที่มี individual ที่ตรงกับเงื่อนไขของการหยุดทำงาน


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

ในตอนที่สองจะกล่าวถึงองค์ประกอบพื้นฐานและ basic flow ของ GA กันก่อนที่จะเข้าสู่ตัวอย่างการเขียน code ด้วยภาษา Python 



เอกสารอ้างอิง

[1] https://en.wikipedia.org/wiki/Evolution
[2] https://en.wikipedia.org/wiki/Natural_selection
[3] https://en.wikipedia.org/wiki/Charles_Darwin
[4] https://en.wikipedia.org/wiki/Gene
[5] https://en.wikipedia.org/wiki/Chromosome
[6] https://th.wikipedia.org/wiki/%E0%B8%82%E0%B8%B1%E0%B9%89%E0%B8%99%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5%E0%B9%80%E0%B8%8A%E0%B8%B4%E0%B8%87%E0%B8%9E%E0%B8%B1%E0%B8%99%E0%B8%98%E0%B8%B8%E0%B8%81%E0%B8%A3%E0%B8%A3%E0%B8%A1
[7] https://en.wikipedia.org/wiki/Genetic_code
[8] https://en.wikipedia.org/wiki/Mating
[9] https://en.wikipedia.org/wiki/Mutation
[10] https://en.wikipedia.org/wiki/Least_squares
[11] https://en.wikipedia.org/wiki/Evolutionary_algorithm

ความคิดเห็น