Sự khác biệt giữa Gradient Descent và Stochastic Gradient Descent là gì?


Câu trả lời:


26

Để giải thích đơn giản nhanh chóng:

Trong cả độ dốc gốc (GD) và độ dốc dốc ngẫu nhiên (SGD), bạn cập nhật một bộ tham số theo cách lặp để giảm thiểu hàm lỗi.

Trong khi ở GD, bạn phải chạy qua TẤT CẢ các mẫu trong tập huấn luyện của mình để thực hiện cập nhật duy nhất cho một tham số trong một lần lặp cụ thể, trong SGD, mặt khác, bạn chỉ sử dụng MỘT hoặc SUBSET mẫu đào tạo từ tập huấn luyện của mình để thực hiện cập nhật cho một tham số trong một lần lặp cụ thể. Nếu bạn sử dụng SUBSET, nó được gọi là Minibatch Stochastic gradient Descent.

Do đó, nếu số lượng mẫu đào tạo lớn, thực tế là rất lớn, thì việc sử dụng độ dốc giảm dần có thể mất nhiều thời gian vì trong mỗi lần lặp khi bạn cập nhật các giá trị của các tham số, bạn đang chạy qua tập huấn luyện hoàn chỉnh. Mặt khác, sử dụng SGD sẽ nhanh hơn vì bạn chỉ sử dụng một mẫu đào tạo và nó bắt đầu tự cải thiện ngay từ mẫu đầu tiên.

SGD thường hội tụ nhanh hơn nhiều so với GD nhưng chức năng lỗi không được giảm thiểu tối đa như trong trường hợp GD. Thông thường trong hầu hết các trường hợp, xấp xỉ gần đúng mà bạn nhận được trong SGD cho các giá trị tham số là đủ vì chúng đạt các giá trị tối ưu và tiếp tục dao động ở đó.

Nếu bạn cần một ví dụ về trường hợp này với trường hợp thực tế, hãy kiểm tra ghi chú của Andrew NG tại đây, nơi anh ấy cho bạn thấy rõ các bước liên quan đến cả hai trường hợp. cs229-ghi chú

Nguồn: Chủ đề Quora


cảm ơn, ngắn gọn như thế này? Có ba biến thể của Gradient Descent: Batch, Stochastic và Minibatch: Batch cập nhật các trọng số sau khi tất cả các mẫu đào tạo đã được đánh giá. Stochastic, trọng lượng được cập nhật sau mỗi mẫu đào tạo. Minibatch kết hợp tốt nhất của cả hai thế giới. Chúng tôi không sử dụng bộ dữ liệu đầy đủ, nhưng chúng tôi không sử dụng điểm dữ liệu duy nhất. Chúng tôi sử dụng một bộ dữ liệu được chọn ngẫu nhiên từ bộ dữ liệu của chúng tôi. Bằng cách này, chúng tôi giảm chi phí tính toán và đạt được phương sai thấp hơn so với phiên bản ngẫu nhiên.
Engin

5

Trong Gradient Descent hoặc Batch Gradient Descent, chúng tôi sử dụng toàn bộ dữ liệu đào tạo cho mỗi epoch trong khi đó, trong Stochastic Gradient Descent, chúng tôi chỉ sử dụng một ví dụ đào tạo duy nhất cho mỗi epoch và Gradient Descent Mini nằm ở giữa hai thái cực này, trong đó chúng tôi có thể sử dụng một lô nhỏ (một phần nhỏ) dữ liệu huấn luyện trên mỗi epoch, quy tắc ngón tay cái để chọn kích thước của lô nhỏ có sức mạnh như 2, 32, 64, 128, v.v.
Để biết thêm chi tiết: ghi chú bài giảng cs231n


cảm ơn, ngắn gọn như thế này? Có ba biến thể của Gradient Descent: Batch, Stochastic và Minibatch: Batch cập nhật các trọng số sau khi tất cả các mẫu đào tạo đã được đánh giá. Stochastic, trọng lượng được cập nhật sau mỗi mẫu đào tạo. Minibatch kết hợp tốt nhất của cả hai thế giới. Chúng tôi không sử dụng bộ dữ liệu đầy đủ, nhưng chúng tôi không sử dụng điểm dữ liệu duy nhất. Chúng tôi sử dụng một bộ dữ liệu được chọn ngẫu nhiên từ bộ dữ liệu của chúng tôi. Bằng cách này, chúng tôi giảm chi phí tính toán và đạt được phương sai thấp hơn so với phiên bản ngẫu nhiên.
Engin

4

Việc bao gồm từ stochastic đơn giản có nghĩa là các mẫu ngẫu nhiên từ dữ liệu huấn luyện được chọn trong mỗi lần chạy để cập nhật tham số trong quá trình tối ưu hóa, trong khuôn khổ giảm độ dốc .

Làm như vậy không chỉ tính toán các lỗi và cập nhật trọng số trong các lần lặp nhanh hơn (bởi vì chúng tôi chỉ xử lý một lựa chọn mẫu nhỏ trong một lần), nó cũng thường giúp tiến tới tối ưu nhanh hơn. Hãy xem các câu trả lời ở đây , để biết thêm thông tin về lý do tại sao sử dụng xe buýt nhỏ ngẫu nhiên để đào tạo mang lại lợi thế.

Một nhược điểm có lẽ là đường dẫn đến tối ưu (giả sử nó sẽ luôn luôn tối ưu như nhau) có thể ồn ào hơn nhiều. Vì vậy, thay vì một đường cong mất mịn đẹp, cho thấy lỗi giảm xuống như thế nào trong mỗi lần lặp của độ dốc giảm dần, bạn có thể thấy một cái gì đó như thế này:

đường cong mất mát ồn ào

Chúng ta thấy rõ sự mất mát giảm dần theo thời gian, tuy nhiên có sự thay đổi lớn từ epoch sang epoch (đợt đào tạo đến đợt đào tạo), do đó đường cong rất ồn.

Điều này chỉ đơn giản là vì chúng tôi tính toán sai số trung bình trên tập hợp con được chọn ngẫu nhiên / ngẫu nhiên của chúng tôi, từ toàn bộ tập dữ liệu, trong mỗi lần lặp. Một số mẫu sẽ tạo ra lỗi cao, một số thấp. Vì vậy, trung bình có thể khác nhau, tùy thuộc vào mẫu nào chúng tôi sử dụng ngẫu nhiên cho một lần lặp lại độ dốc.


cảm ơn, ngắn gọn như thế này? Có ba biến thể của Gradient Descent: Batch, Stochastic và Minibatch: Batch cập nhật các trọng số sau khi tất cả các mẫu đào tạo đã được đánh giá. Stochastic, trọng lượng được cập nhật sau mỗi mẫu đào tạo. Minibatch kết hợp tốt nhất của cả hai thế giới. Chúng tôi không sử dụng bộ dữ liệu đầy đủ, nhưng chúng tôi không sử dụng điểm dữ liệu duy nhất. Chúng tôi sử dụng một bộ dữ liệu được chọn ngẫu nhiên từ bộ dữ liệu của chúng tôi. Bằng cách này, chúng tôi giảm chi phí tính toán và đạt được phương sai thấp hơn so với phiên bản ngẫu nhiên.
Engin

Nn=1

Tks, điều này là rõ ràng!
datdinhquoc
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.