Thuật toán SGD

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật phân tích ma trận trong các hệ thống khuyến nghị (Trang 40 - 43)

Hình 4.2: Biểu đồ dữ liệu MovieLens với tham số k= 5 và γ =0 .003

3 Kĩ thuật phân tích ma trận cho hệ thống khuyến nghị

3.2 Thuật toán SGD

3.2.1 Cơ sở lý thuyết

Mục tiêu của thuật toán SGD là tìm giá trị θ∗ ∈Rk (với k ≥1) mà tối thiểu hàm sai số L(θ), thuật toán này sẽ sử dụng các quan sát có nhiễu Lb0(θ) của L0(θ), các gradient của hàm sẽ được lấy với biến làθ, khởi tạo ban đầu với giá trịθ0, SGD sẽ điều chỉnh giá trị của tham số bằng việc lặp lại công thức cập nhật ngẫu nhiên:

θn+1 = [θn−εnLb0(θn)]

với n là kí hiệu số thứ tự của bước cập nhật và εn là một chuỗi giảm dần xác định lượng cập nhât (giá trị chuỗi cập nhật là không âm và hữu hạn) và −L0(θn) là hướng giảm có độ dốc lớn nhất, cònLb0(θn)là giá trị có nhiễu của nó. Hình dưới đây mô phỏng quá trình hoạt động của thuật toán SGD khi tham số θ nằm trong không gian 2 chiều.

Hình 3.1: Thuật toán SGD trong không gian 2 chiều

Lý thuyết xấp xỉ ngẫu nhiên chứng tỏ rằng với một số điều kiện ràng buộc thì nhiễu trong xấp xỉ gradient sẽ triệt tiêu và SGD sẽ hội tụ đến một tập các điểm bất động thỏa mãn L0(θ) = 0, tất nhiên các điểm bất động này có thể là cực tiểu, cực đại hay là các điểm yên ngựa và thường thì chúng sẽ hội tụ tại một điểm cực tiểu do tính có nhiễu của bài toán. Tuy nhiên, SGD chỉ là tìm ra một điểm cực tiểu mà không chắc đó là toàn cục nên có nhiều phương pháp được dùng để nâng cao khả năng tìm ra điểm này như chạy thuật toán SGD nhiều lần và mỗi lần xuất phát tại một điểm lấy ngẫu nhiên nào đó.

Trong thực tế ta có thể dùng thêm một số ràng buộc H ví dụ như phân tích ma trận không âm rất được quan tâm gần đâyH =θ :θ≥0. Các thuật toán này sẽ có bước cập nhật có dạng:

3.2 Thuật toán SGD 31

3.2.2 Phát biểu bài toán

Cho các ma trận với các tham số thể hiện số người dùng, số item và số các đánh giá của người dùng lên item đó, các ma trận được viết dưới dạng sau:

V ={vij}nw×nh Là ma trận đầu vào cần phân tích

W = [Wi] Là ma trận thành phần thứ nhất

H = [Hj] Là ma trận thành phần thứ hai Bài toán đặt ra là tìm ma trậnW và H sao cho:

Vm×n=Wm×k×HnT×k hay vij =hwi, hji với V là một ma trận rất thưa Ta định nghĩa: i) L2 (vij,wi,hj) = (vij − hwi, hji)2

là sai số của một giá trị phần tử vij ∈V với tích của 2 vector thành phần wi và hj

tương ứng của ma trận W và H. ii) Lemp(V, W, H) = 1nP

(i,j)∈IL2(vij, wi, hj)

là sai số tổng cộng của tất cả N phần tử đã biết so với ma trận W và H. Bài toán tìm nghiệm của phương trình:

(W, H) =argmin(W,H)Lemp(V, W, H)

Sử dụng phương pháp chính quy hóa để tránh phù hợp trội và nghiệm hội tụ sử dụng hàm sai số:

Lregλ (V, W, H) = Lemp(V, W, H) +λ(kWk2+kHk2)

3.2.3 Thuật toán SGD dùng cho phân tích ma trận

Để áp dụng thuật toán SGD cho bài toán phân tích ma trận, ta lấy tham sốθ = (W, H)

và phân tích hàm sai số dưới dạng:

Lij(W, H) =l(Zij, Wi∗, H∗j)

Với tập huấn luyệnZ thích hợp và hàm sai số địa phương l. Như vậy tổng sai số sẽ là:

L0(W, H) = X

z∈Z

L0z(W, H) = X

(i,j)∈Z

l(Zij, Wi∗, H∗j) (3.6) Ta dùng ước lượng gradient có nhiễu:

b

vớiN =|Z| và điểm huấn luyệnz được chọn ngẫu nhiên từ tập dữ liệu huấn luyện. Dưới đây là thuật toán mô tả cách dùng SGD cho bài toán phân tích ma trận:

Thuật toán SGD cho phân tích ma trận

Đầu vào: Một bộ dữ liệu huấn luyện Z, giá trị khởi tạo ban đầu W0 và H0

Đầu ra: Hai ma trận W và H mà sai số cực tiểu: 1:While (khi chưa hội tụ) do

2: Chọn 1 điểm huấn luyện (i, j)ngẫu nhiên 3: Wil∗+1 ←Wl i∗−εnN δ δWi∗l(Vij, Wi∗, H∗j) 4: H∗l+1j ←Hl i∗−εnN δ δH∗jl(Vij, Wi∗, H∗j) 5: Wil∗+1 ←Wl i∗ 6:End while 3.3 Thuật toán DSGD

Thuật toán truyền thống, tuần tự SGD không thể được dùng một cách trực tiếp cho bài toán phân tích ma trận cấp k với ma trận có kích thước lớn và rất lớn như dữ liệu dùng trên môi trường Web. Tuy nhiên, ta có thể khai thác cấu trúc của bài toán phân tích ma trận để đưa ra một thuật toán SGD phân tán có thể dùng cho loại ma trận này. Tư tưởng chính của phương pháp này dựa vào việc phân chia ma trận lớn đó ra làm các lớp (stratum) hay nói cách khác phân chia làm các phần mà trên đó SGD có thể chạy phân tán. Dưới đây là cấu trúc "có thể tráo đổi được" mà từ đó ta sẽ tận dụng để thực hiện xử lý phân tán trong mỗi lớp.

3.3.1 Tính có thể tráo đổi được (interchangeability)

Nói chung việc chạy phân tán thuật toán SGD là khó vì các bước cập nhật trong quá trình thực hiện phụ thuộc lẫn nhau:

θn+1=πHhθn−εnLb0(θn)i

Như công thức trên ta thấy θn phải có trước để tính θn+1, tuy nhiên với bài toán phân tích ma trận quá trình tính toán của SGD có một số đặc tính mà ta có thể khai thác được, ta sẽ tập trung vào bài toán tối thiểu sai số trong đó sai số có dạng:

L(θ) = X

z∈Z

Lz(θ) (3.7)

Định nghĩa 3.1. Hai điểm huấn luyện z1, z2 ∈ Z được gọi là có thể tráo đổi với nhau nếu tất cả các hàm sai số L có dạng tổng như (3.7) thỏa mãn: với mọi θ ∈H, ε >0

L0z1(θ) =L0z1 θ−εL0z2(θ)

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu kỹ thuật phân tích ma trận trong các hệ thống khuyến nghị (Trang 40 - 43)

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

(65 trang)