Recommendation system (hệ thống gợi ý) là một hệ thống trí tuệ nhân tạo đem lại gợi ý cho khách hàng nhằm tăng doanh số bán hàng cho các doanh nghiệp. Một số hệ thống gợi ý của Google mà bạn vẫn thường xuyên sử dụng hằng ngày có thể bạn chưa biết. Đầu tiên có thể kể đến đó là kênh Youtube, công cụ gợi ý video dựa trên những video mà bạn đã từng xem. Hay hệ thống gợi ý cách thức trả lời email mà bạn nhận được. Hoặc là gợi ý những nội dung liên quan với nhau khi bạn tìm kiếm một điều gì đó trên công cụ tìm kiếm của Google.
Trong bài viết này hãy cùng mình tìm hiểu về recommendation system trên GCP nhé:
Phần 1: Xây dựng hệ thống End to end recommendation trên GCP
Trước tiên hãy cùng mình nhìn qua về các thuật toán để xây dựng một hệ thống gợi ý đang được dùng trên Google cloud nhé.
Đầu tiên và dễ hiểu nhất có thể kể đến là “Content-based filtering” cách thức này dựa vào “item features” để gợi ý những sản phẩm khác có cùng features. Nghĩa là hệ thống gợi ý sản phẩm đơn giản dựa chỉ trên đặc trưng của mỗi item, và không hề phụ thuộc vào các users khác. Ưu điểm của phương thức này là tiết kiệm được bộ nhớ, thời gian tính toán và tận dụng được những thông tin trong mô tả sản phẩm. Mô tả sản phẩm có thể do nhà cung cấp hoặc người dùng gắn tag để mô tả. Tuy nhiên nhược điểm của nó là không tận dụng được thông tin của người dùng và việc yêu cầu người dùng gắn tag cho sản phẩm cũng không dễ dàng.
Tiếp đến là “Collaborative Filtering” cách thức này dựa trên sự tương tác giữa người dùng và sản phẩm. Có hai dạng collaborative filtering căn bản là Neighborhood-Based Collaborative Filtering và Matrix Factorization Collaborative Filtering. Neighborhood-based Collaborative Filtering dựa trên hành vi của các users hoặc items lân cận nó, còn Matrix Factorization là dựa trên việc phân tích ma trận thành nhân tử. Ý tưởng chính của Matrix Factorization là latent features (tính chất ẩn) mô tả sự liên quan giữa các items và users. Đối với hệ thống Google Cloud Platform hiện tại đang sử dụng Matrix Factorization Collaborative Filtering.
Cuối cùng là “Neural Networks for Recommendation Systems” là sự kết hợp của content-based, knowledge-based và collaborative filtering recommendation systems và sử dụng neural network để tạo ra hybrid recommendation systems. Trong thực tế thì việc xây dựng một hệ thống recommendation thường lại sự kết hợp giữa 3 loại filter này.
Vậy bạn nên chọn hình thức nào để xây dựng hệ thống Recommendation. Bản so sánh dưới đây có thể là gợi ý dành cho bạn.
Content-based | Knowledge-based | Collaborative filtering | |
Cách thức hoạt động | Dựa trên tính năng của sản phẩm để gợi ý (content features) | Dựa trên hành vi của người dùng để gợi ý | Sự kết hợp và tính toán giữa hành vi người dùng và sản phẩm |
Trường hợp nên sử dụng | – Không cần quan tâm đến người dùng – Gợi ý các sản phẩm tương tự (niche items) | – Không cần sự tương tác giữa các sản phẩm – Mang tính đánh giá và chủ quan của người dùng | – Không có kiến thức nền về lĩnh vực bạn đang phát triển – Bước đầu xây dựng |
Trường hợp không nên sử dụng | – Cần kiến thức nền – Cần một gợi ý chính xác | – Cần sự dữ liệu về sản phẩm – Đề cao tính riêng tư và bảo mật người dùng | – Dữ liệu liên kết ít – Không có được nội dung về ngữ cảnh sử dụng |
Những điều bạn cần lưu ý trước khi bắt tay vào việc xây dựng một hệ thống gợi ý là gì?
- Suy nghĩ về dữ liệu bạn đang có và kiến thức của bạn phù hợp để dùng loại hệ thống gợi ý nào ( có thể tham khảo ở bảng so sánh phía trên nhé)
- Loại dữ liệu hiện có của bạn ở dạng nào: Structured hay unstructured hay là cả hai.
- Cuối cùng là những explicit và implicit feedback về đối tượng mà bạn muốn xây dựng hệ thống.
Sau khi đã xác định được những yếu tố đó hãy cùng mình bắt tay vào việc xây dựng một hệ thống end to end Recommendation trên GCP nhé.
Những điều mà bạn thường nghĩ về một hệ thống gợi ý có thể là Hệ thống này cần đưa ra được những gợi ý phù hợp với người dùng và có sự thay đổi phù hợp khi nhu cầu của người dùng thay đổi. Việc đưa ra các gợi ý sai hoặc không phù hợp có thể dẫn đến việc làm hỏng trải nghiệm người dùng. Nhưng đứng về phía người phát triển có thể bạn đã bị thiếu mất những yếu tố cũng không hề ít quan trọng:
- Dữ liệu của hệ thống sẽ được tự động cập nhật và làm mới
- Thuật toán của bạn sẽ được tự động training lại
- Tự động deploy lại hệ thống khi có model mới
Cùng mình xem GCP hỗ trợ bạn trong vấn đề kỹ thuật này như thế nào nhé.
Dã định đây là cơ sở hạ tầng cho hệ thống recommendation bạn đang dùng trên GCP
Mục tiêu 1: Xây dựng cơ sở hạ tầng kỹ thuật dữ liệu để dữ liệu được cập nhật liên tục
Đây chính là hạ tầng mới mà bạn cần cập nhật thêm
Vậy sẽ làm làm sao để tự động training và deploy khi dữ liệu đã được cập nhật
Mục tiêu 2: Tự động retrain and redeploy model
Dựa vào hai bản thảo cơ sở hạ tầng kỹ thuật của GCP thì Cloud Composer chính là sản phẩm hỗ trợ chúng ta tự động hóa cho việc refresh lại từ dữ liệu đến model. Bên cạnh đó bạn cũng có thể dùng thêm Apache Airflow DAGs để điều phối các dịch vụ trên GCP.
Vậy cơ sở hạ tầng bạn có thể tham khảo để xây dựng trên GCP như sau.
Trong bài viết này mình đã giới thiệu qua cho các bạn về khái niệm cũng như cách thức phân biệt và lựa chọn phương thức xây dựng hệ thống gợi ý trên GCP cũng như cách thức thiết kế cơ sở hạ tầng cho việc tự động cập nhật dữ liệu, retrain và redeploy trên GCP.
Hãy đón xem phần tiếp theo về chủ đề “Xây dựng Content-Based Recommendation System sử dụng Neural Network trên GCP” của mình nhé.