Tại sao sử dụng độ dốc giảm dần cho hồi quy tuyến tính, khi giải pháp toán học dạng đóng có sẵn?


74

Tôi đang tham gia các khóa học về Machine Learning trực tuyến và tìm hiểu về Gradient Descent để tính toán các giá trị tối ưu trong giả thuyết.

h(x) = B0 + B1X

tại sao chúng ta cần sử dụng Gradient Descent nếu chúng ta có thể dễ dàng tìm thấy các giá trị với công thức dưới đây? Điều này có vẻ thẳng về phía trước và dễ dàng quá. nhưng GD cần nhiều lần lặp để có giá trị.

B1 = Correlation * (Std. Dev. of y/ Std. Dev. of x)

B0 = Mean(Y) – B1 * Mean(X)

LƯU Ý: Được thực hiện như trong https://www.dezyre.com/data-science-in-r-programming-tutorial/linear-regression-tutorial

Tôi đã kiểm tra các câu hỏi dưới đây và đối với tôi nó không rõ ràng để hiểu.

Tại sao cần phải giảm độ dốc?

Tại sao tối ưu hóa được giải quyết với độ dốc giảm dần chứ không phải bằng một giải pháp phân tích?

Các câu trả lời trên so sánh GD so với sử dụng các công cụ phái sinh.


5
Bạn không cần giảm độ dốc để ước tính các hệ số hồi quy tuyến tính.
Phục hồi Monica

8
@Sycorax "không cần" là một tuyên bố mạnh mẽ. Phương pháp lặp có thể hữu ích cho dữ liệu lớn. Nói ma trận dữ liệu rất lớn không thể phù hợp với bộ nhớ.
Haitao Du

8
@ hxd1011 Cảm ơn bạn đã làm rõ khía cạnh thực tế này cho vấn đề. Tôi đã suy nghĩ theo thuật ngữ thuần túy.
Phục hồi Monica

Câu trả lời:


90

Lý do chính tại sao độ dốc được sử dụng cho hồi quy tuyến tính là độ phức tạp tính toán: nó rẻ hơn về mặt tính toán (nhanh hơn) để tìm giải pháp sử dụng độ dốc gốc trong một số trường hợp.

β=(XX)1XY
XXXXK×K

Vì vậy, việc giảm độ dốc cho phép tiết kiệm rất nhiều thời gian cho các tính toán. Hơn nữa, cách nó được thực hiện cho phép song song hóa tầm thường, tức là phân phối các tính toán trên nhiều bộ xử lý hoặc máy. Giải pháp đại số tuyến tính cũng có thể được song song nhưng nó phức tạp hơn và vẫn đắt tiền.

Ngoài ra, có các phiên bản giảm độ dốc khi bạn chỉ giữ một phần dữ liệu của mình trong bộ nhớ, hạ thấp các yêu cầu đối với bộ nhớ máy tính. Nhìn chung, đối với các vấn đề lớn hơn, nó hiệu quả hơn giải pháp đại số tuyến tính.

Điều này càng trở nên quan trọng hơn khi tính chiều tăng lên, khi bạn có hàng ngàn biến như trong học máy.

Ghi chú . Tôi đã rất ngạc nhiên bởi có bao nhiêu sự chú ý được dành cho việc giảm độ dốc trong các bài giảng của Ng. Ông dành thời gian không cần thiết để nói về nó, có thể 20% toàn bộ khóa học. Đối với tôi đó chỉ là một chi tiết triển khai, đó chính xác là cách bạn tìm thấy tối ưu. Chìa khóa nằm ở việc xây dựng vấn đề tối ưu hóa, và chính xác bạn thấy nó như thế nào là không quan trọng. Tôi sẽ không lo lắng về nó quá nhiều. Để lại cho những người làm khoa học máy tính và tập trung vào những gì quan trọng đối với bạn như một nhà thống kê.

Nói xong tôi phải hội đủ điều kiện bằng cách nói rằng nó thực sự là quan trọng để hiểu các tính toán phức tạp và ổn định bằng số của các thuật toán giải pháp. Tôi vẫn không nghĩ rằng bạn phải biết chi tiết về cách triển khai và mã của các thuật toán. Đó không phải là cách sử dụng tốt nhất thời gian của bạn như một nhà thống kê thường.

Lưu ý 1 . Tôi đã viết rằng bạn phải đảo ngược ma trận cho các mục đích mô phạm và đó không phải là cách bạn thường giải phương trình. Trong thực tế, các vấn đề đại số tuyến tính được giải quyết bằng cách sử dụng một số loại nhân tố như QR, trong đó bạn không trực tiếp đảo ngược ma trận mà thực hiện một số thao tác tương đương toán học khác để có câu trả lời. Bạn làm điều này bởi vì đảo ngược ma trận là một hoạt động tốn kém và không ổn định về số lượng trong nhiều trường hợp.

Điều này mang đến một lợi thế nhỏ khác của thuật toán giảm độ dốc như một hiệu ứng phụ: nó hoạt động ngay cả khi ma trận thiết kế có vấn đề về cộng tuyến. Đường dẫn đại số tuyến tính thông thường sẽ nổ tung và giảm dần độ dốc sẽ tiếp tục ngay cả đối với các dự đoán cộng tuyến.


17
Nhưng Ng một người làm khoa học máy tính.
amip nói rằng Phục hồi lại

21
Về nhận xét của bạn: Là một nhà toán học, tôi đã từng đồng ý. Nhưng sự hiểu biết của tôi bây giờ là trong học máy hiện đại, phương pháp tối ưu hóa vốn đã gắn liền với mục tiêu được tối ưu hóa. Một số hình thức chính quy, như bỏ học, được thể hiện rõ ràng hơn về mặt thuật toán thay vì mục tiêu. Tóm lại: nếu bạn lấy mạng sâu, giữ chức năng mục tiêu nhưng thay đổi phương thức tối ưu hóa, bạn có thể có hiệu suất rất khác nhau. Trên thực tế, đôi khi một trình tối ưu hóa tốt hơn mang lại kết quả tồi tệ hơn trong thực tế ...
A. Rex

14
XXXXβ=Xyβ

3
@AnderBiguri Giải pháp với hệ số QR, mặt khác, ổn định lạc hậu, do đó, nó cung cấp một giải pháp chính xác nhất có thể với sự không chắc chắn trong dữ liệu đầu vào.
Federico Poloni

7
β=(XtX)1XtyXtXβ=Xty

21

Đầu tiên, tôi thực sự khuyên bạn nên đọc hai bài viết sau (nếu không trùng lặp)

Vui lòng kiểm tra câu trả lời của JM trong

Thuật toán nào được sử dụng trong hồi quy tuyến tính?

Vui lòng kiểm tra câu trả lời của Mark (từ quan điểm ổn định số) trong

Chúng ta có cần giảm độ dốc để tìm các hệ số của mô hình hồi quy tuyến tính không?


minimize Axb2
2AT(Axb)0
ATAx=ATb

Ở cấp độ cao, có hai cách để giải quyết một hệ thống tuyến tính. Phương pháp trực tiếp và phương pháp lặp. Lưu ý phương pháp trực tiếp đang giải quyết và độ dốc gốc (một ví dụ phương pháp lặp) đang giải quyết trực tiếp .ATAx=ATbminimize Axb2

So sánh với các phương thức trực tiếp (Nói phân tách QR / LU ). Phương pháp lặp có một số lợi thế khi chúng ta có một lượng lớn dữ liệu hoặc dữ liệu rất thưa thớt.

Mặt khác, tôi tin rằng một trong những lý do Andrew Ng nhấn mạnh là vì đây là phương pháp chung (phương pháp được sử dụng rộng rãi nhất trong học máy) và có thể được sử dụng trong các mô hình khác như hồi quy logistic hoặc mạng lưới thần kinh.


Bạn hoàn toàn đúng. SGD rất hữu ích trong khi xử lý một lượng lớn dữ liệu. Phương pháp mà Giáo sư Ng trình diễn là phương pháp cổ điển và thuần túy nhất. Người ta nên bắt đầu từ thời điểm đó để có một ý tưởng rõ ràng. Nếu người ta có thể hiểu phương châm của điều đó thì toàn bộ ước lượng tuyến tính sẽ rõ ràng với anh ấy / cô ấy.
Sandipan Karmakar

1
Kích thước của maxtrix dữ liệu thực sự không phải là vấn đề, sử dụng mối quan hệ ; bạn có thể tính và một lần quan sát. Đây thực sự là cách nó được thực hiện ở SAS vào thời mà bộ nhớ máy tính bị hạn chế hơn nhiều so với ngày nay. Số lượng cột trong là yếu tố giới hạn. X T X X T y XXTX=xixiTXTXXTyX
Jbowman

6

Sycorax là chính xác rằng bạn không cần giảm độ dốc khi ước tính hồi quy tuyến tính. Khóa học của bạn có thể đang sử dụng một ví dụ đơn giản để dạy cho bạn độ dốc gốc để mở đầu các phiên bản phức tạp hơn.

Tuy nhiên, một điều gọn gàng mà tôi muốn thêm vào là hiện tại có một phân khúc nghiên cứu nhỏ liên quan đến việc chấm dứt việc hạ độ dốc sớm để ngăn chặn quá mức mô hình.


2
Đối với tuyên bố quá mức, bạn có thể cung cấp liên kết? là thêm thuật ngữ chính quy tốt hơn giới hạn số lần lặp?
Haitao Du

Bạn có thể xem Chương 7 của Deep learning của Goodfellow et al, trong đó đề cập đến việc dừng sớm để ngăn chặn quá mức trong mạng lưới thần kinh.
Batman

2
Chính quy hóa bằng cách dừng sớm không có nghĩa là một kỹ thuật mới; đó là một kỹ thuật nổi tiếng trong, nói, lặp lại Landweber: en.wikipedia.org/wiki/Landweber_iteration
cfh

3

Nếu tôi không sai, tôi nghĩ bạn đang hướng tới MOOC do Giáo sư Andrew Ng. Để tìm các hệ số hồi quy tối ưu, có hai phương pháp có sẵn. Một là bằng cách sử dụng các phương trình bình thường tức là bằng cách tìm ra và thứ hai là bằng cách giảm thiểu ít nhất tiêu chí bình phương bắt nguồn từ giả thuyết bạn đã trích dẫn. Nhân tiện, phương thức thứ nhất tức là phương trình Bình thường là sản phẩm của phương pháp thứ hai tức là phương pháp tối ưu hóa.(XTX)1XTy

Phương pháp bạn đã đề cập tức là sử dụng tương quan, nó chỉ áp dụng cho một yếu tố dự đoán và một lượng chặn. Chỉ cần chú ý đến hình thức. Vậy, khi số lượng người dự đoán nhiều hơn một con số thì lối thoát là gì? Sau đó, người ta phải sử dụng các phương pháp khác, tức là phương trình bình thường hoặc tối ưu hóa.

Bây giờ tại sao tối ưu hóa (ở đây Gradient Descent) mặc dù phương trình bình thường trực tiếp có sẵn. Lưu ý rằng trong phương trình bình thường, người ta phải đảo ngược một ma trận. Bây giờ đảo ngược một ma trận có chi phí cho tính toán trong đó là số lượng hàng trong ma trận tức là các quan sát. Hơn nữa, nếu không có điều kiện thì nó sẽ tạo ra các lỗi tính toán trong ước tính. Vì vậy, nó là loại thuật toán tối ưu hóa Gradient Descent có thể cứu chúng ta khỏi loại vấn đề này. Một vấn đề khác là quá mức và thiếu hụt trong việc ước tính các hệ số hồi quy.N X XO(N3)NXX

Đề nghị của tôi cho bạn là đừng đi giải quyết vấn đề. Cố gắng hiểu lý thuyết. Giáo sư Ng là một trong những Giáo sư giỏi nhất trên thế giới này, người vui lòng dạy Machine Learning trong MOOC. Vì vậy, khi anh ta đang hướng dẫn theo cách này thì nó phải có một số ý định tiềm ẩn. Tôi hy vọng bạn sẽ không quan tâm đến lời nói của tôi.

Tất cả tốt nhất.


5
"Đảo ngược một ma trận" không được khuyến khích. QR ổn định hơn về mặt số để giải quyết một hệ thống tuyến tính.
Haitao Du

1
Tôi đồng ý với lập luận tính toán. Tuy nhiên, việc thừa hoặc thiếu không liên quan gì đến việc sử dụng GD so với phương trình Bình thường, mà thay vào đó là sự phức tạp của mô hình (hồi quy). Cả hai phương pháp (GD nếu nó hoạt động đúng) đều tìm ra cùng một giải pháp bình phương nhỏ nhất (nếu nó tồn tại), và do đó sẽ vượt quá hoặc không phù hợp với dữ liệu với cùng một lượng.
Ruben van Bergen

2

Đầu tiên, vâng, lý do thực sự là lý do được đưa ra bởi Tim Atreides; đây là một bài tập sư phạm.

Tuy nhiên, có thể, mặc dù không có khả năng, người ta muốn thực hiện hồi quy tuyến tính trên, giả sử, hàng nghìn tỷ điểm dữ liệu được truyền trực tiếp từ một ổ cắm mạng. Trong trường hợp này, việc đánh giá ngây thơ về giải pháp phân tích sẽ là không khả thi, trong khi một số biến thể của độ dốc dốc ngẫu nhiên / thích ứng sẽ hội tụ đến giải pháp chính xác với chi phí bộ nhớ tối thiểu.

(người ta có thể, đối với hồi quy tuyến tính, cải tổ giải pháp phân tích thành một hệ thống tái phát, nhưng đây không phải là một kỹ thuật chung.)


2

Một lý do khác là giảm độ dốc là một phương pháp tổng quát hơn. Đối với nhiều vấn đề về máy học, hàm chi phí không phải là lồi (ví dụ: hệ số ma trận, mạng nơ ron), do đó bạn không thể sử dụng giải pháp dạng đóng. Trong những trường hợp, độ dốc gốc được sử dụng để tìm một số điểm tối ưu cục bộ tốt. Hoặc nếu bạn muốn thực hiện một phiên bản trực tuyến hơn một lần nữa, bạn phải sử dụng thuật toán dựa trên độ dố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.