1. บทนำ
อัปเดตล่าสุด 28-03-2022
แมชชีนเลิร์นนิง
แมชชีนเลิร์นนิงคือสาขาที่มีวิวัฒนาการด้วยความเร็วรอบคอบ เราเผยแพร่งานวิจัยและความเป็นไปได้ใหม่ๆ ทุกวัน ทำให้เกิด Use Case ที่ไม่เคยทำได้มาก่อน
โดยปกติแล้วรุ่นเหล่านี้จะเป็นผลลัพธ์ในรูปแบบของโมเดล โมเดลสามารถเข้าใจได้ว่าเป็นสมการทางคณิตศาสตร์ที่ยาวมากที่ให้อินพุต (เช่น รูปภาพ) จะแสดงผลลัพธ์ (เช่น การจัดประเภท)
- แล้วหากต้องการใช้รูปแบบใหม่เหล่านี้กับข้อมูลของคุณเอง
- คุณจะใช้ประโยชน์จากโมเดล State of the Art เหล่านี้สำหรับกรณีการใช้งานหรือในแอปได้อย่างไร
Codelab นี้จะแนะนำขั้นตอนการปรับแต่งโมเดลแมชชีนเลิร์นนิงให้กับข้อมูลของคุณเองได้ง่ายๆ
การสร้างและฝึกโมเดลแมชชีนเลิร์นนิงมีความท้าทายหลายประการดังนี้
- ใช้เวลานาน
- ใช้อินเทอร์เน็ตปริมาณมาก
- ต้องใช้ความเชี่ยวชาญในสาขาต่างๆ เช่น คณิตศาสตร์และสถิติ
- มีการใช้ทรัพยากรจำนวนมาก: บางโมเดลอาจใช้เวลาหลายวันในการฝึก
การสร้างสถาปัตยกรรมโมเดลใหม่ต้องใช้เวลามาก และอาจต้องใช้การทดสอบมากมายและประสบการณ์หลายปี แต่จะเป็นอย่างไรถ้าคุณสามารถใช้ประโยชน์จากความรู้ทั้งหมดที่ว่ามาและนำข้อมูลนั้นมาปรับใช้กับข้อมูลของคุณเองได้โดยแค่ปรับแต่งการวิจัยเชิงศิลปะให้เหมาะกับโจทย์ของคุณเอง ซึ่งสามารถทำได้โดยใช้เทคนิคที่เรียกว่าการเรียนรู้แบบโอน
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีโอนการเรียนรู้ เหตุผลที่ใช้ได้ผล และกรณีที่ควรใช้
สิ่งที่คุณจะได้เรียนรู้
- Transfer Learning คืออะไรและควรใช้เมื่อใด
- วิธีใช้ Transfer Learning
- วิธีปรับแต่งโมเดล
- วิธีใช้ TensorFlow Lite Model Maker
- วิธีใช้ TensorFlow Hub
สิ่งที่คุณต้องมี
- โค้ดทั้งหมดจะดำเนินการโดยใช้ Google Colaboratory คุณจึงไม่ต้องติดตั้งอะไรในเครื่องเลย คุณต้องเชื่อมต่ออินเทอร์เน็ตและบัญชี Google เพื่อลงชื่อเข้าใช้ Colab เท่านั้น
- ความรู้พื้นฐานเกี่ยวกับ TensorFlow และ Keras API
- ความรู้เกี่ยวกับ Python
หากไม่มีความรู้พื้นฐานเกี่ยวกับ TensorFlow หรือแมชชีนเลิร์นนิงก็ยังเรียนรู้เกี่ยวกับ Transfer Learning ได้ อ่านขั้นตอนถัดไป "การเรียนรู้การโอนคืออะไร" สำหรับทฤษฎีเบื้องหลังเทคนิคนี้ จากนั้นติดตามหัวข้อ "การถ่ายทอดการเรียนรู้ด้วยเครื่องสร้างแบบจำลอง" หากต้องการเจาะลึกและดูกระบวนการอย่างละเอียดเพิ่มเติม คุณดูกระบวนการดังกล่าวได้ในส่วนเกี่ยวกับการโอนการเรียนรู้ด้วย TensorFlow Hub
2. การเรียนรู้แบบโอนคืออะไร
โมเดลก่อนการฝึกคือเครือข่ายที่บันทึกไว้ที่ได้รับการฝึกก่อนหน้านี้กับชุดข้อมูลขนาดใหญ่ ซึ่งโดยปกติจะทำงานด้านการจัดประเภทอิมเมจขนาดใหญ่ คุณจะใช้โมเดลที่ฝึกไว้แล้วตามที่เป็นอยู่ หรือใช้การเรียนรู้การโอนเพื่อปรับแต่งโมเดลนี้ให้เข้ากับงานก็ได้
สัญชาตญาณที่อยู่เบื้องหลังการเรียนรู้การโอนสำหรับการจัดประเภทรูปภาพคือ หากการฝึกโมเดลในชุดข้อมูลขนาดใหญ่และกว้างพอ โมเดลนี้จะทำหน้าที่เป็นโมเดลทั่วไปของโลกทัศน์ได้อย่างมีประสิทธิภาพ จากนั้นคุณจะใช้ประโยชน์จากแผนที่ฟีเจอร์ที่เรียนรู้เหล่านี้ได้โดยไม่ต้องเริ่มใหม่ตั้งแต่ต้นด้วยการฝึกโมเดลขนาดใหญ่ด้วยชุดข้อมูลขนาดใหญ่
การปรับแต่งโมเดลแมชชีนเลิร์นนิงทำได้ 2 วิธี
- การแยกฟีเจอร์: ใช้การนำเสนอที่เครือข่ายก่อนหน้าเรียนรู้เพื่อดึงฟีเจอร์ที่สำคัญจากตัวอย่างใหม่ คุณเพียงแค่เพิ่มตัวแยกประเภทใหม่ซึ่งได้รับการฝึกใหม่ตั้งแต่ต้น ร่วมกับโมเดลที่ฝึกไว้แล้วล่วงหน้า คุณจึงนำแมปฟีเจอร์ที่ได้เรียนรู้ก่อนหน้านี้มาใช้กับชุดข้อมูลได้ คุณไม่จำเป็นต้องฝึกทั้งโมเดล (ใหม่) เครือข่าย Convolutional พื้นฐานมีฟีเจอร์ที่เป็นประโยชน์ในการแยกประเภทรูปภาพอยู่แล้ว อย่างไรก็ตาม ส่วนการแยกประเภทสุดท้ายของโมเดลที่ฝึกไว้แล้วล่วงหน้าจะเฉพาะเจาะจงสำหรับงานการแยกประเภทดั้งเดิม จากนั้นจึงเฉพาะเจาะจงกับชุดคลาสที่มีการฝึกโมเดล
- การปรับแต่งอย่างละเอียด: เลิกตรึงเลเยอร์บนสุด 2-3 ชั้นของฐานโมเดลที่ตรึงไว้ และฝึกทั้งเลเยอร์ตัวแยกประเภทที่เพิ่มใหม่และเลเยอร์สุดท้ายของโมเดลฐานร่วมกัน ช่วยให้เรา "ปรับตั้งค่า" การนำเสนอฟีเจอร์ที่มีลำดับสูงกว่าในรูปแบบพื้นฐานเพื่อให้มีความเกี่ยวข้องกับงานที่เฉพาะเจาะจงมากขึ้น
การแยกฟีเจอร์จะฝึกได้เร็วขึ้น แต่การปรับแต่งจะช่วยให้ได้ผลลัพธ์ที่ดีขึ้น
คุณอาจลองใช้ทั้ง 2 แบบ (การแยกฟีเจอร์และการปรับแต่ง) โดยใช้การโอนการเรียนรู้ 2 วิธีดังนี้
- ไลบรารีเครื่องสร้างโมเดล TensorFlow Lite จะสร้างไปป์ไลน์ข้อมูลและการสร้างโมเดลส่วนใหญ่โดยอัตโนมัติ ทำให้กระบวนการง่ายขึ้นมาก ทั้งยังส่งออกโมเดลเพื่อนำไปใช้บนอุปกรณ์เคลื่อนที่และเบราว์เซอร์ได้ง่ายอีกด้วย
- โมเดล TensorFlow Hub ใช้ประโยชน์จากที่เก็บขนาดใหญ่ของโมเดลแมชชีนเลิร์นนิงที่มีอยู่ใน TensorFlow Hub นักวิจัยและชุมชนมีส่วนร่วมในการสร้างโมเดลเหล่านี้ ทำให้โมเดลศิลปะที่ล้ำสมัยพร้อมใช้งานได้เร็วขึ้นและมีความหลากหลายยิ่งขึ้น
3. ถ่ายทอดการเรียนรู้ด้วยเครื่องสร้างแบบจำลอง
เมื่อคุณได้ทราบแนวคิดที่อยู่เบื้องหลังการเรียนรู้แบบ Transfer Learning แล้ว เรามาเริ่มใช้ไลบรารีเครื่องสร้างโมเดล TensorFlow Lite ซึ่งเป็นเครื่องมือที่จะช่วยให้ทำได้ง่ายๆ
ไลบรารี TensorFlow Lite Model Maker เป็นไลบรารีแบบโอเพนซอร์สที่ทำให้กระบวนการ Transfer Learning ง่ายขึ้นและทำให้นักพัฒนาซอฟต์แวร์ที่ไม่ใช่ ML เช่น นักพัฒนาซอฟต์แวร์บนอุปกรณ์เคลื่อนและเว็บสามารถเข้าถึงกระบวนการนี้ได้ง่ายขึ้น
Colab Notebook จะแนะนำขั้นตอนต่อไปนี้
- โหลดข้อมูล
- แยกข้อมูล
- สร้างและฝึกโมเดล
- ประเมินโมเดล
- ส่งออกโมเดล
หลังจากขั้นตอนนี้ คุณสามารถเริ่มทำ Transfer Learning ด้วยข้อมูลของคุณเองโดยทำตามขั้นตอนเดียวกันนี้
Colaboratory
ไปที่ Google Colab เพื่อฝึกโมเดลที่กำหนดเองกัน
จะใช้เวลาประมาณ 15 นาทีเพื่ออ่านคำอธิบายและทำความเข้าใจพื้นฐานของสมุดบันทึก
ข้อดี:
- วิธีง่ายๆ ในการปรับแต่งโมเดล
- โดยไม่จำเป็นต้องทำความเข้าใจ TensorFlow หรือ Keras API
- เครื่องมือโอเพนซอร์สที่เปลี่ยนแปลงได้หากผู้ใช้ต้องการบางอย่างที่ยังไม่ได้ติดตั้งใช้งาน
- ส่งออกโมเดลโดยตรงสำหรับการดำเนินการบนอุปกรณ์เคลื่อนที่หรือเบราว์เซอร์
ข้อเสีย
- ความเป็นไปได้ในการกำหนดค่าน้อยกว่าการสร้างไปป์ไลน์แบบเต็มและโมเดลด้วยตนเอง เช่นเดียวกับ 2 วิธีก่อนหน้านี้
- แม้ในขณะที่เลือกโมเดลฐาน ก็ยังไม่สามารถใช้โมเดลทั้งหมดเป็นฐานได้
- ไม่เหมาะกับข้อมูลจํานวนมากที่ไปป์ไลน์ข้อมูลมีความซับซ้อนมากขึ้น
4. ค้นหาโมเดลใน TensorFlow Hub
เมื่อสิ้นสุดส่วนนี้ คุณจะดำเนินการต่อไปนี้ได้
- ค้นหาโมเดลแมชชีนเลิร์นนิงใน TensorFlow Hub
- ทำความเข้าใจเกี่ยวกับคอลเล็กชัน
- ทำความเข้าใจรูปแบบประเภทต่างๆ
ใน Transfer Learning คุณต้องเริ่มจาก 2 สิ่งต่อไปนี้
- ข้อมูล เช่น รูปภาพจากวัตถุที่คุณต้องการจดจำ
- โมเดลฐานที่คุณสามารถปรับแต่งให้ตรงกับข้อมูล
ส่วนข้อมูลมักจะขึ้นอยู่กับธุรกิจ แต่วิธีที่ง่ายที่สุดคือการถ่ายภาพสิ่งที่คุณต้องการจดจำเป็นจำนวนมาก แล้วรุ่นพื้นฐานล่ะ คุณจะหาได้จากที่ไหน คือสิ่งที่ TensorFlow Hub ช่วยได้
TensorFlow Hub คือที่เก็บโมเดลสำหรับความต้องการของโมเดล TensorFlow ของคุณ
คุณสามารถค้นหาและอ่านเอกสารประกอบเกี่ยวกับโมเดลหลายพันรายการซึ่งพร้อมให้คุณใช้งาน และโมเดลอีกหลายโมเดลก็พร้อมสำหรับการถ่ายโอนการเรียนรู้และการปรับแต่ง
ค้นหาโมเดล
ก่อนอื่น มาลองค้นหาโมเดลง่ายๆ ที่จะใช้ใน TensorFlow Hub ไว้ใช้ในโค้ดทีหลัง
ขั้นตอนที่ 1: เปิดเว็บไซต์ tfhub.dev ในเบราว์เซอร์
สำหรับ Transfer Learning ในโดเมนรูปภาพ เราต้องมีเวกเตอร์ฟีเจอร์ เวกเตอร์คุณลักษณะก็เหมือนกับโมเดลการจัดประเภท แต่ไม่มีส่วนหัวการแยกประเภท
เวกเตอร์ของจุดสนใจสามารถแปลงรูปภาพเป็นการแทนตัวเลขในพื้นที่ N (โดยที่ N คือจำนวนมิติของเลเยอร์เอาต์พุตของโมเดล)
ใน TFHub คุณจะค้นหาเวกเตอร์ฟีเจอร์ได้โดยเฉพาะโดยคลิกที่การ์ดที่ต้องการ
คุณยังสามารถค้นหาชื่อรุ่นด้วยตัวกรองทางด้านซ้ายเพื่อแสดงเฉพาะ Image feature vectors
ได้อีกด้วย
การ์ดที่มีไอคอนสีน้ำเงินคือคอลเล็กชันโมเดล ถ้าคุณคลิกที่คอลเล็กชันรูปภาพ คุณสามารถเข้าถึงโมเดลที่คล้ายกันมากมายให้เลือก เรามาเลือกคอลเล็กชันรูปภาพกัน
เลื่อนลงแล้วเลือก MobileNet V3
เวกเตอร์ของจุดสนใจจะทำงานได้
ในหน้ารายละเอียดของโมเดล คุณสามารถอ่านเอกสารประกอบทั้งหมดของโมเดล ดูข้อมูลโค้ดสำหรับลองใช้โมเดลนั้น หรือจะลองใช้โดยตรงใน Colab Notebook ก็ได้
สิ่งที่คุณต้องมีคือ URL ที่ด้านบนสุดในตอนนี้ นั่นคือแฮนเดิลโมเดลและวิธีที่คุณเข้าถึงโมเดลจากไลบรารี TensorFlow Hub ได้ง่ายๆ
5. ถ่ายทอดการเรียนรู้ด้วย TensorFlow Hub
เมื่อเลือกโมเดลที่จะใช้แล้ว ลองปรับแต่งด้วยการโหลดโมเดลด้วยเมธอด KerasLayer จากไลบรารี TensorFlow Hub
เมธอดนี้จะโหลดโมเดลในลักษณะที่สามารถใช้เป็นเลเยอร์บนโมเดลของคุณ ซึ่งจะช่วยให้คุณสร้างโมเดลรอบๆ เลเยอร์นี้ได้
ก่อนหน้านี้เมื่อคุณได้เรียนรู้วิธีใช้เครื่องสร้างโมเดล ระบบจะซ่อนองค์ประกอบภายในทั้งหมดไว้เพื่อให้คุณเข้าใจได้ง่ายขึ้น ไม่ คุณจะเห็นสิ่งที่เครื่องทำโมเดลกำลังทำอยู่ในเบื้องหลัง
Colaboratory
ไปที่ Google Colab เพื่อฝึกโมเดลที่กำหนดเองกัน
ระบบจะใช้เวลาประมาณ 20 นาทีเพื่ออ่านคำอธิบายและทำความเข้าใจพื้นฐานของสมุดบันทึก
ข้อดี:
- โมเดลกว่า 1, 000 รายการที่มีให้บริการโดยนักวิจัยและชุมชนซึ่งได้รับการฝึกด้วยชุดข้อมูลที่หลากหลาย
- โมเดลสำหรับงานทั้งหมด เช่น การมองเห็น ข้อความ และเสียง
- ง่ายต่อการทดลองใช้กับรูปแบบต่างๆ ที่คล้ายกัน การเปลี่ยนรูปแบบฐานอาจต้องเปลี่ยนเพียงสตริงเดียว
ข้อเสีย
- ยังต้องอาศัยความเชี่ยวชาญของ TensorFlow/Keras บางส่วนเพื่อใช้โมเดล
หากต้องการเจาะลึกกว่านี้ คุณสามารถโอนการเรียนรู้โดยใช้แอปพลิเคชัน Keras กระบวนการนี้คล้ายกับการใช้ TensorFlow Hub มาก แต่มีเพียง TensorFlow API หลักเท่านั้น
6. ขอแสดงความยินดี
ยินดีด้วย คุณได้เรียนรู้แล้วว่าการโอนการเรียนรู้คืออะไร และวิธีนำไปใช้กับข้อมูลของคุณเอง
ใน Codelab นี้ คุณได้เรียนรู้วิธีปรับแต่งโมเดลแมชชีนเลิร์นนิงให้กับข้อมูลของคุณเองโดยใช้เทคนิคที่เรียกว่า Transfer Learning
คุณลองใช้ Transfer Learning 2 รูปแบบแล้ว
- การใช้เครื่องมืออย่าง TensorFlow Lite Model Maker
- การใช้ Feature Vector จาก TensorFlow Hub
ตัวเลือกทั้งสองมีทั้งข้อดีและข้อเสีย และการกำหนดค่าที่เป็นไปได้มากมายเพื่อตอบสนองความต้องการเฉพาะของคุณ
และคุณยังได้รู้ว่าคุณสามารถพัฒนาขึ้นไปอีกเล็กน้อยและปรับแต่งโมเดลด้วยการปรับน้ำหนักของโมเดลอีกเล็กน้อยเพื่อให้เหมาะกับข้อมูลยิ่งขึ้น
ทั้ง 2 ตัวเลือกสามารถปรับแต่งโมเดลอย่างละเอียดได้
Transfer Learning และการปรับแต่งโดยละเอียดไม่ได้มีไว้สำหรับโมเดลที่เกี่ยวข้องกับรูปภาพเท่านั้น เนื่องจากแนวคิดคือการใช้ตัวแทนที่เรียนรู้แล้วของโดเมนเพื่อปรับแต่งชุดข้อมูลของคุณ จึงสามารถใช้กับโดเมนข้อความและเสียงได้ด้วย
ขั้นตอนถัดไป
- ลองใช้ด้วยข้อมูลของคุณเอง
- แชร์สิ่งที่คุณสร้างและแท็ก TensorFlow บนโซเชียลมีเดียกับโปรเจ็กต์ของคุณ
ดูข้อมูลเพิ่มเติม
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการปรับแต่งโมเดล State of the Art อย่างเช่น BERT ได้ใน การปรับแต่งโมเดล BERT
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการโอนการเรียนรู้สำหรับโมเดลเสียงได้ที่โอนการเรียนรู้ด้วย YAMNet สำหรับการจัดประเภทเสียงสภาพแวดล้อม