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

1. บทนำ

2a934d0e86f14118.png

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

รูปภาพหน้าหลักของ 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 นาทีในการอ่านคำอธิบายและทำความเข้าใจพื้นฐานของ Notebook

ข้อดี

  • โมเดลที่มีให้ใช้งานหลายพันรายการซึ่งนักวิจัยและชุมชนร่วมกันสร้างขึ้น โดยได้รับการฝึกด้วยชุดข้อมูลที่หลากหลาย
  • โมเดลสำหรับงานทั้งหมด เช่น วิทัศน์ ข้อความ และเสียง
  • ทดลองใช้โมเดลที่คล้ายกันต่างๆ ได้ง่าย การเปลี่ยนโมเดลพื้นฐานอาจต้องเปลี่ยนสตริงเพียงรายการเดียว

ข้อเสีย

  • ยังคงต้องมีความเชี่ยวชาญด้าน TensorFlow/Keras ในระดับหนึ่งเพื่อใช้โมเดล

หากต้องการเจาะลึกยิ่งขึ้น คุณยังสามารถทำการเรียนรู้แบบถ่ายโอนโดยใช้ Keras Application ได้ด้วย ซึ่งเป็นกระบวนการที่คล้ายกับการใช้ TensorFlow Hub มาก แต่ใช้เฉพาะ TensorFlow Core API

6. ขอแสดงความยินดี

ขอแสดงความยินดี คุณได้เรียนรู้แล้วว่าการเรียนรู้แบบถ่ายโอนคืออะไรและวิธีนำไปใช้กับข้อมูลของคุณเอง

ใน Codelab นี้ คุณได้เรียนรู้วิธีปรับแต่งโมเดลแมชชีนเลิร์นนิงให้เข้ากับข้อมูลของคุณเองโดยใช้เทคนิคที่เรียกว่าการเรียนรู้แบบถ่ายโอน

คุณลองใช้การเรียนรู้แบบถ่ายโอน 2 รูปแบบ ได้แก่

  • การใช้เครื่องมืออย่าง TensorFlow Lite Model Maker
  • การใช้เวกเตอร์ฟีเจอร์จาก TensorFlow Hub

ทั้ง 2 ตัวเลือกมีข้อดีและข้อเสีย รวมถึงการกำหนดค่าที่เป็นไปได้มากมายสำหรับความต้องการเฉพาะของคุณ

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

ทั้ง 2 ตัวเลือกสามารถปรับแต่งโมเดลได้

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

ขั้นตอนถัดไป

  • ลองใช้กับข้อมูลของคุณเอง
  • แชร์สิ่งที่คุณสร้างกับเราและติดแท็ก TensorFlow บนโซเชียลมีเดียพร้อมโปรเจ็กต์ของคุณ

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

หากมีคำถาม