1. บทนำ

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