Huấn luyện máy hạn chế Botlzmann (RBMs) trong lọc cộng tác

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp học sâu cho lọc cộng tác (Trang 43)

Mặc dù hàm kích hoạt của các nút hiện đã thay đổi, các quy tắc học ở công thức (2.16), (2.17) vẫn như cũ. Sự khác biệt duy nhất là Gibbs sampling được sử dụng để tái tạo lại phân phối duy nhất trong xếp hạng không missing ratings [9]. Sử dụng các ký hiệu giới thiệu trước đây để học trở thành:

ijk w( ik j ik j T) Wv hv h        (2.20) ( ) k k k T i v i i bvv        (2.21) ( ) k T j h j j bhh        (2.22) 2.4.3. Dự đoán

Quay lại vấn đề là làm sao để tư vấn? Bây giờ đã biết làm thế nào để mô hình một phân phối đánh giá trên các nút hiện của một RBM, suy luận ra các xếp hạng chưa đánh giá là thực tế khá đơn giản: Giữ các xếp hạng người dùng trên các nút softmax, và sau đó thực hiện một bước lấy mẫu Gibbs duy nhất trên tất cả các đánh giá bị missing. Đó chính là cách giải quyết. Thuật toán dự đoán được đưa ra dưới 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ˆjp(hj 1| V)

cho tất cả các hidden units j

3. Tính toán 1 ij 1 1 ˆ exp(b ) ( 1| p) ˆ exp(b ) F k k i j ij j k i K F l l i j l j p W p p W            cho k =1,...,K 4. Dự đoán giá trị. ví dụ: 1 ˆ (u, i) ( 1| ) K k i k R pp k    . 2.5. Kết luận

Chương 2 đã giới thiệu về giải thuật BM, RBM và RBMs trong lọc cộng tác. Phương pháp huấn luyện, cập nhật giá trị các tham số và dự đoán của giải thuật RBMs cũng đã được đề cập.

Chương 3 tiếp theo sẽ tiến hành cài đặt thuật toán cho bài toán được đưa ra với dữ liệu dataset mà hệ thống Netflix cung cấp.

CHƯƠNG III. XÂY DỰNG HỆ THỐNG VÀ THỬ NGHIỆM

Chương này trình bày bài toán, mô hình thực hiện bài toán tư vấn dựa trên lọc cộng tác áp dụng mô hình máy hạn chế Bolzmann. Từ đó xây dựng, thử nghiệm và đánh giá kết quả bài toán.

3.1. Xây dựng bài toán

i1 i2 i3 ... ij ... in u1 u2 ... ua ... um Dự đoán Prediction

Đầu vào: Ma trận đánh giá R Rating maxtrix

Giải thuật lọc cộng tác Collaborative Filtering Algorithm

RBMs

Raj (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à luận vă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, giá trị đầu vào của hệ tư vấn chính là các đánh giá dạng số nguyên K của người dùng tới những bộ phim được xây dựng thành dạng ma trận R. R có kích thước N M với N là số người dùng.

Đầu ra của bài toán có giá trị Raj với aN, jM chính là kết quả dự đoán của kỹ thuật lọc cộng tác. Cụ thể ở đây được thể hiện bằng giải thuật RBMs. Các kết quả dự đoán được sử dụng để tính độ hiệu quả của thuật toán qua chỉ số đánh giá RMSE của giải thuật.

Đư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 1 - Khối dữ liệu

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ị Trọng số w Ngưỡng b phía h Ngưỡng b phía v Cập nhật các giá trị Trọng số w Ngưỡng b phía h Ngưỡng b phía v Cập nhật các giá trị Trọng số w Ngưỡng b phía h Ngưỡng b phía v mini-batch 1 Một user +Tính xác suất điều kiện của h và v

+Chạy Gibbs sampler qua T bước lặp

mini-batch 2

Một user +Tính xác suất điều kiện của h và v

+Chạy Gibbs sampler qua T bước lặp

mini-batch n

Một user +Tính xác suất điều kiện của h và v

+Chạy Gibbs sampler qua T bước lặp

...

m users m users m users

Dữ liệu đầu vào DataSet

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.

Theo hình 3.2 trên, Khối 1 - khối chứa dữ liệu đầu vào, đưa dữ liệu khối 1 vào khối 2 - khối giải thuật RBMs, khối giải thuật thực hiện khởi tạo các giá trị. Trước khi huấn luyện, dữ liệu người dùng được chia đều thành n mini - batch. Tại mini - batch thứ nhất, giải thuật duyệt từng user qua m bước lặp. Với mỗi user giải thuật tính xác suất điều kiện h theo v (công thức 2.19), tính xác suất điều kiện v theo h (công thức 2.18), chạy Gibbs Sampler qua T bước lặp. Sau mini - batch thứ nhất thì cập nhật trọng số w (công thức 2.20), bias phía v (công thức 2.21), bias phía h (công thức 2.22). Giá trị các trọng số w, bias sẽ làm đầu vào cho mini - batch thứ hai. Cứ như vậy cho đến n mini - batch giải thuật thu được sẽ là trọng số w, bias phía h, bias phía v của tất cả các users. Kết quả này sẽ dùng đề dự đoán và đánh giá độ chính xác của giải thuật qua chỉ số RMSE - Khối 3.

Dự đoán hầu như bao giờ cũng có sai số bởi vậy, để đánh giá độ hiệu quả của thuật toán một cách định lượng chúng ta cần sử dụng các chỉ số dự đoán. Trong luận văn sử dụng chỉ số: Căn bậc hai của trung bình bình phương sai số - RMSE (Root Mean Squared Error) để đánh giá độ chính xác của dự báo.

Căn bậc hai của trung bình bình phương sai số (Root Mean Squared Error) [8]: 2 (u,i) T 1 (R(u,i) ˆ(u,i)) | T | RMSE R     (3.1) Trong đó,

+ 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

Ví dụ:

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 1 15.9 2 16.6 3 18.2 4 22.4 5 22.7 Tập giá trị R(u,i) là các giá trị y.

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 21.1 1.30 23.04 -0.34

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 : 2 2 2 2 2 0.62 ( 0.62 ) ( 0.96 ) (1.3 ) ( 0.34 ) 0.84 5 RMSE        

Chỉ số RMSE càng nhỏ thì việc dự đoán của giải thuật càng chính xác.

3.3. Mô tả dữ liệu Dataset Netflix

0 5 10 15 20 25 0 1 2 3 4 5 6 y= 1.94x +13.34

Khối 1, dữ liệu theo như [9] và Netflix [11 ] cung cấp, dữ liệu được thu thập từ giữa tháng 10 năm 1998 đến tháng 12 năm 2005 gồm những đánh giá của người dùng đối với những bộ phim theo định dạng hình 3.4.

Hình 3-4: Định dạng của đánh giá những người dùng đối với những bộ phim

Trong hình 3.4 mô tả dữ liệu dataset của nhiều người dùng. Mỗi người dùng chứa một mảng hai chiều là mã những bộ phim và giá trị được người dùng đánh giá. Ví dụ xét người dùng trong hình ô số 1. Các giá trị 252, 411, 788,... chiều thứ nhất là mã của các bộ phim. Chiều số hai là 1, 4, 1,... là kết quả đánh giá của người đó với tương ứng mã các bộ phim ở mảng một. Ở ô số 2 và các ô còn lại cũng tương tự.

Khi huấn luyện, Netflix cung cấp các tập: dữ liệu huấn luyện (Training set) bao gồm 100,480,507 đánh giá từ 480,189 người dùng và 17,770 bộ phim, dữ liệu kiểm tra (validation) bao gồm 1,408,395 đánh giá, và dữ liệu kiểm định (testing set, gồm các mẫu hoàn toàn mới) gồm 2,817,131 cặp người dùng / bộ phim đánh giá. Bảng 3.3 sẽ mô tóm lược lại các thông số dữ liệu.

Bảng 3-3: Thông số dữ liệu mà Netflix cung cấp

Người dùng (User) Bộ phim (Movie) Đánh giá (Rating value) Huấn luyện (Training Set) Kiểm tra (Validation Set) Kiểm định (Testing Set) 480,189 17,770 [1,4] 100,480,507 1,408,395 2,817,131

Hình 3.4 cũng mô tả định dạng dữ liệu của cả ba tập : dữ liệu huấn luyện, dữ liệu kiểm tra, dữ liệu kiểm định. Tức là dữ liệu gồm n người dùng theo thứ tự từ trên xuống, mỗi người dùng sẽ có một cặp id (mã) bộ phim và đánh giá (rating) tương ứng của bộ phim đó.

Tập huấn luyện thường là tập lớn nhất, được sử dụng để huấn luyện cho mạng RBMs. Tập kiểm tra thường nhỏ hơn rất nhiều tập dữ liệu huấn luyện, được sử dụng để kiểm tra mức độ tổng quát hóa của mạng sau khi huấn luyện. Tập kiểm định bao gồm các dữ liệu hoàn toàn độc lập /khác với tập huấn luyện và kiểm tra. Kích thước của tập kiểm định cần được cân bằng giữa việc cần có đủ số mẫu để có thể kiểm định mạng đã được huấn luyện và việc cần có đủ các mẫu còn lại cho cả pha 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.

Có hai cách thực hiện xác định tập kiểm tra. Một là lấy ngẫu nhiên các mẫu từ tập huấn luyện ban đầu. Lợi điểm của cách này là có thể tránh được nguy hiểm khi mà đoạn dữ liệu được chọn có thể chỉ điển hình cho một tính chất của dữ liệu (đang tăng hoặc đang giảm). Hai là chỉ lấy các dữ liệu ở phần sau của tập huấn luyện, trong trường hợp các dữ liệu gần với hiện tại là quan trọng hơn các dữ liệu quá khứ.

Tập dữ liệu kiểm tra ngẫu nhiên không nên lặp lại trong tập huấn luyện, bởi vì điều này có thể làm mất khả năng tổng quát hóa của mạng neuron, đặc biệc trong

trường hợp kích thước của tập kiểm tra tương đối lớn so với tập huấn luyện. 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 được sử dụng bởi vì nó chịu ảnh hưởng bởi tính chu kỳ của dữ liệu.

Một phương pháp chặt chẽ mà Netflix sử dụng để chia dữ liệu là walk-forward. Phương pháp walk-forward chia tập dữ liệu thành một chuỗi các tập dữ liệu nhỏ hơn huấn luyện- kiểm tra- kiểm định gối chồng lên nhau hình 3.5 [11].

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.

3.4. 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 [6] là một trong những thông số mà điều chỉnh việc làm thế nào để một mạng RBM học nhanh và làm thế nào để việc huấn luyện hiệu quả.

Hãy xem xét một RBM mà đang trải qua quá trình học tập. Giả định rằng trọng số của một số liên kết trong mạng một phần được tạo ra là 0,3. Khi mạng được giới thiệu một huấn luyện mới, thuật toán huấn luyện yêu cầu các liên kết thay đổi trọng số của nó đến 0,7 để nó có thể học các mẫu mới phù hợp. Nếu chúng ta cập nhật trọng số ngay lập tức, mạng RBM chắc chắn sẽ học các mẫu mới, nhưng nó có xu

hướng quên tất cả các mẫu nó đã được học trước đó. Điều này là do trọng số hiện tại (0,3) là kết quả của tất cả việc học mà nó đã trải qua cho đến nay.

Vì vậy, không thể trực tiếp thay đổi trọng số tới 0,7. Thay vào đó thì tăng nó bởi một phần nhỏ (chọn 25%) của sự thay đổi cần thiết. Vì vậy, trọng số liên kết của nó được thay đổi thành 0,4 và khi đó sẽ chuyển sang mẫu đào tạo tiếp theo. Yếu tố này (0,25 trong trường hợp này) được gọi là learning rate. Căn cứ theo cách này, tất cả các mẫu huấn luyện được huấn luyện trong một số thứ tự ngẫu nhiên. Khi chu trình trình đào tạo lặp đi lặp lại nhiều lần, cuối cùng mạng RBM học tất cả các mẫu có hiệu quả.

Learning rate là một giá trị trong khoảng từ 0 đến 1. Chọn một giá trị rất gần bằng 0 đòi hỏi một số lượng lớn các chu trình huấn luyện. Điều này làm cho quá trình huấn luyện rất chậm. Mặt khác, nếu learning rate rất lớn, trọng số khác nhau và độ lệch hàm mục tiêu dao động lớn và mạng đạt đến một trạng thái mà việc huấn luyện diễn ra vô ích.

b. Weight - decay

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 [6] là mạng được huấn luyện theo từng nhóm. Các nhóm này được gom lại theo thứ tự tăng dần. Ví dụ: bộ huấn luyện có 100 mẫu, với số điểm dữ liệu trong nhóm là 10 thì mạng sẽ được huấn luyện với 10 điểm dữ liệu đầu tiên trước, sau đó huấn luyện với 10 điểm dữ liệu tiếp theo... cứ như vậy cho đến khi hết bộ dữ liệu thì thôi.

d. Hằng số quán tính (Momentum)

Tốc độ học của giải thuật RBMs có thể rất chậm nếu learning rate nhỏ, nhưng nếu tốc độ học lớn thì nó lại có thể gây ra sự dao động lớn trong quá trình tìm giá trị cực tiểu theo phương pháp giảm gradient. Để giải quyết vấn đề này người ta thường thêm thành phần quán tính [6] vào các phương trình hiệu chỉnh trọng số. Nhờ thành phần này, quá trình học có thể vượt qua điểm cực tiểu địa phương để tìm đến cực

tiểu toàn cục, đồng thời thành phần quán tính cũng ngăn cản sự thay đổi đột ngột của các trọng số theo hướng khác với hướng mà lời giải đang chuyển đến.

e. Epoch

Trong quá trình huấn luyện mạng, thuật ngữ “epoch” được dùng để mô tả quá trình khi tất cả các mẫu dữ liệu đầu vào của training set được đưa để huấn luyện mạng. Nói các khác là 1 epoch được hoàn thành khi tất cả các dữ liệu trong training set được đưa vào huấn luyện mạng. Vì vậy, số lượng “epoch” xác định số lần mạng được huấn luyện (hay số lần đưa tất cả các dữ liệu trong training set vào mạ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 4GB, Windows 7 64bit

Ngôn ngữ cài đặt Python version 34

Thư viện NumPy version 1.10.1

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

Luận vă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-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ó đánh giá bao quát hơn hình 3.9

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 0 đến epoch 8 RMSE có xu hướng giảm từ 1.372... giảm đến 0.899 .... Tuy nhiên, từ epoch 9 đến hết epoch 20 thì chỉ số RMSE lại tăng từ 0.900... đến 0.944 ... (hình

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu phương pháp học sâu cho lọc cộng tác (Trang 43)

Tải bản đầy đủ (PDF)

(65 trang)