การประยุกต์ใช้ Deep learning ในการแก้ปัญหา

.

.

การประยุกต์ใช้ Deep learning ในการแก้ปัญหา

พรชัย ลีลาพรชัย

 

การเติบโตขึ้นของปัญญาประดิษฐ์ในช่วงไม่กี่ปีที่ผ่านมา เป็นผลมาจากความสำเร็จของเทคนิค deep learning ปัจจัยผลักดันหลักๆ 3 ประการที่ทำให้เกิดความก้าวหน้าของเครือข่าย deep neural network  คือ การมีปริมาณข้อมูลในการ train มากๆ, โครงสร้างพื้นฐานในการคำนวณที่ทรงพลัง และความก้าวหน้าทางวิชาการ ระบบแบบ deep learning เริ่มที่จะทำงานได้ดีกว่าวิธีการแบบเดิม และดีกว่ามาตรฐานของมนุษย์ในงานหลายๆด้าน เช่น การจดจำใบหน้า และการจำแนกภาพ (image classification)  เป็นการสร้างศักยภาพสำหรับธุรกิจใหม่ๆที่จะใช้ประโยชน์จาก deep learning ในการแก้ไขปัญหา

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

  • 1. คุณค่าของการ pre-training

  • 2. ข้อควรระวังในการทำ label distribution

  • 3. ความเข้าใจแบบจำลอง black box

ประเด็นต่างๆ ข้างต้นใช้ได้กับอัลกอริธึมด้าน machine learning อื่นๆ ด้วย ไม่เฉพาะเจาะจงกับ deep learning เท่านั้น โดยเฉพาะการเรียนรู้แบบ supervised learning

ประเด็นที่ 1 : คุณค่าของการทำ pre-training

ในโลกวิขาการของการทำ machine learning ไม่ค่อยมีการเน้นเรื่องของ dataset ที่ใช้สักเท่าไร ในทางตรงกันข้าม การที่จะเปรียบเทียบเทคนิคด้าน deep learning กับวิธีอื่นๆ และการที่จะรู้ว่าวิธีการใดดีกว่าวิธีอื่นๆ นั้น  ขั้นตอนมาตรฐาน คือ การวัดประสิทธิภาพการทำงานบน dataset มาตรฐาน โดยการใช้ขั้นตอนการประเมินผลเดียวกัน อย่างไรก็ตาม ในสถานการณ์จริง มันไม่อยู่ที่ว่าอัลกอริธึมใหม่จะมีความสามารถเพิ่มสูงกว่าวิธีอื่นๆ อย่างไร แต่จะอยู่ที่ว่าการสร้างระบบที่มีความทนทาน (robust)  ที่สามารถแก้ปัญหาในงานนั้นๆ ด้วยความถูกต้องแม่นยำได้เพียงไหนต่างหาก

สำหรับระบบแบบ machine learning ต้องอาศัยการทำ labeled training  ซึ่งปัญหาต่างๆ ในการปฏิบัติและข้อมูลที่ใช้ในการทำ labeled training ที่ดีนั้นได้มายากและมีราคาแพง เราลองมาพิจารณา 2 กรณีตัวอย่างต่อไปนี้

  1. ภาพทางการแพทย์ (medical vision) : หากต้องการสร้างระบบที่ตรวจจับต่อมน้ำเหลืองในร่างกายมนุษย์จากภาพที่ได้จากการทำ CT scan เราต้องมีภาพที่ได้รับการขยาย (annotated image)  โดยที่มีการทำ label ที่ต่อมน้ำเหลือง ซึ่งเป็นงานที่ใช้เวลามาก เพราะภาพเป็น 3 มิติและต้องจดจำโครงสร้างที่มีขนาดเล็กมาก สมมติว่า นักรังสีวิทยาสามารถทำรายได้ 100 บาท/ ชั่วโมง และสามารถอธิบายภาพได้ 4 ภาพ/ชั่วโมง นั่นหมายถึงเรามีต้นทุนของแต่ละภาพที่ 25 บาท หรือคิดเป็น 250,000 บาท สำหรับภาพที่ได้รับการ label 1,000 ภาพ ลองคิดดู หากเราต้องใช้แพทย์หลายคนในการทำ label ภาพเดียวกัน เพื่อให้มั่นใจว่าการวินิจฉัยมีความถูกต้องใกล้เคียง 100% การจะได้มาซึ่ง dataset สำหรับงานทางการแพทย์ใดๆ จะมีต้นทุนสูงกว่า 250,000 บาท อย่างแน่นอน

  2. การให้คะแนนเครดิตหรือระดับความน่าเชื่อถือ  : หากเราต้องการสร้างระบบที่ทำการตัดสินใจด้านเครดิต เราต้องรู้ว่าใครมีโอกาสที่จะไม่สามารถชำระหนี้ได้ ดังนั้น เราจะสามารถ train ระบบ machine learning ให้จดจำลักษณะดังกล่าวได้ล่วงหน้า โชคไม่ดีที่กว่าเราจะรู้แน่ๆ ว่า คนๆ หนึ่งไม่สามารถชำระหนี้ได้ก็ต่อเมื่อเกิดเหตุขึ้นแล้วเท่านั้น ดังนั้นกลยุทธ์แบบไร้เดียงสาคือ การให้เงินกู้ เช่น ให้เงินกู้ 10,000 บาท กับทุกคน นั่นหมายความว่าทุกคนที่เบี้ยวหนี้จะทำให้เราเกิดต้นทุนขึ้น 10,000 บาท ทำให้ label datapoint มีราคาแพง  แน่นอนว่าเรามีกลยุทธ์ในการลดต้นทุนเหล่านี้ แต่ข้อสรุปโดยรวมคือ labeled data สำหรับปัญหาจริงๆ นั้นได้มายากและมีราคาแพง เราจะแก้ปัญหานี้ได้อย่างไร

Pre-training สามารถช่วยได้

แนวคิดพื้นฐานของการทำ pre-training คือจะทำการ train เครือข่าย neural network (หรืออัลกอริธึมในการทำ machine learning อื่น) ก่อน โดยใช้ dataset ปริมาณมากที่มีต้นทุนต่ำ โดย dataset ดังกล่าวอาจได้มาจากโดเมนอื่นที่มีความเกี่ยวข้องกัน หรือเป็นข้อมูลที่มีลักษณะ noisy ในโดเมนเดียวกัน

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

รูป 1 เมื่อข้อมูลที่ใช้ในการtrain ได้มายาก เราอาจใช้การทำ pre-training กับเครือข่าย neural network  โดยใช้ dataset ราคาถูกและมีปริมาณมากจากโดเมนที่ใกล้เคียง

หลังจากนั้นในขั้นตอนที่ 2 จึงทำการปรับแต่งอย่างละเอียด (fine-tune)  โดยใช้ dataset คุณภาพดีราคาแพง วิธีนี้ทำให้ได้ระบบที่ทำงานได้ดีขึ้นเมื่อเทียบกับการ train โดยใช้ dataset ขนาดเล็ก

  1. ในขณะที่ทำการปรับแต่งละเอียด (fine-tune) จำนวนของ class อาจเปลี่ยนได้ : มักจะมีการทำ pre-train ให้กับเครือข่าย neural network  บน dataset เช่น ImageNet ที่มีจำนวน 1,000 class แล้วทำการ fine-tune ให้เข้ากับปัญหาเฉพาะ ซึ่งอาจมีจำนวน class ที่ต่างกันไป นั่นหมายถึงว่า layer  สุดท้ายต้องผ่านการทำ re-initialize  ใหม่ เรามักจะตั้งค่า learning rate  ของ layer  สุดท้ายสูงขึ้นเล็กน้อย เพราะต้องผ่านการเรียนรู้ใหม่ตั้งแต่เริ่มต้น ในขณะที่ชั้นก่อนหน้านี้จะได้รับการ train  ด้วย learning rate ที่ต่ำกว่า  สำหรับdataset บางอย่างเช่น ImageNet feature ต่างๆ ที่เรียนรู้ได้ (layer สุดท้ายที่ต่อกันแบบถึงกันหมด fully-connected ) จะมีลักษณะทั่วไปหรือ generic มากๆ จนสามารถนำมาใช้กับงานด้าน computer vision อื่นๆ ได้

  2. เราจะเอาข้อมูลในการทำ pre-training มาได้อย่างไร : แหล่งข้อมูลสำหรับการทำ pre-training

  • Pre-trained model : มี model ที่ผ่านการ train มาแล้วมากมายบน web ตัวอย่างเช่น model Zoos ซึ่งเป็น website ที่รวบรวม model ที่ผ่านการ train ต่างๆ โดยนักวิชาการ บริษัทและผู้ที่สนใจในงานด้าน deep learning

  • Dataset สาธารณะ : มี dataset มากมายบน web ดังนั้นคุณจึงไม่ต้องเสียเวลารวบรวม dataset เอง แต่ควรตรวจสอบดูว่าอาจมี dataset ที่สามารถช่วยแก้ปัญหาเฉพาะของคุณได้

  • Data crawling : หากไม่มี pre-trained model หรือ dataset ที่เหมาะสม เราก็มีวิธีในการสร้าง dataset ขึ้นโดยไม่ต้องทำการ labeling ด้วยมือ คุณสามารถสร้าง “crawler” ซึ่งสามารถรวบรวมข้อมูลอัตโนมัติได้จาก website เฉพาะทาง ด้วยวิธีนี้คุณสามารถสร้าง dataset ของคุณเองได้

รูป 2 แหล่งข้อมูลสำหรับการทำ pre-training

3. Weakly labeled data  (ข้อมูลที่ได้รับการ label อย่างคร่าวๆ) : ในขณะที่เราทำการปรับแต่ง fine-tune  จะใช้ข้อมูลที่ถูก label มาด้วยความแม่นยำ แต่ในการทำ pre-train เราอาจใช้ข้อมูลที่ผ่านการ label  อย่างคร่าวๆ ได้ (weakly labeled data) ซึ่งในที่นี้หมายถึงข้อมูลที่ label ไม่ถูกต้อง 100% เช่นอาจถูกต้องเพียงเพียง 90% ข้อดีคือ ข้อมูลชนิดนี้สามารถได้มาอัตโนมัติโดยไม่ต้องใช้คนในการทำ label  ซึ่งทำให้ข้อมูลดังกล่าวค่อนข้างถูก เมื่อเทียบกับข้อมูลที่คนต้องทำ label ในทุกๆ ภาพ ตัวอย่างเช่น มีการ crawl  dataset จากภาพใบหน้ากว่า 500,000 ภาพจาก Wikipedia และฐานข้อมูล IMDb เราผสมผสานข้อมูลวันเกิดที่ได้จาก profile  และข้อมูลที่ได้จาก caption ของภาพตอนที่มีการถ่ายภาพนั้นๆ ด้วยวิธีนี้เราจะสามารถกำหนดค่าอายุโดยประมาณให้กับภาพแต่ละภาพ โปรดสังเกตว่าในบางกรณี ปีที่เขียนอยู่ในส่วน caption ใต้ภาพอาจผิด และรูปแสดงคนหลายคน ส่วนที่ตรวจจับใบหน้าอาจเลือกหน้าที่ผิด ดังนั้น เราจะไม่สามารถรับประกันได้ว่า age label ที่บอกอายุของแต่ละภาพนั้นถูกต้อง อย่างไรก็ตาม การทำ pre-training ด้วย dataset ที่มีการ label อย่างคร่าวๆ นี้ ช่วยปรับปรุงประสิทธิภาพการทำงาน เมื่อเปรียบเทียบกับการ train โดยใช้ dataset ที่มีการ label อย่างแม่นยำแต่มีปริมาณน้อยกว่า

เราสามารถใช้ตรรกะเดียวกันกับปัญหาด้านภาพทางการแพทย์ ที่ต้องอาศัยแพทย์จำนวนมากที่ทำงานอิสระต่อกันในการทำ label ภาพเดียวกัน เพื่อให้มั่นใจเกือบ 100% ว่า label  นั้นทำอย่างถูกต้อง  นี่จะเป็น dataset สำหรับการทำ fine-tune  นอกจากนี้เรายังสามารถรวบรวม dataset ที่มีขนาดใหญ่กว่า โดยมีการ label  แบบคร่าวๆ ซึ่งทำโดยคนๆ เดียว ดังนั้นเราจึงสามารถลดต้นทุนโดยรวมของการทำ label และมั่นใจได้ว่า เครือข่าย neural network ได้รับการ train โดยใช้ภาพที่หลากหลาย

ประเด็นที่ 2 : ข้อควรระวังในการทำ label distribution ในทางปฏิบัติ

หลังจากที่เรามีข้อมูลสำหรับการทำ pre-training และ fine-tuning  เราก็เริ่มทำการ train เครือข่าย neural network ได้ ข้อแตกต่างที่สำคัญระหว่างงานทางวิชาการและในโลกแห่งความเป็นจริงมีดังนี้

ในทางวิชาการ dataset ส่วนใหญ่จะเป็นแบบสมดุล นั่นหมายถึงว่าสำหรับปัญหาพวก supervised classification มักจะมีจำนวน sample ต่อ class ที่เท่าๆ กัน ตัวอย่าง 2 กรณีดังต่อไปนี้

  1. MNIST เป็น dataset ของตัวเลขจากลายมือเขียนที่เป็นที่รู้จักดี โดยมีจำนวน sample ของแต่ละตัวเลขเท่าๆกัน

  2. Food 101 เป็นอีกตัวอย่างที่เป็น dataset ในวงวิชาการที่มีรูปทั้งหมด 1,000 รูปของอาหารแต่ละชนิดในบรรดาอาหาร 101ชนิด

รูป 3 MNIST  และ Food 101 เป็นตัวอย่าง dataset ที่มีความสมดุล

การ distribution ของ label ที่ไม่สมดุล : เราจะทำการแสดงปัญหาโดยอาศัยตัวอย่างจากปัญหาในการใช้งานจริง 2 ตัวอย่าง คือ

ภาพทางการแพทย์ : ข้อมูลที่ใช้ train ในงานด้านภาพทางการแพทย์ค่อนข้างไม่สมดุล ผู้ป่วยส่วนใหญ่จะมีสุขภาพดี โดยมีเพียงส่วนหนึ่งที่ป่วยเป็นโรคบางอย่าง

การให้คะแนนเครดิตหรือความน่าเชื่อถือ : ในความเป็นจริงแล้ว ลูกค้าส่วนใหญ่จะคืนเงินกู้ มีเพียง 1-2% ที่ไม่ชำระหนี้

รูป 4 label distribution ในโลกแห่งความจริงที่ไม่สมดุล

ดังแสดงในรูปข้างต้น จะพบว่า label distribution  จะบิดเบี้ยวมากในทั้ง 2 กรณีข้างต้น ซึ่งปัญหาในทางปฏิบัติมักจะเป็นเช่นนี้ อันที่จริงแล้วเป็นการยากที่ข้อมูลแต่ละชนิด (category)  จะมี sample เท่าๆ กัน

  1. ต้นทุนที่ไม่สมดุลของการจัดผิดประเภท (unbalanced cost of misclassification) : โชคไม่ดีที่ปัญหาความไม่สมดุลมีมากกว่านั้น สำหรับ dataset ที่ใช้ในวงวิชาการ ต้นทุนของการจัดผิดประเภทมักจะเท่ากันในแต่ละประเภท ซึ่งลักษณะเช่นนี้แตกต่างจากการประยุกต์ใช้งานในความเป็นจริงมาก

  2. ภาพทางการแพทย์ : การวินิจฉัยคนบางคนว่า เขาป่วยทั้งที่สุขภาพดี ไม่ได้เป็นสิ่งที่แย่ หากแพทย์ที่ทำการตรวจซ้ำทราบว่าคนนั้นสุขภาพแข็งแรงดีจริง ยังจะดีเสียกว่ากรณีที่ไม่ได้บ่งชี้ว่า ผู้ป่วยที่ป่วยจริงนั้นเป็นคนป่วย แต่ปล่อยให้กลับบ้านไปโดยไม่ทำการรักษาต่างหากที่อันตราย

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

    รูป 5 ต้นทุนที่ไม่สมดุลของการจัดผิดประเภทในการประยุกต์ใช้งานในโลกแห่งความจริง

  4.  เราจะจัดการกับประเด็นดังกล่าวอย่างไร : จากการที่เราตระหนักว่า class ต่างๆ มักไม่สมดุล รวมถึงต้นทุนในการจัดผิดประเภทด้วย เราต้องมีเทคนิคในการจัดการปัญหาดังกล่าว ซึ่งงานวิจัยที่เกี่ยวข้องมีค่อนข้างจำกัด สังเกตว่าทั้ง class และต้นทุนในการจัดประเภท หรือ class ที่ไม่สมดุลจะมีความสัมพันธ์กันมาก นั่นหมายความว่า สำหรับ sample  บางตัว เราไม่เพียงมีจำนวนtraining data เล็กน้อย แต่การจัดผิดประเภทจะมีราคาแพงมากด้วย เทคนิคที่ช่วยให้ model  ทำการจัดประเภทตัวอย่างที่หายากได้ดีมี 4 ประการ คือ

    ใช้ข้อมูลมากขึ้น : วิธีการหนึ่งที่ชัดเจน คือ การพยายามเก็บข้อมูลจาก class ที่หายากให้มากขึ้น สำหรับงานด้านภาพทางการแพทย์ หมายถึงการที่เราพยายามเน้นไปที่การรวบรวมภาพของผู้ป่วยที่มีโรคที่เราอยากจะวินิจฉัยหากเป็นไปได้ เนื่องจากต้นทุนที่สูงเกินไปก็อาจมีทางอื่นที่ให้ได้มาซึ่ง training data ดังที่กล่าวไว้ข้างต้น ทั้งนี้เราควรระมัดระวังในการปรับการกระจายของ training label เพราะมันจะมีผลกระทบต่อการที่ model จะทำนายผลในช่วงอนุมานหรือการทำ inference  หากเราทำการเพิ่มจำนวนของผู้ป่วยใน training set  Model ก็จะทำการทำนายผลว่าป่วยบ่อยขึ้นด้วย

 

รูป 6 การเก็บรวบรวมข้อมูลของ class  ที่หายาก เราต้องระมัดระวังเมื่อการกระจายของ label ระหว่างการ training และการ inference (อนุมานค่า) ไม่ค่อยตรงกัน

เปลี่ยน labeling : หากไม่สามารถหาข้อมูลของ class ที่มีน้อย (rare) ให้มากขึ้น เราอาจเปลี่ยนการจัดประเภท สำหรับการประยุกต์ใช้งานในทางปฏิบัติ เราไม่จำเป็นที่ต้องแยกความแตกต่างระหว่างโรค A และ B  ตราบใดที่รู้ว่าเป็นหนึ่งในสองโรคนี้ ในกรณีดังกล่าวอาจต้องควบรวม class ทั้ง 2 เข้าด้วยกัน ทั้งในขณะทำ training เพื่อให้ขั้นตอนการ train ง่ายลงหรือในขั้นการอนุมาน นั่นหมายถึง คุณจะไม่ว่าอะไรหากเกิดการสับสนในการแยกแยะโรค A และ B

 

รูป 7 การรวม 2 class ขึ้นไประหว่าง training หรือการประเมินค่า จะทำให้ปัญหาง่ายขึ้น

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

  • การเพิกเฉย (ignore) : การเพิกเฉยตัวอย่างบางตัวของ class ที่เกิดขึ้นบ่อยมากกว่านับเป็นวิธีที่ง่ายที่สุด อาจทำเช่นนี้จนกระทั่งมีจำนวน sample ของแต่ละ class ที่ใกล้เคียงกัน

รูป 8 การเพิกเฉยต่อ sample ของclass ที่เกิดบ่อย

  • การทำ over หรือ under sampling : การทำ oversampling หมายความว่า sample จาก class ที่หายากจะถูกแสดงให้อัลกอริธึมเห็นด้วยความถี่ที่สูงกว่า ในขณะที่ under sampling หมายถึงการทำในลักษณะตรงกันข้าม กล่าวคือ sample จาก class ที่มีความถี่มากกว่าจะถูกแสดงบ่อยน้อยลง ในแง่ของอัลกอริธึม ทั้ง 2 วิธีจะก่อให้เกิดผลอย่างเดียวกัน ข้อดีของเทคนิคนี้ คือ ไม่มี sample ที่ถูกเพิกเฉย

 

รูป 9  การทำ over หรือ under sample

  • Negative mining : วิธีนี้อาจจะซับซ้อนขึ้นแต่มีประสิทธิภาพมากที่สุด แทนที่เราจะทำ over หรือ under sampling เราจะทำการเลือก sample  อย่างจงใจ ถึงแม้ว่าเราจะมี sample  ของ classที่เกิดขึ้นบ่อย มีจำนวนมากๆ เราก็จะสนใจแต่ sample ที่ยากที่สุด นั่นคือ sample ที่มีความน่าจะเป็นที่จะถูกจัดประเภทผิดมากที่สุด ดังนั้น จะสามารถประเมิน model ของเราในระหว่างการทำ training ได้อย่างสม่ำเสมอ และคอยดู sample ต่างๆ โดยเฉพาะ sample ที่น่าจะถูกจัดผิดประเภท ทำให้สามารถเลือก sample อย่างชาญฉลาด เพื่อที่จะแสดงให้อัลกอริธึมเห็นบ่อยขึ้น

 

รูป 10 negative mining

  • การถ่วงน้ำหนักการสูญเสีย (weighting the loss) : การใช้ 3 วิธีข้างต้น เราได้ทำทุกอย่างเกี่ยวกับข้อมูลเพื่อปรับปรุงการกระจายของ class ต่างๆ จากนี้เราจะมาเน้นที่ตัวอัลกอริธึมเอง โชคดีที่เรามีวิธีต่างๆที่สามารถใช้ในช่วงการทำ training เพื่อให้ความสนใจกับ class ที่หายากมากขึ้น วิธีที่ตรงไปตรงมาที่สุด คือ การเพิ่มน้ำหนักของการสูญเสียของ sample จาก class ที่หายาก

 

รูป 11 แสดงการสูญเสียของ class ที่หายาก ที่ถูกถ่วงน้ำหนักให้มากขึ้น

ประเด็นที่ 3 : ทำความเข้าใจ black box model

ดังที่ได้กล่าวไปในส่วนของการทำ pre-training เป้าหมายที่สำคัญที่สุดในงานวิชาการ คือ ประสิทธิภาพการทำงานที่เหนือใคร ไม่ว่า model นั้นจะเป็นอย่างไรก็ตาม แต่ในการประยุกต์ใช้งานแห่งโลกความจริง การออกแบบ model  ให้ทำงานดีอาจไม่พอ สิ่งที่สำคัญ คือ

  • ต้องสามารถเข้าใจ model ว่าทำการทำนายผิดได้อย่างไร

  • ต้องบอกได้ว่าทำไม model ของเราจึงทำงานได้ดีกว่า solution ก่อนๆ นี้

  • ต้องแน่ใจว่า model จะไม่ถูกหลอก

ก่อนที่ deep neural network  จะรุ่งเรืองขึ้น model ส่วนใหญ่จะง่ายต่อการหาเหตุผลและทำความเข้าใจ ลองพิจารณา model ดังต่อไปนี้

  • Linear Model : ตัวจัดประเภทแบบเชิงเส้น (linear classifier) หรือ regressor จะแสดงความสัมพันธ์โดยตรงระหว่างแต่ละ feature และการทำนาย ทำให้กลไกการตัดสินใจของ model ค่อนข้างตรงไปตรงมา

  • Decision tree : ความงดงามของ decision tree อยู่ที่การที่เราสามารถติดตามไล่ไปตาม tree เพื่อให้เข้าใจว่าการตัดสินใจเกิดขึ้นได้อย่างไร โดยทั่วไปแล้ว node บนๆ จะครอบคลุม feature สำคัญๆ สำหรับ random decision forest อาจมีความซับซ้อนและยากขึ้นหน่อย อย่างไรก็ตาม โครงสร้างต้นไม้แบบนี้จะทำความเข้าใจค่อนข้างง่าย

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

รูป 12 การเปรียบเทียบระหว่างวิธีการด้าน machine learning แบบเก่า และ deep learning

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

รูป 13 อุบัติเหตุจากรถ Tesla (ซ้าย) และ บทความเกี่ยวกับปัญญาประดิษฐ์ที่กลายเป็นพวกเหยียดชาติพันธุ์ (ขวา)

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

รูป 14 การเติมสัญญาณรบกวน (random noise) เล็กน้อยเข้าไปในภาพ (รูปบน) หรือการใช้ภาพที่สังเคราะห์ขึ้นโดยสิ้นเชิง (รูปล่าง) ก็สามารถหลอก neural network ได้ง่ายๆ

 

ในชีวิตจริงโดยทั่วไปแล้ว เราต้องการจะเข้าใจว่า ทำไมระบบจึงไม่ทำงานอย่างที่ควรจะเป็น ประเด็นดังกล่าวจะยิ่งทวีความสำคัญขึ้นในอนาคต เมื่อมีการนำ deep learning มาประยุกต์ใช้ในงานที่มีความสำคัญยิ่งยวด ตัวอย่างในการใช้งาน deep learning เช่น ในงานด้านยานยนต์ อาทิ การตรวจจับวัตถุ การแบ่งเส้นถนน ในงานด้านโฆษณา อาทิ การทำความเข้าใจว่าทำไมโฆษณาบางชิ้นจึงได้รับการคลิกมากกว่าตัวอื่น หรืองานด้านภาพทางการแพทย์ อาทิ การวิเคราะห์ว่าส่วนใดในภาพ CT Scan หรือ X-ray ที่แสดงความผิดปกติ

 

บทความนี้ได้กล่าวถึงบทเรียนหรือประเด็นที่สำคัญในการใช้ deep learning ในการแก้ไขปัญหาในโลกแห่งความจริง โดยมีสมมติฐานว่าผู้อ่านมีพื้นฐานด้านปัญญาประดิษฐ์และ neural network อยู่บ้าง ทั้งนี้ยังมี trick และเทคนิคอื่นๆ อีกมากที่ไม่ได้กล่าวถึงในบทความนี้ อย่างไรก็ตามผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ต่อผู้ที่วางแผนจะใช้ deep learning ในงานของคุณ.

 

 

 

Leave a Comment