- ฟีด "For You" ของ X ใช้ ระบบแนะนำที่ขับเคลื่อนด้วยแมชชีนเลิร์นนิง ซึ่งพัฒนาขึ้นเพื่อยกระดับคุณภาพการแนะนำคอนเทนต์แบบเฉพาะบุคคล
- ฟีดถูกประกอบขึ้นจาก 2 แหล่งคือ บัญชีที่ติดตาม (Thunder) และ คอนเทนต์นอกเครือข่ายที่ไม่ได้ติดตาม (Phoenix Retrieval)
- โพสต์ผู้สมัครทั้งหมดจะถูกประเมินด้วย Phoenix ซึ่งเป็นโมเดล Transformer บนพื้นฐาน Grok เพื่อจัดอันดับสุดท้าย
- โมเดลนี้คาดการณ์ความน่าจะเป็นของการมีส่วนร่วมกับแต่ละโพสต์
- ระบบได้ถอดฟีเจอร์ที่ออกแบบด้วยมือทั้งหมดและฮิวริสติกอัลกอริทึมส่วนใหญ่ออกไป
- วิเคราะห์ประวัติกิจกรรมของผู้ใช้ (ไลก์ ตอบกลับ แชร์) เพื่อค้นหาคอนเทนต์ที่เกี่ยวข้อง
สถาปัตยกรรมระบบ
- Home Mixer เป็นชั้น orchestration ที่ประสานทั้งพายป์ไลน์
- มีขั้นตอน Query Hydration สำหรับรวบรวมประวัติพฤติกรรมผู้ใช้และข้อมูลการติดตาม
- จัดการลำดับขั้นตั้งแต่การดึงผู้สมัคร การเสริมข้อมูล การกรอง การให้คะแนน ไปจนถึงการคัดเลือกสุดท้าย
- ส่งคืนโพสต์ที่เรียงลำดับตามผู้ใช้ผ่าน ScoredPostsService ที่ทำงานบน gRPC
- Thunder เป็นพื้นที่เก็บข้อมูลแบบอินเมมโมรี ที่รวบรวมโพสต์แบบเรียลไทม์ผ่าน Kafka event stream
- จัดการพื้นที่เก็บข้อมูลต่อผู้ใช้สำหรับโพสต์ต้นฉบับ การตอบกลับ/รีโพสต์ และโพสต์วิดีโอ
- ให้ผู้สมัครโพสต์แบบ "In-network" จากบัญชีที่ผู้ใช้ร้องขอติดตามอยู่
- ส่งมอบโพสต์ล่าสุดจากบัญชีที่ติดตามด้วยความหน่วงต่ำมาก
- ทำให้ได้ ประสิทธิภาพการค้นหาระดับต่ำกว่ามิลลิวินาที โดยไม่ต้องเข้าถึงฐานข้อมูลภายนอก
- Phoenix คือคอมโพเนนต์ ML หลักของระบบแนะนำ ประกอบด้วย 2 ขั้นคือ Retrieval และ Ranking
- Retrieval: ใช้ โมเดล Two-Tower เพื่อคำนวณความคล้ายกันระหว่าง embedding ของคุณลักษณะ/ประวัติการมีส่วนร่วมของผู้ใช้กับ embedding ของโพสต์ แล้วดึงโพสต์ Top-K
- Ranking: ใช้โครงสร้าง Transformer with Candidate Isolation เพื่อให้แต่ละผู้สมัครถูกประเมินอย่างเป็นอิสระ
- รับอินพุตเป็นบริบทของผู้ใช้ (ประวัติการมีส่วนร่วม) และโพสต์ผู้สมัคร
- คาดการณ์ ความน่าจะเป็นของหลายพฤติกรรม เช่น ไลก์ ตอบกลับ รีโพสต์ คลิก สำหรับแต่ละโพสต์
- Candidate Pipeline เป็นเฟรมเวิร์กพายป์ไลน์แนะนำที่นำกลับมาใช้ซ้ำได้
- กำหนด trait เช่น
Source, Hydrator, Filter, Scorer, Selector
- มีการทำงานแบบขนาน การจัดการข้อผิดพลาด และความสามารถด้าน logging ในตัว เพื่อรองรับการขยายและความเสถียร
วิธีการทำงาน
-
ขั้นตอนของพายป์ไลน์
- 1. ดึงข้อมูลคำขอ : นำประวัติกิจกรรมล่าสุดและเมทาดาทาของผู้ใช้ (เช่น รายการติดตาม) มาใช้
- 2. ค้นหาผู้สมัคร : ค้นหาโพสต์ผู้สมัครจากแหล่งต่อไปนี้
- Thunder : โพสต์ล่าสุดจากบัญชีที่ติดตาม (ภายในเครือข่าย)
- Phoenix Retrieval : โพสต์ที่ค้นพบด้วยแมชชีนเลิร์นนิงจากคลังคอนเทนต์ทั่วโลก (นอกเครือข่าย)
- 3. Hydration ผู้สมัคร โดยใช้ข้อมูลต่อไปนี้ :
- ข้อมูลหลักของโพสต์ (ข้อความ สื่อ ฯลฯ)
- ข้อมูลผู้เขียน (ชื่อผู้ใช้ สถานะยืนยันตัวตน)
- ความยาววิดีโอ (สำหรับโพสต์วิดีโอ)
- สถานะการสมัครสมาชิก
- 4. ตัวกรองก่อนให้คะแนน : นำโพสต์ที่ตรงตามเงื่อนไขต่อไปนี้ออก
- ซ้ำกัน
- เก่าเกินไป
- เป็นของผู้ชมเอง
- มาจากบัญชีที่ถูกบล็อก/ปิดเสียง
- มีคีย์เวิร์ดที่ถูกปิดเสียง
- เคยเห็นมาก่อนหรือเพิ่งถูกเสิร์ฟไปไม่นาน
- เป็นคอนเทนต์ที่ไม่สามารถสมัครรับได้
- 5. วิธีให้คะแนน : ใช้ตัวให้คะแนนหลายตัวตามลำดับ
- Phoenix Scorer : ดึงผลการคาดการณ์จากแมชชีนเลิร์นนิงด้วยโมเดล Phoenix Transformer
- Weighted score calculator : รวมผลการคาดการณ์เพื่อคำนวณคะแนนความเกี่ยวข้องสุดท้าย
- Author diversity score calculator : ลดผลกระทบของคะแนนจากผู้เขียนซ้ำ เพื่อเพิ่มความหลากหลาย
- OON scorer : ปรับคะแนนสำหรับคอนเทนต์นอกเครือข่าย
- 6. การคัดเลือก : เรียงตามคะแนนแล้วเลือกผู้สมัคร Top K
- 7. ขั้นตอนหลังการคัดเลือก : ตรวจสอบขั้นสุดท้ายกับโพสต์ผู้สมัคร
-
การให้คะแนนและการจัดอันดับ
- รวมค่าคาดการณ์ของโมเดล Phoenix ด้วย วิธี weighted sum
- ให้น้ำหนักสูงกับพฤติกรรมเชิงบวก (ไลก์ แชร์ ฯลฯ) และหักคะแนนสำหรับพฤติกรรมเชิงลบ (บล็อก รายงาน ฯลฯ)
-
การกรองสองชั้น
- ตัวกรองก่อนคำนวณคะแนน: ลบโพสต์ซ้ำ โพสต์ที่เก่าเกินเกณฑ์ โพสต์ของตนเอง คอนเทนต์เสียเงินที่ดูไม่ได้ โพสต์ที่เคยเห็นหรือถูกเสิร์ฟแล้ว บัญชีที่ถูกบล็อก และคีย์เวิร์ดที่ถูกปิดเสียง เป็นต้น
- ตัวกรองหลังการคัดเลือก: ลบโพสต์ที่ถูกลบแล้ว โพสต์สแปม คอนเทนต์รุนแรง โพสต์โหดร้าย และความซ้ำซ้อนของหลายกิ่งในเธรดบทสนทนาเดียวกัน
หลักการออกแบบสำคัญ
- ตัดการทำฟีเจอร์เอนจิเนียริงด้วยมือออก ให้ Transformer เรียนรู้จากลำดับพฤติกรรมผู้ใช้โดยตรง
- Candidate Isolation เพื่อให้ได้คะแนนที่สม่ำเสมอและทำ caching ได้ง่าย
- Hash-based embedding ใช้ฟังก์ชันแฮชหลายตัวในการดึง embedding ทั้งในขั้น retrieval และ ranking
- Multi-Action Prediction คาดการณ์หลายพฤติกรรม แทนคะแนน "ความเกี่ยวข้อง" เพียงค่าเดียว
- สถาปัตยกรรมพายป์ไลน์แบบโมดูลาร์
- แยกการรันและมอนิเตอร์พายป์ไลน์ออกจากตรรกะทางธุรกิจ
- รองรับการทำงานแบบขนานของแต่ละขั้นและการจัดการข้อผิดพลาดอย่างเหมาะสม
- เพิ่มแหล่งข้อมูลใหม่ การทำ hydration ตัวกรอง และตัวให้คะแนนใหม่ได้ง่าย
ลิขสิทธิ์
2 ความคิดเห็น
"Rust 62.9%"
트위터의 추천알고리즘을 오픈소스로 공개
อันนี้จะเป็นอีกอย่างหนึ่งหรือเปล่านะครับ? ไว้สุดสัปดาห์ต้องหาเวลาอ่านดูแล้ว...