Tối ưu hóa hệ thống gợi ý với Graph Neural Networks: Bài học thực tế từ Zalando
Mariia Bulycheva chia sẻ hành trình chuyển đổi từ deep learning cổ điển sang Graph Neural Networks (GNN) tại Zalando nhằm cá nhân hóa trải nghiệm trang chủ. Bài viết đi sâu vào việc chuyển đổi dữ liệu người dùng thành đồ thị, các bẫy kỹ thuật trong huấn luyện và giải pháp kiến trúc lai để giải quyết độ trễ khi triển khai thực tế.

Trong thế giới thương mại điện tử đầy cạnh tranh, trang chủ (landing page) chính là điểm chạm đầu tiên và quan trọng nhất quyết định trải nghiệm của người dùng. Tại hội nghị InfoQ Dev Summit Munich, Mariia Bulycheva, Senior Machine Learning Engineer tại Intapp (người từng công tác tại Zalando), đã có một bài thuyết trình thú vị về việc ứng dụng Graph Neural Networks (Mạng nơ-ron đồ thị - GNN) để tái tưởng tượng lại cách nền tảng tương tác với người dùng.
Bài viết này sẽ tóm tắt hành trình kỹ thuật của nhóm Zalando trong việc nâng cấp hệ thống gợi ý, từ những lý thuyết cơ bản về đồ thị cho đến các thách thức thực tế khi triển khai mô hình vào môi trường sản xuất (production).
Graph Neural Networks Presentation
Tại sao lại chọn Graph Neural Networks?
Zalando, một trong những nền tảng thời trang lớn nhất châu Âu, đối mặt với bài toán khó: làm thế nào để hiển thị nội dung phù hợp nhất trong số 2.000 mảnh nội dung (content pieces) có sẵn để chọn ra 40 mục tốt nhất hiển thị cho người dùng? Mục tiêu không chỉ là tối ưu hóa cho các cú nhấp chuột (click) tức thời mà còn là các chỉ số dài hạn như giữ chân người dùng và tỷ lệ chuyển đổi.
Hệ thống deep learning cổ điển trước đó của Zalando hoạt động khá tốt nhưng đã đạt đến giới hạn cải thiện. Đây là lúc nhóm kỹ thuật nghĩ đến Graph Neural Networks (GNN). Lý do chính là bản chất của sự tương tác người dùng trên nền tảng kỹ thuật số rất phù hợp để mô hình hóa dưới dạng đồ thị:
- Đỉnh (Nodes): Là người dùng và nội dung (sản phẩm, video, carousel).
- Cạnh (Edges): Là các tương tác như xem, click, thêm vào giỏ hàng, hoặc theo dõi thương hiệu.
Đồ thị cho phép mô hình hóa các tương tác bậc cao (higher-order interactions) mà dữ liệu dạng bảng (tabular) không thể làm được. Ví dụ, đồ thị có thể nắm bắt mối quan hệ "bạn của bạn" hoặc các sản phẩm thường được mua cùng nhau thông qua nhiều kết nối trung gian. Hơn nữa, đây là đồ thị dị cấu trúc (heterogeneous graph), cho phép kết hợp nhiều loại đỉnh (người dùng, sản phẩm, thương hiệu) và nhiều loại cạnh có trọng số (ví dụ: độ mới của tương tác hoặc thời lượng xem video).
Chuẩn bị dữ liệu: Từ nhật ký người dùng đến đồ thị
Bước đầu tiên và quan trọng nhất là chuyển đổi dữ liệu nhật ký (logs) dạng bảng thành cấu trúc đồ thị. Tại Zalando, dữ liệu được lưu trữ dưới dạng các hàng ghi lại hành động xem và click của người dùng.
Một điểm khác biệt lớn so với dữ liệu truyền thống là việc tách tập huấn luyện (train) và kiểm tra (test). Trong đồ thị, mọi thứ đều liên kết với nhau, do đó việc tách dữ liệu phải cực kỳ cẩn thận để tránh rò rỉ dữ liệu (data leakage). Nhóm đã giải quyết vấn đề này bằng cách xây dựng hai đồ thị riêng biệt dựa trên thời gian: đồ thị huấn luyện từ 7 ngày hoạt động và đồ thị kiểm tra từ 1 ngày tiếp theo, đảm bảo chúng hoàn toàn ngắt kết nối.
Về đặc trưng (features), mỗi đỉnh (người dùng hoặc nội dung) đều được gắn một ma trận đặc trưng 25x128. Đây là các vector nhúng (embeddings) hình ảnh đại diện cho 25 sản phẩm gần nhất mà người dùng đã mua hoặc 25 sản phẩm liên quan đến nội dung đó. Điều này giúp mô hình hiểu được đặc tính thị giác của sản phẩm, nhưng GNN sẽ đi xa hơn bằng cách học được vector nhúng ngữ cảnh (contextual embeddings) – phản ánh cách sản phẩm đó kết nối với người dùng và các nội dung khác.
Graph Neural Networks Architecture
Quy trình huấn luyện và các bẫy kỹ thuật
Quy trình huấn luyện GNN khác biệt hoàn toàn so với các mạng nơ-ron truyền thống. Cốt lõi của quá trình này là "message passing" (truyền thông điệp). Thay vì chỉ xem xét đặc trưng của chính nó, mỗi đỉnh sẽ tổng hợp thông tin từ các đỉnh láng giềng thông qua các lớp GNN.
Để quản lý hiệu quả, nhóm sử dụng kỹ thuật neighbor sampling (lấy mẫu láng giềng). Thay vì lấy toàn bộ láng giềng (vốn sẽ tăng theo cấp số nhân), họ lấy mẫu ngẫu nhiên một số lượng cố định tại mỗi "bước nhảy" (hop). Quá trình này được hỗ trợ bởi thư viện PyTorch Geometric, cụ thể là lớp LinkNeighborLoader giúp tạo các batch dữ liệu từ các liên kết (links) và cấu trúc lân cận của chúng.
Tuy nhiên, việc huấn luyện GNN đi kèm với nhiều bẫy:
- Rò rỉ dữ liệu (Data Leakage): Khi truyền thông điệp qua các cạnh, mô hình có thể vô tình "nhìn thấy" nhãn của chính liên kết đó đang cần dự đoán. Giải pháp là sử dụng một tỷ lệ
disjoint train ratio– tách một phần liên kết chỉ dùng để tính loss (giám sát) mà không dùng để truyền thông điệp. - Vấn đề Cold Start: Với người dùng hoặc nội dung mới hoàn toàn chưa có kết nối trong đồ thị, hệ thống cần có cơ chế dự phòng (fallback), ví dụ như hiển thị nội dung phổ biến nhất cho đến khi thu thập đủ dữ liệu.
- Over-smoothing: Nếu lấy mẫu quá nhiều láng giềng hoặc dùng quá nhiều lớp GNN, các vector nhúng của các đỉnh khác nhau sẽ trở nên quá giống nhau, làm giảm hiệu quả mô hình.
Thách thức khi triển khai thực tế và giải pháp Hybrid
Mặc dù kết quả đánh giá ngoại tuyến (offline evaluation) rất khả quan với chỉ số ROC-AUC tăng lên, việc đưa GNN vào môi trường sản xuất gặp phải hai trở ngại lớn:
- Độ trễ suy luận (Inference Latency): Khi người dùng mở trang chủ, họ mong đợi phản hồi ngay lập tức. Việc chạy suy luận trên đồ thị yêu cầu truy vấn thông tin từ hàng xóm của đỉnh, gây ra độ trễ không thể chấp nhận được so với mô hình deep learning cổ điển.
- Tần suất huấn luyện lại: Hệ thống cũ cần huấn luyện lại mỗi 30 phút để bắt kịp xu hướng mới. Với GNN, việc cập nhật đồ thị và huấn luyện lại liên tục gây ra gánh nặng vận hành khổng lồ.
Để giải quyết vấn đề này, nhóm Zalando đã áp dụng một kiến trúc lai (hybrid architecture) thông minh:
- Offline: GNN được huấn luyện định kỳ (hàng ngày hoặc hàng tuần) để tạo ra các vector nhúng ngữ cảnh phong phú cho người dùng và nội dung. Các vector này được lưu trữ trong Feature Store.
- Online: Mô hình downstream hiện có (kiến trúc Deep & Cross) sẽ tiêu thụ các vector nhúng này làm đặc trưng đầu vào để dự đoán xác suất click trong thời gian thực.
Cách tiếp cận này giúp duy trì tốc độ nhanh của mô hình cũ đồng thời tận dụng sức mạnh của GNN để hiểu rõ hơn về ngữ cảnh và mối quan hệ giữa người dùng với sản phẩm.
Kết luận và hướng phát triển
Việc áp dụng Graph Neural Networks tại Zalando là một ví dụ điển hình về việc cân bằng giữa nghiên cứu tiên tiến và các ràng buộc thực tế của hệ thống sản xuất quy mô lớn. Mặc dù không thể triển khai end-to-end do vấn đề độ trễ, giải pháp kiến trúc lai đã mang lại hiệu quả rõ rệt.
Trong tương lai, các bước phát triển tiếp theo có thể bao gồm việc cải thiện chiến lược lấy mẫu láng giềng (thay vì ngẫu nhiên), làm giàu đặc trưng của các đỉnh, hoặc sử dụng GNN để kiểm soát sự mới lạ (novelty) và đa dạng (diversity) của nội dung gợi ý, giúp người dùng khám phá những sản phẩm nằm ngoài vùng an toàn của họ.
Bài viết liên quan

Phần mềm
Anthropic ra mắt Claude Opus 4.7: Nâng cấp mạnh mẽ cho lập trình nhưng vẫn thua Mythos Preview
16 tháng 4, 2026

Công nghệ
Qwen3.6-35B-A3B: Quyền năng Lập trình Agentic, Nay Đã Mở Cửa Cho Tất Cả
16 tháng 4, 2026

Công nghệ
Spotify thắng kiện 322 triệu USD từ nhóm pirate Anna's Archive nhưng đối mặt với bài toán thu hồi
16 tháng 4, 2026
