Phối hợp với độ dốc gốc


23

Tôi đã tự hỏi những trường hợp sử dụng khác nhau là gì đối với hai thuật toán, Phối hợp gốcGiảm dần .

Tôi biết rằng gốc tọa độ có vấn đề với các hàm không trơn tru nhưng nó được sử dụng trong các thuật toán phổ biến như SVM và LASSO.

Tuy nhiên, độ dốc giảm dần được tôi sử dụng rộng rãi hơn, đặc biệt là với sự hồi sinh của ANN và cho nhiều tác vụ học máy khác.

Câu hỏi của tôi là: Loại vấn đề nào phù hợp với một vấn đề nhưng không phải là vấn đề khác, và về mặt nào điều gì làm cho sự phối hợp giảm dần phù hợp cho SVM và LASSO, nhưng phù hợp với độ dốc giảm dần cho ANN?

Làm thế nào nên chọn giữa hai khi chọn một thuật toán tối ưu hóa?

Câu trả lời:


7

Tôi nghĩ nó thường là một vấn đề đơn giản / dễ dàng như thế nào để tìm ra độ dốc của phần trơn tru của hàm và / hoặc toán tử proximal của hình phạt.

Đôi khi, việc tìm ra một giải pháp chính xác cho vấn đề trong trường hợp với một biến duy nhất (hoặc một khối hoặc biến) đơn giản hơn rất nhiều so với việc giải quyết đồng thời tất cả các biến. Mặt khác, nó quá đắt để tính toán độ dốc so với các dẫn xuất riêng lẻ. Ngoài ra, sự hội tụ của gốc tọa độ giống như đối với ista, , trong đó là số lần lặp, nhưng đôi khi nó có thể hoạt động tốt hơn so với cả ISTA và FISTA, xem ví dụ http: //statweb.stanford .edu / ~ tibs / so sánh.txt .1/k2k

Những điều như vậy sẽ ảnh hưởng đến sự lựa chọn phối hợp gốc so với ISTA / FISTA, ví dụ.


Vì vậy, những trường hợp mà tọa độ gốc (CD) sẽ nhanh hơn? Có một số loại chức năng cụ thể mà CD sẽ là ứng cử viên tốt hơn không?
Bar

Tôi không thể nói rằng một lớp cụ thể của chức năng sẽ nhanh hơn với CD hơn so với các phương pháp khác, chẳng hạn như ví dụ FISTA. Theo như tôi biết thì điều này phụ thuộc rất nhiều vào chức năng của bạn và mức độ đắt đỏ của việc đánh giá độ dốc và những thứ tương tự. Theo kinh nghiệm của tôi, CD nhanh hơn FISTA về vấn đề Lasso khi có một vài biến trong mô hình (không nhớ, nhưng ít hơn vài nghìn). Lưu ý rằng tôi chỉ so sánh CD với ISTA và FISTA ở đây, các thuật toán khác (như Newton hoặc Pseudo-Newton) có thể sẽ nhanh hơn nhiều; nhưng điều này phụ thuộc hoàn toàn vào vấn đề trong tầm tay.
Tommy L

Làm thế nào đến CD nhanh hơn GD? Có vẻ như logic phản.
Royi

3

Phối hợp gốc xuống cập nhật một tham số tại một thời điểm, trong khi độ dốc gốc cố gắng cập nhật tất cả các tham số cùng một lúc.

Thật khó để xác định chính xác khi nào một thuật toán sẽ làm tốt hơn thuật toán kia. Ví dụ, tôi đã rất sốc khi biết rằng phối hợp gốc là trạng thái nghệ thuật cho LASSO. Và tôi không phải là người duy nhất; xem slide 17 .

Như đã nói, có một số tính năng có thể khiến vấn đề trở nên dễ sửa đổi hơn để phối hợp gốc:

(1) Cập nhật điều kiện nhanh. Nếu, vì một số lý do, vấn đề cho phép một người tối ưu hóa các tham số riêng lẻ rất nhanh, phối hợp gốc có thể sử dụng điều này. Ví dụ, người ta có thể cập nhật một số tham số nhất định chỉ bằng một tập hợp con của dữ liệu, giúp giảm đáng kể chi phí tính toán của các cập nhật này. Một trường hợp khác là nếu có một giải pháp dạng đóng cho một tham số riêng lẻ, có điều kiện dựa trên các giá trị của tất cả các tham số khác.

(2) Các chế độ tương đối độc lập cho các tham số. Nếu giá trị tối ưu của một tham số hoàn toàn độc lập với các giá trị tham số khác, thì một vòng gốc tọa độ sẽ dẫn đến giải pháp (giả sử rằng mỗi cập nhật tọa độ tìm thấy chế độ hiện tại). Mặt khác, nếu chế độ cho một tham số đã cho phụ thuộc rất nhiều vào các giá trị tham số khác, thì việc giảm tọa độ rất có thể sẽ nhích lên, với các cập nhật rất nhỏ ở mỗi vòng.

Thật không may, đối với hầu hết các vấn đề, (2) không giữ được, vì vậy hiếm khi phối hợp gốc không thực hiện tốt so với các thuật toán thay thế. Tôi tin rằng lý do nó hoạt động tốt cho LASSO là có rất nhiều thủ thuật người ta có thể sử dụng để ban hành điều kiện (1).

α


0

Tôi nhận ra rằng đây là một câu hỏi cũ và có một số câu trả lời rất hay. Tôi muốn chia sẻ một số kinh nghiệm cá nhân thực tế.

k

  • Tất cả các xác suất phải tích cực.
  • Tất cả các yếu tố của tập xác suất phải tổng hợp thành một

Đây thực sự là yêu cầu rất nhiều. Với độ dốc gốc, người ta thường xử lý các ràng buộc thông qua chức năng phạt. Ở đây nó sẽ không hoạt động. Ngay khi một giá trị vi phạm một trong những ràng buộc này, mã của bạn thường sẽ gây ra lỗi về số. Vì vậy, người ta phải đối phó với các ràng buộc bằng cách không bao giờ thực sự cho phép thuật toán tối ưu hóa đi qua nó.

Có rất nhiều biến đổi mà bạn có thể áp dụng cho vấn đề của mình để đáp ứng các ràng buộc nhằm cho phép giảm độ dốc. Tuy nhiên, nếu bạn đang tìm kiếm cách dễ nhất và lười biếng nhất để thực hiện điều này thì phối hợp gốc là cách để đi:

ptôi

  • ptôik+1= =ptôik-ηJptôi
  • ptôi= =tối thiểu(tối đa(ptôi,0),1)
  • Pj+1= =Pj1Σtôi= =1nptôi

Đối với một người như tôi làm việc với Python, điều này thường có nghĩa là tôi phải sử dụng một vòng lặp bổ sung có tác động khá tiêu cực đến hiệu suất. Gradient descent cho phép tôi sử dụng Numpy được tối ưu hóa hiệu suất. Người ta có thể có được tốc độ rất tốt với nó, tuy nhiên, điều này là không thể đạt được với việc hạ xuống tọa độ nên tôi thường sử dụng một số kỹ thuật biến đổi.

Vì vậy, kết luận thực sự là việc hạ xuống tọa độ là lựa chọn dễ dàng nhất để xử lý các ràng buộc rất nghiêm ngặt như tham số tốc độ trong phân phối Poisson. Nếu nó trở nên tiêu cực, mã của bạn phàn nàn, vv

Tôi hy vọng điều này đã thêm một chút cái nhìn sâu sắc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.