อัลกอริธึมทางพันธุกรรมคืออะไรและปัญหาแบบไหนที่ดี?


16

ฉันสังเกตเห็นว่าคำถามสองสามข้อในเว็บไซต์นี้พูดถึงอัลกอริธึมทางพันธุกรรมและทำให้ฉันรู้ว่าฉันไม่รู้อะไรเกี่ยวกับสิ่งเหล่านั้นจริงๆ

ฉันเคยได้ยินคำศัพท์ก่อนหน้านี้ แต่มันไม่ใช่สิ่งที่ฉันเคยใช้ดังนั้นฉันไม่มีความคิดมากเกี่ยวกับวิธีการทำงานและสิ่งที่ดีสำหรับพวกเขา สิ่งที่ฉันรู้ก็คือพวกมันเกี่ยวข้องกับวิวัฒนาการและการเปลี่ยนแปลงค่าแบบสุ่ม

คุณสามารถให้คำอธิบายสั้น ๆ โดยเฉพาะอย่างยิ่งรวมถึงตัวอย่างของการปฏิบัติที่แสดงให้เห็นถึงหลักการพื้นฐาน?

คำตอบ:


11

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

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

บุคคลที่ถูกเข้ารหัสเป็นจีโนไทป์ซึ่งสามารถมีรูปร่างใด ๆ เช่น ** บิตเวกเตอร์ ( อัลกอริทึมทางพันธุกรรม ) หรือเวกเตอร์ของจริง (กลยุทธ์วิวัฒนาการ) จีโนไทป์แต่ละตัวจะถูกแปลงเป็นฟีโนไทป์เมื่อทำการประเมินบุคคลเช่นเมื่อคำนวณความเหมาะสม ในบางกรณีฟีโนไทป์ก็เหมือนกับจีโนไทป์: มันถูกเรียกว่าการ เข้ารหัสโดยตรง. มิฉะนั้นการเข้ารหัสจะเรียกว่าทางอ้อม ตัวอย่างเช่นสมมติว่าคุณต้องการเพิ่มประสิทธิภาพขนาดของสี่เหลี่ยมขนานที่กำหนดโดยความยาวความสูงและความกว้าง เพื่อให้ง่ายขึ้นสมมติว่าสามปริมาณนี้เป็นจำนวนเต็มระหว่าง 0 ถึง 15 จากนั้นเราสามารถอธิบายแต่ละรายการโดยใช้เลขฐานสองแบบ 4 บิต ตัวอย่างของการแก้ปัญหาที่อาจเกิดขึ้นกับจีโนไทป์ 0001 0111 01010 ฟีโนไทป์ที่สอดคล้องกันคือขนานที่มีความยาว 1, ความสูง 7 และความกว้าง 10

ในช่วงการเปลี่ยนภาพจากรุ่นเก่าเป็นรุ่นใหม่เรียกว่าโอเปอเรเตอร์การเปลี่ยนแปลง ซึ่งมีจุดประสงค์เพื่อจัดการกับบุคคล มีตัวดำเนินการชุดรูปแบบที่แตกต่างกันสองประเภท:

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

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

ป้อนคำอธิบายรูปภาพที่นี่


ขอขอบคุณที่ตอบคำถามนี้ที่นี่! แม้ว่าโดยส่วนตัวแล้วฉันคิดว่านี่เป็นคำถามที่เหมาะสำหรับ AI SE เพราะมันเป็นพื้นฐานและ "ระดับสูง" ไม่ต้องอายเกี่ยวกับการกำกับ OP และผู้อ่านเพื่อตรวจสอบความถูกต้องของ Cross สำหรับคำถามขั้นสูงเกี่ยวกับเรื่องนี้ .
DukeZhou

8

อัลกอริทึมทางพันธุกรรมเป็นอัลกอริทึมที่สุ่มสร้างจำนวนของวิธีแก้ไขปัญหาพยายามสำหรับปัญหา ชุดของความพยายามแก้ไขปัญหานี้เรียกว่า "ประชากร"

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

แนวคิดก็คือเมื่อเวลาผ่านไปโซลูชันที่พยายามออกมานั้นมีค่าความฟิตสูงพอที่จะแก้ปัญหาได้

แรงบันดาลใจสำหรับสิ่งนี้มาจากทฤษฎีวิวัฒนาการ ทางออกที่เหมาะสมที่สุดอยู่รอดและให้กำเนิด

ตัวอย่างที่ 1

สมมติว่าคุณกำลังมองหาวิธีที่มีประสิทธิภาพที่สุดในการตัดรูปร่างจำนวนหนึ่งออกมาจากเศษไม้ คุณต้องการเสียไม้ให้น้อยที่สุด

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

ตัวอย่างที่ 2

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


โซลูชันมีความหมายอย่างไร คุณสามารถยกตัวอย่างที่เป็นประโยชน์กับปัญหาที่เฉพาะเจาะจงให้ฉันได้หรือไม่ดังนั้นฉันจึงสามารถจินตนาการได้ว่ามันจะเป็นอย่างไร
Lurker ที่ไม่ลงรอยกัน

@InquisitiveLurker ฉันได้เพิ่มตัวอย่าง แจ้งให้เราทราบหากพวกเขาไม่ชัดเจนเพียงพอ ฉันยินดีที่จะอัปเดตคำตอบของฉัน
SL Barth - Reinstate Monica

6

คำตอบนี้ร้องขอตัวอย่างจริงของวิธีอาจใช้ซึ่งฉันจะพยายามให้นอกเหนือจากคำตอบอื่น ๆ พวกเขาดูเหมือนจะเป็นงานที่ดีมากในการอธิบายว่าอัลกอริทึมทางพันธุกรรมคืออะไร ดังนั้นนี่จะเป็นตัวอย่าง

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

นี่คือการสาธิตที่ฉันทำซึ่งแม้จะถูกเข้ารหัสไม่ดีอาจช่วยให้คุณเข้าใจได้ http://khrabanas.github.io/projects/evo/evo.html กดปุ่มวิวัฒนาการและทำตามเป้าหมาย

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

อัลกอริธึมทางพันธุกรรมกำลังพยายามสร้าง "โครงข่ายประสาท" ของแปลก ๆ โดยการใช้ใน RGB จะให้สีของเอาต์พุต ก่อนอื่นมันสร้างประชากรสุ่ม จากนั้นโดยการสุ่มสมาชิก 3 คนจากประชากรเลือกสมาชิกที่มีความฟิตต่ำที่สุดและลบออกจากประชากร ความฟิตเท่ากับความแตกต่างของเป้าหมายสูงสุดกำลังสอง + ผลต่างในเป้าหมายล่างยกกำลังสอง จากนั้นจะทำการผสมสายพันธุ์ที่เหลืออีกสองสายเข้าด้วยกันและเพิ่มลูกให้อยู่ในที่เดียวกันในกลุ่มประชากรในฐานะสมาชิกที่เสียชีวิต เมื่อการผสมพันธุ์เกิดขึ้นมีโอกาสเกิดการกลายพันธุ์ การกลายพันธุ์นี้จะเปลี่ยนค่าใดค่าหนึ่งแบบสุ่ม

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


6

มีคำตอบที่ดีมากมายที่นี่อธิบายว่าอัลกอริธึมทางพันธุกรรมคืออะไรและให้แอปพลิเคชันตัวอย่าง ฉันกำลังเพิ่มคำแนะนำทั่วไปเกี่ยวกับสิ่งที่ดีสำหรับพวกเขา แต่ก็เป็นกรณีที่คุณไม่ควรใช้ ถ้าน้ำเสียงของฉันดูเหมือนจะรุนแรงอาจเป็นเพราะการใช้ GAs ในกรณีใด ๆ ในส่วนที่ไม่เหมาะสมจะนำไปสู่การที่กระดาษของคุณถูกปฏิเสธทันทีจากวารสารชั้นนำใด ๆ

ก่อนอื่นปัญหาของคุณต้องเป็นปัญหาการเพิ่มประสิทธิภาพ คุณต้องกำหนด "ฟังก์ชั่นการออกกำลังกาย" ที่คุณพยายามปรับให้เหมาะสมและคุณต้องมีวิธีในการวัด

ดี:

  • ฟังก์ชั่นครอสโอเวอร์ง่ายต่อการกำหนดและเป็นธรรมชาติ : เมื่อจัดการกับข้อมูลบางประเภทฟังก์ชั่นครอสโอเวอร์ / การกลายพันธุ์อาจจะง่ายต่อการกำหนด ตัวอย่างเช่นสตริง (เช่น. ลำดับดีเอ็นเอหรือยีน) สามารถกลายพันธุ์ได้อย่างง่ายดายโดยการประกบสองสายผู้สมัครเพื่อรับสายใหม่ (นี่คือเหตุผลที่ธรรมชาติใช้อัลกอริธึมทางพันธุกรรม!) ต้นไม้ (เช่นต้นไม้ phylogenetic หรือแยกวิเคราะห์ต้นไม้) สามารถตัดต่อด้วยโดยแทนที่สาขาของต้นไม้หนึ่งด้วยสาขาจากที่อื่น รูปร่าง (เช่นปีกเครื่องบินหรือรูปร่างเรือ) สามารถกลายพันธุ์ได้อย่างง่ายดายโดยการวาดตารางบนรูปร่างและรวมส่วนตารางที่แตกต่างจากผู้ปกครองเพื่อรับเด็ก โดยปกตินี่หมายถึงปัญหาของคุณประกอบด้วยส่วนต่าง ๆ และการรวมส่วนต่าง ๆ จากโซลูชันที่แตกต่างกันเป็นวิธีแก้ปัญหาที่ถูกต้อง
    • ซึ่งหมายความว่าหากปัญหาของคุณถูกกำหนดในพื้นที่เวคเตอร์ที่พิกัดไม่มีความหมายพิเศษใด ๆ GAs ไม่ใช่ตัวเลือกที่ดี หากเป็นการยากที่จะกำหนดปัญหาของคุณในฐานะ GA จะไม่คุ้มค่า
  • การประเมินผลกล่องดำ : หากผู้สมัครฟังก์ชั่นการออกกำลังกายของคุณได้รับการประเมินนอกคอมพิวเตอร์ GAs เป็นความคิดที่ดี ตัวอย่างเช่นหากคุณกำลังทดสอบรูปร่างปีกในอุโมงค์อากาศอัลกอริทึมทางพันธุกรรมจะช่วยให้คุณสร้างรูปร่างผู้สมัครที่ดีที่จะลอง
    • ข้อยกเว้น: จำลอง หากฟังก์ชันการออกกำลังกายของคุณวัดว่าการออกแบบหัวฉีดทำงานได้ดีเพียงใดและต้องจำลองการเปลี่ยนแปลงของของไหลสำหรับรูปร่างหัวฉีดแต่ละแบบ GAs อาจทำงานได้ดีสำหรับคุณ พวกเขายังอาจทำงานถ้าคุณกำลังจำลองระบบทางกายภาพตลอดเวลาและมีความสนใจในการออกแบบของคุณมีประสิทธิภาพในช่วงการดำเนินงานเช่น การสร้างแบบจำลองรูปแบบการเคลื่อนไหว อย่างไรก็ตามวิธีการที่ใช้สมการเชิงอนุพันธ์ย่อยเป็นข้อ จำกัด กำลังได้รับการพัฒนาในวรรณคดีเช่น การปรับให้เหมาะสมแบบ จำกัด PDEดังนั้นสิ่งนี้อาจเปลี่ยนแปลงได้ในอนาคต

ไม่เหมาะสม:

  • คุณสามารถคำนวณการไล่ระดับสีสำหรับฟังก์ชั่นของคุณ: ถ้าคุณสามารถเข้าถึงการไล่ระดับสีของฟังก์ชั่นของคุณคุณสามารถทำลาดไล่ระดับสีซึ่งโดยทั่วไปมีประสิทธิภาพมากกว่า GA เชื้อสายการไล่ระดับสีอาจมีปัญหากับท้องถิ่นน้อยที่สุด (เช่นเดียวกับ GA) แต่มีการศึกษาวิธีการมากมายเพื่อลดสิ่งนี้
  • คุณรู้ว่าฟังก์ชั่นการออกกำลังกายในรูปแบบปิด : จากนั้นคุณสามารถคำนวณการไล่ระดับสีได้ หลายภาษามีไลบรารีที่สนับสนุนการแยกความแตกต่างโดยอัตโนมัติดังนั้นคุณไม่จำเป็นต้องทำด้วยตนเอง หากการทำงานของคุณไม่ได้เป็นอนุพันธ์ได้แล้วคุณสามารถใช้เชื้อสาย subgradient
  • ปัญหาการปรับให้เหมาะสมของคุณอยู่ในรูปแบบที่รู้จักกันเช่นโปรแกรมเชิงเส้นหรือโปรแกรมกำลังสอง : GA (และวิธีการเพิ่มประสิทธิภาพกล่องดำโดยทั่วไป) ไม่มีประสิทธิภาพมากในแง่ของจำนวนผู้สมัครที่พวกเขาต้องการประเมินและหลีกเลี่ยงที่ดีที่สุดถ้าเป็นไปได้
  • พื้นที่โซลูชันของคุณมีขนาดเล็ก : หากคุณสามารถกำหนดพื้นที่ค้นหาของคุณได้อย่างมีประสิทธิภาพคุณสามารถรับประกันได้ว่าคุณได้พบโซลูชันที่ดีที่สุดและสามารถจัดทำพื้นที่ของโซลูชันเพื่อดูว่ามีพื้นที่ที่คุณต้องการสำรวจเพิ่มเติมหรือไม่

ในที่สุดหากคุณกำลังพิจารณา GA พิจารณางานล่าสุดในกลยุทธ์วิวัฒนาการ ฉันลำเอียงไปสู่CMA-ESซึ่งฉันคิดว่าเป็นอัลกอริธึมที่เรียบง่ายที่ดีที่จับความคิดของการไล่ระดับสีในแนวการออกกำลังกายในแบบที่ GAs ดั้งเดิมไม่ทำ


CMA-ES นั้นดีสำหรับปัญหาที่การแก้ปัญหาสามารถแสดงเป็นเวกเตอร์ที่มีมูลค่าจริง
NietzscheanAI

5

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

นี่คือลักษณะบางส่วนของปัญหาที่อัลกอริทึมทางพันธุกรรม (และโดยทั่วไปแล้วMetaheuristics ) นั้นดีสำหรับ:

  • NP-complete - จำนวนของวิธีแก้ปัญหาที่เป็นไปได้สำหรับปัญหานี้คือเลขชี้กำลัง แต่การตรวจสอบความเหมาะสมของวิธีแก้ปัญหานั้นค่อนข้างถูก (ในทางเทคนิคโดยมีพหุนามเวลาในขนาดอินพุต)
  • กล่องดำ - GA ทำงานได้ดีพอสมควรแม้ว่าคุณจะไม่มีปัญหาในการแก้ไขปัญหา ซึ่งหมายความว่าวิธีการเหล่านี้ยังมีประโยชน์ในฐานะที่เป็น 'การสร้างต้นแบบอย่างรวดเร็ว' ในการแก้ปัญหา

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

รายละเอียดเพิ่มเติมเกี่ยวกับการบังคับใช้ของ GAs ได้รับในกระดาษก่อนที่มีชื่อเสียง"สิ่งที่ทำให้เกิดปัญหายากสำหรับอัลกอริทึมทางพันธุกรรม?"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.