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

1. บทนำ

2a934d0e86f14118.png

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

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

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

เวกเตอร์ฟีเจอร์สามารถแปลงรูปภาพเป็นการแสดงตัวเลขในพื้นที่ 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 กัน

เมธอดนี้จะโหลดโมเดลในลักษณะที่สามารถใช้เป็นชั้นในโมเดลของคุณได้ ซึ่งช่วยให้คุณสร้างโมเดลรอบๆ ชั้นนี้ได้

ก่อนหน้านี้เมื่อคุณได้เรียนรู้วิธีใช้ 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 ในโซเชียลมีเดียด้วยโปรเจ็กต์ของคุณ

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

หากมีคำถาม