สารบัญ
- การแนะนำ
- ความรู้ด้านมืด
- ขั้นตอนการกลั่น
- การทดลองกับ MNIST
- การทดลองเพิ่มเติมเกี่ยวกับ MNIST
1. บทนำ
ในบทความนี้ ฉันจะสำรวจกระบวนการกลั่นความรู้ใน AI ว่ามันทำงานอย่างไรโดยทั่วไป ความสำคัญ และเหตุผลในการใช้มัน
เราจะบีบอัดและถ่ายโอนความรู้จากโมเดลที่ใหญ่กว่าหรือกลุ่มโมเดล (ซึ่งได้รับการฝึกอบรมบนชุดข้อมูลขนาดใหญ่เพื่อแยกโครงสร้างจากข้อมูล) ไปยังโมเดลเดียวขนาดเล็กโดยไม่ทำให้ประสิทธิภาพลดลงมากนักได้อย่างไร
แต่ทำไมเราถึงอยากทำแบบนั้น ทำไมเราจึงต้องการโมเดลที่เล็กกว่าในขณะที่โมเดลหรือโมเดลรวมที่ใหญ่กว่าก็ให้ผลลัพธ์ที่ดีอยู่แล้วในการทดสอบข้อมูล
โดยปกติแล้ว เราจะฝึกโมเดลขนาดใหญ่หรือเป็นกลุ่มใหญ่ในเวลาฝึก เนื่องจากเป้าหมายหลักคือการแยกโครงสร้างจากชุดข้อมูลขนาดใหญ่ นอกจากนี้ เรายังสามารถใช้หลายๆ อย่าง เช่น การตัดข้อมูล การเพิ่มข้อมูลในช่วงเวลาฝึก เพื่อป้อนข้อมูลทุกประเภทให้กับโมเดลขนาดใหญ่เหล่านี้
แต่ในเวลาที่คาดการณ์ เป้าหมายของเราแตกต่างไปโดยสิ้นเชิง เราต้องการได้ผลลัพธ์โดยเร็วที่สุด ดังนั้น การใช้โมเดลที่ใหญ่กว่าหรือเป็นกลุ่มจึงมีราคาแพงมากและจะขัดขวางการปรับใช้กับผู้ใช้จำนวนมาก ดังนั้น คำถามตอนนี้คือ เราจะบีบอัดความรู้จากโมเดลที่ใหญ่กว่านี้ให้เป็นโมเดลที่เล็กลงซึ่งสามารถปรับใช้ได้ง่ายได้อย่างไร
Geoffrey Hinton, Oriol Vinyals และ Jeff Dean จาก Google ได้คิดค้นการฝึกอบรมประเภทอื่นที่เรียกว่า การกลั่น เพื่อถ่ายทอดความรู้ไปยังโมเดลขนาดเล็ก ซึ่งเป็นเทคนิคเดียวกับที่ Hugging Face ใช้ในการนำ Distill BERT ไปใช้
หากเราสามารถฝึกโมเดลขนาดเล็กนี้ให้ สรุปผลได้ ในลักษณะเดียวกับโมเดลขนาดใหญ่ โมเดลขนาดเล็กที่ฝึกด้วยวิธีนี้จะมีประสิทธิภาพดีกว่าโมเดลขนาดเล็กที่ฝึกด้วยข้อมูลเดียวกันแต่ด้วยวิธีปกติ นี่คือหลักการ สำคัญประการ หนึ่งเบื้องหลังการกลั่น
2. ความรู้ด้านมืด
โดยทั่วไปในการเรียนรู้ของเครื่อง ซึ่งเป็นโมเดลที่เรียนรู้ที่จะแยกแยะระหว่างคลาสจำนวนมาก เป้าหมายหลักของการฝึกคือการเพิ่มค่าความน่าจะเป็นลอการิทึมเฉลี่ยของคำตอบที่ถูกต้องให้สูงสุด ตัวอย่างเช่น ลองใช้ตัวอย่างชุดข้อมูล MNIST ที่มีเป้าหมายเพื่อจำแนกภาพว่าเป็น 1 หรือ 2 หรือ … 9 ดังนั้น หากภาพจริงคือ 2 เป้าหมายของโมเดลใดๆ ก็คือการเพิ่มค่า P(2/ภาพ) ให้สูงสุด (ซึ่งสามารถอ่านได้ว่ามีความน่าจะเป็นที่ภาพใดภาพหนึ่งจะเป็น 2 เมื่อกำหนดภาพนั้น) แต่โมเดลยังให้ความน่าจะเป็นสำหรับคำตอบที่ไม่ถูกต้องทั้งหมดด้วย แม้ว่าความน่าจะเป็นเหล่านั้นจะน้อยมาก แต่บางอันก็มากกว่าอันอื่นๆ มาก ประเด็นก็คือ แม้ว่าความน่าจะเป็นเหล่านี้จะน้อย แต่ความน่าจะเป็นสัมพันธ์กันของคำตอบที่ไม่ถูกต้องก็บอกอะไรเราได้มากมายเกี่ยวกับวิธีที่โมเดลสามารถสรุปผลได้ เพื่อทำความเข้าใจ ลองมาดูตัวอย่างด้านล่างกัน
ในรูปด้านบน 2 เวอร์ชันนี้ได้รับความน่าจะเป็น 10-6 ที่จะได้ 3 และ 10-9 ที่จะได้ 7 ในขณะที่อีกเวอร์ชันหนึ่งอาจเป็นแบบตรงกันข้าม ข้อมูลนี้มีค่ามากซึ่งกำหนดโครงสร้างความคล้ายคลึงกันที่หลากหลายเหนือข้อมูล (กล่าวคือ ระบุว่า 2 ตัวใดดูเหมือน 3 และตัวใดดูเหมือน 7) แต่มีอิทธิพลน้อยมากต่อฟังก์ชันต้นทุนเอนโทรปีไขว้ในระหว่างขั้นตอนการถ่ายโอน เนื่องจากความน่าจะเป็นนั้นใกล้เคียงกับศูนย์มาก
แต่ก่อนที่เราจะดำเนินการต่อในขั้นตอนของการกลั่น เรามาใช้เวลาทำความเข้าใจกันก่อนว่าแบบจำลองสร้างค่าความน่าจะเป็นของผลลัพธ์ได้อย่างไร นี่คือจุดที่การเปิดใช้งานซอฟต์แมกซ์เข้ามาเกี่ยวข้อง ขั้นตอนสุดท้ายของการประมวลผลแบบจำลองคือซอฟต์แมกซ์ และส่วนประกอบนี้คือสิ่งที่ให้ค่าความน่าจะเป็นของผลลัพธ์ อินพุตของซอฟต์แมกซ์เรียกว่าลอจิท และเราออกแบบเลเยอร์สุดท้ายของ NN ในลักษณะที่จำนวนหน่วยที่ซ่อนอยู่ = จำนวนคลาสที่เราต้องการจัดประเภท
สูตรสำหรับการคำนวณซอฟต์แม็กซ์มีดังนี้
สมการด้านบนให้ความน่าจะเป็นสำหรับ i แต่ละตัว และผลรวมของความน่าจะเป็นทั้งหมดโดยรวมของ i เท่ากับ 1 ในระหว่างเวลาการฝึก การสูญเสียสำหรับตัวอย่างการฝึกใดๆ จะถูกคำนวณโดยการเปรียบเทียบความน่าจะเป็นแบบซอฟต์แมกซ์เหล่านี้กับเป้าหมายแบบฮาร์ด (ป้ายกำกับ) และใช้ค่าสัมประสิทธิ์การแพร่กระจายย้อนกลับซึ่งได้รับการอัปเดตจนกว่าการสูญเสียจะน้อยที่สุด
ดังที่เห็นด้านบนนี้ softmax ให้ความน่าจะเป็นสูงสำหรับฉลากที่เป็นจริงและมีความน่าจะเป็นต่ำสำหรับฉลากที่ไม่ถูกต้อง นอกจากนี้ เรายังเห็นอีกด้วยว่าความน่าจะเป็นของคำตอบที่ไม่ถูกต้องนั้นถึงแม้จะน้อย แต่ก็มีข้อมูลจำนวนมากซ่อนอยู่ ซึ่งช่วยให้แบบจำลองสามารถสรุปผลได้ เราเรียกสิ่งนี้ ว่าความรู้มืด
3. ขั้นตอนการกลั่น
ตามเอกสาร วิธีที่ดีที่สุดในการถ่ายโอนความสามารถในการสรุปทั่วไปของแบบจำลองขนาดใหญ่ไปยังแบบจำลองขนาดเล็กคือการใช้ความน่าจะเป็นของคลาสที่สร้างขึ้นโดยแบบจำลองที่ซับซ้อนเป็น เป้าหมายที่ไม่แน่นอน ในการฝึกแบบจำลองขนาดเล็ก
ดังนั้นกระบวนการก็เป็นดังนี้:
- นำชุดฝึกอบรมดั้งเดิมที่ใช้เพื่อฝึกอบรมโมเดลที่ใหญ่กว่าแล้วส่งข้อมูลฝึกอบรมนั้นผ่านโมเดลที่ใหญ่กว่าและรับความน่าจะเป็นแบบซอฟต์แมกซ์ในคลาสต่างๆ ดังที่เห็นด้านบน ป้ายกำกับที่แท้จริงจะได้รับความน่าจะเป็นสูง และป้ายกำกับที่ไม่ถูกต้องจะได้รับความน่าจะเป็นต่ำ แต่เราพบว่าความน่าจะเป็นต่ำเหล่านี้มีข้อมูลจำนวนมากซ่อนอยู่ในนั้น ดังนั้น เพื่อขยายความสำคัญของความน่าจะเป็นเหล่านี้ ผู้เขียนบทความจึงใช้ตัวแปรที่เรียกว่า Temperature(T) เพื่อหารลอจิสติกส์ทั้งหมดก่อนที่จะผ่านซอฟต์แมกซ์ วิธีนี้ทำให้เกิดการแจกแจงความน่าจะเป็นแบบซอฟต์แมกซ์ในคลาสต่างๆ ดังจะเห็นด้านล่าง
ผลลัพธ์ของการใช้ซอฟต์แมกซ์ร่วมกับอุณหภูมิ (T) คือสิ่งที่เราเรียกว่าเป้าหมายแบบซอ ฟต์ กระบวนการนี้คือสิ่งที่ผู้เขียนเรียกว่า การกลั่น เปรียบเสมือนการกำจัดสิ่งเจือปนในน้ำโดยการเพิ่มอุณหภูมิ
- ข้อมูลส่วนใหญ่เกี่ยวกับฟังก์ชันที่เรียนรู้จากโมเดลขนาดใหญ่มีอยู่ในอัตราส่วนความน่าจะเป็นที่เล็กมากในเป้าหมายที่อ่อน
- คำศัพท์บางคำ:
- เป้าหมายอ่อน - เอาท์พุตจากแบบจำลองขนาดใหญ่หลังจากอุณหภูมิ T ถูกนำมาใช้ระหว่างซอฟต์แม็กซ์
- การคาดการณ์แบบซอฟต์ - เอาท์พุตจากแบบจำลองขนาดเล็กลงหลังจากอุณหภูมิ T ถูกนำไปใช้ระหว่างซอฟต์แม็กซ์
- การทำนายที่ยาก - เอาต์พุตจากแบบจำลองที่เล็กกว่าเมื่ออุณหภูมิ T = 1 (ซอฟต์แม็กซ์ปกติ)
- เป้าหมายที่แท้จริง - เป้าหมายจริงจากชุดการฝึกอบรม
ด้านล่างนี้เป็นแผนภูมิขั้นตอนของกระบวนการฝึกอบรมทั้งหมด
ดังนั้นกระบวนการฝึกอบรมสำหรับโมเดลขนาดเล็กจึงมีฟังก์ชันการสูญเสีย 2 ฟังก์ชัน ฟังก์ชันการสูญเสียแรกใช้ทั้งการทำนายแบบอ่อนและเป้าหมายแบบอ่อน และเป็นฟังก์ชันการสูญเสียแบบไขว้เอนโทรปี นี่คือวิธีที่ความสามารถในการสรุปทั่วไปถูกถ่ายโอนจากโมเดลขนาดใหญ่ไปยังโมเดลขนาดเล็กโดยพยายามจับคู่เป้าหมายแบบอ่อน สำหรับฟังก์ชันการสูญเสียนี้ softmax ทั้งสองใช้ค่าอุณหภูมิ 'T'
นอกจากนี้ ผู้เขียนยังพบว่าการใช้แบบจำลองขนาดเล็กเพื่อจับคู่กับเป้าหมายที่แท้จริงนั้นมีประโยชน์ ซึ่งรวมอยู่ในฟังก์ชันต้นทุนที่สอง ต้นทุนสุดท้ายคือค่าเฉลี่ยถ่วงน้ำหนักของฟังก์ชันต้นทุนทั้งสองนี้ โดยมีไฮเปอร์พารามิเตอร์อัลฟ่าและเบตา
4. การทดลองเกี่ยวกับ MNIST
ผู้เขียนใช้ชุดข้อมูล MNIST เพื่อทดสอบแนวทางนี้ โดยใช้สถาปัตยกรรมสองแบบซึ่งแตกต่างกันเพียงจำนวนหน่วยที่ซ่อนอยู่ในเลเยอร์กลาง ผู้เขียนใช้เครือข่ายประสาทเทียมที่มีเลเยอร์ที่ซ่อนอยู่ 2 เลเยอร์ในทั้งสองกรณี
- โมเดลขนาดเล็กที่สามารถดูได้เป็น 784 -> 800 -> 800 -> 10 (โดยที่ 784 คือขนาดที่คลี่ออกของภาพ 800 คือจำนวนหน่วยที่ซ่อนอยู่พร้อมการเปิดใช้งาน RELU และ 10 คือจำนวนคลาสที่เราคาดการณ์ไว้) โมเดลนี้ให้ข้อผิดพลาดในการทดสอบ 146 ข้อโดยไม่มีการปรับให้เป็นมาตรฐาน
- โมเดลขนาดใหญ่กว่าซึ่งสามารถดูได้เป็น 784 -> 1200 -> 1200 -> 10 (โดยที่ 784 คือขนาดที่คลี่ออกของภาพ 1200 คือจำนวนหน่วยที่ซ่อนอยู่พร้อมการเปิดใช้งาน RELU และ 10 คือจำนวนคลาสที่เรากำลังคาดการณ์) โมเดลนี้ได้รับการฝึกบน MNIST โดยใช้การดร็อปเอาต์ การจำกัดน้ำหนัก และภาพอินพุตที่สั่นไหว และเครือข่ายนี้ทำให้เกิดข้อผิดพลาดในการทดสอบ 67 รายการ
เราจะถ่ายโอนการปรับปรุงนี้ในโมเดลขนาดใหญ่ไปยังโมเดลขนาดเล็กได้หรือไม่
ขณะนี้ผู้เขียนใช้ทั้งเป้าหมายอ่อนที่ได้จากเครือข่ายขนาดใหญ่และเป้าหมายจริงโดยไม่มีการหลุดออกและไม่มีการสั่นไหวของภาพ กล่าวคือ เครือข่ายขนาดเล็กจะถูกทำให้ปกติโดยการเพิ่มงานเพิ่มเติมในการจับคู่เป้าหมายอ่อนที่สร้างโดยเครือข่ายขนาดใหญ่ที่อุณหภูมิ 20 เท่านั้น และผลลัพธ์ก็คือ
ข้อผิดพลาดในการทดสอบ 74 รายการ โดยใช้ 784 -> 800 -> 800 -> 10
สิ่งนี้แสดงให้เห็นว่าเป้าหมายที่อ่อนสามารถถ่ายโอนความรู้จำนวนมากไปยังโมเดลขนาดเล็กได้ ซึ่งรวมถึงความรู้เกี่ยวกับวิธีการสรุปผลที่เรียนรู้จากข้อมูลฝึกอบรมที่แปลแล้ว กล่าวอีกนัยหนึ่ง ประโยชน์ที่เราได้รับจากการแปลงอินพุตจะถ่ายโอนไปยังเน็ตเวิร์กขนาดเล็ก แม้ว่าเราจะไม่ได้แปลงอินพุตสำหรับเน็ตเวิร์กขนาดเล็กก็ตาม
เป็นที่ทราบกันดีว่าการแปลงอินพุตด้วยการแปลงที่แตกต่างกันทำให้โมเดลสามารถสรุปผลได้ดีขึ้นมาก และในกรณีของเรา ข้อมูลเกี่ยวกับวิธี การสรุปผล จะแสดงอยู่ใน Dark Knowledge และซ่อนอยู่ในเป้าหมายแบบซอฟต์ ไม่มีข้อมูลใดๆ อยู่ในเป้าหมายแบบ True ดังนั้นการใช้ข้อมูลจากเป้าหมายแบบซอฟต์จึงทำให้เครือข่ายขนาดเล็กของเรามีประสิทธิภาพดีขึ้นมาก
เครือข่ายขนาดใหญ่ที่ใช้เป้าหมายที่ยืดหยุ่นได้เรียนรู้การวัดความคล้ายคลึงที่เรียนรู้ว่า 'อะไรเป็นอย่างไร' และด้วยการถ่ายโอนความรู้ครั้งนี้ เรากำลังบอกเครือข่ายขนาดเล็กว่า 'อะไรเป็นอย่างไร'
การทดลอง MNIST ทั้งหมดข้างต้นสรุปไว้ด้านล่างนี้
5. การทดลองเพิ่มเติมเกี่ยวกับ MNIST
นอกจากนี้ ผู้เขียนยังพยายามละเว้นตัวอย่างของเลขฐาน 3 เมื่อฝึกโมเดลขนาดเล็กโดยใช้การกลั่น ดังนั้น จากมุมมองของโมเดลขนาดเล็ก เลขฐาน 3 จึงเป็นเลขฐานในตำนานที่ไม่เคยเห็น เนื่องจากโมเดลขนาดเล็กไม่เคยเห็นเลขฐาน 3 ระหว่างการฝึก เราจึงคาดว่าโมเดลจะทำผิดพลาดจำนวนมากเมื่อพบเลขฐาน 3 ในชุดทดสอบ แม้จะเป็นเช่นนี้ โมเดลที่กลั่นกลับทำผิดพลาดในการทดสอบเพียง 206 ครั้ง ซึ่ง 133 ครั้งเป็นเลขฐาน 3 จำนวน 1,010 ครั้งในชุดทดสอบ ซึ่งแสดงให้เห็นชัดเจนว่าความสามารถในการสรุปทั่วไปของโมเดลขนาดใหญ่ถูกถ่ายโอนไปยังโมเดลขนาดเล็กระหว่างการกลั่น ซึ่งทำให้โมเดลขนาดเล็กทำนายเลขฐาน 3 ได้อย่างถูกต้องในกรณีส่วนใหญ่
ข้อคิดจากเรื่องนี้ก็คือ
การแปลงภาพอินพุตช่วยปรับปรุงการสรุปทั่วไปได้อย่างมาก การแปลงเป้าหมายยังมีผลเช่นเดียวกัน และหากเราสามารถรับเป้าหมายที่อ่อนได้จากที่ใดที่หนึ่ง ก็จะประหยัดกว่ามาก เนื่องจากเราสามารถรับประสิทธิภาพเดียวกันได้ด้วยโมเดลขนาดเล็กกว่า
อ้างอิง:
- Hinton, Geoffrey, Oriol Vinyals และ Jeff Dean “การกลั่นกรองความรู้ในเครือข่ายประสาท”
- การกลั่นความรู้โดย intellabs