Thuật toán SGD trong không gian 2 chiều

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 - 47)

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(θ)

3.3 Thuật toán DSGD 33

Như vậy, theo định nghĩa trên ta có thể thay đổi thứ tự của các bước SGD trên các điểm có đặc tính tráo đổi được này mà không làm ảnh hưởng đến kết quả cuối cùng của quá trình thực hiện thuât toán.

Bây giờ ta quay lại bài toán phân tích ma trận với hàm số L có dạng:

L(W, H) = X

(i,j)∈Z

Lij(W, H)

với

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

Định lý 3.1. Hai điểm huấn luyện z1 = (i1, j1), z2 = (i2, j2) được gọi là có thể tráo đổi được nếu chúng không ở cùng hàng và cũng không cùng cột hay nói cách khác i1 6=i2 và

j1 6=j2

Thực ra đây là một kết quả trực tiếp từ việc định nghĩa hàm sai số toàn cục bằng tổng của các hàm sai số cục bộ. Từ định nghĩa 3.1 và định lý 3.1 trên ta có thể thấy nếu 2 khối của ma trậnV không có chung hàng và cột nào thì tập hợp các điểm huấn luyện trong 2 khối này có tính tráo đổi được với nhau.

3.3.2 Trường hợp đơn giản

Thuật toán DSGD (Distributed SGD) được xem xét là một trường hợp đơn giản tương đương với việc chạy thuật toán DSGD trên một lớp các khối của ma trận dựa trên đường chéo chính của ma trận đó. Mục đích của nó là làm thế nào DSGD sử dụng thuật toán SGD theo cách thức phân tán.

Cho tập huấn luyện Z, kí hiệu Zlà ma trận huấn luyện tương ứng có được bằng cách đặt các phần tử không có mặt trong tậpZ giá trị 0, đây là các phần tử mà điểm của nó không có hoặc được dùng trong tập kiểm tra độ chính xác của thuật toán. Trong trường hợp đơn giản này thìZ tương ứng với một lớp các khối có thuộc tính có thể tráo đổi được mà ta quan tâm và ma trận huấn luyệnZlà ma trận block-diagonal (ma trận đường chéo khối) có dạng như sau:

      Z1 0 . . . 0 0 Z2 . . . 0 .. . ... . .. ... 0 . . . 0 Zd      

vớiW vàH được chia thành các khối một cách đồng nhất: W sẽ được chia làmd khối với mỗi khốiWi là các hàng tương ứng với các hàng chứa trongZi còn H thì được chia làm

d khối với mỗi khối Hi chứa các cột trong Zi. Kí hiệu Zb là các điểm huấn luyện trong khối Zb. Chúng ta khai thác một thuộc tính quan trọng đó là các tập Zi và Zj có thể tráo đổi được vớii6=j. GọiT ∈(0,∞)là một số nguyên nào đó, giả sử chạyT bước của thuật toán SGD trên ma trận Z, khởi tạo ban đầu θ0 = (W0, H0) và sử dụng một tham số cập nhật ε cố định, chúng ta có thể mô tả một quá trình thực hiện thuật toán SGD bằng 1 chuỗi huấn luyệnω = (z0, z1, . . . , zT)củaT điểm huấn luyện, gọiθ0(ω) =θ0 ta có:

với Yn(ω) =−N L0ω n(θn(ω)) hay ta có thể viết là: θT(ω) = θ0+ε T−1 X n=0 Yn(ω)

Để thấy được làm thế nào mà ta lợi dụng được đặc tính tráo đổi được, hãy xem xét một chuỗi conσb(ω) =ω∪Zb các điểm huấn luyện thuộc khối Zb có độ dài làTb(ω) = |σb(ω)|, định lý sau đây khẳng định rằng chúng ta có thể chạy thuật toán SGD trên các khốiZi

độc lập với nhau rồi sau đó tổng hợp lại để được kết quả.

Định lý 3.2. Sử dụng định nghĩa ở trên, ta có: θT(ω) =θ0+ε d X b=1 Tb(ω)−1 X k=0 Yk(σb(ω))

Chứng minh: Ta đi tìm sự tương ứng một - một giữa lượng cập nhậtYn(ω) vàYk(σb(ω)). Kí hiệuzb,k là phần tử thứ k+ 1 trong σb(ω) hay là phần tử thứ k+ 1của khối Zb nằm trong ω, kí hiệu Π(zb,k)là vị trí của phần tử đó trong ω, ta có ωΠ(zb,k) =zb,k. Xét phần tử đầu tiênzb,0 trong khốiZb, ta có zn ∈/ Zb với n <Π(zb,0), từ đó mà ta có thể lần lượt loại bỏ sự phụ thuộc vàozn bằng chuỗi:

YΠ(zb,0)(ω) = −N LZ0b,0 θΠ(zb,0)(ω) = −N L0z

b,0 θΠ(zb,0)−1(ω) =. . .= −N L0z

b,0(θ0) = Y0(σb(ω))

Suy luận tương tự, ta có thể loại bỏ hết lần lượt các cập nhật tham số từ các phần tử không thuộc tâp Zb mà ta đang quan tâm, chúng ta có được:

YΠ(zb,0)(ω) = −N L0z b,k  θ0+ε Π(zb,k)−1 X n=0 Yn(ω)   = −N L0zb,k θ0+ε k−1 X n=0 Yn(ω) ! = Yk(σb(ω))

Như vậy, sử dụng điều trên và sắp xếp lại thứ tự các lần cập nhật:

θT(ω) = θ0+ε T−1 X n=0 Yn(ω) = θ0+ε d X b=0 Tb(w)−1 X k=0 YΠ(zb,k)(ω) d T (ω)−1

3.3 Thuật toán DSGD 35

Ở đây, chúng ta mới chỉ sử dụng ma trận block - diagonal để có được tính có thể tráo đổi được giữa các khối trong ma trận, điều này có nghĩa là định lý 3.2 cũng áp dụng được khi ma trận đầu vào không phải là dạng block - diagonal nhưng có thể được chia ra làm tập các khối con có tính chất này bằng một cách nào đó.

Bây giờ, chúng ta sẽ mô tả làm sao để sử dụng định lý 3.2 trong xử lý song song phân tán. Ta chia ma trậnW và H một cách đồng thời và tương ứng với V và chia quá trình xử lý ra làm d tác vụ độc lập với nhau: Γ1,Γ2, . . . ,Γd bằng cách như sau: Tác vụ Γb sẽ chịu trách nhiệm xử lý cho chuỗi conσb(ω), nó sẽ lấy các khốiZb, Wb vàHb làm đầu vào, thực hiện block - local (cập nhật cục bộ trong khối) và trả về 2 khối thành phần đã được cập nhật Wb new và Hb new, từ định lý 3.2 ta có: W0 =    W1 new .. . Wd new    và H0 = Hnew1 . . . Hnewd

Trong đó W0 và H0 là các ma trận có được khi áp dụng thuật toán SGD tuần tự trên chuỗi đầu vàoω, vì các tác vụ truy cập các thành phần khác nhau của bộ dữ liệu huấn luyện và ma trận thành phần W, H nên các dữ liệu này có thể được phân tán ra nhiều nodes (các máy) và các tác vụ có thể chạy cùng một lúc.

3.3.3 Trường hợp tổng quát

Sau đây, chúng ta xét thuật toán phân tích ma trận DSGD đầy đủ trong trường hợp tổng quát. Ý tưởng cốt lõi của thuật toán này là việc phân tách tập huấn luyệnZ ra làm tập S =Z1, Z2, . . . , Zq gồm có q lớp mà mỗi lớp Zs⊆Z có thể được xử lý theo mô hình phân tán, chúng ta thực hiện điều này bằng việc đảm bảo rằng mỗi lớp là d - monomial tức là mỗi lớp gồm dkhối trong ma trận có tính tráo đổi được tổng quát trường hợp của ma trận block-diagonal như trường hợp đơn giản trên nhưng phải đảm bảo điều kiện là bao phủ toàn bộ dữ liệu huấn luyện T

s=1...qZs = Z và các lớp Zs được phép chồng lên nhau, tham số d ở đây được chọn lớn hơn hoặc bằng số tác vụ có thể thực hiện của hệ thống.

Định nghĩa 3.2. Một phân lớp Zs được gọi là d-monomial nếu nó có thể được phân chia ra thành d tập con không rỗng Z1

s, Z2

s, . . . , Zd

s có i 6=i0 và j =6 j0 khi (i, j) ∈Zb1

s và

(i0, j0)∈Zb2

s với b1 6=b2. Một ma trận huấn luyện Zs được gọi làd-monomial nếu nó được tạo thành từ một phân lớp d-monomial Zs.

Thực tế là có nhiều cách khác nhau để phân tách lớp dữ liệu như theo định nghĩa 3.2, ở đây ta thực hiện giải pháp data-independent blocking (phân chia khối độc lập dữ liệu), các chiến lược cao cấp khác có thể tăng tốc độ hội tụ của thuật toán. Đầu tiên, ta xáo trộn ngẫu nhiên các hàng, các cột của Z và phân chia ra làm d×d khối có kích thước

(m/d)×(n/d), đồng thời ta cũng phân chia ma trận W và H một cách tương ứng. Việc xáo trộn ngẫu nhiên này nhằm hi vọng rằng số điểm cập nhật trên mỗi khối là tương đương nhau. Như vậy, với mỗi hoán vị j1, j2, . . . , jd của 1,2, . . . , d ta có thể định ra một

phân lớp Zs =Z11j ∪Z22j∪. . .∪Zddj với mỗi Zij là tập hợp các điểm thuộc vào khối Zij. Chúng ta có thể biểu diễn phân lớp Zs dưới dạng một khuôn mẫu cZs, trong đó mỗi khối

Zij tương ứng với một tập con Zij của Zs, còn các khối khác thì được gán là ma trận 0. Ví dụ, vớid= 2 ta có: Z1 = Z 11 0 0 Z22 ! Z2 = 0 Z 12 Z21 0 !

Tập tất cả các phân lớp có thể S sẽ gồm có d! phần tử, mỗi phần tử là một hoán vị của tập 1,2, . . . , d, chú ý rằng các phân lớp có thể chồng lên nhau nếud >2.

Các bước cập nhật riêng rẽ trong DSGD được gộp với nhau để tạo ra cácsubepochs tương ứng là xử lý các phân lớp.

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

Đầu vào: Tập dữ liệu huấn luyện Z, ma trận khởi tạo W0, H0, kích thước cụm d

Đầu ra: Hai ma trận thành phần W, H cực tiểu hàm sai số

W ← W0 H ← H0

1: ChiaZ, W, H ra làm các khối với kích thước tương ứng d×d/d×1/1×d

2:While (chưa hội tụ) do /* bước lặp*/ 3: Chọn giá trị cho bước cập nhật ε

4: For s = 1, . . . , d do /* trên một tập phân lớp */ 5: Chọn d khối Z1j1, . . . , Zdjd tạo nên 1 phân lớp 6: For b = 1, . . . , d do /* chạy SGD song song */

7: Chạy thuật toán SGD trên các điểm huấn luyện trên tập Zbjb

8: End for

9: End for

10: End while

3.4 Thuật toán FPSGD

Hiện nay, SGD (Stochastic Gradient Descent) là một trong những thuật toán phổ biến nhất trong phân tích ma trận. Tuy nhiên, SGD khó tiếp cận song song để xử lý các vấn đề quy mô lớn trên web. Do vậy, vấn đề xử lý song song phương pháp SGD này được phát triển thành FPSGD (Fast Parallel SGD) cho các hệ thống chia sẻ bộ nhớ. FPSGD hiệu quả hơn các thuật toán song song khác trong phân tích ma trận do việc giảm tải tỷ lệ lỗi bộ nhớ cache và cân bằng tốt địa chỉ tải luồng dữ liệu.

3.4.1 Vấn đề locking

3.4 Thuật toán FPSGD 37

chờ đợi các luồng khác thực hiện trước. Trong DSGD, nếu s luồng được dùng thì theo thuật toán SGD, s khối độc lập được cập nhật đồng loạt. Tuy nhiên, nếu thời gian chạy của mỗi khối khác nhau thì luồng đó có thể kết thúc phiên làm việc của mình sớm hơn để chờ các luồng khác.

Việc locking có thể gây ảnh hưởng lớn nếuR không được cân bằng. Do đó, cần phải sắp xếp các rating có sẵn phân bố đều trên tất cả các vị trí của R. Trong trường hợp luồng đang cập nhật một khối bằng vài chỉ số rating có thể là để chờ các luồng khác. Ví dụ trong hình 3.2 sau khi tất cả các xếp hạng ở khối b1,1 đã có tiến trình, chỉ có một rating thứ 3 của khối b0,0 được xử lý. Do đó luồng b1,1 đang cập nhật sẽ ở trạng thái chờ nhiều nhất tại thời gian đó.

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 - 47)

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

(65 trang)