Phân tích ma trận là một mô hình nhúng đơn giản. Do ma trận phản hồi A \(\in R^{m \times n}\), trong đó \(m\) là số lượng người dùng (hoặc truy vấn) và \(n\) là số lượng mặt hàng, mô hình này học:
- Ma trận nhúng người dùng \(U \in \mathbb R^{m \times d}\), trong đó hàng i là hàng nhúng cho người dùng i.
- Ma trận nhúng mục \(V \in \mathbb R^{n \times d}\), trong đó hàng j là mục nhúng cho mục j.
Các mục nhúng được học sao cho sản phẩm \(U V^T\) là một ước lượng chính xác của ma trận phản hồi A. Lưu ý rằng \((i, j)\) mục nhập của \(U . V^T\) chỉ đơn giản là tích vô hướng \(\langle U_i, V_j\rangle\) trong số các mục nhúng của người dùng \(i\) và mục \(j\)mà bạn muốn đặt ở gần \(A_{i, j}\).
Chọn hàm mục tiêu
Một hàm mục tiêu trực quan là bình phương khoảng cách. Để thực hiện việc này, giảm thiểu tổng sai số bình phương trên tất cả các cặp mục nhập được quan sát:
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]
Trong hàm mục tiêu này, bạn chỉ tính tổng qua các cặp quan sát được (i, j), tức là trên các giá trị khác 0 trong ma trận phản hồi. Tuy nhiên, chỉ bằng việc tính tổng trên các giá trị của một giá trị không phải là một ý tưởng hay — ma trận của tất cả các giá trị này sẽ có tổn thất tối thiểu và tạo ra một mô hình không thể đưa ra các đề xuất hiệu quả và điều đó sẽ khái quát hoá kém.
Có lẽ bạn nên coi các giá trị không quan sát được là 0 và tính tổng của tất cả các mục nhập trong ma trận. Điều này tương ứng với việc giảm thiểu bình phương Frobenius khoảng cách giữa \(A\) và khoảng cách gần đúng \(U V^T\):
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]
Bạn có thể giải bài toán bậc hai này thông qua Phân rã giá trị duy nhất (SVD) của ma trận. Tuy nhiên, SVD cũng không phải là một giải pháp tuyệt vời, bởi vì trong các ứng dụng thực tế, ma trận \(A\) có thể rất thưa thớt. Ví dụ: Hãy nghĩ đến tất cả các video trên YouTube so với tất cả các video mà một người dùng cụ thể đã xem. Nghiệm \(UV^T\) (tương ứng với giá trị gần đúng của mô hình của ma trận đầu vào) có thể sẽ gần bằng 0, dẫn đến kém hiệu suất tổng quát hoá.
Ngược lại, Phân tích ma trận trọng số sẽ phân tách mục tiêu thành hai tổng sau:
- Tổng các mục đã quan sát được.
- Tổng trên các mục không quan sát được (được coi là số 0).
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]
Ở đây, \(w_0\) là một siêu tham số trọng số cho hai cụm từ sao cho mục tiêu không bị chi phối bởi một trong hai mục tiêu. Việc điều chỉnh siêu thông số này là rất quan trọng.
\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]
trong đó \(w_{i, j}\) là hàm tần suất của truy vấn i và mục j.
Giảm thiểu chức năng mục tiêu
Các thuật toán phổ biến để giảm thiểu hàm mục tiêu bao gồm:
Giảm độ dốc ngẫu nhiên (SGD) là phương thức chung để giảm thiểu các hàm mất dữ liệu.
Hình vuông ít thay thế thay thế có trọng số (WALS) được dành riêng cho việc này mục tiêu cụ thể.
Mục tiêu là phương trình bậc hai trong mỗi ma trận U và V. (Lưu ý, tuy nhiên, bài toán không phải là hai phần tổng quát.) WALS hoạt động bằng cách khởi tạo các mục nhúng một cách ngẫu nhiên, sau đó xen kẽ giữa:
- Khắc phục \(U\) và giải quyết cho \(V\).
- Khắc phục \(V\) và giải quyết cho \(U\).
Mỗi giai đoạn có thể được giải chính xác (thông qua nghiệm của hệ thống tuyến tính) và có thể được phân phối. Kỹ thuật này đảm bảo hội tụ vì mỗi bước đảm bảo giảm tổn thất.
SGD so với WALS
SGD và WALS đều có những ưu điểm và nhược điểm riêng. Hãy xem thông tin bên dưới để so sánh các thông tin này:
SGD
Rất linh hoạt—có thể sử dụng các tổn thất khác .
Có thể chạy song song.
Chậm hơn – không hội tụ nhanh như vậy.
Khó xử lý các mục không quan sát được (cần sử dụng tỷ lệ lấy mẫu hoặc trọng lực âm).
WALS
Chỉ dựa vào bình phương tổn thất.
Có thể chạy song song.
Chuyển đổi nhanh hơn so với SGD.
Dễ dàng xử lý các mục không quan sát được.