คำแนะนำ

ดูบน TensorFlow.org ทำงานใน Google Colab ดูแหล่งที่มาบน 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 ทำให้มีความสามารถในการสรุปมากขึ้นสำหรับความยาวบริบทอินพุตแบบยาว

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