Tôi đoán rằng lý do tại sao việc thêm hình phạt L1 làm mọi thứ chậm lại đáng kể là hình phạt L1 không khác biệt (nghĩa là giá trị tuyệt đối), trong khi hình phạt L2 là. Điều này có nghĩa là bề mặt của hàm sẽ không được trơn tru, và vì vậy các phương pháp của quasi-Newton tiêu chuẩn sẽ gặp nhiều rắc rối với vấn đề này. Hãy nhớ lại rằng một cách để nghĩ về phương pháp gần đúng của Newton là nó tạo ra một xấp xỉ bậc hai của hàm và sau đó đề xuất ban đầu sẽ tối đa hóa xấp xỉ đó. Nếu phép tính gần đúng bậc hai phù hợp khá tốt với hàm mục tiêu, chúng ta nên kỳ vọng đề xuất sẽ đóng tối đa (hoặc tối thiểu, tùy thuộc vào cách bạn nhìn thế giới). Nhưng nếu hàm mục tiêu của bạn không phân biệt được, phép tính gần đúng bậc hai này có thể rất tệ,
Nếu bạn đã tìm thấy gói R thực hiện BFGS cho các hình phạt L1, bằng mọi cách hãy thử nó. BFGS, nói chung, là một thuật toán rất chung chung để tối ưu hóa. Như trường hợp của bất kỳ thuật toán chung nào, sẽ có rất nhiều trường hợp đặc biệt mà nó không hoạt động tốt. Các thuật toán được thiết kế đặc biệt phù hợp với vấn đề của bạn rõ ràng sẽ làm tốt hơn (giả sử gói đó tốt như tác giả tuyên bố: Tôi chưa nghe nói về lbfss, nhưng có rất nhiều điều tuyệt vời tôi chưa từng nghe đến. Cập nhật : Tôi đã sử dụng gói lbfss của R và triển khai L-BFGS mà họ có khá tốt! Tôi vẫn chưa sử dụng thuật toán OWL-QN, đây là điều mà OP đang đề cập).
Nếu nó không phù hợp với bạn, bạn có thể muốn thử phương pháp "Nelder-Mead" với tối ưu của R. Nó không sử dụng các dẫn xuất để tối ưu hóa. Như vậy, nó thường sẽ chậm hơn trên một chức năng trơn tru nhưng đâm vào một chức năng không chuyên nghiệp như bạn có.