ช่วยปกป้อง Great Barrier Reef กับ TensorFlow บน Kaggle เข้าร่วมท้าทาย

คำแนะนำ

ดูใน TensorFlow.org เรียกใช้ใน Google Colab ดูแหล่งที่มาบน GitHub

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

เริ่ม

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

ตัวอย่าง Android

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

ดาวน์โหลดรุ่นเริ่มต้น

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

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

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

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

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

  • ตัวเข้ารหัสแบบถุงคำ (BOW): เฉลี่ยการฝังตัวของกิจกรรมของผู้ใช้โดยไม่พิจารณาลำดับบริบท
  • Convolutional Neural Network Encoder (CNN): การประยุกต์ใช้โครงข่ายประสาทเทียมหลายชั้นเพื่อสร้างการเข้ารหัสบริบท
  • ตัวเข้ารหัสเครือข่ายประสาทที่เกิดซ้ำ (RNN): การใช้เครือข่ายประสาทที่เกิดซ้ำเพื่อเข้ารหัสลำดับบริบท

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

หลังจากการฝึกอบรมโมเดล TensorFlow Lite จะถูกส่งออกซึ่งสามารถให้การคาดเดาระดับท็อป K ของผู้สมัครที่ได้รับคำแนะนำได้โดยตรง

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

นอกเหนือจากโมเดลที่ได้รับการฝึกฝนแล้วเรายังมี ชุดเครื่องมือ แบบโอเพนซอร์ส ใน 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)
    • (และอื่น ๆ)

เกณฑ์มาตรฐานประสิทธิภาพ

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

ชื่อรุ่น ขนาดรุ่น อุปกรณ์ ซีพียู
คำแนะนำ (รหัสภาพยนตร์เป็นอินพุต) 0.52 ลบ พิกเซล 3 0.09 มิลลิวินาที *
พิกเซล 4 0.05 มิลลิวินาที *
คำแนะนำ (รหัสภาพยนตร์และประเภทภาพยนตร์เป็นอินพุต) 1.3 ล้านบาท พิกเซล 3 0.13 มิลลิวินาที *
พิกเซล 4 0.06 มิลลิวินาที *

* 4 เธรดที่ใช้

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

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

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

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

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

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

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

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