สมมติว่าคุณกำลังพัฒนาแอปพลิเคชันแนะนำข้อมูลเกี่ยวกับอาหาร ซึ่งให้ผู้ใช้ป้อนข้อมูลอาหารจานโปรด และแอปจะแนะนำเมนูที่คล้ายกันที่ผู้ใช้อาจชื่นชอบ คุณต้องการพัฒนาโมเดลแมชชีนเลิร์นนิง (ML) ที่คาดการณ์ความคล้ายคลึงกันของอาหารได้ เพื่อให้แอปสามารถให้คำแนะนำคุณภาพสูง ("เนื่องจากคุณชอบแพนเค้ก เราขอแนะนำเครป")
คุณคัดสรรชุดข้อมูลเมนูอาหารยอดนิยม 5,000 รายการเพื่อฝึกโมเดล ซึ่งรวมถึงบอชช์ ฮอตดอก สลัด พิซซ่า และชาวัรมา
คุณสร้างฟีเจอร์ meal ซึ่งมีการนำเสนอที่เข้ารหัสแบบ One-hot ของอาหารแต่ละเมนูในชุดข้อมูล
การเข้ารหัสหมายถึงกระบวนการการเลือกการนำเสนอข้อมูลแบบตัวเลขเบื้องต้นเพื่อใช้ฝึกโมเดล
ปัญหาของการนำเสนอข้อมูลที่ขาดแคลน
เมื่อดูการเข้ารหัสแบบ One-hot เหล่านี้ คุณสังเกตเห็นปัญหาหลายประการเกี่ยวกับการนำเสนอข้อมูลในลักษณะนี้
- จำนวนน้ำหนัก เวกเตอร์อินพุตขนาดใหญ่หมายถึงน้ำหนักจำนวนมากของโครงข่ายระบบประสาทเทียม ด้วยข้อมูล M รายการในการเข้ารหัสแบบ One-hot และโหนด N ในเลเยอร์แรกของโครงข่ายหลังจากอินพุต โมเดลต้องฝึกน้ำหนัก MxN สำหรับเลเยอร์นั้น
- จำนวนจุดข้อมูล ยิ่งโมเดลมีน้ำหนักมาก คุณยิ่งต้องมีข้อมูลมากเพื่อให้การฝึกมีประสิทธิภาพ
- ปริมาณการคำนวณ ยิ่งมีน้ำหนักมาก ก็ยิ่งต้องมีการคำนวณมากเพื่อที่จะฝึกและใช้โมเดล ซึ่งอาจเกินความสามารถของฮาร์ดแวร์ได้ง่ายๆ
- ปริมาณหน่วยความจำ ยิ่งโมเดลมีน้ำหนักมาก Accelerator ที่จะฝึกและแสดงโมเดลยิ่งต้องมีหน่วยความจำมาก ซึ่งการปรับขนาดเพิ่มอย่างมีประสิทธิภาพนั้นทำได้ยากมาก
- ความยากของการรองรับแมชชีนเลิร์นนิงในอุปกรณ์ (ODML) หากคุณคาดหวังที่จะเรียกใช้โมเดล ML ในอุปกรณ์ที่ใช้ (แทนที่จะแสดงโมเดล) คุณจะต้องมุ่งเน้นการทำให้โมเดลมีขนาดเล็กลง และจะต้องลดจำนวนน้ำหนัก
ในโมดูลนี้ คุณจะได้เรียนรู้วิธีสร้างการฝัง (การนำเสนอที่มีมิติต่ำกว่าของข้อมูลที่ขาดแคลน) ซึ่งช่วยจัดการกับปัญหาเหล่านี้