วิวัฒนาการของหุ่นยนต์ช่วยไขปริศนาพฤติกรรมการเสียสละ

By: terminus
Writer
on Mon, 09/05/2011 - 00:29

พฤติกรรมการเสียสละ (Altruism) เป็นสิ่งที่พบได้ทั่วไปในสิ่งมีชีวิตโดยเฉพาะสัตว์สังคม สัตว์ตัวใดตัวหนึ่งจะยอมเสียผลประโยชน์หรือแม้แต่เสียชีวิตเพื่อดำรงไว้ซึ่งความอยู่รอดของพวกพ้องในกลุ่ม ในปี 1964 นักชีววิทยาชาวอังกฤษชื่อว่า W. D. Hamilton ได้ตั้งทฤษฎีขึ้นมาชุดหนึ่งเพื่ออธิบายเหตุผลเบื้องหลังของพฤติกรรมการเสียสละตามหลักการของการคัดเลือกตามธรรมชาติ ต่อมาทฤษฎีนั้นกลายเป็นกฏที่ชื่อว่า "Hamilton's rule of kin selection"

>โดยคร่าวๆ "Hamilton's rule of kin selection" มีพื้นฐานว่าสิ่งมีชีวิตแต่ละตัวจะเลือกเส้นทางการกระทำที่ส่งผลให้ยีนของมันส่งผ่านต่อไปยังรุ่นต่อไปได้มากที่สุด ตัวอย่างเช่น มดงานเลือกที่จะไม่มีลูกของตัวเอง เพราะว่ามดงานแต่ละตัวมียีนตรงกับมดงานตัวอื่นๆ ในรังถึง 75% ในขณะที่ถ้ามันมีลูกเอง มันกับลูกจะมียีนร่วมกันเพียง 50% เท่านั้น วิวัฒนาการจึงเลือกที่จะให้มดงานร่วมกันทำงานให้กับรัง ให้ราชินีออกลูกสร้างพี่น้องของมันออกมาเยอะๆ ดีกว่า
(หมายเหตุ: กรณีในตัวอย่างเป็นแค่กรณีสมมติง่ายๆ ว่ามีมดแค่ 1 รังและราชินีเพียง 1 ตัวที่ผสมพันธุ์กับตัวผู้เพียง 1 ตัว รังมดของจริงซับซ้อนกว่านี้เยอะ)

Hamilton's rule of kin selection ถูกใช้ในการอธิบายพฤติกรรมของสิ่งมีชีวิตหลายชนิด แต่ก็ยังไม่เคยมีใครสามารถทดสอบได้ว่า Hamilton's rule ใช้ได้จริงกับทุกระบบหรือไม่ จนกระทั่งทีมนักวิจัยสวิตเซอร์แลนด์ได้ความคิดที่จะทดสอบ Hamilton's rule กับหุ่นยนต์

หุ่นยนต์ของพวกเขามีชื่อว่า "Alice" เป็นหุ่นยนต์ตัวเล็กๆ ขนาดประมาณ 1 นิ้ว มีล้อสองอันข้างตัวทำให้เดินหน้า ถอยหลัง และหมุนตัวไปมาได้ ในการทดลองพวกเขาจับ Alice 8 ตัวเข้าไปอยู่ในกล่องที่มี "อาหาร" อยู่ หุ่นยนต์มีอิสระในการเลือกว่าจะเอาอาหารไปขึ้นรางวัลด้วยตัวเอง (ผลักเอาอาหารไปชิดด้านข้างของกล่อง) หรือจะแบ่งกับเพื่อนๆ หุ่นยนต์แต่ละตัวมี "ระบบประสาท" ของตัวเองตัวละ 33 วงจร ไม่มีหุ่นยนต์ตัวไหนมีระบบประสาทเหมือนกันเลย ระบบประสาทของหุ่นยนต์จึงทำหน้าที่เป็นหน่วยพันธุกรรมหรือยีนด้วย

นักวิจัยปล่อยให้หุ่นยนต์แก่งแย่ง-แบ่งปันอาหารกันเองผ่านไปหลายๆ รอบ หรือจะเรียกว่าเป็น "รุ่น" (generation) ก็ได้ หุ่นยนต์ที่ไม่ได้อาหารตกถึงท้องเลยจะถูกกำจัดออกไปจากระบบ เมื่อนักวิจัยสังเกตพฤติกรรมของหุ่นยนต์แล้ว ก็นำข้อมูลที่ได้ไปเข้าแบบจำลองที่อิงพื้นฐานจาก Hamilton's rule หลังจากจำลองในคอมพิวเตอร์ว่าผ่านไป 500 รุ่น พวกเขาก็ได้ลักษณะของหุ่นยนต์ที่เหลือรอดว่ามียีนแบบไหน

จากนั้นพวกเขาก็เอาลักษณะพันธุกรรมที่ได้จากแบบจำลองป้อนกลับเข้าไปยังหุ่นยนต์ Alice ในกล่อง แล้วสังเกตพฤติกรรมต่อ ผลปรากฏว่าหุ่นยนต์มีพฤติกรรมตรงตามที่แบบจำลองทำนายไว้เป๊ะๆ นั่นคือ หุ่นยนต์ที่มียีนใกล้เคียงกันจะเสียสละซึ่งกันและกัน ยิ่งมียีนตรงกันมาก ก็จะยิ่งเสียสละให้กันมากขึ้น

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

ผมนึกถึงว่าในอนาคตเราอาจจะได้เห็นกองทัพหุ่นยนต์ที่สามารถทำงานอย่างเป็นอันหนึ่งอันเดียวกันแบบในหนังวิทยาศาสตร์ก็ได้

ที่มา - Discovery News, Scientific American

11 Comments

Thaina's picture

แบบในหนังที่มันเดินแถวหน้ากระดานมาเปนกองทัพ เพื่อไล่ฆ่ามนุษย์แล้วครองโลก รึเปล่าครับ? :D

เอาจริงๆผมไม่ไมนด์ล่ะ ถึงวันนั้นจริงผมคงไม่เปนมนุษย์หรอก เปนอะไรอย่างอื่นดีกว่า

ipats's picture

ยังไม่ค่อยเข้าใจ "ระบบประสาท" เท่าไหร่แฮะ... มันอาจจะกลายเป็นว่า ที่เป็นแบบนี้ เพราะเค้าโปรแกรมเอาไว้ แล้วหุ่นที่มีโปรแกรมใกล้เคียงกันก็เลยคิดเหมือนๆ กัน เท่านั้นหรือเปล่า

lancaster's picture

สารภาพว่าผมอ่าน(ทั้งอันนี้และบทความต้นฉบับ)แล้วงงมากตอนทำทดลองกับหุ่นยนต์

แอบงงว่าหุ่นยนต์มันรู้ด้วยเหรอว่าตัวไหนมียีนคล้ายกับของมัน ถึงเลือกที่จะแชร์ให้ตัวที่มียีนใกล้เคียงกันมากกว่า

Thaina's picture

แก้ๆ

จากที่อ่านดู ใช่ครับ มันมีเซนเซอร์ว่า หุ่นที่อยู่ตรงหน้ามัน มีโค้ดตรงกับมันแค่ไหน

แล้วโค้ดที่มันมีก็คือตัวบอกว่า มันจะแชร์อาหารกับตัวอื่น ตามเงื่อนไขอะไรบ้าง

แล้วปรากฏว่าที่รอดมาได้คือตัวที่มีโค้ด ที่สั่งว่า ให้แชร์อาหาร กับตัวที่มีโค้ดคล้ายๆกับมัน

cornario's picture

จุดประสงค์ของการทดลองนี้คือ ถ้าสิ่งมีชีวิตทำตาม Hamilton's rule of kin selection จะมีโอกาสรอดมากขึ้ันใช่รึเปล่าครับ อ่านแล้วงงชะมัด เพราะผมคิดว่าพฤติกรรมของหุ่นยนต์ยังไงก็ต้องโปรแกรมลงไปอยู่แล้ว หมายถึงถ้าหุ่นยนต์ที่โปรแกรมให้แบ่งปันอาหารกันในพวกเดียวกันก็จะมีโอกาสรอดมากกว่าหุ่นยนต์ที่ไม่ได้โปรแกรมให้แบ่งอาหาร อะไรแบบนี้ (เขียนเองงงเอง)

หรือว่าจะเป็นการทดลองว่าหุ่นยนต์สามารถมีพฤติกรรมตาม Hamilton's rule of kin selection กันแน่หว่า

tekkasit's picture

ผมว่ามันเป็น artificial neural network มากกว่าครับ ทำนองพวก meta programming คือเค้าสร้างโครงสร้างพื้นฐานไว้ให้ แล้วปล่อยให้ระบบมันสุ่ม,อยู่รอดและสืบทอดไปด้วยตัวมันเองครับ

spicydog's picture

ไม่รู้จะ comment อะไรดี แต่อยากจะบอกว่าชอบบทความนี้มาก

wichate's picture

ผมสรุปนะครับ หุ่นยนไม่ได้มีพฤติกรรม "Hamilton's rule of kin selection"

แต่คนทำหุ่นยนต์ตั้งโปรแกรมเอาไว้ว่าให้แบ่งอาหารให้ตัวที่มี code ไกล้เคียงกัน
แปลว่าตัวเองยอมอดตายและ ให้ตัวเพื่อนได้อาหาร

ทำไปทำมาปรากฏว่า ไอ้ตัวที่รอดๆ คือตัวที่มี code ไกล้เคียงกัน

จึงสรุปได้ว่าการเสียสละ ทำให้เผ่าพันธ์ของตัวเองอยู่รอด เช่น

ชาวไต้ถูกน้ำท่วม ขาดอาหาร ขาดน้ำ คนไทยก็ช่วยส่งของไปช่วย บริจาคเงินตัวเองไปช่วย
เพื่อให้เผ่าพันธ์ของมนุษย์อยู่รอด

lancaster's picture

แล้วที่คุณว่ามามันไม่ใช่กฏของ hamilton ยังไงครับ งง

terminus's picture

ก็ที่คุณอธิบายมานั่นแหละครับ คือแนวคิดของ Kin selection "เสียสละ fitness ของตัวเองให้กับญาติ เพื่อให้ยีนที่ตรงกับของตัวเองถ่ายทอดไปได้มากที่สุด"

แต่ผมไม่แน่ใจว่าเขาเขียนโปรแกรมให้หุ่นยังไงกันแน่ ถ้าเขาเขียนให้มันแบ่งให้ตัวที่ code เหมือนกันอันนี้ก็ไม่แปลก เขียนยังไงก็ควรได้ผลยังงั้น ถ้าเขาเขียนว่าให้มันทำยังไงก็ได้ให้ code ของมันอยู่รอดได้มากสุด อันนี้แหละครับที่ผลตรงกับ Hamilton's rule ซึ่งผมคิดว่าเขาเขียนตามอย่างหลังนะ เพราะถ้าทำแบบแรก แล้วได้ผลแบบนี้ มันดูติงต๊องอะที่จะสรุปเองเออเอง

Thaina's picture

เท่าที่เข้าใจคือแบบนี้ครับ

เขามี โค้ด ที่จะเปนตัวบอกว่า AI มันจะทำงานยังไง

อย่างสมมุติ มีโค้ด 0000 คือมันจะไม่แชร์ให้ใครเลย
มีโค้ด 1111 คือแชร์ให้ทุกตัว
มีโค้ด 0101 คือแชร์ให้ตัวอื่น ที่มียีนตรงกัน 1 ตำแหน่ง
มีโค้ด 1000 คือแชร์ให้ตัวไหนก็ได้ที่ยีนไม่เหมือนตัวมัน

อะไรพวกนี้หลายๆแบบ
คือโค้ดนี่จะทำหน้าที่เหมือน DNA จริงๆ ที่จะกำหนดพฤติกรรมไปด้วย และกำหนดสายพันธุ์ไปด้วย

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

อย่างพอ 1000 เจอกับ 1000 มันจะไม่แชร์อาหารให้
แต่ถ้า 1000 เจอกับ 1111 มันก็จะแชร์ให้กัน
แต่ถ้า 0101 เจอกับ 1000 จะไม่แชร์อาหารให้ แต่ถ้าเจอกับ 1111 มันจะแชร์ให้

อะไรแบบนี้น่ะครับ