Tổng quat
Bạn có thể muốn thử một biến thể của Phương pháp đa hướng thay thế (ADMM), đã được tìm thấy để hội tụ nhanh một cách đáng ngạc nhiên đối với các vấn đề kiểu lasso. Chiến lược này là xây dựng vấn đề với Lagrangian tăng cường và sau đó tăng độ dốc cho vấn đề kép. Nó đặc biệt tốt đẹp cho đặc biệt này vấn đề regularized vì phần nonsmooth của mỗi lần lặp của phương pháp này có một giải pháp chính xác mà bạn chỉ có thể đánh giá phần tử bằng phần tử, trong khi phần trơn tru liên quan đến giải quyết một hệ thống tuyến tính.l1l1
Trong bài này, chúng tôi
- rút ra một công thức ADMM tổng thể để khái quát hóa vấn đề của bạn,
- rút ra các bài toán con cho mỗi lần lặp ADMM và chuyên môn hóa chúng cho tình huống của bạn, và sau đó
- tra kết quả các hệ thống tuyến tính mà cần phải được giải quyết mỗi lần lặp, và phát triển một giải nhanh (hoặc preconditioner) dựa trên precomputing sự phân tách eigenvalue (hoặc xấp xỉ bậc thấp của chúng) cho và .MTMYYT
- tóm tắt với một vài nhận xét kết luận
Hầu hết các ý tưởng lớn ở đây được đề cập trong bài đánh giá tuyệt vời sau đây,
Boyd, Stephen, et al. "Tối ưu hóa phân tán và học thống kê thông qua phương pháp số nhân xen kẽ." Nền tảng và Xu hướng® trong Machine Learning 3.1 (2011): 1-122. http://www.stanford.edu/~boyd/ con / pdf / adm_distr_stats.pdf
Trước khi đi vào chi tiết, tôi muốn lưu ý rằng đây là câu trả lời của phương thức / thuật toán không phải là câu trả lời mã thực tế hiện có - nếu bạn muốn sử dụng phương pháp này, bạn sẽ cần phải tự thực hiện.
Công thức ADMM
Nói chung, giả sử bạn muốn giải quyết
minxs.t.∑i|xi|Ax=b.
Vấn đề trong bài viết gốc rơi vào thể loại này sau khi vector hóa thích hợp. (đây chỉ là về nguyên tắc - chúng ta sẽ thấy rằng việc vector hóa không cần phải được thực hiện trong thực tế)
Thay vào đó, bạn có thể giải quyết vấn đề tương đương,
có Lagrangian started
minx,zs.t.&∑i|xi|+α2||x−z||2+β2||Az−b||2Az=bx=z,
L(x,z,λ,γ)==∑i|xi|+α2||x−z||2+β2||Az−b||2+λT(Az−b)+γT(x−z)∑i|xi|+α2||x−z+1αγ||2+β2||Az−b+1βλ||2+α2||1αγ||2+β2||1βλ||2.
Phương pháp số nhân hướng xen kẽ giải quyết vấn đề kép,
thông qua độ dốc tăng dần trên các biến kép, ngoại trừ dự đoán xen kẽ không chính xác trên các bài toán con kép. Tức là, người ta lặp lại
maxλ,γminx,zL(x,z,λ,γ),
xk+1zk+1γk+1λk+1=argminxL(x,zk,λk,γk)=argminzL(xk+1,z,λk,γk)=γk+α(xk+1−zk+1)=λk+β(Azk+1−b).
Trong một số điều kiện nhất định về các tham số và (được giải thích trong bài báo Boyd & Parikh được liên kết ở trên), phương pháp ADMM sẽ hội tụ đến giải pháp thực sự. Tốc độ hội tụ là tuyến tính, vì nó là cốt lõi của một phương pháp tăng dần độ dốc. Thông thường, nó có thể được tăng tốc thành siêu tuyến tính bằng 1) thay đổi các tham số và khi bạn đi dựa trên phương pháp phỏng đoán hoặc 2) bằng cách sử dụng gia tốc Nesterov. Để biết các lưu ý về việc thay đổi các tham số hình phạt, xem bài khảo sát Boyd và để sử dụng gia tốc Nesterov với ADMM, hãy xem bài viết sau,αβαβ
Goldstein, Tom, Brendan O'Donoghue và Simon Setzer. "Phương pháp tối ưu hóa hướng xen kẽ nhanh." Báo cáo CAM (2012): 12-35. ftp://ftp.math.ucla.edu/pub/camreport/cam12-35.pdf
Tuy nhiên, ngay cả khi tốc độ hội tụ tổng thể chỉ là tuyến tính, đối với các vấn đề , phương pháp đã được quan sát để tìm ra mô hình thưa thớt rất nhanh, và sau đó hội tụ chậm hơn trên các giá trị chính xác. Vì việc tìm ra mô hình thưa thớt là phần khó nhất, điều này rất tình cờ! Những lý do chính xác tại sao dường như là một lĩnh vực nghiên cứu hiện tại. Mọi người đều thấy mô hình thưa thớt hội tụ nhanh, nhưng dường như không ai biết chính xác tại sao nó lại xảy ra. Cách đây một thời gian, tôi đã hỏi Boyd và Parikh về điều này qua email và Parikh nghĩ rằng nó có thể được giải thích bằng cách diễn giải phương pháp trong bối cảnh hệ thống kiểm soát. Một lời giải thích heuristic khác về hiện tượng này được tìm thấy trong phần phụ lục của bài báo sau,l1
Goldstein, Tom và Stanley Osher. "Phương pháp Bregman phân chia cho các vấn đề thường xuyên L1." Tạp chí SIAM về Khoa học hình ảnh 2.2 (2009): 323-343. ftp://ftp.math.ucla.edu/pub/camreport/cam08-29.pdf
Tất nhiên bây giờ khó khăn nằm ở việc giải các bài toán con cập nhật và cho tình huống cụ thể của bạn. Do Lagrangian là bậc hai theo , nên bài toán con cập nhật chỉ đơn giản yêu cầu giải một hệ tuyến tính. Biểu đồ con có vẻ khó hơn vì nó không đặc biệt, nhưng hóa ra có một công thức chính xác cho giải pháp có thể được áp dụng từng phần tử! Bây giờ chúng tôi thảo luận về các bài toán con này chi tiết hơn và chỉ định chúng cho vấn đề trong bài viết gốc.xzzzx
Thiết lập cho chương trình con cập nhật (hệ thống tuyến tính)z
Đối với bản cập nhật , chúng tôi có
z
argminzL(xk,z,λk,γk)=argminzα2||x−z+1αγ||2+β2||Az−b+1βλ||2.
Chuyên về vấn đề của bạn, điều này trở thành,
argminZJ,ZBα2||Jk+1−ZJ+1αΓJ||2Fro+α2||Bk+1−ZB+1αΓB||2Fro+β2||MZJ+ZBY−X+1αΛ||2Fro,
trong đó biểu thị định mức Frobenius (yếu ). Đây là một vấn đề tối thiểu hóa bậc hai, trong đó các điều kiện tối ưu hóa bậc nhất có thể được tìm thấy bằng cách lấy các đạo hàm riêng của mục tiêu đối với và và đặt chúng về 0. Đây là,
||⋅||Frol2ZJZB
00=−α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
Như đã lưu ý trong các nhận xét của người đăng ban đầu Justin Solomon, hệ thống này cho là đối xứng nên độ dốc liên hợp là một phương pháp không có ma trận lý tưởng. Một phần sau thảo luận về hệ thống này và cách giải quyết / điều kiện tiên quyết chi tiết hơn.ZJ,ZB
Giải bài toán cập nhật (giải pháp ngưỡng phân tích)x
Bây giờ chúng ta chuyển sang chương trình con ,
x
argminxL(x,zk,λk,γk)=argminx∑i|xi|+α2||x−zk+1αγk||2
Điều đầu tiên cần thấy là tổng có thể được chia thành phần tử theo phần tử,
∑i|xi|+α2||x−zk+1αγk||2=∑i|xi|+α2∑i(xi−zki+1αγki)2,
Vì vậy, chúng ta có thể giải quyết song song phần tử bài toán bằng phần tử, thu được
xk+1i=argminxi|xi|+α2(xi−zki+1αγki)2.
Dạng chung của phương trình này là,
mins|s|+α2(s−t)2.
Hàm giá trị tuyệt đối đang cố gắng kéo điểm tối ưu về phía , trong khi thuật ngữ bậc hai đang cố gắng kéo điểm tối ưu về phía . do đó, giải pháp thực sự nằm ở đâu đó trên đoạn giữa hai phần, với việc tăng có xu hướng kéo điểm tối ưu về phía và giảm kéo điểm tối ưu về .s=0s=t[0,t)αtα0
Đây là một hàm lồi nhưng nó không khác biệt ở mức 0. Điều kiện cho một điểm tối thiểu hóa là phần phụ của mục tiêu tại điểm đó chứa 0. Thuật ngữ bậc hai có đạo hàm và hàm giá trị tuyệt đối có đạo hàm cho , tập hợp con có giá trị là khoảng khi và đạo hàm cho . Do đó, chúng ta có được hàm con cho hàm mục tiêu tổng thể,
α(s−t)−1s<0[−1,1]s=01s>0
∂s(|s|+α2(s−t)2)=⎧⎩⎨1+α(s−t)[−1,1]+αt,−1+α(s−t),s>0s=0,s<0.
Từ đó, chúng ta thấy rằng phần con của mục tiêu tại chứa khi và chỉ khi , trong trường hợp đó là bộ thu nhỏ. Mặt khác, nếu không phải là bộ giảm thiểu, thì chúng ta có thể đặt đạo hàm một giá trị bằng 0 và giải cho bộ giảm thiểu. Làm điều này mang lại,
s=00|t|≤1αs=0s=0
argmins|s|+α2(s−t)2=⎧⎩⎨⎪⎪t−1α,0,t+1α,t>1α,|t|≤1α,t<−1α
Chuyên môn hóa kết quả này một lần nữa cho vấn đề thực sự mà chúng tôi đang cố gắng giải quyết trong câu hỏi ban đầu trong đó mang lại,
Bản cập nhật cho chỉ đơn giản là
t=Zkij−1αΓkij
Jk+1ij=⎧⎩⎨⎪⎪⎪⎪Zkij−1αΓkij−1α,0,Zkij−1αΓkij+1α,Zkij−1αΓkij>1α,|Zkij−1αΓkij|≤1α,Zkij−1αΓkij<−1α.
BBk+1=ZB−1αΓB,
như ghi chú của poster gốc Justin Solomon trong các bình luận. Nhìn chung, thực hiện cập nhật cho chỉ cần lặp qua các mục trong ma trận của bạn và đánh giá các công thức trên cho mỗi mục.J,B
Bổ sung Schur cho hệ thốngZJ,ZB
Bước tốn kém nhất của phép lặp là giải hệ thống,
00=−α2(Jk+1−ZJ+1αΓJ)+β2MT(MZJ+ZBY−X+1βΛ),=−α2(Bk+1−ZB+1αΓB)+β2(MZJ+ZBY−X+1βΛ)YT.
Cuối cùng, cần có một số nỗ lực để xây dựng một bộ giải / điều kiện tiên quyết tốt cho hệ thống này. Trong phần này, chúng tôi làm như vậy bằng cách vector hóa , tạo thành phần bù Schur , thực hiện một số thao tác sản phẩm Krnoecker và sau đó hủy kích hoạt. Hệ thống bổ sung Schur kết quả là một phương trình Sylvester được sửa đổi một chút .
Trong những gì sau đây các danh tính sau đây về vector hóa và các sản phẩm Kronecker là hoàn toàn chính:
- vec(ABC)=(CT⊗A)vec(B),
- (A⊗B)(C⊗D)=AC⊗BD ,
- (A⊗B)−1=A−1⊗B−1 và
- (A⊗B)T=AT⊗BT .
Các danh tính này giữ bất cứ khi nào kích thước ma trận và tính không khả dụng sao cho mỗi bên của phương trình là một biểu thức hợp lệ.
Hình thức vector hóa của hệ thống là,
(αI+β[I⊗MTMY⊗M(Y⊗M)TYYT⊗I])[vec(ZJ)vec(ZB)]=[vec(αJ+βMTX+ΓJ−MTΛ)vec(αB+βXYT+ΓB−ΛYT)],
hoặc,
[I⊗(αI+βMTM)βY⊗Mβ(Y⊗M)T(αI+βYYT)⊗I][vec(ZJ)vec(ZB)]=[vec(F)vec(G)],
Trong đó và là ký hiệu ngưng tụ cho phía bên tay phải. Bây giờ chúng tôi thực hiện bổ sung block-gaussian-Elimination / Schur để loại bỏ khối dưới bên trái của ma trận, trong quá trình ngưng tụ các sản phẩm Kronecker. Đây là,
FG
[I⊗(αI+βMTM)0β(Y⊗M)T(αI+βYYT)⊗I−β2YYT⊗M(αI+βMTM)−1MT]…⋅[vec(ZJ)vec(ZB)]=[vec(F)vec(G)−βY⊗M(αI+βMTM)−1vec(F)].
Unvectorizing, hai phương trình chúng ta phải giải theo trình tự là,
ZB(αI+βYYT)−(βM(αI+βMTM)−1MT)ZB(βYYT)…=G−βM(αI+βMTM)−1FYT
(αI+βMTM)ZJ=F−βMTZBY.
Giải pháp của hệ thống bổ sung Schur khi vuông, thứ hạng caoY,M
Trong phần này, chúng tôi giải quyết hệ thống bổ sung Schur cho (phương trình 1. ở trên) bằng cách sử dụng các SVD đầy đủ được tính toán trước của ma trận và áp dụng một phiên bản sửa đổi của thuật toán Bartels-Stewart cho Sylvester phương trình. Thuật toán được sửa đổi một chút từ phiên bản tiêu chuẩn để tính thêm cho thuật ngữ thứ hai, điều này làm cho nó không hoàn toàn là phương trình Sylvester. Khi được tìm thấy thông qua phương trình đầu tiên, có thể được tìm thấy từ phương trình thứ hai một cách dễ dàng. Phương trình thứ hai là tầm thường để giải quyết thông qua bất kỳ phương pháp nào bạn muốn.ZBYYT,MMT,MTMβYYTZBZJ
Phương pháp này đòi hỏi một chi phí trả trước để tính toán trước hai SVD đầy đủ trước khi quá trình ADMM bắt đầu, nhưng sau đó nhanh chóng được áp dụng trong các lần lặp ADMM thực tế. Vì phương thức xử lý các SVD đầy đủ của các ma trận ràng buộc, nên nó phù hợp khi chúng gần với thứ hạng vuông và cao. Một phương pháp phức tạp hơn sử dụng các SVD xếp hạng thấp cũng có thể, nhưng được trình bày trong phần sau.
Phương pháp phát triển như sau. Hãy
biểu thị precomputed đầy đủ phân tách giá trị độc nhất vô nhị và ngưng tụ phía bên tay phải là . Sau đó phương trình đầu tiên trở thành,
Nhân bởi các yếu tố trực giao để xóa bên trái và bên phải và thiết lập một ẩn số tạm thời mới , điều này tiếp tục trở thành,
QDQT=YYT,WΣWT=MMT,VTVT=MTM
HZBQ(αI+D)QT−WβΣ(αI+Σ)−1ΣWTZBQDQT=H.
A=WTZBQA(αI+D)−βΣ(αI+Σ)−1ΣAD=WHQT.
Bây giờ chúng ta có thể tìm bằng cách giải hệ chéo ,
A
((αI+D)⊗I+D⊗βΣ(αI+Σ)−1Σ)vec(A)=vec(WHQT).
Khi tìm thấy , chúng tôi tính và biết chúng tôi giải phương trình thứ hai ở trên cho , điều này không quan trọng vì chúng tôi đã có phân tách eigenvalue cho .AZB=WAQTZBZJMTM
Chi phí trả trước là tính toán hai phép phân tách xác định giá trị xác định dương đối xứng của và , và sau đó chi phí mỗi lần lặp cho một giải pháp hoàn chỉnh bị chi phối bởi một số phép nhân ma trận, theo cùng một thứ tự cường độ như làm 1 phụ đề CG. Nếu các phân tách eigenvalue trả trước quá tốn kém, thì chúng có thể được tính toán một cách không chính xác bằng cách, ví dụ, chấm dứt sớm lặp Lanczos và giữ các hàm riêng lớn nhất. Sau đó, phương pháp có thể được sử dụng như một điều kiện tiên quyết tốt cho CG hơn là một người giải trực tiếp.MTMYYT
Phương pháp giải khi rất hình chữ nhật hoặc có xấp xỉ thứ hạng thấpM,Y
Bây giờ chúng tôi chú ý đến việc giải quyết hoặc tiền điều kiện khi a) các ma trận đầu vào rất hình chữ nhật - có nghĩa là chúng có nhiều hàng hơn các cột hoặc ngược lại - hoặc b) chúng có xấp xỉ thứ hạng thấp. Đạo hàm dưới đây liên quan đến việc sử dụng rộng rãi công thức Woodbury, bổ sung Schur và các thao tác tương tự khác.ZJ,ZBM,Y
Chúng tôi bắt đầu với hệ thống bổ sung Schur của chúng tôi,
(αI+βYYT)⊗I−β2YYT⊗M(αI+βMTM)−1MT.
Một vài thao tác biến hệ thống này thành một dạng đối xứng hơn,
(αI+βI⊗MMT+βYYT⊗I)vec(ZB)=(I⊗(I+βαMMT))vec(H).
Bây giờ chúng tôi mang lại các xấp xỉ thứ hạng thấp. Đặt
là các xấp xỉ thứ hạng thấp của SVD hoặc xấp xỉ của và ( là giữ chỗ và không đã sử dụng). Việc thay thế chúng vào hệ thống của chúng tôi sẽ tạo ra ma trận nghịch đảo sau mà chúng tôi muốn áp dụng,
QD1/2QT2=YWΣ1/2VT=M
YMQ2(αI+βI⊗WΣWT+βYYT⊗I)−1.
Vì ma trận mà chúng ta đảo ngược là một bản cập nhật thứ hạng thấp cho danh tính, nên chiến lược hợp lý là thử sử dụng công thức Woodbury,
(A+UCUT)−1=A−1−A−1U(C−1+UTA−1U)−1UTA−1.
Tuy nhiên, một số chăm sóc là cần thiết vì các mảnh xếp hạng thấp và không trực giao. Do đó, để áp dụng công thức Woodbury, chúng tôi thu thập cả các bản cập nhật thứ hạng thấp thành một bản cập nhật lớn duy nhất. Doint như vậy và áp dụng công thức Woodbury năng suất,
I⊗WY⊗I
(1αI+β[I⊗WQ⊗I][I⊗ΣD⊗Y][I⊗ΣTQT⊗I])−1=αI−βα2[I⊗WQ⊗I][I⊗(Σ−1+βαI)βαQT⊗WβαQ⊗WT(D−1+βαI)⊗Y]−1[I⊗ΣTQT⊗I].
Nghịch đảo lõi có thể được tính theo công thức nghịch đảo khối 2 x 2,
[ABTBC]−1=[(A−BC−1BT)−1−C−1BT(A−BC−1BT)−1−A−1B(C−BTA−1B)−1(C−BTA−1B)−1].
Bài đăng này đã đủ dài, vì vậy tôi sẽ tiết kiệm các chi tiết dài của phép tính, nhưng kết quả cuối cùng là việc cắm các mô hình con cần thiết vào nghịch đảo khối và nhân mọi thứ thông qua việc mang lại hình thức rõ ràng sau cho nghịch đảo tổng thể,
(αI+βI⊗MMT+βYYT⊗I)−1=1αI−βα2(t11+s11+t12+s12+t21+s21+t22+s22),
trong đó
t11s11t12s12t21s21t22s22D11D22lh=αβI⊗Wl−1WT=(Q⊗Wl−1)D11(QT⊗l−1WT)=−αβQh−1QT⊗Wl−1WT=−(Qh−1⊗Wl−1)D22(h−1QT⊗WT)=t12=−(Qh−1⊗W)D22(h−1QT⊗l−1WT)=αβQh−1QT⊗I=(Qh−1⊗W)D22(h−1QT⊗WT)=αβ(h⊗I−I⊗l−1)−1=αβ(I⊗l−h−1⊗I)−1=αβΣ−1+I=αβD−1+I.
Trong biểu mẫu này, chúng ta có thể áp dụng nghịch đảo và tìm thuật ngữ theo thuật ngữ thông qua 8 bánh sandwich nhân ma trận trái và phải. Công thức chung để áp dụng tổng số sản phẩm Kronecker là,
ZB
((A1⊗B1)+(A2⊗B2)+…)vec(C)=vec(BT1CA1+BT2CA2+…).
Lưu ý rằng tất cả các nghịch đảo rõ ràng mà chúng tôi đã kết thúc là đường chéo, vì vậy không có gì để được "giải quyết".
Mã giải tuyến tính
Tôi đã triển khai hai bộ giải ở trên trong Matlab. Dường như hoạt động tốt. Mã người giải quyết ở đây.zJ,ZB
https://github.com/NickAlger/MeshADMM/blob/master/zkronsolve.m
Một kịch bản thử nghiệm để kiểm tra rằng các bộ giải làm việc ở đây. Nó cũng cho thấy bằng cách ví dụ cách gọi mã bộ giải.
https://github.com/NickAlger/MeshADMM/blob/master/test_zkronsolve.m
Kết luận
Các phương thức kiểu ADMM rất phù hợp cho các vấn đề như thế này, nhưng bạn sẽ cần phải triển khai thực hiện của riêng mình. Cấu trúc tổng thể của phương thức khá đơn giản nên việc thực hiện không quá khó trong một cái gì đó như MATLAB.
Phần còn thiếu trong bài đăng này cần được chỉ định để xác định đầy đủ phương pháp cho vấn đề của bạn là một lựa chọn tham số hình phạt . May mắn thay, phương pháp này thường khá mạnh mẽ miễn là các tham số vales không điên. Bài báo Boyd và Parikh có một phần về các tham số hình phạt cũng như các tham chiếu trong đó, nhưng tôi sẽ chỉ thử nghiệm các tham số cho đến khi bạn có được tỷ lệ hội tụ hợp lý.α,β
Các chiến lược của bộ giải được trình bày có hiệu quả cao nếu các ma trận ràng buộc là a) dày đặc, vuông và xếp hạng cao hoặc b) có xấp xỉ thứ hạng thấp tốt. Một giải hữu ích mà có thể là một chủ đề công việc trong tương lai sẽ là một giải tối ưu hóa cho các trường hợp sau đây - ma trận hạn chế là thưa thớt và squareish và xếp hạng cao, nhưng tồn tại một preconditioner tốt cho . Đây sẽ là trường hợp nếu, ví dụ, là một Laplacian rời rạc.ZJ,ZBMαI+MMTM