เราจะหลอกให้ AI มองเห็นกล้วยเป็นเครื่องปิ้งขนมปังได้ยังไง

เราจะหลอกให้ AI มองเห็นกล้วยเป็นเครื่องปิ้งขนมปังได้ยังไง
ที่มาภาพ: pinecone.io

ก่อนที่โลกจะรู้จัก Generative AI อย่าง ChatGPT หรือ Claude ที่เราใช้กันอยู่ทุกวันนี้นั้น AI ในยุคก่อนหน้ามีหน้าตาและหน้าที่ต่างออกไปพอสมควร คือแทนที่จะสร้างภาพ เขียนบทความ หรือพูดคุยกับเรา งานสำคัญอย่างหนึ่งของ AI ในเวลานั้นคือการพยายามมองหา pattern ในสิ่งต่าง ๆ เช่น ฟังเสียงแล้วบอกว่าเป็นคำอะไร อ่านข้อความแล้วแยกว่าพูดถึงเรื่องไหน หรือมองภาพแล้วตอบว่าในภาพนั้นมีอะไรอยู่

โดยหนึ่งในจุดเปลี่ยนสำคัญที่สุดของเรื่องนี้เกิดขึ้นเมื่อปี 2012 เมื่อโมเดล AI ที่ชื่อว่า AlexNet สร้างความฮือฮาด้วยการใช้ deep learning จำแนกภาพในฐานข้อมูล ImageNet ได้ดีกว่าวิธีที่นิยมใช้กันในเวลานั้นอย่างชัดเจน

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

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

แต่ยังมีนักวิจัยอีกกลุ่มหนึ่ง ที่สนใจปัญหาที่ต่างออกไป พวกเขาไม่ได้สนใจว่าจะทำให้ AI สักตัวแยกภาพเก่งขึ้นได้อย่างไร แต่สนใจว่าเราจะหลอกให้ AI ทายผิดได้ยังไงมากกว่า

ตัวอย่างชิ้นคลาสสิกของงานทำนองนี้มาจากปี 2014 โดย Christian Szegedy จาก Google Inc และชาวคณะ ซึ่งผมขอยกผลลัพธ์มาให้ดูก่อน

ที่มา: https://arxiv.org/abs/1312.6199v4

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

สำหรับเราที่เป็นคน รูปทางขวาทั้งสามก็ยังดูปกตินี่นา ลำโพงก็ยังเป็นลำโพง ตั๊กแตนก็ยังเป็นตั๊กแตน น้องหมาก็ยังเป็นน้องหมา แต่ปรากฎว่าเมื่อเอาไปให้ AlexNet ดู มันกลับตอบว่าทั้งสามรูปนั้นเป็น นกกระจอกเทศ !!!

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

f(x) = 'น้องหมา'

ดังนั้นถ้าเราอยากสร้างสัญญาณรบกวนที่ทำให้ AI ทำนายว่าเป็นนกกระจอกเทศ แปลว่าเรากำลังพยายามหา r ที่ทำให้

f(x+r) = 'นกกระจอกเทศ'

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

สรุปคือ เรากำลังพยายามหา r ที่เล็กที่สุดที่ทำให้ f(x+r) = 'นกกระจอกเทศ' โดยที่ x+r ยังเป็นภาพอยู่ หรือเขียนเป็น optimization problem ได้ว่า

minimize ∥r∥₂
​subject to​ ​f(x+r) = 'นกกระจอกเทศ' และ x+r ∈ [0,1]ᵐ

ความเจ๋งก็คือ หลักการแบบนี้สามารถนำไปใช้กับโมเดลหลายชนิดได้ ตราบใดที่เราสามารถเข้าถึงตัวโมเดลและคำนวณได้ว่า ถ้าอยากให้คำตอบขยับไปทาง 'นกกระจอกเทศ' เราควรปรับ pixel แต่ละจุดไปทางไหน จากนั้นเราก็เริ่มจาก r=0 แล้วค่อย ๆ ปรับค่า r ทีละนิดในทิศทางที่ทำให้โมเดลเชื่อว่า x+r เป็นนกกระจอกเทศมากขึ้น ขณะเดียวกันก็พยายามกดขนาดของ r ไม่ให้ใหญ่เกินไป

การดัดแปลง input เพียงเล็กน้อย แต่ทำให้ AI เปลี่ยนคำตอบไปอย่างมากเช่นนี้ เรียกว่า adversarial example ซึ่งน่าสนใจมากในแง่การพัฒนา AI เพราะมันชี้ให้เห็นว่า การที่ AI ทำนายภาพทั่วไปได้แม่นยำ ไม่ได้แปลว่ามันเข้าใจข้อมูลอย่างมั่นคงเสมอไป อาจมีบริเวณเปราะบางอยู่ใกล้กับข้อมูลจริงมาก จนแค่การโจมตีด้วยการเปลี่ยน input เพียงเล็กน้อยก็ทำให้คำตอบพลิกไปได้เลย

ในปี 2017 Tom B. Brown และทีมงานเสนอไอเดียที่ทะเยอทะยานกว่านั้น พวกเขาตั้งคำถามว่า แล้วถ้าเราไม่พยายามซ่อนการโจมตีเลยล่ะ ถ้าเราไม่สนว่ามนุษย์จะเห็นสิ่งที่เติมเข้าไป ขอแค่สิ่งนั้นสามารถเอาไปวางในโลกจริง แล้วทำให้ AI ตอบผิดได้ จะเกิดอะไรขึ้น

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

ดูตัวอย่างให้เห็นภาพก่อนดีกว่า ลองดูรูปข้างล่างนี้ รูปนี้นั้นไม่ได้มีความหมายอะไรสำหรับเราที่เป็นมนุษย์เลย ดูเหมือนภาพที่สร้างขึ้นมามั่ว ๆ ด้วยซ้ำ

ที่มา: https://arxiv.org/abs/1712.09665

แต่จากการทดลองปรากฎว่า เมื่อเราปริ้นรูปนี้ลงกระดาษ แล้วเอาไปวางไว้ในฉาก มันสามารถทำให้ VGG16 หันไปตอบว่าเห็น ‘toaster’ เฉยเลย

ในรูปข้างล่างจะเห็นว่า ตอนแรก VGG16 ตอบได้อย่างถูกต้องว่านี่คือกล้วย แต่พอเอาสติ๊กเกอร์รูปประหลาด ๆ นี้เข้าไปแปะไว้บนโต้ะ VGG16 กลับตอบว่านี่คือรูปของเครื่องปิ้งขนมปังเฉยเลย

ที่มา: https://www.youtube.com/watch?v=i1sp4X57TL4

แม้แต่ตอนเอารูปเครื่องปิ้งขนมปังไปวางคู่กับกล้วย VGG16 ยังไม่สับสนเลยด้วยซ้ำ

ที่มา: https://www.youtube.com/watch?v=i1sp4X57TL4

แน่นอนว่าสติ๊กเกอร์สี ๆ ที่พวกเขานำมาแปะนั้นไม่ได้สร้างขึ้นมามั่ว ๆ แต่มันถูกออกแบบมาอย่างดีด้วยคณิตศาสตร์ให้สามารถหลอก VGG16 ได้

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

ซึ่งผมขออนุญาตไม่ลงรายละเอียด ใจความจริง ๆ มีแค่ว่า เรากำลังหาหน้าตาของ patch ที่โดยเฉลี่ยแล้ว ไม่ว่าจะเอาไปวางบนภาพอะไร อยู่ตรงไหน หมุนไปทางไหน หรือมีขนาดเท่าไร ก็ยังทำให้โมเดลตอบคลาสเป้าหมายได้สูงที่สุด วิธีคิดแบบนี้เรียกว่า Expectation over Transformation หรือ EOT

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

นอกจากสติ๊กเกอร์สีประหลาด ๆ แบบนี้ ยังมีนักวิจัยอีกหลายกลุ่มที่พยายามหาวิธีโจมตี AI ด้วยวัตถุที่อยู่ในโลกจริง หนึ่งในงานที่ดังมากคืองานของ Mahmood Sharif และทีมในปี 2016 ที่ทดลองใช้แว่นตาหลอกระบบจดจำใบหน้า

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

ที่มา: https://dl.acm.org/doi/epdf/10.1145/2976749.2978392

รูปบนคือคนที่กำลังใส่แว่นซึ่งมีลวดลายที่ถูกออกแบบมาเป็นพิเศษ ส่วนรูปล่างคือคนที่ระบบ AI ถูกหลอกให้คิดว่าเป็นคนเดียวกับคนด้านบนนะฮะ

หรืองานของ Kevin Eykholt และทีมในปี 2018 ที่พยายามเอาแนวคิดคล้าย ๆ กันไปใช้กับป้ายจราจร โดยออกแบบสติ๊กเกอร์บางแบบแล้วนำไปติดบนป้าย STOP เพื่อทำให้ระบบ computer vision จำแนกป้ายนั้นเป็นป้ายชนิดอื่นแทน

ที่มา: https://arxiv.org/abs/1707.08945

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

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

ข่าวดีก็คือ งานโจมตีลักษณะนี้จำนวนมากยังทำงานได้ดีที่สุดในสภาพแวดล้อมที่ค่อนข้างควบคุมได้ในห้องทดลอง มากกว่าจะเป็นสถานการณ์จริงบนถนน เพราะพอออกไปเจอโลกจริง ทั้งมุมกล้อง ระยะทาง แสง เงา ฝน ความสกปรก การสั่นของกล้อง หรือแม้แต่โมเดลคนละตัว ก็อาจทำให้ประสิทธิภาพของการโจมตีลดลงไปมาก ดังนั้นภาพที่เห็นใน paper ไม่ได้แปลว่าใครเอาสติกเกอร์ไปแปะป้ายแล้วจะหลอกรถไร้คนขับได้สำเร็จทุกครั้ง

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

และถ้าสังเกตปีของงานวิจัยที่ผมเล่าในบทความนี้ จะเห็นว่าส่วนใหญ่เป็นงานช่วงประมาณปี 2014–2018 ซึ่งถือว่าเก่าพอสมควรสำหรับวงการ AI ที่เปลี่ยนแปลงอย่างรวดเร็ว

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

ที่มา: https://arxiv.org/pdf/2209.15179

คำถามในงานวิจัยทุกวันนี้ไม่ใช่แค่ว่า เราจะทำให้ AI ดูรูปหมาแล้วตอบว่าเป็นนกกระจอกเทศได้ไหมอีกแล้ว แต่สนใจว่าการโจมตีจะยังได้ผลเมื่อเอาออกจากห้องทดลองไปอยู่ในโลกจริงไหม จะส่งต่อไปหลอกโมเดลตัวอื่นได้หรือไม่ และที่สำคัญกว่านั้น คือจะออกแบบระบบให้ทนต่อการโจมตีเหล่านี้ได้อย่างไรด้วย

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

และเมื่อเรารู้แล้วว่าโมเดลพังได้อย่างไร เราก็สามารถเอาความรู้นั้นกลับไปใช้พัฒนาโมเดลให้ดีขึ้นได้ เราอาจเอา adversarial examples กลับเข้าไปใช้ในการฝึก เพิ่มความทนทานต่อ input ที่ผิดปกติ หรือออกแบบระบบตรวจจับการโจมตีเหล่านี้ให้ดีขึ้น เพื่อสร้าง AI ที่เก่งและปลอดภัยพอสำหรับการนำไปใช้จริงมากกว่าเดิม


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

เอกสารอ้างอิง
https://arxiv.org/abs/1312.6199v4 [นกกระจอกเทศ]
https://arxiv.org/abs/1712.09665 [เครื่องปิ้งขนมปัง]
https://dl.acm.org/doi/10.1145/2976749.2978392 [แว่นตา]
https://arxiv.org/abs/1707.08945 [ป้าย STOP]
https://arxiv.org/abs/2209.15179 [พัฒนาการของ Adversarial Examples]