การปรับแต่งโมเดลแมชชีนเลิร์นนิง: วิธีง่ายๆ

1. บทนำ

2a934d0e86f14118.png

อัปเดตล่าสุด 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 ในเบราว์เซอร์

รูปภาพหน้าหลักของ tfhub.dev

สำหรับ Transfer Learning ในโดเมนรูปภาพ เราต้องมีเวกเตอร์ฟีเจอร์ เวกเตอร์คุณลักษณะก็เหมือนกับโมเดลการจัดประเภท แต่ไม่มีส่วนหัวการแยกประเภท

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

ใน TFHub คุณจะค้นหาเวกเตอร์ฟีเจอร์ได้โดยเฉพาะโดยคลิกที่การ์ดที่ต้องการ

รูปภาพหน้า tfhub.dev ซึ่งมีสี่เหลี่ยมจัตุรัสที่ไฮไลต์งานเวกเตอร์ฟีเจอร์

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

นี่เป็นรูปภาพของหน้าค้นหาจาก tfhub.dev หลังจากเลือกงานเวกเตอร์ฟีเจอร์ในหน้าหลัก

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

นี่คือหน้าคอลเล็กชันรูปภาพจาก tfhub.dev

เลื่อนลงแล้วเลือก MobileNet V3 เวกเตอร์ของจุดสนใจจะทำงานได้

นี่คือหน้าคอลเล็กชันรูปภาพจาก tfhub.dev ซึ่งเลื่อนจากหน้าก่อนหน้าไปเล็กน้อย

ในหน้ารายละเอียดของโมเดล คุณสามารถอ่านเอกสารประกอบทั้งหมดของโมเดล ดูข้อมูลโค้ดสำหรับลองใช้โมเดลนั้น หรือจะลองใช้โดยตรงใน Colab Notebook ก็ได้

หน้ารายละเอียดของโมเดลเวกเตอร์ฟีเจอร์ mobilenetV3

สิ่งที่คุณต้องมีคือ 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 บนโซเชียลมีเดียกับโปรเจ็กต์ของคุณ

ดูข้อมูลเพิ่มเติม

หากมีคำถาม