Recommendation System
Hệ thống gợi ý dự đoán các mục người dùng sẽ quan tâm rồi xếp hạng chúng. Tìm hiểu về lọc cộng tác và lọc dựa trên nội dung, pipeline, thách thức và mã nguồn.
Hệ thống gợi ý, hay recommender, là phần mềm dự đoán những mục mà người dùng có thể quan tâm, chẳng hạn sản phẩm, video, bài hát, bài viết hoặc bài đăng, rồi xếp hạng các mục đó cho người dùng. Hệ thống học từ phản hồi tường minh như xếp hạng sao và thường xuyên hơn nhiều là từ phản hồi ngầm như lượt nhấp, thời gian xem và giao dịch mua; nhờ vậy, đây là một trong những ứng dụng machine learning được triển khai rộng rãi nhất. Hai cột mốc đã định hình lĩnh vực này: mô tả năm 2003 của Amazon về lọc cộng tác từ mục này sang mục khác, và Netflix Prize (2006–2009), cuộc thi trao 1 triệu đô la cho nhóm cải thiện 10% khả năng dự đoán xếp hạng phim của Netflix.
Cách hệ thống gợi ý hoạt động#
Lọc cộng tác chỉ sử dụng mẫu tương tác giữa người dùng và các mục. Phương pháp dựa trên người dùng tìm những người có lịch sử tương tự; phương pháp dựa trên mục tìm các mục được cùng người dùng yêu thích; còn phân rã ma trận, được phổ biến trong Netflix Prize, học một vector cho mỗi người dùng và mỗi mục, trong đó tích vô hướng dự đoán tương tác của họ. Ngược lại, lọc dựa trên nội dung mô tả các mục bằng thuộc tính như thể loại, văn bản được xử lý bằng xử lý ngôn ngữ tự nhiên (NLP) hoặc embedding ảnh, rồi gợi ý các mục tương tự những mục người dùng đã thích; phương pháp này vẫn hoạt động với cả những mục chưa có ai tương tác. Hệ thống lai kết hợp cả hai tín hiệu để đặc trưng nội dung có thể giúp định vị một mục mới cho đến khi tích lũy đủ tương tác.
Ví dụ này áp dụng phương pháp lọc cộng tác dựa trên mục vào một ma trận xếp hạng nhỏ, dự đoán xếp hạng của một người dùng đối với các bộ phim họ chưa xếp hạng dựa trên độ tương đồng cosine giữa các cột xếp hạng phim:
import numpy as np
# Ratings from 4 users (rows) for 5 movies (columns); 0 means not rated
ratings = np.array(
[
[5, 4, 0, 1, 0],
[4, 5, 1, 0, 1],
[1, 0, 5, 4, 5],
[0, 1, 4, 5, 0],
]
)
# Item-item cosine similarity between the movies' rating columns
norms = np.linalg.norm(ratings, axis=0)
item_sim = ratings.T @ ratings / np.outer(norms, norms)
# Predict user 3's rating of each movie as a similarity-weighted average of their own ratings
user = ratings[3]
rated = user > 0
scores = item_sim[:, rated] @ user[rated] / item_sim[:, rated].sum(axis=1)
for movie in np.flatnonzero(~rated):
print(f"Movie {movie}: predicted rating {scores[movie]:.2f}")Người dùng 3, ở hàng cuối cùng, đánh giá cao phim 2 và 3, đồng thời đánh giá thấp phim 1; vì vậy phim 4, có điểm xếp hạng tương đồng với phim 2 và 3, nhận điểm dự đoán 4.10, còn phim 0, có điểm xếp hạng tương đồng với phim 1, nhận 2.09. Hệ thống gợi ý phim 4.
Hệ thống gợi ý deep learning học các biểu diễn này theo hướng end-to-end. Mạng hai tháp embedding người dùng và mục riêng biệt, nhờ đó việc truy xuất ứng viên trở thành một thao tác tìm kiếm vector để tìm các embedding mục gần embedding người dùng nhất; các model chuỗi như transformer đọc lịch sử của người dùng theo thứ tự để dự đoán tương tác tiếp theo.
Pipeline nhiều giai đoạn#
Các dịch vụ lớn không thể chạy một model nặng trên hàng triệu mục cho mỗi yêu cầu, vì vậy họ đưa ra gợi ý theo từng giai đoạn. Tạo ứng viên, hay truy xuất, thu hẹp danh mục xuống còn vài trăm mục bằng các tín hiệu rẻ như lọc cộng tác hoặc tìm kiếm embedding. Sau đó, model xếp hạng chấm điểm từng ứng viên bằng các đặc trưng phong phú để dự đoán xác suất nhấp, xem hoặc mua; một lượt xếp hạng lại cuối cùng bổ sung tính đa dạng, độ mới và các quy tắc kinh doanh. YouTube mô tả thiết kế hai giai đoạn này vào năm 2016. Mỗi gợi ý được hiển thị cũng tạo ra phản hồi dùng để huấn luyện model tiếp theo, vì vậy hệ thống học từ dữ liệu được định hình bởi các lựa chọn trước đó của chính hệ thống.
Các hệ thống gần đây mở rộng quy mô model xếp hạng và truy xuất theo cách tương tự model ngôn ngữ. Hệ thống gợi ý tạo sinh của Meta, công bố tại ICML 2024, xem hành động của mỗi người dùng là một chuỗi, đạt 1,5 nghìn tỷ tham số và cải thiện các chỉ số 12,4% trong thử nghiệm A/B trực tuyến.
Gợi ý bằng hình ảnh#
Danh mục thời trang, đồ nội thất và nghệ thuật gợi ý dựa trên hình thức, vì vậy tính năng “tương tự mục này” so sánh embedding ảnh sản phẩm; tính năng “phối đồ như thế này” trước tiên dùng phát hiện đối tượng để cắt từng món đồ khỏi ảnh chụp khung cảnh, rồi tìm kiếm sản phẩm tương tự về hình ảnh trong danh mục. Cùng phương pháp truy xuất này cũng hỗ trợ chọn dữ liệu huấn luyện: Tìm ảnh tương tự trong Ultralytics Platform hiển thị tối đa 24 ảnh gần nhất từ các tập dữ liệu công khai và của nhóm, mỗi ảnh đi kèm điểm tương đồng, bỏ qua các ảnh đã có trong tập dữ liệu và có thể bắt đầu từ những ảnh xác thực có hiệu năng thấp nhất của model.
Ứng dụng#
- Bán lẻ và thương mại điện tử: Trang sản phẩm hiển thị danh sách “khách hàng mua sản phẩm này cũng mua” và trang chủ được cá nhân hóa dựa trên lịch sử duyệt xem và mua hàng.
- Phương tiện truyền phát: Các dịch vụ video và âm nhạc xếp hạng nội dung và tạo playlist dựa trên lịch sử xem và nghe; Netflix cũng cá nhân hóa hình ảnh minh họa hiển thị cho từng nội dung.
- Bảng tin mạng xã hội và tin tức: Các nền tảng xếp hạng bài đăng, video ngắn và bài viết theo mức độ tương tác dự đoán, đồng thời làm mới thứ hạng mỗi khi người dùng mở bảng tin.
- Thời trang: Tính năng tìm kiếm độ tương đồng hình ảnh gợi ý trang phục phù hợp với phong cách, màu sắc hoặc họa tiết của món đồ mà người mua đã xem hoặc chụp ảnh.
Hệ thống gợi ý và các khái niệm liên quan#
- Tìm kiếm: Công cụ tìm kiếm trả lời một truy vấn tường minh, còn hệ thống gợi ý dự đoán nhu cầu của người dùng mà không cần truy vấn; các hệ thống hiện đại dùng chung những thành phần truy xuất và xếp hạng.
- Tìm kiếm vector và cơ sở dữ liệu vector: Tìm các embedding được lưu trữ gần embedding truy vấn nhất; đây là thành phần nền tảng mà hệ thống gợi ý dùng để truy xuất.
- Model xếp hạng lại: Các model giai đoạn hai chấm điểm lại chính xác hơn một danh sách ứng viên ngắn; đây là vai trò của giai đoạn xếp hạng trong hệ thống gợi ý.
- Mô hình dự đoán: Giai đoạn xếp hạng là một model dự đoán xác suất tương tác, còn hệ thống gợi ý hoàn chỉnh cũng xử lý truy xuất, sắp xếp và vòng lặp phản hồi.
Thách thức#
- Khởi động lạnh: Người dùng mới và mục mới không có lịch sử tương tác, vì vậy hệ thống chuyển sang dùng mức độ phổ biến, câu hỏi làm quen hoặc đặc trưng nội dung.
- Tính thưa: Mỗi người dùng chỉ tương tác với một phần rất nhỏ trong danh mục lớn, vì vậy phần lớn ma trận người dùng-mục để trống.
- Thiên lệch phổ biến và vòng lặp phản hồi: Huấn luyện trên các tương tác đã ghi nhận ưu tiên những mục vốn đã được hiển thị thường xuyên, làm thu hẹp nội dung người dùng nhìn thấy và có thể tạo ra các bong bóng lọc.
- Đánh giá: Các metric ngoại tuyến như precision@k và NDCG trên dữ liệu lịch sử thường không khớp với thử nghiệm A/B trực tuyến, vốn đo lường hành vi thực tế của người dùng trước các gợi ý mới.
- Quyền riêng tư: Hồ sơ hành vi chi tiết là dữ liệu cá nhân, được luật bảo vệ dữ liệu tại EU và các khu vực pháp lý khác bảo vệ.
- Quy định: Đạo luật Dịch vụ Kỹ thuật số của EU yêu cầu các nền tảng trực tuyến và công cụ tìm kiếm rất lớn cung cấp, cho mỗi hệ thống gợi ý, ít nhất một tùy chọn không dựa trên việc lập hồ sơ.










