1. บทนำ

อัปเดตล่าสุด: 28-03-2022
แมชชีนเลิร์นนิง
แมชชีนเลิร์นนิงเป็นสาขาที่พัฒนาอย่างรวดเร็ว มีการเผยแพร่การวิจัยและความเป็นไปได้ใหม่ๆ ทุกวัน ซึ่งช่วยให้เกิดกรณีการใช้งานที่ไม่เคยเป็นไปได้มาก่อน
โดยปกติแล้วการเปิดตัวเหล่านี้มักจะส่งผลให้เกิดโมเดล โมเดลสามารถเข้าใจได้ว่าเป็นสมการคณิตศาสตร์ที่ยาวมาก ซึ่งเมื่อได้รับอินพุต (เช่น รูปภาพ) ก็จะแสดงผลลัพธ์ (เช่น การจัดประเภท)
- จะเกิดอะไรขึ้นหากคุณต้องการใช้โมเดลใหม่เหล่านี้กับข้อมูลของคุณเอง
- คุณจะได้รับประโยชน์จากโมเดลที่ล้ำสมัยเหล่านี้สำหรับกรณีการใช้งานของคุณหรือในแอปได้อย่างไร
Codelab นี้จะแนะนำขั้นตอนการปรับแต่งโมเดลแมชชีนเลิร์นนิงให้เข้ากับข้อมูลของคุณเองด้วยวิธีง่ายๆ
การสร้างและการฝึกโมเดลแมชชีนเลิร์นนิงมีความท้าทายหลายอย่าง ดังนี้
- ใช้เวลานานมาก
- ใช้อินเทอร์เน็ตปริมาณมาก
- ต้องมีความเชี่ยวชาญในสาขาต่างๆ เช่น คณิตศาสตร์และสถิติ
- ใช้ทรัพยากรมาก: โมเดลบางรายการอาจใช้เวลาหลายวันในการฝึก
การสร้างสถาปัตยกรรมโมเดลใหม่ต้องใช้เวลามาก และอาจต้องทำการทดลองหลายครั้งและใช้ประสบการณ์หลายปี แต่จะเป็นอย่างไรหากคุณสามารถใช้ความรู้ทั้งหมดนั้นและนำไปใช้กับข้อมูลของคุณเองได้โดยเพียงแค่ปรับแต่งการวิจัยที่ล้ำสมัยที่สุดสำหรับปัญหาของคุณเอง ซึ่งทำได้โดยใช้เทคนิคที่เรียกว่าการเรียนรู้การโอน
ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีทำการเรียนรู้แบบถ่ายโอน เหตุผลที่การเรียนรู้แบบถ่ายโอนได้ผล และเวลาที่ควรใช้การเรียนรู้แบบถ่ายโอน
สิ่งที่คุณจะได้เรียนรู้
- การเรียนรู้แบบถ่ายโอนคืออะไรและเมื่อใดที่ควรใช้
- วิธีใช้การเรียนรู้แบบถ่ายโอน
- วิธีปรับแต่งโมเดล
- วิธีใช้ Model Maker ของ TensorFlow Lite
- วิธีใช้ TensorFlow Hub
สิ่งที่คุณต้องมี
- โค้ดทั้งหมดจะดำเนินการโดยใช้ Google Colaboratory คุณจึงไม่จำเป็นต้องติดตั้งอะไรในเครื่อง คุณเพียงแค่ต้องมีสิทธิ์เข้าถึงอินเทอร์เน็ตและบัญชี Google เพื่อลงชื่อเข้าใช้ Colab
- มีความรู้พื้นฐานเกี่ยวกับ TensorFlow และ Keras API
- มีความรู้เกี่ยวกับ Python
หากไม่มีความรู้พื้นฐานเกี่ยวกับ TensorFlow หรือแมชชีนเลิร์นนิง คุณก็ยังเรียนรู้เกี่ยวกับ Transfer Learning ได้ อ่านขั้นตอนถัดไป "การเรียนรู้แบบถ่ายโอนคืออะไร" เพื่อดูทฤษฎีเบื้องหลังเทคนิคนี้ แล้วไปที่ "การเรียนรู้แบบถ่ายโอนด้วย Model Maker" หากต้องการเจาะลึกและดูกระบวนการอย่างละเอียด คุณจะเห็นข้อมูลดังกล่าวในส่วนเกี่ยวกับการเรียนรู้แบบถ่ายโอนด้วย TensorFlow Hub
2. การเรียนรู้แบบถ่ายโอนคืออะไร
โมเดลที่ฝึกไว้ล่วงหน้าคือเครือข่ายที่บันทึกไว้ซึ่งได้รับการฝึกก่อนหน้านี้ในชุดข้อมูลขนาดใหญ่ โดยปกติจะเป็นงานการแยกประเภทรูปภาพขนาดใหญ่ คุณจะใช้โมเดลที่ฝึกไว้ล่วงหน้าตามที่เป็นอยู่ หรือใช้การเรียนรู้การโอนเพื่อปรับแต่งโมเดลนี้ให้เหมาะกับงานที่กำหนดก็ได้
แนวคิดเบื้องหลังการเรียนรู้แบบถ่ายโอนสำหรับการจัดประเภทรูปภาพคือ หากโมเดลได้รับการฝึกในชุดข้อมูลขนาดใหญ่และทั่วไปมากพอ โมเดลนี้จะทำหน้าที่เป็นโมเดลทั่วไปของโลกภาพได้อย่างมีประสิทธิภาพ จากนั้นคุณจะใช้ประโยชน์จากฟีเจอร์แมปที่ได้เรียนรู้เหล่านี้ได้โดยไม่ต้องเริ่มต้นใหม่ด้วยการฝึกโมเดลขนาดใหญ่ในชุดข้อมูลขนาดใหญ่
การปรับแต่งโมเดลแมชชีนเลิร์นนิงทำได้ 2 วิธี
- การดึงฟีเจอร์: ใช้การแสดงที่เครือข่ายก่อนหน้าได้เรียนรู้เพื่อดึงฟีเจอร์ที่สําคัญจากตัวอย่างใหม่ คุณเพียงเพิ่มตัวแยกประเภทใหม่ซึ่งได้รับการฝึกตั้งแต่ต้นไว้เหนือโมเดลที่ฝึกไว้ล่วงหน้า เพื่อให้คุณนำฟีเจอร์แมปที่เรียนรู้ก่อนหน้านี้ไปใช้ซ้ำกับชุดข้อมูลได้ คุณไม่จำเป็นต้องฝึก (อีกครั้ง) โมเดลทั้งหมด เครือข่าย Convolutional พื้นฐานมีฟีเจอร์ที่มีประโยชน์โดยทั่วไปสำหรับการจัดหมวดหมู่รูปภาพอยู่แล้ว อย่างไรก็ตาม ส่วนการแยกประเภทสุดท้ายของโมเดลที่ผ่านการฝึกมาก่อนจะเฉพาะเจาะจงกับงานการแยกประเภทเดิม และเฉพาะเจาะจงกับชุดคลาสที่ใช้ฝึกโมเดลในภายหลัง
- การปรับแต่ง: ยกเลิกการตรึงเลเยอร์บนสุดบางส่วนของโมเดลฐานที่ตรึงไว้ แล้วฝึกทั้งเลเยอร์ตัวแยกประเภทที่เพิ่มใหม่และเลเยอร์สุดท้ายของโมเดลฐานร่วมกัน ซึ่งช่วยให้เรา "ปรับแต่ง" การแสดงฟีเจอร์ระดับสูงในโมเดลพื้นฐานเพื่อให้เกี่ยวข้องกับงานที่เฉพาะเจาะจงมากขึ้น
การแยกฟีเจอร์จะฝึกได้เร็วกว่า แต่การปรับแต่งจะช่วยให้ได้ผลลัพธ์ที่ดีกว่า
คุณจะลองทั้ง 2 วิธี (การดึงฟีเจอร์และการปรับแต่ง) โดยใช้วิธีการทำ Transfer Learning 2 วิธีที่แตกต่างกัน ดังนี้
- ไลบรารี Model Maker ของ TensorFlow Lite จะสร้างไปป์ไลน์ข้อมูลและโมเดลส่วนใหญ่โดยอัตโนมัติ ซึ่งทำให้กระบวนการนี้ง่ายขึ้นมาก นอกจากนี้ คุณยังส่งออกโมเดลที่ได้เพื่อนำไปใช้ในอุปกรณ์เคลื่อนที่และในเบราว์เซอร์ได้อย่างง่ายดาย
- โมเดล TensorFlow Hub ใช้ประโยชน์จากที่เก็บโมเดลแมชชีนเลิร์นนิงจำนวนมากที่มีอยู่ใน TensorFlow Hub นักวิจัยและชุมชนมีส่วนร่วมในการสร้างโมเดลเหล่านี้ ซึ่งทำให้เราสามารถนำเสนอโมเดลที่ล้ำสมัยได้เร็วขึ้นและหลากหลายมากขึ้น
3. การเรียนรู้แบบถ่ายโอนด้วย Model Maker
ตอนนี้คุณทราบแนวคิดเบื้องหลังการเรียนรู้แบบถ่ายโอนแล้ว มาเริ่มใช้ไลบรารี TensorFlow Lite Model Maker ซึ่งเป็นเครื่องมือที่จะช่วยให้คุณทำได้อย่างง่ายดายกัน
ไลบรารี TensorFlow Lite Model Maker เป็น Lib แบบโอเพนซอร์สที่ช่วยลดความซับซ้อนของกระบวนการ Transfer Learning และทำให้กระบวนการนี้เข้าถึงได้ง่ายขึ้นสำหรับนักพัฒนาที่ไม่ใช่ ML เช่น นักพัฒนาแอปบนอุปกรณ์เคลื่อนที่และเว็บ
Colab Notebook จะแนะนำขั้นตอนต่อไปนี้
- โหลดข้อมูล
- แยกข้อมูล
- สร้างและฝึกโมเดล
- ประเมินโมเดล
- ส่งออกโมเดล
หลังจากขั้นตอนนี้ คุณจะเริ่มใช้การเรียนรู้แบบถ่ายโอนกับข้อมูลของคุณเองได้โดยทำตามกระบวนการเดียวกัน
Colaboratory
ต่อไป เราจะไปที่ Google Colab เพื่อฝึกโมเดลที่กำหนดเอง
โดยจะใช้เวลาประมาณ 15 นาทีในการอ่านคำอธิบายและทำความเข้าใจพื้นฐานของ Notebook
ข้อดี
- วิธีง่ายๆ ในการปรับแต่งโมเดล
- โดยไม่จำเป็นต้องทำความเข้าใจ TensorFlow หรือ Keras API
- เครื่องมือโอเพนซอร์สที่เปลี่ยนแปลงได้หากผู้ใช้ต้องการฟีเจอร์เฉพาะที่ยังไม่ได้ใช้งาน
- ส่งออกโมเดลโดยตรงเพื่อการดำเนินการบนอุปกรณ์เคลื่อนที่หรือเบราว์เซอร์
ข้อเสีย
- มีตัวเลือกการกำหนดค่าน้อยกว่าการสร้างไปป์ไลน์และโมเดลแบบเต็มด้วยตนเอง เช่นเดียวกับ 2 วิธีการก่อนหน้านี้
- แม้จะเลือกโมเดลพื้นฐาน แต่ก็ไม่สามารถใช้โมเดลทั้งหมดเป็นโมเดลพื้นฐานได้
- ไม่เหมาะสำหรับข้อมูลจำนวนมากที่ไปป์ไลน์ข้อมูลมีความซับซ้อนมากขึ้น
4. ค้นหารุ่นใน TensorFlow Hub
เมื่อสิ้นสุดส่วนนี้ คุณจะทำสิ่งต่อไปนี้ได้
- ค้นหาโมเดลแมชชีนเลิร์นนิงใน TensorFlow Hub
- ทำความเข้าใจเกี่ยวกับคอลเล็กชัน
- ทำความเข้าใจโมเดลประเภทต่างๆ
หากต้องการทำ Transfer Learning คุณต้องเริ่มต้นด้วย 2 สิ่งต่อไปนี้
- ข้อมูล เช่น รูปภาพจากวัตถุที่คุณต้องการจดจำ
- โมเดลพื้นฐานที่คุณปรับแต่งให้เข้ากับข้อมูลได้
โดยปกติแล้วส่วนข้อมูลจะขึ้นอยู่กับธุรกิจ แต่เส้นทางที่ง่ายที่สุดคือการถ่ายรูปสิ่งที่คุณต้องการจดจำไว้จำนวนมาก แล้วโมเดลพื้นฐานล่ะ คุณจะค้นหาได้จากที่ใด TensorFlow Hub จึงเข้ามาช่วยในเรื่องนี้
TensorFlow Hub คือที่เก็บโมเดลสำหรับความต้องการโมเดล TensorFlow ของคุณ
คุณสามารถค้นหาและอ่านเอกสารของโมเดลหลายพันรายการที่พร้อมให้คุณใช้งานได้ทันที และโมเดลจำนวนมากก็พร้อมสำหรับการเรียนรู้แบบโอนและปรับแต่ง
การค้นหาโมเดล
ก่อนอื่นมาค้นหาโมเดลที่จะใช้ใน TensorFlow Hub อย่างง่ายๆ ซึ่งคุณจะใช้ในโค้ดได้ในภายหลัง
ขั้นตอนที่ 1: เปิดเว็บไซต์ tfhub.dev ในเบราว์เซอร์

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

นอกจากนี้ คุณยังค้นหาชื่อโมเดลโดยใช้ตัวกรองทางด้านซ้ายเพื่อแสดงเฉพาะ Image feature vectors ได้ด้วย

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

เลื่อนลงแล้วเลือก MobileNet V3 เวกเตอร์ฟีเจอร์ใดก็ได้

ในหน้ารายละเอียดของโมเดล คุณสามารถอ่านเอกสารทั้งหมดของโมเดล ดูตัวอย่างโค้ดเพื่อลองใช้โมเดล หรือแม้แต่ลองใช้โมเดลโดยตรงใน Colab Notebook

ตอนนี้คุณเพียงแค่ต้องมี URL ที่ด้านบน ซึ่งเป็นแฮนเดิลของโมเดลและวิธีที่คุณเข้าถึงโมเดลจากคลัง TensorFlow Hub ได้อย่างง่ายดาย
5. การเรียนรู้แบบถ่ายโอนด้วย TensorFlow Hub
ตอนนี้คุณได้เลือกโมเดลที่จะใช้แล้ว มาปรับแต่งโมเดลโดยโหลดด้วยเมธอด KerasLayer จากไลบรารี TensorFlow Hub กัน
วิธีนี้จะโหลดโมเดลในลักษณะที่ใช้เป็นเลเยอร์ในโมเดลได้ ซึ่งจะช่วยให้คุณสร้างโมเดลรอบเลเยอร์นี้ได้
ก่อนหน้านี้ เมื่อคุณเรียนรู้วิธีใช้ Model Maker ระบบจะซ่อนรายละเอียดภายในทั้งหมดเพื่อช่วยให้คุณเข้าใจได้ง่ายขึ้น ไม่ คุณจะเห็นสิ่งที่ Model Maker ทำในเบื้องหลัง
Colaboratory
ต่อไป เราจะไปที่ Google Colab เพื่อฝึกโมเดลที่กำหนดเอง
โดยจะใช้เวลาประมาณ 20 นาทีในการอ่านคำอธิบายและทำความเข้าใจพื้นฐานของ Notebook
ข้อดี
- โมเดลที่มีให้ใช้งานหลายพันรายการซึ่งนักวิจัยและชุมชนร่วมกันสร้างขึ้น โดยได้รับการฝึกด้วยชุดข้อมูลที่หลากหลาย
- โมเดลสำหรับงานทั้งหมด เช่น วิทัศน์ ข้อความ และเสียง
- ทดลองใช้โมเดลที่คล้ายกันต่างๆ ได้ง่าย การเปลี่ยนโมเดลพื้นฐานอาจต้องเปลี่ยนสตริงเพียงรายการเดียว
ข้อเสีย
- ยังคงต้องมีความเชี่ยวชาญด้าน TensorFlow/Keras ในระดับหนึ่งเพื่อใช้โมเดล
หากต้องการเจาะลึกยิ่งขึ้น คุณยังสามารถทำการเรียนรู้แบบถ่ายโอนโดยใช้ Keras Application ได้ด้วย ซึ่งเป็นกระบวนการที่คล้ายกับการใช้ TensorFlow Hub มาก แต่ใช้เฉพาะ TensorFlow Core API
6. ขอแสดงความยินดี
ขอแสดงความยินดี คุณได้เรียนรู้แล้วว่าการเรียนรู้แบบถ่ายโอนคืออะไรและวิธีนำไปใช้กับข้อมูลของคุณเอง
ใน Codelab นี้ คุณได้เรียนรู้วิธีปรับแต่งโมเดลแมชชีนเลิร์นนิงให้เข้ากับข้อมูลของคุณเองโดยใช้เทคนิคที่เรียกว่าการเรียนรู้แบบถ่ายโอน
คุณลองใช้การเรียนรู้แบบถ่ายโอน 2 รูปแบบ ได้แก่
- การใช้เครื่องมืออย่าง TensorFlow Lite Model Maker
- การใช้เวกเตอร์ฟีเจอร์จาก TensorFlow Hub
ทั้ง 2 ตัวเลือกมีข้อดีและข้อเสีย รวมถึงการกำหนดค่าที่เป็นไปได้มากมายสำหรับความต้องการเฉพาะของคุณ
นอกจากนี้ คุณยังได้ทราบว่าคุณสามารถปรับแต่งโมเดลได้โดยการปรับน้ำหนักของโมเดลเล็กน้อยเพื่อให้เหมาะกับข้อมูลของคุณมากขึ้น
ทั้ง 2 ตัวเลือกสามารถปรับแต่งโมเดลได้
การเรียนรู้แบบถ่ายโอนและการปรับแต่งไม่ได้มีไว้สำหรับโมเดลที่เกี่ยวข้องกับรูปภาพเท่านั้น เนื่องจากแนวคิดคือการใช้การแสดงโดเมนที่เรียนรู้มาเพื่อปรับแต่งชุดข้อมูลของคุณ จึงสามารถใช้กับโดเมนข้อความและเสียงได้ด้วย
ขั้นตอนถัดไป
- ลองใช้กับข้อมูลของคุณเอง
- แชร์สิ่งที่คุณสร้างกับเราและติดแท็ก TensorFlow บนโซเชียลมีเดียพร้อมโปรเจ็กต์ของคุณ
ดูข้อมูลเพิ่มเติม
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับแต่งโมเดลที่ล้ำสมัยอย่าง BERT ได้ที่ การปรับแต่งโมเดล BERT
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียนรู้แบบถ่ายโอนสำหรับโมเดลเสียงได้ที่การเรียนรู้แบบถ่ายโอนด้วย YAMNet สำหรับการแยกประเภทเสียงในสภาพแวดล้อม