Train / Val / Test in YouTube Recommendations
Tập train/val/test trong YouTube — chia theo thời gian
Công ty nào đang ứng dụng Tập train, val, test?
Bạn mở YouTube và trang chủ hiện ra danh sách video. Khoảng 70% thời gian xem trên YouTube đến từ gợi ý của thuật toán. Hệ thống này phục vụ hơn 2 tỷ người dùng, chọn lọc từ hơn 800 triệu video, xử lý hơn 80 tỷ tín hiệu mỗi ngày.
Nhưng mỗi mô hình gợi ý không được triển khai ngay sau khi huấn luyện. YouTube có một quy trình chia dữ liệu nghiêm ngặt — train, validation, test — rồi kết hợp với A/B testing (thử nghiệm so sánh trên người dùng thật) để đảm bảo mô hình mới thực sự cải thiện trải nghiệm, không chỉ cải thiện con số trên giấy.
Cái bẫy: chia ngẫu nhiên dữ liệu có thứ tự thời gian
Chia ngẫu nhiên
Train có dữ liệu từ 2024, test có dữ liệu từ 2021. Mô hình “biết trước” xu hướng — offline metric cực đẹp, thực tế bị tụt thảm.
Chia theo thời gian
Train: 2020-2022 (cũ). Val: 2023 (trung). Test: 2024 (mới). Mô phỏng đúng việc dự đoán tương lai từ quá khứ.
Vấn đề công ty cần giải quyết
YouTube thu thập dữ liệu tương tác từ 2 tỷ người dùng: lượt xem, thời gian xem, nhấn like, chia sẻ, bình luận, bỏ qua. Tổng cộng hơn 80 tỷ tín hiệu mỗi ngày. Thách thức không chỉ là mô hình chính xác trên dữ liệu quá khứ, mà là dự đoán đúng hành vi người dùng trong tương lai— vốn thay đổi liên tục: xu hướng mới, sự kiện thời sự, sáng tạo viên mới.
Nếu chia dữ liệu ngẫu nhiênnhư cách “sách giáo khoa”, YouTube sẽ phạm lỗi chết người: thông tin về tương lai lọt vào tập train. Mô hình học trên dữ liệu đã “nhìn thấy” tương lai ⇒ offline metric đẹp ⇒ thực tế thảm hại. Lối đúng là chia theo thời gian: train = dữ liệu cũ, val = dữ liệu trung gian, test = dữ liệu mới nhất — cộng thêm A/B test trên người dùng thật.
Dữ liệu YouTube: vào liên tục theo thời gian
Ba tập dữ liệu offline + một tập “test thật” là A/B trên người dùng hiện tại. Chỉ mô hình vượt qua cả bốn mới được triển khai.
Cách Tập train, val, test giải quyết vấn đề
Tập huấn luyện: học từ lịch sử. YouTube dùng hàng tỷ sự kiện tương tác trong quá khứ để huấn luyện mạng nơ-ron sâu. Kiến trúc 2 giai đoạn (Covington et al., RecSys 2016): mạng ứng viên (candidate generation) chọn vài trăm video từ 800 triệu, rồi mạng xếp hạng (ranking) sắp xếp chúng. Dữ liệu được cân bằng cẩn thận theo người dùng: mỗi user đóng góp cùng số lượng ví dụ, tránh mô hình bị chi phối bởi nhóm xem nhiều.
Tập kiểm định: chia theo user (và theo thời gian). YouTube chia theo người dùng, không chia theo sự kiện ngẫu nhiên. Toàn bộ lịch sử của một user nằm hoàn toàn trong train hoặc hoàn toàntrong val — không chia đôi. Đồng thời, cắt theo thời gian: val là dữ liệu gần đây nhất so với train. Tập val dùng để chọn hyperparameter, so sánh kiến trúc, early stopping.
A/B test trên người dùng thật: đề thi thật. Sau khi mô hình vượt qua đánh giá offline, YouTube chạy A/B test: chia người dùng thành nhóm control (mô hình cũ) và nhóm treatment (mô hình mới). So sánh chỉ số thực tế (watch time, lượt hài lòng, tỷ lệ dừng xem sớm). YouTube thực hiện hàng chục nghìn A/B test mỗi năm. Chỉ mô hình vượt qua A/B test mới được triển khai.
Quyết định từ chỉ số thực tế, không chỉ số offline. YouTube nhiều lần phát hiện: mô hình có offline metric cao hơn nhưng lại giảmwatch time trong A/B test. Nguyên nhân thường là mô hình tối ưu cho click (nhấp chuột) thay vì sự hài lòng — người dùng click nhiều hơn nhưng thoát nhanh hơn. Chỉ A/B test mới phát hiện được sự khác biệt này. Đó là lý do A/B test được coi là “test set thật”.
Chia ngẫu nhiên vs chia theo thời gian — ảnh hưởng tới độ tin cậy
Cùng dataset 12 tháng. Đổi cách chia để thấy hậu quả.
Random split — leakage
Vấn đề:
T3 (tháng 3) nằm trong test, nhưng T5, T9 (tháng 5, 9 — tương lai so với T3) lại ở train. Mô hình “biết trước” xu hướng tương lai khi đoán T3. Kết quả offline đẹp, production thảm.
Quy trình A/B test rollout của YouTube
Offline evaluation
Đo mô hình mới trên val và test set đã chuẩn bị. Watch time prediction, recall@k, precision@k... Nếu không vượt baseline → dừng ngay, không tốn tài nguyên.
Val acc: 82.3% → 83.1% ✓ | NDCG@20: 0.42 → 0.44 ✓
Offline metric vs trải nghiệm thật — không luôn đi cùng chiều
Ba tình huống thật từ nghiên cứu YouTube — mỗi tình huống cho thấy vì sao A/B test là không thể thiếu.
Click-bait model
Offline (CTR (click-through rate))
+12%
Online (Watch time)
-4%
Mô hình tối ưu CTR → chọn thumbnail gây tò mò nhưng nội dung không hợp → user bỏ xem sớm.
Highly-relevant model
Offline (NDCG@20)
+2%
Online (Watch time)
+6%
Offline metric tăng nhẹ, nhưng user thích hơn rõ rệt — trải nghiệm thật mới nói lên tất cả.
Diversity-boosting model
Offline (Accuracy)
-1%
Online (Satisfaction survey)
+8%
Accuracy giảm (model gợi ý đa dạng hơn, không phải 'an toàn nhất'), nhưng user hài lòng hơn dài hạn.
Kết luận: mọi chỉ số offline chỉ là proxy. Quyết định cuối cùng luôn thuộc về A/B test trên người dùng thật — đây chính là “đề thi thật” của một hệ thống recommendation.
Bạn phát triển một mô hình gợi ý video. Offline val accuracy tăng từ 82% → 85%. Bạn có nên triển khai ngay?
Bạn có 3 năm dữ liệu hành vi user (2022-2024). Chia thế nào cho đúng?
Kiến trúc 2 giai đoạn của YouTube — mỗi giai đoạn chia tập riêng
YouTube không có một mô hình gợi ý. Họ có hai— mỗi cái có dữ liệu train/val/test riêng, được đánh giá theo metric riêng.
Mỗi giai đoạn có data split và metric riêng. Candidate cần recall cao (không bỏ sót video hay); ranking cần thứ tự đúng. A/B test đánh giá cả hai cộng lại trên người dùng thật. Đây là mô hình điển hình cho các hệ thống recommendation lớn (Netflix, Spotify, Tiktok).
Con số thật
Nếu không có Tập train, val, test, app sẽ ra sao?
Không chia tập theo thời gian, YouTube sẽ “nhìn thấy tương lai” trong lúc huấn luyện — mô hình trông có vẻ chính xác trên val/test nhưng thảm hại khi gặp xu hướng mới mà nó chưa từng thấy. Không có A/B test, YouTube sẽ triển khai mô hình chỉ dựa trên offline metric — và nhiều thay đổi “tốt trên giấy” sẽ làm giảm trải nghiệm thực: click-bait được ưa chuộng, sáng tạo viên có chất lượng bị thiệt.
Quy trình 3 bước (train trên quá khứ, val trên tập tách riêng đúng cách, A/B test trên người dùng thật) đảm bảo mỗi thay đổi thuật toán phải vượt qua cả đánh giá lý thuyết lẫn thử thách thực tế trước khi chạm đến 2 tỷ người dùng. Đây là áp dụng đúng của nguyên tắc test set: chỉ mở khi mọi quyết định đã chốt— ở đây, “mở” nghĩa là A/B test thật.
- Chia theo thời gian: train cũ nhất, test mới nhất. Mô phỏng đúng tình huống production.
- Chia theo user: không để dữ liệu của cùng một user ở cả train và val/test (data leakage).
- A/B test là “test set thật”: offline metric chỉ là sàng lọc, không phải quyết định cuối cùng.
Áp dụng cho dự án Việt Nam: các bước bắt đầu
- Bước 1:Xác định “mũi tên thời gian” trong dữ liệu của bạn. Nếu có — dù là đơn hàng theo ngày, click theo giờ, lượt like theo tuần — chia theo thời gian là bắt buộc.
- Bước 2: Xác định nhóm tự nhiên (user, khách hàng, thiết bị, phiên). Nếu có, chia theo nhóm thay vì theo điểm dữ liệu riêng lẻ.
- Bước 3:Thiết lập một quy trình A/B test đơn giản. Ở startup nhỏ, A/B test có thể là “tuần 1 dùng model A, tuần 2 dùng model B” — vẫn tốt hơn offline metric một mình.
- Bước 4:Luôn có mô hình baseline cũ sẵn sàng “rollback”. Một A/B test có ý nghĩa khi bạn có thể dừng nó nếu phát hiện ảnh hưởng tiêu cực.
Không phải dự án nào cũng có quy mô YouTube, nhưng các nguyên tắc đều áp dụng được. Các startup e-commerce Việt Nam (Tiki, Shopee, Lazada VN) đều dùng quy trình tương tự, chỉ khác quy mô.
- Tác động dài hạn: A/B test 2 tuần không thấy được user bỏ nền tảng sau 6 tháng vì chất lượng giảm.
- Ảnh hưởng đến creator: model mới có thể ưu tiên video ngắn, bỏ qua creator làm video dài có giá trị. Cần monitor riêng.
- Tác động xã hội: tối ưu engagement có thể dẫn tới nội dung cực đoan — chỉ số engagement đẹp nhưng hậu quả xã hội xấu.