ดูบน TensorFlow.org | ดูแหล่งที่มาบน GitHub |
คำแนะนำเฉพาะบุคคลถูกนำมาใช้กันอย่างแพร่หลายในกรณีการใช้งานที่หลากหลายบนอุปกรณ์เคลื่อนที่ เช่น การดึงเนื้อหาสื่อ คำแนะนำผลิตภัณฑ์สำหรับการช็อปปิ้ง และคำแนะนำแอปถัดไป หากคุณสนใจที่จะให้คำแนะนำส่วนบุคคลในแอปพลิเคชันของคุณโดยคำนึงถึงความเป็นส่วนตัวของผู้ใช้ เราขอแนะนำให้สำรวจตัวอย่างและชุดเครื่องมือต่อไปนี้
เริ่ม
เรามีแอปพลิเคชันตัวอย่าง TensorFlow Lite ที่สาธิตวิธีแนะนำรายการที่เกี่ยวข้องให้กับผู้ใช้บน Android
หากคุณใช้แพลตฟอร์มอื่นที่ไม่ใช่ Android หรือคุณคุ้นเคยกับ TensorFlow Lite API อยู่แล้ว คุณสามารถดาวน์โหลดโมเดลคำแนะนำเริ่มต้นของเราได้
นอกจากนี้เรายังมีสคริปต์การฝึกสอนใน Github เพื่อฝึกโมเดลของคุณเองด้วยวิธีที่กำหนดค่าได้
ทำความเข้าใจกับสถาปัตยกรรมแบบจำลอง
เราใช้ประโยชน์จากสถาปัตยกรรมโมเดลตัวเข้ารหัสคู่ โดยมีตัวเข้ารหัสบริบทเพื่อเข้ารหัสประวัติผู้ใช้ตามลำดับ และตัวเข้ารหัสป้ายกำกับเพื่อเข้ารหัสตัวเลือกคำแนะนำที่คาดการณ์ไว้ ความคล้ายคลึงกันระหว่างบริบทและการเข้ารหัสป้ายกำกับถูกนำมาใช้เพื่อแสดงความเป็นไปได้ที่ผู้สมัครที่คาดการณ์จะตรงกับความต้องการของผู้ใช้
มีเทคนิคการเข้ารหัสประวัติผู้ใช้ตามลำดับที่แตกต่างกันสามแบบให้กับฐานโค้ดนี้:
- ตัวเข้ารหัส Bag-of-words (BOW): เฉลี่ยการฝังกิจกรรมของผู้ใช้โดยไม่คำนึงถึงลำดับบริบท
- ตัวเข้ารหัสเครือข่ายประสาทแบบ Convolutional (CNN): การใช้เครือข่ายประสาทแบบ Convolutional หลายชั้นเพื่อสร้างการเข้ารหัสบริบท
- ตัวเข้ารหัสเครือข่ายประสาทที่เกิดซ้ำ (RNN): การใช้เครือข่ายประสาทที่เกิดซ้ำเพื่อเข้ารหัสลำดับบริบท
ในการสร้างแบบจำลองกิจกรรมของผู้ใช้แต่ละรายการ เราสามารถใช้ ID ของรายการกิจกรรม (ตาม ID) หรือคุณสมบัติหลายอย่างของรายการ (ตามคุณสมบัติ) หรือทั้งสองอย่างรวมกัน โมเดลตามฟีเจอร์ที่ใช้ฟีเจอร์หลายอย่างเพื่อเข้ารหัสพฤติกรรมของผู้ใช้โดยรวม ด้วยฐานโค้ดนี้ คุณสามารถสร้างแบบจำลองตาม ID หรือตามคุณลักษณะในลักษณะที่สามารถกำหนดค่าได้
หลังการฝึก โมเดล TensorFlow Lite จะถูกส่งออกซึ่งสามารถให้การคาดการณ์ระดับ top-K ในกลุ่มผู้สมัครตามคำแนะนำได้โดยตรง
ใช้ข้อมูลการฝึกอบรมของคุณ
นอกจากโมเดลที่ได้รับการฝึกแล้ว เรายังจัดเตรียม ชุดเครื่องมือแบบโอเพ่นซอร์สใน GitHub เพื่อฝึกโมเดลด้วยข้อมูลของคุณเอง คุณสามารถปฏิบัติตามบทช่วยสอนนี้เพื่อเรียนรู้วิธีใช้ชุดเครื่องมือและปรับใช้โมเดลที่ผ่านการฝึกอบรมในแอปพลิเคชันมือถือของคุณเอง
โปรดปฏิบัติตาม บทช่วยสอน นี้เพื่อใช้เทคนิคเดียวกับที่ใช้ในที่นี่เพื่อฝึกโมเดลคำแนะนำโดยใช้ชุดข้อมูลของคุณเอง
ตัวอย่าง
ตามตัวอย่าง เราได้ฝึกอบรมโมเดลคำแนะนำด้วยทั้งแนวทางตาม ID และตามฟีเจอร์ โมเดลตาม ID จะใช้เฉพาะ ID ภาพยนตร์เป็นอินพุต และโมเดลตามฟีเจอร์จะใช้ทั้ง ID ภาพยนตร์และ ID ประเภทภาพยนตร์เป็นอินพุต โปรดดูตัวอย่างอินพุตและเอาต์พุตต่อไปนี้
อินพุต
รหัสภาพยนตร์ตามบริบท:
- เดอะ ไลอ้อน คิง (ID: 362)
- ทอย สตอรี่ (ID: 1)
- (และอื่น ๆ)
รหัสประเภทภาพยนตร์ตามบริบท:
- แอนิเมชั่น (ID: 15)
- ของเด็ก (ID: 9)
- ละครเพลง (ID: 13)
- แอนิเมชั่น (ID: 15)
- ของเด็ก (ID: 9)
- ตลก (ID: 2)
- (และอื่น ๆ)
เอาท์พุต:
- รหัสภาพยนตร์ที่แนะนำ:
- ทอย สตอรี่ 2 (รหัส: 3114)
- (และอื่น ๆ)
เกณฑ์มาตรฐานประสิทธิภาพ
หมายเลขเกณฑ์มาตรฐานประสิทธิภาพสร้างขึ้นด้วยเครื่องมือ ที่อธิบายไว้ที่นี่
ชื่อรุ่น | ขนาดรุ่น | อุปกรณ์ | ซีพียู |
---|---|---|---|
คำแนะนำ (รหัสภาพยนตร์เป็นอินพุต) | 0.52 ลบ | พิกเซล 3 | 0.09ms* |
พิกเซล 4 | 0.05ms* | ||
คำแนะนำ (รหัสภาพยนตร์และประเภทภาพยนตร์เป็นอินพุต) | 1.3 ลบ | พิกเซล 3 | 0.13ms* |
พิกเซล 4 | 0.06ms* |
* ใช้ 4 เธรด
ใช้ข้อมูลการฝึกอบรมของคุณ
นอกจากโมเดลที่ได้รับการฝึกแล้ว เรายังจัดเตรียม ชุดเครื่องมือแบบโอเพ่นซอร์สใน GitHub เพื่อฝึกโมเดลด้วยข้อมูลของคุณเอง คุณสามารถปฏิบัติตามบทช่วยสอนนี้เพื่อเรียนรู้วิธีใช้ชุดเครื่องมือและปรับใช้โมเดลที่ผ่านการฝึกอบรมในแอปพลิเคชันมือถือของคุณเอง
โปรดปฏิบัติตาม บทช่วยสอน นี้เพื่อใช้เทคนิคเดียวกับที่ใช้ในที่นี่เพื่อฝึกโมเดลคำแนะนำโดยใช้ชุดข้อมูลของคุณเอง
เคล็ดลับในการปรับแต่งโมเดลด้วยข้อมูลของคุณ
โมเดลที่ได้รับการฝึกล่วงหน้าที่รวมอยู่ในแอปพลิเคชันสาธิตนี้ได้รับการฝึกฝนด้วยชุดข้อมูล MovieLens คุณอาจต้องการแก้ไขการกำหนดค่าโมเดลตามข้อมูลของคุณเอง เช่น ขนาดคำศัพท์ การฝัง dims และความยาวบริบทอินพุต เคล็ดลับบางประการมีดังนี้:
ความยาวบริบทอินพุต: ความยาวบริบทอินพุตที่ดีที่สุดจะแตกต่างกันไปตามชุดข้อมูล เราขอแนะนำให้เลือกความยาวบริบทอินพุตตามจำนวนเหตุการณ์ป้ายกำกับที่มีความสัมพันธ์กับผลประโยชน์ระยะยาวเทียบกับบริบทระยะสั้น
การเลือกประเภทตัวเข้ารหัส: เราขอแนะนำให้เลือกประเภทตัวเข้ารหัสตามความยาวบริบทอินพุต ตัวเข้ารหัสแบบ Bag-of-Words ทำงานได้ดีสำหรับความยาวบริบทอินพุตแบบสั้น (เช่น <10) ตัวเข้ารหัส CNN และ RNN ทำให้มีความสามารถในการสรุปมากขึ้นสำหรับความยาวบริบทอินพุตแบบยาว
การใช้คุณสมบัติพื้นฐานเพื่อแสดงรายการหรือกิจกรรมของผู้ใช้สามารถปรับปรุงประสิทธิภาพของโมเดล รองรับรายการใหม่ได้ดีขึ้น ซึ่งอาจลดขนาดพื้นที่การฝังลง จึงช่วยลดการใช้หน่วยความจำ และเป็นมิตรกับอุปกรณ์มากขึ้น