คำแนะนำ

ดูบน TensorFlow.org ทำงานใน Google Colab ดูแหล่งที่มาบน GitHub

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

เริ่ม

เรามีแอปพลิเคชันตัวอย่าง TensorFlow Lite ที่สาธิตวิธีแนะนำรายการที่เกี่ยวข้องให้กับผู้ใช้บน Android

ตัวอย่าง Android

หากคุณกำลังใช้แพลตฟอร์มอื่นที่ไม่ใช่ Android หรือคุ้นเคยกับ TensorFlow Lite API อยู่แล้ว คุณสามารถดาวน์โหลดโมเดลคำแนะนำสำหรับผู้เริ่มต้นได้

ดาวน์โหลดรุ่นสตาร์ท

เรายังจัดเตรียมสคริปต์การฝึกอบรมใน Github เพื่อฝึกโมเดลของคุณเองด้วยวิธีที่กำหนดค่าได้

รหัสการฝึกอบรม

ทำความเข้าใจสถาปัตยกรรมแบบจำลอง

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

เทคนิคการเข้ารหัสประวัติผู้ใช้ตามลำดับที่แตกต่างกันสามแบบมีให้พร้อมกับฐานรหัสนี้:

  • ตัวเข้ารหัส Bag-of-words (BOW): การเฉลี่ยการฝังกิจกรรมของผู้ใช้โดยไม่คำนึงถึงลำดับบริบท
  • Convolutional neural network encoder (CNN): การใช้เครือข่ายประสาท convolutional หลายชั้นเพื่อสร้างการเข้ารหัสบริบท
  • ตัวเข้ารหัสโครงข่ายประสาทเทียมแบบกำเริบ (RNN): การใช้โครงข่ายประสาทเทียมแบบกำเริบเพื่อเข้ารหัสลำดับบริบท

ในการสร้างแบบจำลองกิจกรรมของผู้ใช้แต่ละราย เราสามารถใช้ ID ของรายการกิจกรรม (อิงตาม ID) หรือฟีเจอร์หลายรายการของรายการ (อิงตามฟีเจอร์) หรือทั้งสองอย่างรวมกัน โมเดลตามคุณลักษณะที่ใช้คุณลักษณะหลายอย่างเพื่อเข้ารหัสพฤติกรรมของผู้ใช้โดยรวม ด้วยฐานรหัสนี้ คุณสามารถสร้างแบบจำลองตามรหัสหรือตามคุณลักษณะในลักษณะที่กำหนดค่าได้

หลังจากการฝึกอบรมแล้ว แบบจำลอง TensorFlow Lite จะถูกส่งออกซึ่งสามารถให้การคาดการณ์ระดับบนสุดจากตัวเลือกที่แนะนำได้โดยตรง

ใช้ข้อมูลการฝึกของคุณ

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

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

ตัวอย่าง

ตัวอย่างเช่น เราได้ฝึกอบรมแบบจำลองคำแนะนำด้วยวิธีการแบบอิงตาม ID และแบบอิงตามคุณลักษณะ โมเดลตาม ID จะใช้เฉพาะ ID ภาพยนตร์เป็นอินพุต และโมเดลตามฟีเจอร์ใช้ทั้ง ID ภาพยนตร์และ ID ประเภทภาพยนตร์เป็นอินพุต โปรดดูตัวอย่างอินพุตและเอาต์พุตต่อไปนี้

อินพุต

  • รหัสภาพยนตร์บริบท:

    • เดอะไลอ้อนคิง (ID: 362)
    • ทอย สตอรี่ (ID: 1)
    • (และอื่น ๆ)
  • รหัสประเภทภาพยนตร์บริบท:

    • แอนิเมชั่น (ID: 15)
    • เด็ก (ID: 9)
    • มิวสิคัล (ID: 13)
    • แอนิเมชั่น (ID: 15)
    • เด็ก (ID: 9)
    • ตลก (ID: 2)
    • (และอื่น ๆ)

ผลลัพธ์:

  • รหัสภาพยนตร์ที่แนะนำ:
    • ทอย สตอรี่ 2 (ID: 3114)
    • (และอื่น ๆ)

มาตรฐานประสิทธิภาพ

ตัวเลขเปรียบเทียบประสิทธิภาพสร้างขึ้นด้วยเครื่องมือที่ อธิบายไว้ที่นี่

ชื่อรุ่น ขนาดรุ่น อุปกรณ์ ซีพียู
คำแนะนำ (ID ภาพยนตร์เป็นอินพุต) 0.52 Mb Pixel 3 0.09ms*
Pixel 4 0.05ms*
คำแนะนำ (ID ภาพยนตร์และประเภทภาพยนตร์เป็นอินพุต) 1.3 Mb Pixel 3 0.13ms*
Pixel 4 0.06ms*

* ใช้ 4 เธรด

ใช้ข้อมูลการฝึกของคุณ

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

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

เคล็ดลับสำหรับการปรับแต่งโมเดลด้วยข้อมูลของคุณ

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

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

  • การเลือกประเภทตัวเข้ารหัส: เราขอแนะนำให้เลือกประเภทตัวเข้ารหัสตามความยาวของบริบทอินพุต ตัวเข้ารหัสแบบ Bag-of-words ทำงานได้ดีสำหรับความยาวของบริบทอินพุตสั้น (เช่น <10) ตัวเข้ารหัส CNN และ RNN ช่วยเพิ่มความสามารถในการสรุปสำหรับความยาวบริบทอินพุตที่ยาว

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