Loss Functions in YouTube Recommendations
Hàm loss định hình bảng xếp hạng Shopee, TikTok, Spotify, YouTube
Công ty nào đang ứng dụng Hàm loss?
Mở Shopeevà bạn thấy “Gợi ý cho bạn” với 20 sản phẩm xếp theo thứ tự. Mở TikTok, lướt For You, và 30 video đầu tiên đã được chọn thứ tự rất kỹ. Mở Spotify, Discover Weekly sắp 30 bài theo đúng tuần tự bạn sẽ thích nhất rồi giảm dần. YouTube làm điều tương tự với hàng tỉ video mỗi ngày.
Bên trong cả bốn hệ gợi ý này là cùng một câu hỏi: model nên học điều gì? Câu trả lời nằm ở hàm loss(loss function), thước đo cho biết model đoán đúng đến đâu. Cùng một dữ liệu, đổi loss thì bảng xếp hạng top 10 đổi hoàn toàn. Chỗ thú vị nhất của câu chuyện không phải “bao nhiêu dữ liệu” mà là “dạy model tối ưu điều gì”. Đó mới là cái quyết định trải nghiệm của bạn.
E-commerce (SG)
Gợi ý sản phẩm. Ưu tiên mua thật, không chỉ click.
Video (CN)
For You sắp video cho người xem lâu, ít bỏ lướt.
Nhạc (SE)
Discover Weekly: 30 bài theo đúng thứ tự yêu thích.
Video (US)
Home và Up Next tối ưu watch time, chống clickbait.
Vấn đề công ty cần giải quyết
Hệ gợi ý không cần đoán “điểm” chính xác. Nó cần sắp xếp đúng thứ tự. Nhưng các hàm loss quen thuộc nhất từ trường lớp (MSE là mean squared error, MAE là mean absolute error) lại được thiết kế cho regression. Chúng phạt theo khoảng cách giữa con số dự đoán và con số thật.
MSE: học con số
Dự đoán rating 4.0 khi thật là 4.5 thì mất 0.25. Phạt theo khoảng cách, không quan tâm thứ tự.
Phù hợp khi: Regression giá nhà, nhiệt độ. Có đáp án số thật.
Pairwise: học cặp
So từng cặp A và B. Model đặt A > B đúng thì được điểm tốt. Không cần biết số cụ thể.
Phù hợp khi: Hệ gợi ý có phản hồi ngầm: ai click, ai skip.
Listwise: học cả bảng
Nhìn top-K, phạt mạnh lỗi ở vị trí cao. Tối ưu trực tiếp metric đánh giá (NDCG).
Phù hợp khi: Ranking sản xuất ở TikTok, YouTube, Shopee.
Câu chuyện nổi tiếng: YouTube từng tối ưu CTR (click-through rate) bằng binary classification loss. Kết quả là trang chủ tràn ngập clickbait, tức là video tiêu đề giật gân nhưng nội dung kém. Họ chuyển sang weighted logistic regression với trọng số watch-time. Về bản chất, loss biến thành “dự đoán thời gian xem” thay vì “có click hay không”. Trải nghiệm thay đổi chỉ sau vài tuần chạy thử.
Cách Hàm loss giải quyết vấn đề
MSE và RMSE: kỷ nguyên Netflix Prize (2006-2009). Netflix mở cuộc thi 1 triệu đô với metric là RMSE trên rating 1-5 sao. Toàn ngành học bằng MSE trong 3 năm. Bài báo thắng giải dùng tới 107 model gộp lại. Nhưng khi triển khai thật, Netflix lại không dùng. Lý do: metric được tối ưu (RMSE trên sao) không phải thứ người xem quan tâm. Khách hàng không nhập sao, họ ấn play.
Pairwise loss (BPR là Bayesian Personalized Ranking, 2009).Rendle và cộng sự đề xuất: thay vì dự đoán số, hãy cho model học từ cặp “A được click, B không được click”. Hàm loss phạt khi model chấm A ≤ B. Không cần rating rõ ràng, chỉ cần biết người dùng thích A hơn B. Đây là nền tảng của gần như mọi hệ gợi ý hiện đại có phản hồi ngầm.
Listwise và LambdaRank (Microsoft, 2010). Burges et al. chỉ ra: pairwise đối xử mọi cặp như nhau, nhưng lỗi ở top 1-3 tệ hơn nhiều so với lỗi ở vị trí 18-20. LambdaRank đưa thêm trọng số NDCG vào gradient, phạt mạnh hơn khi lỗi xảy ra ở đỉnh bảng. Đây chính là thuật toán phía sau Bing search rank và lan ra hầu hết hệ gợi ý lớn.
YouTube: weighted logistic regression với watch-time.Trong paper RecSys 2016, Covington đưa ra cách mượn logistic regression để tối ưu thời gian xem. Mỗi ví dụ positive được nhân trọng số bằng số giây đã xem. Loss function vẫn là cross-entropy, nhưng trọng số biến nó thành “xác suất người dùng sẽ xem bao lâu”. Kết quả: video clickbait bị hạ rank vì ai nhấp cũng thoát nhanh, trọng số thấp.
TikTok Monolith (2022): multi-task loss. ByteDance công bố: For You không chỉ tối ưu một mục tiêu. Model có nhiều đầu ra (đã xem hết, like, comment, share) và cộng nhiều loss lại với trọng số riêng. Skip nhanh là tín hiệu negative mạnh, like là positive mạnh, share là cực mạnh. Tối ưu tất cả cùng lúc, ranking phản ánh nhiều dạng hài lòng hơn.
Shopee và Spotify: cùng một công thức. Shopee tối ưu xác suất mua (chứ không phải click) với loss có trọng số doanh thu. Spotify Discover Weekly kết hợp collaborative filtering (gần như pairwise) với CNN phân tích phổ âm thanh. Dù app khác nhau, ý tưởng trung tâm đều giống. Chọn loss phản ánh đúng giá trị thực sự muốn tối ưu, không phải một tín hiệu thay thế dễ đo.
Live scorer: đổi loss, cùng 10 video xếp lại hoàn toàn
Dưới đây là Minh, 20 tuổi, ở Sài Gòn. Lịch sử xem gồm bóng rổ NBA, lo-fi ôn bài, podcast tuổi trẻ. Model đã chấm điểm 10 video ứng viên theo từng loss. Bấm vào ba thẻ loss bên dưới để xem cùng 10 video được sắp xếp lại khác nhau thế nào.
Lịch sử xem gần nhất của Minh (được model dùng làm ngữ cảnh)
CLICKBAIT: 10 bí ẩn không thể tin nổi!!!
ViralX · Clickbait
Phân tích Curry 3 điểm cuối trận
BasketVN · Bóng rổ
Lo-fi sáng thứ bảy, 1h
ChillHub · Lo-fi
NBA recap: LeBron vs Celtics
HoopDaily · Bóng rổ
Lo-fi học bài mưa đêm
StudyBeats · Lo-fi
NBA draft 2024: top 5 rookies
BasketVN · Bóng rổ
Podcast tuổi trẻ, EP 42
AnhYoungPod · Podcast
Review điện thoại Samsung Galaxy
TechKen · Tech
Nấu ăn 15 phút: món bún bò
BepSG · Nấu ăn
Tutorial vẽ anime cho người mới
ArtStudio · Vẽ
NDCG@10
0.752
1.000 = sắp xếp hoàn hảo
Mức độ phù hợp trung bình top 3
6.47
Điểm sở thích thật 0–10
Clickbait ở top 3?
CÓ
Clickbait = click cao, rời sớm
Cùng một cặp dữ liệu, ba loss tạo ba tín hiệu học
Ba loss xử lý cùng một cặp dữ liệu theo cách rất khác nhau. Khi Minh click video A và lướt bỏ video B, mỗi loss tạo ra một tín hiệu học riêng. Bấm qua lại để thấy cùng một cặp dưới ba góc nhìn.
Cùng dữ liệu: Minh click video A (bóng rổ) và lướt bỏ video B (clickbait). Hai loss xử lý ra sao?
MSE bắt mô hình đoán con số điểm. Nhưng số không phải thứ Minh cảm thấy. Minh chỉ click A và lướt B. Kết quả: MSE phạt nặng vì mô hình đoán lệch số, dù thứ tự có thể đúng hoặc sai.
Phân tích Curry 3 điểm
Dự đoán
6.10
Thật
9.20
CLICKBAIT: 10 bí ẩn...
Dự đoán
7.90
Thật
1.50
MSE loss = 25.29. Mô hình bị phạt vì sai số lớn, đặc biệtở B (dự đoán 7.9 nhưng thật chỉ 1.5). Nhưng để ý: MSE không cho mô hình biết “A nên xếp trên B”. Nó chỉ đòi con số chính xác. Nếu hai video cùng có rating thật là 5.0 nhưng Minh click một và skip một, MSE không học được gì từ cặp đó.
Cả hai đều quan tâm thứ tự. Nhưng listwise phạt nặng hơn khi lỗi nằm ở top, đúng với trải nghiệm người dùng.
Pairwise loss đối xử mọi cặp bằng nhau. Đặt video hay ở vị trí #1 hay #20 thì gradient như nhau. Nhưng người dùng thực tế chỉ nhìn top 3-10. Lỗi ở đầu bảng là thảm họa.
Trọng số phạt theo vị trí:
Mọi vị trí có trọng số 1.0. Mô hình không ưu tiên sửa lỗi ở top trước.
Minh click A, lướt B: cùng dữ liệu qua từng loss
Bốn bước dưới đây mô tả cùng một lần cập nhật model. Mỗi bước cho thấy loss đang yêu cầu điều gì.
Hệ thống log một cặp hành động: Minh click video A (bóng rổ, xem 4 phút); Minh lướt video B(clickbait, rời sau 2 giây). Đây là dữ liệu “phản hồi ngầm” (implicit feedback). Không ai gắn sao, không có rating rõ ràng.
Video A: Phân tích Curry 3 điểm
Click → xem 4 phút 12 giây → watch-through
Video B: Clickbait 10 bí ẩn
Lướt sau 2 giây → không click chính thức
Con số thật
- YouTube chuyển từ CTR loss sang weighted cross-entropy với trọng số watch-time, loại bỏ hiệu quả clickbait khỏi top gợi ý [1]
- TikTok Monolith (2022) dùng multi-task loss kết hợp nhiều mục tiêu: view, like, comment, share với trọng số riêng cho mỗi tín hiệu [2]
- BPR pairwise loss (Rendle 2009) trở thành chuẩn mực cho hệ gợi ý có phản hồi ngầm. Được trích dẫn hơn 10.000 lần. [3]
- LambdaRank (Microsoft 2010) chèn trọng số NDCG vào gradient, phạt mạnh hơn khi lỗi ở top. Nền tảng của Bing search và nhiều hệ ranking. [4]
- YouTube phục vụ hơn 1 tỉ giờ xem mỗi ngày. Thời gian xem trung bình trên mobile vượt 60 phút/người/ngày nhờ ranking được tinh chỉnh liên tục. [5]
- Neural collaborative filtering (He 2017) cho thấy thay pointwise bằng pairwise loss cải thiện HR@10 và NDCG@10 từ 3 đến 8% trên dataset MovieLens và Pinterest [6]
- Khung RankNet, LambdaRank, LambdaMART của Microsoft là lộ trình tiêu chuẩn: từ pairwise đến listwise, mỗi bước cải thiện metric top-K [7]
Thử tự tay
Bốn tình huống sát thực tế. Trả lời để chắc bạn đã nắm được: khi nào chọn loss nào, và vì sao.
Minh click video A (bóng rổ) và lướt bỏ video B (clickbait) chỉ sau 2 giây. Hàm loss nên thưởng model điều gì?
Bạn là kỹ sư Shopee, cần chọn loss cho model xếp hạng sản phẩm ở 'Gợi ý cho bạn'. Shopee kiếm tiền khi người dùng MUA chứ không phải chỉ click. Loss nào phù hợp nhất?
Trong danh sách 10 gợi ý, model A đặt video hay nhất ở vị trí #1 nhưng có video dở ở #5. Model B đặt video hay nhất ở #3 nhưng toàn bộ #1 đến #5 đều ổn. Loss nào sẽ chấm model A cao hơn model B?
Spotify muốn gợi ý bài hát mà người dùng sẽ nghe HẾT, không bỏ ngang. Bạn có tín hiệu 'played > 30s' (positive) và 'skipped < 5s' (negative). Loss nào tự nhiên nhất?
- Loss function định nghĩa 'mô hình học điều gì'. Cùng data, khác loss thì khác ranking, và khác cả trải nghiệm người dùng.
- MSE hợp với hồi quy có đáp án số thật (giá nhà). Trong recommendation, nó tối ưu nhầm. Mô hình học con số thay vì học thứ tự.
- Pairwise loss (BPR) chỉ cần tín hiệu ngầm 'A click, B skip' là đủ để học sắp xếp đúng. Đây là chuẩn mực từ 2009 đến nay.
- Listwise (LambdaRank, NDCG) phạt mạnh lỗi ở top, đúng với trải nghiệm: người ta chỉ nhìn top 3-10. Đây là thứ YouTube, TikTok, Shopee đang tối ưu thật.
- Câu chuyện YouTube chuyển từ CTR-loss sang watch-time-weighted loss là minh chứng kinh điển: loss function không phải chi tiết kỹ thuật, nó quyết định chất lượng sản phẩm.
Nếu không có Hàm loss, app sẽ ra sao?
Nếu Shopee, TikTok, Spotify, YouTube đều giữ nguyên MSE trên rating, trang chủ của bạn hôm nay sẽ rất khác. Video clickbait sẽ tràn ngập Up Next vì chúng nhận nhiều click. Playlist Discover Weekly sẽ chỉ có bài phổ biến nhất thay vì bài phù hợp với gu bạn. “Gợi ý cho bạn” Shopee sẽ đầy sản phẩm rẻ nhất thay vì sản phẩm bạn thật sự muốn.
Câu chuyện lớn hơn: loss function không phải chi tiết kỹ thuật. Nó là quyết định sản phẩm quan trọng bậc nhất của hệ gợi ý. Chuyển từ MSE sang pairwise sang listwise-with-watch-time không thay đổi lượng dữ liệu, không đổi kiến trúc mạng, không cần GPU mạnh hơn. Nhưng nó thay đổi hoàn toàn thứ mô hình được thưởng vì học. Và mô hình học gì thì trải nghiệm bạn có sẽ là vậy.
Tương tự với mọi ML system: bạn đo gì là thứ bạn tối ưu. Nếu metric đánh giá và loss function khác nhau, mô hình sẽ giỏi ở metric và dở ở trải nghiệm thật. Một trong những kỹ năng quan trọng nhất của kỹ sư ML là biết loss đang thực sự tối ưu cái gì, và điều đó có khớp với mục tiêu sản phẩm hay không.