Lọc cộng tác (Collaborative Filtering) là một trong những kỹ thuật lọc thông tin trong hệ tư vấn. Nó khai thác những khía cạnh liên quan đến thói quen sử dụng sản phẩm của cộng đồng người dùng có cùng sở thích để tạo nên tư vấn. Với sự có mặt ngày càng nhiều khách hàng và sản phẩm, hệ thống tư vấn đang phải đối mặt với việc tư vấn mỗi giây cho hàng triệu khách hàng và sản phẩm. Đồng thời, chất lượng của các đề xuất phải đủ cao, đủ tin tưởng để giúp người dùng tìm thấy bất kỳ điều gì giống như mong muốn của họ. Hầu hết các thuật toán cho hệ tư vấn đã không được xây dựng để phù hợp với dữ liệu lớn, người dùng mới, sản phẩm mới, thưa thớt dữ liệu đánh giá của người dùng khi đó có thể gián tiếp ảnh hưởng đến chất lượng tư vấn. Đề tài: “Nghiên cứu giải thuật RBMs trong Deep Learning cho hệ lọc cộng tác và viết chương trình mô phỏng” sẽ góp phần nào đó trong việc giải quyết những vấn đề còn tồn tại của lọc thông tin cho các hệ tư vấn. Đồ án được chia làm ba chương, trong đó: Chương 1. Giới thiệu kỹ thuật lọc công tác trong hệ tư vấn Giới thiệu về hệ tư vấn, bài toán trong hệ tư vấn, phân loại hệ tư vấn, cụ thể là tư vấn dựa trên nội dung và lọc cộng tác. Mô tả các vấn đề còn tồn tại trong lọc cộng tác. Chương 2. Máy hạn chế Botlzmann (RBMs) trong lọc công tác Mô hình, huấn luyện, và dự đoán về giải thuật máy Botlzmann (Botlzmann Machine), máy hạn chế Botlzmann (Restricted Boltzmann Machine), máy hạn chế Botlzmann (RBM’s) trong lọc cộng tác, cách giải thuật giải quyết trong bài toán lọc cộng tác. Chương 3. Cài đặt bài toán
GIỚI THIỆU KỸ THUẬT LỌC CỘNG TÁC TRONG HỆ TƯ VẤN
Hệ thống tư vấn
Hệ thống tư vấn (Recommender Systems - RSs) là các công cụ phần mềm giúp người dùng nhận được những gợi ý phù hợp về sản phẩm Những gợi ý này hỗ trợ trong quá trình ra quyết định, từ việc chọn lựa sản phẩm mua sắm, âm nhạc nghe, đến các tin tức cần theo dõi.
Vào giữa thập niên 1990, hệ thống tư vấn đã trở thành một lĩnh vực nghiên cứu độc lập, tập trung vào các vấn đề liên quan đến tư vấn và cấu trúc trọng số Tư vấn thường liên quan đến việc đánh giá trọng số cho các sản phẩm chưa được người dùng chọn lựa Ở dạng đơn giản nhất, các hệ thống tư vấn cá nhân hóa cung cấp danh sách sản phẩm đã được xếp hạng dựa trên sở thích của người dùng Để thực hiện việc xếp hạng này, hệ thống thu thập sở thích của người dùng thông qua các xếp hạng hoặc hành động của họ, ví dụ như việc xem thông tin trên website sản phẩm, điều này được coi là dấu hiệu về sở thích của người dùng đối với sản phẩm đó.
Hệ thống tư vấn sách hoạt động bằng cách thu thập thông tin từ người dùng và các quyển sách để đưa ra gợi ý phù hợp Khi một người dùng đăng nhập vào website đọc sách và tìm kiếm một quyển sách văn học, hệ thống sẽ phân tích sở thích của người dùng và dữ liệu từ những người dùng khác Các phương pháp tư vấn truyền thống như lựa chọn sách được yêu thích nhất hoặc sách mới nhất chỉ mang lại kết quả hạn chế Để cải thiện chất lượng tư vấn, hệ thống cần áp dụng các thuật toán phức tạp nhằm đưa ra những gợi ý chính xác và cá nhân hóa hơn cho từng người dùng.
Hình 1 1: Minh họa hệ thống tư vấn sách cho người đọc
1.1.2 Ứng dụng của hệ tư vấn
Hệ thống tư vấn lựa chọn có phạm vi ứng dụng rộng rãi, đặc biệt trong lĩnh vực thương mại điện tử Các hệ thống này thường được sử dụng để bán sách, giới thiệu phim, cung cấp tin tức và đĩa, giúp người dùng dễ dàng tìm kiếm và lựa chọn sản phẩm phù hợp với nhu cầu của họ.
CD ca nhạc, các trang Web
- Phim: Netflix, Firefly, MovieCritic, MovieLens, Mangarate, Morse
- Web: Webwatcher, Webfilter, Webwasher, Select, Webdoggie, Gustos
- Tin tức: Shift, Infoscan, NewsSieve, Borger, RAMA, GroupLens
- Thương mại điện tử: TripMatcher (du lịch), ShopMatcher, E-Markets
Bài toán tư vấn
Theo Adomavicius và Tuzhilin, bài toán tư vấn thường được hiểu là việc ước lượng đánh giá (rating) cho các sản phẩm như phim, CD, sách và nhà hàng mà người dùng chưa từng xem xét Quá trình ước lượng này chủ yếu dựa vào các đánh giá trước đó của người dùng hoặc từ những người dùng khác.
Những sản phẩm có hạng cao nhất sẽ được dùng để tư vấn Một cách hình thức, bài toán tư vấn được mô tả như sau:
- Gọi U là tập các người dùng (Users) của hệ thống.
- Gọi I là toàn bộ không gian đối tượng sản phẩm (Items).
- Hàm r(u,i) là đánh giá (độ phù hợp) của người dùng u với sản phẩm i.
Bài toán ánh xạ r: UxI → R liên quan đến việc xác định giá trị hàm r = f(u, i), trong đó R là tập hợp các đối tượng được giới thiệu Tập hợp R sẽ được sắp xếp theo thứ tự giảm dần của giá trị r, nhằm tìm ra sản phẩm i mà người dùng u yêu thích nhất.
Trong hệ thống tư vấn, độ phù hợp của một sản phẩm thường được cho bằng điểm.
Trong hệ thống tư vấn phim, mỗi người dùng được xác định bởi một hồ sơ chứa thông tin như tuổi, giới tính và thu nhập, trong khi mỗi sản phẩm (bộ phim) được mô tả bởi các đặc trưng như tên, thể loại và đạo diễn Đánh giá của người dùng, ví dụ như điểm 7/10 cho bộ phim Walking Dead, chỉ được xác định trên một miền nhỏ của không gian người dùng và sản phẩm, dẫn đến việc hàm đánh giá phải được ngoại suy Hệ thống cần dự đoán điểm cho các bộ phim chưa được đánh giá dựa trên thông tin từ các bộ phim đã được người dùng xem, nhằm đưa ra gợi ý phù hợp nhất.
Bảng 1 1: Minh họa đánh giá của người dùng về 1 số bộ phim đã xem
Walking dead X-Men Iron Man Spider Man
Phân loại hệ thống tư vấn
Có nhiều phương pháp để dự đoán và ước lượng hạng hoặc điểm cho các sản phẩm, bao gồm học máy, lý thuyết xấp xỉ và các thuật toán dựa trên kinh nghiệm Theo [1], hệ thống tư vấn thường được chia thành ba loại chính.
Người dùng sẽ nhận được tư vấn về các sản phẩm tương tự dựa trên những sản phẩm mà họ đã yêu thích trước đó, giúp tăng cường trải nghiệm mua sắm và tìm kiếm những lựa chọn phù hợp hơn.
Tư vấn dựa trên cộng tác giúp người dùng nhận được những gợi ý sản phẩm phổ biến từ những người có cùng sở thích và thị hiếu.
- Tư vấn dựa trên cách tiếp cận kết hợp: Kết hợp hai phương pháp tiếp cận dựa trên nội dung và cộng tác.
1.3.1 Phương pháp tư vấn dựa trên nội dung
Phương pháp tư vấn dựa trên nội dung đánh giá độ phù hợp của sản phẩm i với người dùng u thông qua độ phù hợp của các sản phẩm tương tự i’ Để gợi ý bộ phim cho người dùng, hệ thống sẽ phân tích các đặc điểm của những bộ phim mà người dùng đã đánh giá cao, như diễn viên và đạo diễn, và chỉ giới thiệu những bộ phim có sự tương đồng với sở thích của họ.
Hướng tiếp cận dựa trên nội dung phát triển từ nghiên cứu về thu thập và lọc thông tin, hiện nay tập trung vào việc tư vấn cho các đối tượng chứa dữ liệu văn bản như tin tức và website Sự tiến bộ so với phương pháp cũ của thu thập thông tin (IR) đến từ việc sử dụng hồ sơ người dùng, bao gồm thông tin về sở thích và nhu cầu, được xây dựng dựa trên thông tin mà người dùng cung cấp trực tiếp.
(khi trả lời khảo sát) hoặc gián tiếp (do khai phá thông tin từ các giao dịch của người dùng).
Hình 1 2: Minh họa phương pháp tư vấn dựa trên lọc nội dung
Trong bài viết này, chúng ta xem Content(i) là thông tin riêng của sản phẩm, bao gồm các đặc tính đặc trưng của sản phẩm i Nội dung này thường được trích xuất từ tập các đặc tính của sản phẩm và được sử dụng để xác định sản phẩm phù hợp cho từng mục đích tư vấn Hệ thống tư vấn dựa trên nội dung thường được thiết kế cho các sản phẩm dựa trên văn bản, với nội dung được mô tả qua từ khóa Ví dụ, hệ thống Fab.com sử dụng nội dung tư vấn từ trang Web cho người dùng, trình bày 100 từ quan trọng nhất "Tầm quan trọng" của từ khóa trong tài liệu được xác định thông qua độ đo trọng số wij, được định nghĩa bằng nhiều phương pháp khác nhau.
Một trong những thước đo quan trọng để xác định mức độ liên quan của từ khóa trong truy vấn thông tin là Tần suất Xuất hiện của Từ (Term Frequency - TF) và Tần số Nghịch đảo của Tần suất Xuất hiện Tài liệu (Inverse Document Frequency - IDF) Cụ thể, giả sử N là tổng số tài liệu được tư vấn cho người dùng, và từ khóa kj xuất hiện trong ni tài liệu Nếu fi,j là số lần từ khóa ki xuất hiện trong tài liệu dj, thì TFi,j chính là tần số xuất hiện của từ khóa ki trong tài liệu dj.
Trong đó, max z f z, j là số lần xuất hiện cao nhất của từ khóa kz trong toàn bộ tài liệu dj Tuy nhiên, những từ khóa có thể xuất hiện trong nhiều tài liệu mà không được phân biệt giữa tài liệu liên quan và không liên quan Do đó, tần số nghịch đảo tần suất xuất hiện của các tài liệu IDFi được sử dụng để phân biệt các từ khóa này, thường kết hợp với tần suất xuất hiện của từ khóa (TFi,j) để làm nổi bật tầm quan trọng của từ khóa.
Vậy sự kết hợp của TF và IDF sẽ xác định mức độ quan trọng của từ khóa ki cần xét.
Và nội dung của tài liệu dj được xác định như sau:
Hệ thống dựa trên nội dung thường được sử dụng để tư vấn các sản phẩm mà người dùng đã ưa thích trước đây Cụ thể, nó so sánh trọng số các sản phẩm được tiến cử với những sản phẩm mà người dùng đã sử dụng, từ đó xác định sản phẩm phù hợp nhất để tư vấn.
ContentBasedProfile(u) là hồ sơ cá nhân của người dùng, phản ánh sở thích và thị hiếu của họ Hồ sơ này được xây dựng thông qua phân tích nội dung các sản phẩm và trọng số từ đánh giá trước đó của người dùng Cụ thể, ContentBasedProfile(u) có thể được biểu diễn dưới dạng véc-tơ các mức độ quan trọng (wu1, …, wuk), mỗi mức thể hiện tầm quan trọng của từ khóa ki đối với người dùng u Các mức độ này được tính toán từ các véc-tơ nội dung đã được trọng số thông qua nhiều kỹ thuật khác nhau, chẳng hạn như phương pháp tính trung bình cộng để tạo ra véc-tơ "trung bình" cho ContentBasedProfile(u).
Trong những hệ thống dựa trên nội dung, hàm tiện ích r(u,i) thường được định nghĩa như sau:
Dựa trên việc truy vấn thông tin để tư vấn các trang web và thông điệp tin tức Usenet, cả hồ sơ dựa trên nội dung của người dùng (ContentBasedProfile) và nội dung của tài liệu đều có thể được biểu diễn dưới dạng các véc-tơ TF-IDF của các từ khóa quan trọng Hàm r(u,i) trong truy vấn thông tin thường được xác định dựa trên các véc-tơ này.
Trong đó K là tổng số các từ khóa trong hệ thống.
Khi người dùng u thường xuyên đọc các bài báo trực tuyến về Tin Sinh Học, hệ thống tư vấn dựa trên nội dung sẽ gợi ý những bài báo khác liên quan đến chủ đề này, dựa vào tần suất xuất hiện của các thuật ngữ liên quan Nội dung của người dùng sẽ được thể hiện qua véc-tơ w u, mô tả các thuật ngữ kj với mức độ quan trọng cao wju Hệ thống còn áp dụng thước đo tương đồng như cosin để xác định giá trị hàm r(u,i), gán giá trị cao cho những bài báo i chứa nhiều thuật ngữ tin sinh học và giá trị thấp cho những bài báo ít thuật ngữ hơn, thông qua véc-tơ w i.
Tư vấn dựa trên nội dung không chỉ dựa vào các hàm heuristic truyền thống mà còn áp dụng nhiều kỹ thuật khác như phân loại Bayes và các phương pháp máy học như phân cụm, cây quyết định, và mạng nơ-ron nhân tạo Các kỹ thuật này khác biệt ở chỗ chúng tính toán hàm tiện ích mà không dựa vào hàm heuristic, mà thay vào đó sử dụng các mô hình từ dữ liệu Ví dụ, với tập hợp các trang Web được đánh trọng số theo mức độ liên quan đến người dùng, kỹ thuật phân loại Nạve Bayes được sử dụng để phân loại các trang Web không được đánh trọng số, nhằm đánh giá xác suất trang đó thuộc lớp Ci hay không dựa trên các từ khóa trong trang.
P(C | k & & k ) i 1, j n j , (1 7) Ngoài ra, giả thuyết rằng các khóa này độc lập với nhau vì vậy xác suất ở trên tương ứng với:
Mặc dù giả thuyết các từ khóa độc lập không phải lúc nào cũng áp dụng trong nhiều ứng dụng, nhưng thực nghiệm đã chứng minh rằng kỹ thuật phân loại Naive Bayes vẫn đạt độ chính xác cao trong việc phân loại Hơn nữa, cả P(k x,j | C i) và P(C i) đều có thể được đánh giá từ dữ liệu hướng dẫn Đối với mỗi trang pj, xác suất được tính toán một cách hiệu quả.
P (C i | k 1,j & …& k n,j ) được tính toán ứng với mỗi lớp Ci và trang pj sẽ được gán cho lớp Ci nếu nó có xác suất lớn nhất.
Khi cung cấp kỹ thuật tư vấn không rõ ràng, tập truy vấn văn bản sẽ giới thiệu một số kỹ thuật phổ biến trong các hệ thống tư vấn nội dung Một kỹ thuật là lọc thích ứng, tập trung vào việc nhận diện tài liệu liên quan và quan sát từng tài liệu trong các luồng tài liệu tiếp theo để nâng cao độ chính xác Một ví dụ khác là đặt ngưỡng (threshold setting), kỹ thuật này xác định phạm vi tài liệu phù hợp với các câu truy vấn liên quan đến người dùng.
Theo như nhận xét Linden, Smith trong [7] hệ thống tư vấn hướng dựa trên nội dung đưa ra một số những giới hạn sau:
MÁY HẠN CHẾ BOTLZMANN (RBMs) TRONG LỌC CỘNG TÁC.19
Máy Botlzmann (Botlzmann Machine)
Mạng Boltzmann là một loại mạng nơ ron hồi quy, trong đó đầu ra của một nơ-ron có thể trở thành đầu vào của nơ-ron trong cùng một lớp hoặc các lớp trước đó, tạo thành chu trình khép kín Được phát hiện bởi các nhà nghiên cứu David Ackley, Geoffrey Hinton và Terrence Sejnowski, mạng này bao gồm các nút nhị phân ngẫu nhiên và các kết nối đối xứng.
Hình 2 1: Mạng nơ-ron hồi quy một lớp
V Các đơn vị ẩn- Hidden units
Các đơn vị hiện- Visible units
Hình 2 2: Một Boltzmann Machine Các nút có thể nối với nhau theo bất kỳ cách nào.
Các nút trong một mạng Boltzmann (BM) được chia thành hai lớp: lớp nút có thể nhìn thấy (visible units) và lớp nút ẩn (hidden units) hoạt động như các biến tiềm ẩn Các nút này được kết nối với nhau thông qua các kết nối đối xứng, ngoại trừ việc kết nối với chính mình Mỗi nút có trạng thái nhị phân, với hai trạng thái "tắt" (si=0) hoặc "mở" (si=1), và xác suất của mỗi trạng thái được xác định bởi một hàm logistic dựa trên các yếu tố đầu vào từ các nút khác mà nó kết nối.
Trong mạng nơ-ron, bi đại diện cho ngưỡng (hay độ lệch bias) của nút i, trong khi trọng số wij là trọng số liên kết giữa nút i và nút j Trọng số và ngưỡng của một mô hình được xác định thông qua hàm năng lượng trên toàn bộ cấu hình của mạng, bao gồm các trạng thái nhị phân của các vector Hàm năng lượng cho một cấu hình (v,h), với v là trạng thái vector nhị phân của các nút hiện và h là trạng thái vector nhị phân của các nút ẩn, được định nghĩa một cách cụ thể.
Khi các nút được chọn ngẫu nhiên và liên tục cập nhật theo công thức 2.1, mạng sẽ đạt được một phân bố xác suất ổn định, trong đó xác suất tìm thấy mạng ở bất kỳ cấu hình toàn cục (v,h) nào phụ thuộc vào năng lượng của các cấu hình đó so với các nguồn năng lượng của tất cả các cấu hình khả thi khác.
(2 3) Đặc biệt hơn nữa, xác suất tìm thấy mạng ở tính dừng với một v cấu hình với các nút có thể nhìn thấy nó được cho bởi [4]:
2.1.2 Huấn luyện cho máy Botlzmann Ở công thức 2.4, một Bolzmann Machine có thể được xem như là một mô hình sinh dữ liệu, mỗi trạng thái vector nhị phân được gán một xác suất nào đó với các nút nhìn thấy được
Các hành vi ngẫu nhiên của các nút trong mạng sẽ dẫn đến việc di chuyển qua nhiều trạng thái khác nhau, tạo ra một phân bố xác suất trên tất cả các vector có thể nhìn thấy, với N là số lượng nút Công thức 2.4 xác định xác suất tương ứng cho mỗi trạng thái Để xây dựng một mô hình nội có khả năng tạo ra một phân phối đặc biệt cho các mẫu dữ liệu từ các nút này, cần xác định số lượng học để tìm ra trọng số và ngưỡng, nhằm xác lập một phân bố xác suất trong đó các mẫu có xác suất cao và năng lượng thấp.
P + (V) là phân phối mà các mẫu Hinton mong muốn cho mô hình, trong khi P - (V) là phân phối được sinh ra trên các đơn vị nhìn thấy của một mạng Boltzmann khi nó hoạt động tự do ở trạng thái cân bằng Để đánh giá khoảng cách giữa hai phân phối này, chúng ta sử dụng đo Kullback - Leibler và thực hiện huấn luyện nhằm giảm thiểu sự khác biệt đó.
Mô hình từ công thức 2.5 là hàm gián tiếp của các trọng số và ngưỡng của BM, có thể được cải thiện bằng cách điều chỉnh trọng số wij và ngưỡng bi để giảm thiểu G Để thực hiện điều này, chiến lược gradient descent có thể được áp dụng nhằm giảm giá trị G Đáng chú ý, đạo hàm riêng của G đối với trọng số wij có thể được thể hiện một cách đơn giản như ij.
Trong trạng thái cân bằng của BM, xác suất trung bình được xác định dựa trên dữ liệu của các vector từ P + (V) được lưu trữ trên các nút có thể quan sát Điều này cho phép tìm kiếm đồng thời cả nút i và nút j.
- là xác suất trung bình của tìm kiếm cả nút i và nút j bật khi BM chạy tự do ở trạng thái cân bằng.
Trong thực tế, tính toán + được gọi là giai đoạn tích cực (positive phase) và có thể thực hiện theo thuật toán trong bảng 2.1 Ngược lại, tính toán - được gọi là giai đoạn tiêu cực (negative phase) và có thể thực hiện theo thuật toán trong bảng 2.2.
Bảng 2 1: Bảng giải thuật Positive phase
Giải thuật BM- Positive phase
1 Giữ một vector dữ liệu trên các nút hiển thị của BM
2 Cập nhật các nút ẩn theo thứ tự ngẫu nhiên bằng công thức 2.1
3 Một khi BM đã đạt đến trạng thái phân phối cân bằng của mình, vector trạng thái lấy mẫu và ghi lại sisj
4 Lặp lại các bước 1,2,3 cho toàn bộ dữ liệu Tính trung bình để lấy +
Bảng 2 2: Bảng giải thuật Negative phase
Giải thuật BM- Negative phase
1 Khởi tạo BM với các trạng thái là ngẫu nhiên
2 Cập nhật các visible và hidden unit theo thứ tự ngẫu nhiên sử dụng công thức 2.1
3 Một khi BM đã đạt đến trạng thái phân phối cân bằng của mình, vector trạng thái lấy mẫu và ghi lại sisj
4 Lặp lại các bước 1,2, và 3 nhiều lần Tính trung bình để lấy +
Khi hai đại lượng được tính toán, quy tắc học đơn giản sẽ điều chỉnh trọng số wij theo hướng ngược lại của gradient, dẫn đến việc cập nhật trọng số theo công thức: wij = wij - γ(sij+ - sij-).
Trong đó là tốc độ học (learning rate) Các quy tắc học tập cho các ngưỡng bias là tương tự và được cho bởi: i ( i i ) b s s
Các quy tắc học trong công thức 2.7 và 2.8 tương đối đơn giản và chỉ dựa vào thông tin cục bộ Tuy nhiên, sự đơn giản này đi kèm với một số rủi ro Thứ nhất, mạng có thể mất nhiều thời gian để đạt được trạng thái cân bằng, ngay cả khi áp dụng các heuristics như mô phỏng để tăng tốc độ hội tụ Thời gian cần thiết để đạt được sự cân bằng thực sự tăng theo cấp số nhân với số lượng nút Thứ hai, tín hiệu học thường bị nhiễu do nó chỉ là sự khác biệt giữa hai kỳ vọng xấp xỉ Hai vấn đề này khiến cho các thuật toán trở nên không thực tế cho các mạng lớn và phức tạp.
Máy hạn chế Botlzmann (Restrist Botlzmann Machine)
2.3.1 Mô hình máy hạn chế Botlzmann
Mô hình RBM (Restricted Boltzmann Machine) là một loại máy Boltzmann có kiến trúc hạn chế, bao gồm hai lớp: lớp nút hiện (visible units) và lớp nút ẩn (hidden units) Trong RBM, không có kết nối giữa các nút hiện với nhau (visible-visible) hoặc giữa các nút ẩn với nhau (hidden-hidden), điều này giúp các nút hoạt động độc lập Tính năng hạn chế này làm cho quá trình đào tạo RBM trở nên dễ dàng hơn.
V, b i Các đơn vị ẩn - Hidden units - H, các ngưỡng - b j
Các nút hiện - Visible units - H, các ngưỡng – b i, W - trọng số liên kết V và H
Hình 2 3: Một Restricted Boltzmann Machine chỉ có sự liên kết giữa các nút hiện và các nút ẩn.
2.3.2 Huấn luyện cho máy hạn chế Botlzmann (RBM)
Việc giới hạn các kết nối đã đơn giản hóa quá trình tính toán + Khi một vector dữ liệu được lưu trữ trên các nút hiện tại, các nút ẩn trở thành điều kiện độc lập Điều này cho phép việc lấy mẫu unbiased từ + được thực hiện trong một bước song song, nhờ vào công thức 2.1.
Tính toán đã được đơn giản hóa nhờ vào việc sử dụng phương pháp Gibbs sampling Thay vì cập nhật các nút theo thứ tự ngẫu nhiên để đạt trạng thái cân bằng, phương pháp này cho phép cập nhật các nút nhìn thấy trong chuỗi, xen kẽ giữa việc cập nhật tất cả các nút hiện tại và các nút ẩn Tuy nhiên, để đạt được sự phân bố cân bằng, phương pháp này vẫn có thể yêu cầu một số lượng lớn các lần lặp.
May mắn thay, việc học vẫn hoạt động hiệu quả khi được thay thế bằng một xấp xỉ T theo thuật toán trong bảng 2.3 Các quy tắc học tập được mô tả là: wij ( s i j s s i j s T ).
Bảng 2 3: Bảng giải thuật huấn luyện phân kỳ tương phản CD
Giải thuật RBM- Contrastive Divergence
1 Giữ một vector dữ liệu trên các visible unit của RBMs
2 Cập nhật song song tất cả các hidden units sử dụng công thức 2.1
3 Lặp T bước hình 2.4, luân phiên cập nhật tất cả các visible units, các hidden units song song, vẫn sử dụng công thức 2.1
4 Lấy mẫu sisj từ cấu hình hiện tại.
5 Lặp lại các bước 1,2,3, và 4 cho mỗi dữ liệu có sẵn và tính trung bình để có
Trong thực tế, các luật học trong công thức 2.9 và 2.10 không tuân theo gradient của công thức 2.5 mà thay vào đó, chúng tiếp cận độ chênh lệch của một hàm mục tiêu gọi là phân kỳ tương phản (Contrastive Divergence) Điều này vẫn hiệu quả vì không cần phải thực hiện chuỗi cập nhật cho đến khi đạt được trạng thái cân bằng để quan sát cách các mô hình hệ thống biến dạng vector dữ liệu Cụ thể, khi chạy chuỗi chỉ trong một vài bước và sau đó điều chỉnh năng lượng của dữ liệu (tăng wij hoặc bi), đồng thời giảm năng lượng của các cấu hình BM ưa thích, mô hình sẽ có khả năng cao hơn trong việc tạo ra dữ liệu và ít khả năng tạo ra các lựa chọn thay thế Bằng chứng thực nghiệm cho thấy học CD là đủ, thậm chí với T = 1, và lý thuyết chi tiết có thể tìm thấy trong tài liệu tham khảo.
Hình 2 4: Huấn luyện CD Nút hiện và nút ẩn được cập nhật qua T bước lặp.
Máy hạn chế Botlzmann (RBMs) trong lọc cộng tác
2.3.1 Mô hình máy hạn chế Botlzmann trong lọc cộng tác
Mô hình được thể hiện trong phần này được đề xuất trong [9] bởi Ruslan Salakhutdinov năm 2007, và nó được áp dụng cho hệ thống Netflix Prize
Khi áp dụng mô hình RBMs vào lọc cộng tác với N người dùng đánh giá M bộ phim, chúng ta gặp hai vấn đề chính Thứ nhất, mô hình RBM gốc yêu cầu giá trị đầu vào cho các nút hiện phải ở dạng nhị phân, trong khi dữ liệu đầu vào cho các nút này lại là số nguyên (đánh giá của N người dùng cho M bộ phim) Để khắc phục vấn đề này, một giải pháp đơn giản là sử dụng các đơn vị "softmax", trong đó mỗi đánh giá được chuyển đổi thành mã nhị phân; cụ thể, nút nhị phân ở vị trí thứ k của softmax được gán giá trị 1 khi và chỉ khi người dùng đánh giá bộ phim thứ k.
Vấn đề lớn thứ hai là cách xử lý lượng lớn dữ liệu thiếu đánh giá của người dùng cho các bộ phim Giải pháp được đề xuất là xem xét rằng các nút hiện tương ứng với các bộ phim không được đánh giá sẽ không tồn tại Thực tế, việc giải quyết trở nên đơn giản hơn khi các nút hiện này luôn được “tắt”, tức là không được tính toán và luôn có trạng thái bằng 0 Nếu tất cả người dùng đánh giá giống nhau về các bộ phim, họ sẽ sử dụng chung một RBM với softmax cho các nút hiện kết nối với các nút ẩn nhị phân Khi người dùng đánh giá các bộ phim khác nhau, sẽ sử dụng các RBMs khác nhau cho mỗi người, với số nút ẩn giống nhau nhưng chỉ softmax cho các bộ phim đã được người dùng đó đánh giá Do đó, một RBMs sẽ có rất ít kết nối nếu người dùng đó đánh giá ít bộ phim Mỗi RBMs chỉ có một trường hợp huấn luyện, nhưng tất cả các giá trị như trọng số và biases đều liên kết với nhau, nên nếu hai người dùng đánh giá giống nhau, hai RBMs của họ sẽ giống nhau về trọng số giữa softmax nút hiện và các nút ẩn, mặc dù trạng thái nhị phân của các nút ẩn có thể khác nhau giữa các người dùng.
Hình 2 5: So sánh RBMs nhị phân và RBMs trong lọc cộng tác[8].
Kh ôn g có đ án h gi á Kh ôn g có đ án h gi á h
Hình 2.6 mô tả Restricted Boltzmann Machine (RBM) được sử dụng trong lọc cộng tác Trong mô hình này, các nút nhị phân được thay thế bằng các đơn vị softmax Mỗi người dùng chỉ cần một RBM, bao gồm các đơn vị softmax cho những bộ phim mà người dùng đó đã đánh giá.
Bảng 2 4: Những người dùng đánh giá cho từng bộ phim
Bảng 2 5: Một người dùng (U 2 bảng 1) đánh giá cho những bộ phim
Cụ thể hơn, Xét một người dùng u đánh giá M bộ phim Xây dựng ma trận V có
K M là đánh giá của người dùng u đối với bộ phim M, với giá trị từ 1 đến K Nếu người dùng u đánh giá bộ phim i là k, thì vị trí k1 vi sẽ được gán giá trị k, trong khi các vị trí còn lại sẽ là 0 (như thể hiện trong Bảng 2.4 và Bảng 2.5 cho người dùng U2) Các giá trị nhị phân hj (với j = 1, ,F) đại diện cho các nút ẩn, trong khi cột của V được mô hình hóa bằng phân phối đa thức (softmax) Các đặc trưng ẩn h được mô phỏng theo công thức 2.1 [9].
Trong mô hình này, W_ij_k đại diện cho trọng số kết nối giữa đánh giá k của bộ phim i và nút ẩn j Đồng thời, b_ik là độ thiên (bias) của đánh giá k cho bộ phim i, trong khi b_j là độ thiên của nút ẩn j.
2.3.2 Huấn luyện máy hạn chế Botlzmann (RBMs) trong lọc cộng tác
Mặc dù hàm kích hoạt của các nút đã thay đổi, các quy tắc học trong công thức 2.9 và 2.10 vẫn giữ nguyên Sự khác biệt duy nhất là việc sử dụng Gibbs sampling để tái tạo phân phối trong xếp hạng không có missing ratings Sử dụng các ký hiệu đã được giới thiệu trước đó, quá trình học trở thành [9]: ij k w( i k j i k j T ).
Để tư vấn hiệu quả, trước tiên cần hiểu cách mô hình hóa phân phối đánh giá trên các nút của một RBM Việc suy luận các xếp hạng chưa được đánh giá trở nên đơn giản khi giữ các xếp hạng người dùng trên các nút softmax và thực hiện một bước lấy mẫu Gibbs duy nhất cho tất cả các đánh giá bị thiếu Thuật toán dự đoán được trình bày trong bảng 2.6.
Bảng 2 6: Dự đoán của giải thuật RBMs trong lọc cộng tác
Giải thuật RBM- Dự đoán
Inputs: Một người dùng u và một bộ phim i
Outputs: Một dự đoán của R(u,i)
1 Giữ đánh giá của người dùng u trên các softmax units của RBM.
2 Tính toán p ˆ j p (h j 1| V) cho tất cả các hidden units j
4 Dự đoán giá trị ví dụ:
CÀI ĐẶT BÀI TOÁN
Xây dựng bài toán
Dự đoán Prediction Đầu vào: Ma trận đánh giá R
Giải thuật lọc cộng tác Collaborative Filtering Algorithm
R aj (Dự đoán của người dùng a trên tài nguyên j) Đầu ra
Vị trí cần dự đoán
Hình 3 1: Xây dựng bài toán trong lọc cộng tác
Bài toàn mà đồ án xây dựng, hình 3.1 thì bài toàn được đưa ra như sau:
Trong bài toán tư vấn dựa trên lọc cộng tác, đầu vào của hệ thống là ma trận R chứa các đánh giá số nguyên K từ người dùng về các bộ phim, với kích thước N x M, trong đó N là số người dùng Kết quả đầu ra Raj với a thuộc N và j thuộc M là dự đoán từ kỹ thuật lọc cộng tác, cụ thể được thực hiện qua giải thuật RBMs Các dự đoán này sau đó được sử dụng để đánh giá hiệu quả của thuật toán thông qua chỉ số RMSE.
SVTH: Nguyễn Đăng Khiêm _D11CNPM4 31
Hệ thống của máy hạn chế Boltzmann (RBMs) trong lọc cộng tác
Đưa ra các dự đoán và chỉ số đánh giá RMSE
Khởi tạo +Khởi tạo trọng số W với các giá trị 0 +Khởi tạo ngưỡng b với các giá trị 0
Khối 2 -Khối giải thuật RBM
Khối 3 - Khối dự đoán, đánh giá
Tất cả users -người dùng chia n mini -batch
Cập nhật các giá trị
Cập nhật các giá trị
Cập nhật các giá trị
Một user +Tính xác suất điều kiện của h và v
Một user +Tính xác suất điều kiện của h và v
Một user +Tính xác suất điều kiện của h và v
Hình 3 2: Sơ đồ khối hệ thống sử dụng giải thuật RBMs trong lọc cộng tác.
Khối 1 trong hình 3.2 chứa dữ liệu đầu vào và chuyển tiếp vào khối 2 - khối giải thuật RBMs để khởi tạo các giá trị Dữ liệu người dùng được chia thành n mini-batch trước khi huấn luyện Trong mini-batch đầu tiên, giải thuật thực hiện lặp qua từng user với m bước, tính xác suất điều kiện h theo v (công thức 2.12) và xác suất điều kiện v theo h (công thức 2.11), đồng thời chạy Gibbs Sampler qua T bước lặp Sau khi hoàn thành mini-batch đầu tiên, trọng số w (công thức 2.13), bias phía v (công thức 2.14) và bias phía h (công thức 2.15) sẽ được cập nhật Các giá trị này sẽ trở thành đầu vào cho mini-batch tiếp theo, và quá trình này tiếp tục cho đến khi hoàn thành n mini-batch Kết quả cuối cùng sẽ bao gồm trọng số w, bias phía h và bias phía v của tất cả các user, được sử dụng để dự đoán và đánh giá độ chính xác của giải thuật thông qua chỉ số RMSE - Khối 3.
Dự đoán thường có sai số, vì vậy để đánh giá hiệu quả của thuật toán một cách định lượng, cần sử dụng các chỉ số dự đoán Trong đồ án này, chỉ số được sử dụng là Căn bậc hai của trung bình bình phương sai số (RMSE) nhằm đánh giá độ chính xác của các dự báo.
Căn bậc hai của trung bình bình phương sai số (Root Mean Squared Error) [8]:
+ T là bộ dữ liệu kiểm tra(testing set)
+ R(u,i) là giá trị đánh giá thực của người dùng u với bộ phim i
+ Rˆ(u,i) là giá trị dự đoán của người dùng u với bộ phim i theo giải bảng xx
Giả sử công thức chính xác để xác định y: y = 1.94x +13.34 Tập dữ liệu test có:
Bảng 3 1: Tập dữ liệu Test cho ví dụ RMSE x y
Tập giá trị R(u,i) là các giá trị y.
Tập kết quả dự đoán:
Bảng 3 2: Tập giá trị được dự đoán và sai số trong ví dụ RMSE y’ y 15.28 0.62 17.22 -0.62 19.16 -0.96
Tập giá trị Rˆ(u,i) là các giá trị y’
Từ bảng 3.1 và bảng 3.2 xây dựng hình vẽ sai số dự đoán:
Hình 3 3: Biểu diễn sai số dự đoán
Hình 3.3 đường thẳng là giá trị bảng 3.2, các hình vuông là giá trị bảng 3.1 Áp dụng công thức 3.1 :
Chỉ số RMSE càng nhỏ thì việc dự đoán của giải thuật càng chính xác.
Mô tả dữ liệu Dataset Netflix
Dữ liệu được thu thập từ giữa tháng 10 năm 1998 đến tháng 12 năm 2005, bao gồm các đánh giá của người dùng về các bộ phim, theo định dạng hình 3.4, như đã được cung cấp bởi [9] và Netflix [11].
Hình 3 4: Định dạng của đánh giá những người dùng đối với những bộ phim
Hình 3.4 minh họa dữ liệu của một dataset nhiều người dùng, trong đó mỗi người dùng có một mảng hai chiều bao gồm mã các bộ phim và giá trị đánh giá mà họ đã cung cấp.
Trong hình ô số 1, người dùng được thể hiện với các giá trị mã phim như 252, 411, 788, ở chiều thứ nhất, và kết quả đánh giá của người đó là 1, 4, 1, tương ứng với các mã phim ở chiều thứ hai Các ô số 2 và các ô khác cũng phản ánh cách đánh giá tương tự của người dùng đối với các bộ phim.
Trong quá trình huấn luyện, Netflix sử dụng ba loại dữ liệu: tập huấn luyện bao gồm 100,480,507 đánh giá từ 480,189 người dùng và 17,770 bộ phim; tập kiểm tra với 1,408,395 đánh giá; và tập kiểm định chứa 2,817,131 cặp người dùng và bộ phim đánh giá hoàn toàn mới Bảng 3.3 sẽ tóm tắt các thông số dữ liệu này.
Bảng 3 3: Thông số dữ liệu mà Netflix cung cấp
Bộ phim (Movie) Đánh giá (Rating value)
Hình 3.4 minh họa định dạng dữ liệu cho ba tập: dữ liệu huấn luyện, dữ liệu kiểm tra và dữ liệu kiểm định Dữ liệu này bao gồm n người dùng, với mỗi người dùng có một cặp id (mã) bộ phim và đánh giá (rating) tương ứng.
Tập huấn luyện là tập dữ liệu lớn nhất, dùng để huấn luyện mạng RBMs, trong khi tập kiểm tra nhỏ hơn nhiều và được sử dụng để đánh giá khả năng tổng quát của mạng sau khi huấn luyện Tập kiểm định hoàn toàn độc lập với cả tập huấn luyện và tập kiểm tra Kích thước của tập kiểm định cần được cân nhắc kỹ lưỡng để đảm bảo có đủ mẫu kiểm tra mạng đã huấn luyện mà vẫn giữ lại đủ mẫu cho các giai đoạn huấn luyện và kiểm tra Tập kiểm định nên bao gồm các giá trị liên tục mới nhất để đảm bảo tính chính xác.
Có hai phương pháp để xác định tập kiểm tra: một là chọn ngẫu nhiên mẫu từ tập huấn luyện ban đầu, giúp tránh rủi ro khi dữ liệu chỉ đại diện cho một đặc điểm nhất định; hai là chỉ lấy dữ liệu từ phần sau của tập huấn luyện, khi dữ liệu gần hiện tại được coi là quan trọng hơn Tập dữ liệu kiểm tra ngẫu nhiên không nên trùng lặp với tập huấn luyện để duy trì khả năng tổng quát của mạng neuron, đặc biệt khi kích thước của tập kiểm tra lớn Ngoài ra, phương pháp tất định, như sử dụng mỗi dữ liệu thứ n làm dữ liệu kiểm tra, cũng không nên áp dụng do ảnh hưởng của tính chu kỳ trong dữ liệu.
Netflix áp dụng phương pháp walk-forward để chia sẻ dữ liệu một cách chặt chẽ Phương pháp này phân chia tập dữ liệu thành các tập nhỏ hơn theo chuỗi, bao gồm huấn luyện, kiểm tra và kiểm định, với cấu trúc gối chồng lên nhau, như minh họa trong hình 3.5.
Hình 3 5: Thủ tục sử dụng phương pháp walk-forward chia tập dữ liệu trong Netflix
Netflix cũng cung cấp số điểm RMSE của hệ thống riêng của mình được huấn luyện trên cùng tập dữ liệu, đó là 0.9514.
Cài đặt bài toán
3.4.1 Ý nghĩa các tham số trong máy hạn chế Boltzmann a Tốc độ học (Learning rate)
Tốc độ học là yếu tố quan trọng quyết định khả năng học nhanh của mạng RBM và ảnh hưởng đến hiệu quả của quá trình huấn luyện.
Khi một RBM đang trong quá trình học tập, giả sử trọng số của một số liên kết là 0,3 Khi mạng nhận huấn luyện mới, thuật toán yêu cầu thay đổi trọng số lên 0,7 để học các mẫu mới Nếu cập nhật trọng số ngay lập tức, mạng RBM sẽ học các mẫu mới nhưng sẽ quên tất cả các mẫu đã học trước đó Điều này xảy ra vì trọng số hiện tại (0,3) phản ánh toàn bộ quá trình học tập mà nó đã trải qua.
Không thể thay đổi trọng số trực tiếp đến 0,7, mà phải tăng dần bằng 25% của sự thay đổi cần thiết, dẫn đến việc trọng số liên kết được điều chỉnh thành 0,4 trước khi chuyển sang mẫu đào tạo tiếp theo Phần thay đổi này, được gọi là learning rate, cho phép tất cả các mẫu huấn luyện được xử lý theo thứ tự ngẫu nhiên Qua nhiều chu trình lặp lại trong quá trình đào tạo, mạng RBM sẽ học hiệu quả tất cả các mẫu.
Learning rate là một giá trị nằm trong khoảng từ 0 đến 1, với giá trị gần 0 yêu cầu nhiều chu trình huấn luyện, dẫn đến quá trình huấn luyện chậm Ngược lại, nếu learning rate quá lớn, trọng số và độ lệch sẽ dao động mạnh, khiến cho quá trình huấn luyện trở nên vô ích.
Weight-decay [6] là tham số điều kiện được thêm vào trong quy tắc cập nhật trọng số Làm tăng tốc độ huấn luyện. c Nhóm mẫu nhỏ (Mini-batch)
Mini-batch là phương pháp huấn luyện mạng nơ-ron theo từng nhóm dữ liệu, được sắp xếp theo thứ tự tăng dần Chẳng hạn, với bộ huấn luyện 100 mẫu và kích thước nhóm là 10, mạng sẽ được huấn luyện lần lượt với 10 mẫu đầu tiên, sau đó là 10 mẫu tiếp theo, và tiếp tục như vậy cho đến khi hoàn tất toàn bộ dữ liệu Hằng số quán tính (Momentum) là một yếu tố quan trọng trong quá trình này.
Tốc độ học của giải thuật RBMs có thể bị ảnh hưởng đáng kể bởi learning rate; nếu quá nhỏ, quá trình học sẽ diễn ra chậm, trong khi nếu quá lớn, nó có thể gây ra dao động lớn khi tìm giá trị cực tiểu Để khắc phục vấn đề này, người ta thường thêm thành phần quán tính vào các phương trình hiệu chỉnh trọng số, giúp quá trình học vượt qua điểm cực tiểu địa phương và tiến tới cực tiểu toàn cục, đồng thời hạn chế sự thay đổi đột ngột của các trọng số.
Trong quá trình huấn luyện mạng, thuật ngữ "epoch" dùng để chỉ giai đoạn mà toàn bộ mẫu dữ liệu trong tập huấn luyện được sử dụng để huấn luyện mạng Cụ thể, một epoch được coi là hoàn thành khi tất cả dữ liệu trong tập huấn luyện đã được đưa vào mạng Do đó, số lượng epoch xác định số lần mạng được huấn luyện, tức là số lần toàn bộ dữ liệu trong tập huấn luyện được sử dụng.
3.4.2 Yêu cầu hệ thống và thư viện sử dụng
Bảng 3 4: Bảng yêu cầu hệ thống và thư viện sử dụng
Hệ thống Chip intel core i3, 2.1GHz, Ram
Ngôn ngữ cài đặt Python version 34
Thư viện NumPy hình 3.6 [13] là một gói chương trình phục vụ cho các tính toán toán học phức tạp bằng ngôn ngữ lập trình Python
Hình 3 6: Thư viện Numpy tính toán toán học trong ngôn ngữ Python
3.4.3 Kết quả thực nghiệm và đánh giá Đồ án thực hiện huấn luyện ba lần với cấu hình các tham số khác nhau, các tham số này cần kiểm nghiệm thực tế để đạt được chỉ số đánh giá RMSE mong muốn. a Lần một
Theo [9] khuyến nghị, nút ẩn (Hidden) cố định cả ba lần được khởi tạo với giá trị
F = 100, bộ phim M (movie) = 17765, K (số lượng rating (1->5)) = 5 Riêng các giá trị sau thì thay đổi:
Tốc độ học (learning rate) learningRate = 0.01, momentum = 0.5, wDecay (weight decay) = 0.00002, số lượng epoch numberOfEpoch = 20 Hình 3.7 là nội dung file cấu hình.
Hình 3 7: File cấu hình lần một cho huấn luyện RBMs lần một
Hình 3 8: Kết quả chỉ số RMSE thu được lần một
Chuyển đổi giá trị từ hình 3.8 sang đồ thị để có cái đánh giá bao quát hơn hình 3.9
Hình 3 9: Đồ thị chỉ số đánh giá RMSE lần một
Hình 3.8 là kết quả đánh giá sai số RMSE của giải thuật RBM Ta thấy, từ epoch
Trong giai đoạn từ epoch 0 đến epoch 8, chỉ số RMSE có xu hướng giảm từ 1.372 xuống 0.899 Tuy nhiên, từ epoch 9 đến epoch 20, chỉ số RMSE lại tăng từ 0.900 lên 0.944, cho thấy rằng thuật toán dự đoán chưa đạt độ chính xác mong muốn với các tham số lần 1 được truyền vào.
Tốc độ học (learning rate) learningRate = 0.001, momentum = 0.5, wDecay(weight decay) = 0.00002, số lượng epoch numberOfEpoch= 20 Hình 3.10 là nội dung file cấu hình.
Hình 3 10: File cấu hình lần một cho huấn luyện RBMs lần hai
Hình 3 11: Kết quả dữ liệu kiểm tra (validation set) RMSE thu được lần hai
Chuyển đổi giá trị từ hình 3.11 sang đồ thị để có cái đánh giá bao quát hơn hình3.12
Hình 3 12: Đồ thị chỉ số đánh giá RMSE lần hai
Hình 3.11 minh họa kết quả đánh giá sai số RMSE của thuật toán RBM, cho thấy từ epoch 0 đến epoch 20, chỉ số RMSE giảm đều và ổn định từ 1.372 đến 0.905 (hình 3.12) Điều này chứng tỏ rằng thuật toán dự đoán chính xác với các tham số lần 2 được truyền vào.
Tốc độ học (learning rate) learningRate = 0.001, momentum = 0.5, wDecay(weight decay) = 0.002, số lượng epoch numberOfEpoch = 50 Hình 3.13 là nội dung file cấu hình.
Hình 3 13: File cấu hình lần một cho huấn luyện RBMs lần ba
Hình 3 14: Kết quả dữ liệu kiểm tra (validation set) RMSE thu được lần ba
Chuyển đổi giá trị từ hình 3.14 sang đồ thị để có cái đánh giá bao quát hơn hình3.15
Hình 3 15: Đồ thị chỉ số đánh giá RMSE lần ba
Kết quả đánh giá sai số RMSE của giải thuật RBM cho thấy rằng khi tăng số lượng epoch từ 20 lên 50 và điều chỉnh các tham số, sai số RMSE có sự cải thiện rõ rệt từ epoch 0 đến epoch tiếp theo.
50 chỉ số RMSE có xu hướng giảm đều ổn định từ 1.372 đến 0.893 (hình 3.15) chứng tỏ rằng giải thuật dự đoán tương đối chính xác.
Kết luận
Chương 3 đã cài đặt thực nghiệm bài toán với dữ liệu dataset Netflix, đưa ra chỉ số RMSE đánh giá độ hiệu quả của thuật toán Sau ba lần huấn luyện với các tham số truyền vào khác nhau Với 20 epoch khi đồ án chỉ thay đổi giá trị tham số với một lượng rất nhỏ (ví dụ learning rate được thay đổi từ 0.01 sang 0.001) thì kết quả của chỉ số đánh giá RMSE cũng đã khác đi nhiều Cụ thể, lần một và lần hai tham số hoàn toàn giống nhau, chỉ khác giá trị learning rate lần một là 0.01 và lần hai là0.001 Chỉ số đánh giá RMSE thu cho thấy với lần một kết quả RMSE không ổn định, lúc giảm lúc tăng Với lần hai thì kết quả RMSE ổn định, việc dự đoán của giải thuật là chính xác hơn Với 50 epoch huấn luyện lần ba thì giá trị chỉ số đánh giá mà giải thuật thực nghiệm thu được cuối cùng là 0.89399 tốt hơn so với hệ thống riêng của Netflix đưa ra là 0.9514.