Giảm dần độ dốc so với độ dốc dốc ngẫu nhiên


101

Giả sử chúng ta có một số tập huấn luyện cho . Cũng giả sử chúng tôi chạy một số loại thuật toán học có giám sát trên tập huấn luyện. Các giả thuyết được biểu diễn dưới dạng . Chúng ta cần tìm các tham số để thu nhỏ "khoảng cách" giữa và . Đặt(x(i),y(i))i=1,,mhθ(x(i))=θ0+θ1x(i)1++θnx(i)nθy(i)hθ(x(i))

J(θ)=12i=1m(y(i)hθ(x(i))2

Sau đó, chúng tôi muốn tìm thu nhỏ . Trong độ dốc giảm dần, chúng tôi khởi tạo từng tham số và thực hiện cập nhật sau:θJ(θ)

θj:=θjαθjJ(θ)

Sự khác biệt chính giữa giảm dần độ dốc hàng loạt và giảm dần độ dốc ngẫu nhiên là gì?

Cả hai đều sử dụng quy tắc cập nhật ở trên. Nhưng cái này có tốt hơn cái kia không?

Câu trả lời:


121

Khả năng ứng dụng của việc giảm độ dốc theo lô hoặc ngẫu nhiên thực sự phụ thuộc vào sai số dự kiến.

Độ dốc hàng loạt tính toán độ dốc bằng cách sử dụng toàn bộ dữ liệu. Điều này là tuyệt vời cho lồi, hoặc đa tạp lỗi tương đối trơn tru. Trong trường hợp này, chúng tôi di chuyển phần nào trực tiếp tới một giải pháp tối ưu, cục bộ hoặc toàn cầu. Ngoài ra, độ dốc giảm dần theo lô, với tốc độ học tập bị ủ, cuối cùng sẽ tìm thấy mức tối thiểu nằm trong lưu vực thu hút của nó.

Giảm dần độ dốc ngẫu nhiên (SGD) tính toán độ dốc bằng cách sử dụng một mẫu duy nhất. Hầu hết các ứng dụng của SGD thực sự sử dụng một số mẫu nhỏ, vì những lý do sẽ được giải thích một chút sau. SGD hoạt động tốt (Không tốt, tôi cho rằng, nhưng tốt hơn so với giảm độ dốc hàng loạt) cho các đa tạp lỗi có nhiều cực đại / cực tiểu cục bộ. Trong trường hợp này, độ dốc hơi ồn hơn được tính bằng cách sử dụng số lượng mẫu giảm có xu hướng đưa mô hình ra khỏi cực tiểu cục bộ vào một khu vực hy vọng là tối ưu hơn. Các mẫu đơn thực sự rất ồn ào, trong khi các xe buýt nhỏ có xu hướng giảm trung bình một chút tiếng ồn. Do đó, số lượng giật được giảm khi sử dụng xe buýt nhỏ. Một sự cân bằng tốt được thực hiện khi kích thước xe buýt nhỏ đủ nhỏ để tránh một số cực tiểu nghèo cục bộ, nhưng đủ lớn để nó không ' t tránh cực tiểu toàn cầu hoặc cực tiểu địa phương hoạt động tốt hơn. (Ngẫu nhiên, điều này giả định rằng cực tiểu tốt nhất có lưu vực hấp dẫn lớn hơn và sâu hơn, và do đó dễ rơi vào hơn.)

Một lợi ích của SGD là nó nhanh hơn rất nhiều. Các bộ dữ liệu lớn thường không thể được giữ trong RAM, điều này làm cho việc vector hóa kém hiệu quả hơn nhiều. Thay vào đó, mỗi mẫu hoặc lô mẫu phải được tải, làm việc với, kết quả được lưu trữ, v.v. Minibatch SGD, mặt khác, thường được cố ý làm cho đủ nhỏ để có thể tính toán được.

Thông thường, lợi thế tính toán này được tận dụng bằng cách thực hiện nhiều lần lặp lại của SGD, thực hiện nhiều bước hơn so với việc giảm độ dốc hàng loạt thông thường. Điều này thường dẫn đến một mô hình rất gần với mô hình sẽ được tìm thấy thông qua việc giảm độ dốc hàng loạt, hoặc tốt hơn.

Cách tôi muốn nghĩ về cách SGD hoạt động là tưởng tượng rằng tôi có một điểm đại diện cho phân phối đầu vào của tôi. Mô hình của tôi đang cố gắng học phân phối đầu vào đó. Bao quanh phân phối đầu vào là một khu vực bóng mờ đại diện cho các phân phối đầu vào của tất cả các xe buýt nhỏ có thể tôi có thể lấy mẫu. Đó thường là một giả định hợp lý rằng các phân phối đầu vào của xe buýt nhỏ gần với phân phối đầu vào thực sự. Tất cả các bước giảm dần hàng loạt, đi theo con đường dốc nhất để đạt được phân phối đầu vào thực sự. SGD, mặt khác, chọn một điểm ngẫu nhiên trong khu vực bóng mờ và đi theo con đường dốc nhất về phía điểm này. Tuy nhiên, ở mỗi lần lặp, nó chọn một điểm mới. Trung bình của tất cả các bước này sẽ xấp xỉ phân phối đầu vào thực sự, thường khá tốt.


13
Trong thực tế, không ai sử dụng Batch Gradient Descent. Nó chỉ đơn giản là quá đắt về mặt tính toán mà không thu được nhiều tiền. (Lợi ích là bạn thực sự bước xuống độ dốc "thật".) Khi bạn có chức năng mất không lồi cao, bạn chỉ cần bước theo đúng hướng và cuối cùng bạn sẽ hội tụ ở mức tối thiểu cục bộ. Do đó, xe buýt nhỏ SGD.
sabalaba 11/03/2015

@Jason_L_Bens bạn có tài liệu tham khảo nào không (tài liệu hoặc văn bản trực tuyến) nơi tôi có thể đọc thêm về các thuật toán này?
dùng110320

1
@ user110320 Không nằm ngoài đỉnh đầu của tôi, không, mặc dù chúng là những thuật toán rất phổ biến, và do đó, nên có rất nhiều tài nguyên có sẵn về chủ đề này với một chút tìm kiếm. Nếu bạn đang tìm kiếm một cách tiếp cận chung, tôi khuyên bạn nên đọc một số Kiến trúc học sâu cho AI của Yoshua Bengio cho AI. Đó là nơi tôi đã bắt đầu.
Jason_L_Bens

6

Như câu trả lời khác cho thấy, lý do chính để sử dụng SGD là để giảm chi phí tính toán của độ dốc trong khi vẫn duy trì phần lớn hướng dốc khi lấy trung bình trên nhiều lô nhỏ hoặc mẫu - điều đó chắc chắn giúp đưa bạn đến cực tiểu địa phương.

  1. Tại sao xe buýt nhỏ hoạt động .

Toán học đằng sau điều này là, độ dốc "thực" của hàm chi phí (độ dốc cho lỗi tổng quát hóa hoặc cho các mẫu lớn vô hạn) là kỳ vọng của độ dốc so với phân phối tạo dữ liệu thực ; độ dốc thực tế được tính trên một lô mẫu luôn gần đúng với độ dốc thực với phân phối dữ liệu theo kinh nghiệm . pdatap^data

g=Epdata(J(θ)θ)
Giảm dần độ dốc hàng loạt có thể mang lại cho bạn độ dốc "tối ưu" có thể có trong tất cả các mẫu dữ liệu của bạn, tuy nhiên đó không phải là độ dốc "thực". Một lô nhỏ hơn (xe buýt nhỏ) có thể không tối ưu như lô đầy đủ, nhưng cả hai đều gần đúng - vì vậy, xe buýt nhỏ mẫu đơn (SGD) cũng vậy. Sự khác biệt giữa các lỗi tiêu chuẩn của chúng tỷ lệ nghịch với kích thước của xe buýt nhỏ. Đó là, mE p dmộttmột(g(m))=E p dmộttmột(J(θ)
SE(g^(n))SE(g^(m))=mn
Tức là, giảm lỗi tiêu chuẩn là căn bậc hai của việc tăng kích thước mẫu. Phương trình trên dành cho độ dốc được tính toán trong một bước của độ dốc giảm dần. Khi bạn lặp lại các bước cập nhật độ dốc của xe buýt nhỏ và sử dụng tất cả các mẫu đào tạo cuối cùng trong một epoch, bạn hầu như tính toán giá trị trung bình của độ dốc dựa trên tất cả các mẫu đã cho. Đó là, đối với kích thước xe buýt nhỏ , Từ các phương trình trên, chúng ta có thể kết luận rằng, với một epoch, độ dốc trung bình của bạn với các kích cỡ xe buýt nhỏ khác nhaumm
Ep^data(g^(m))=Ep^data(J(θ)θ)
m (từ một đến toàn bộ lô) có cùng một lỗi tiêu chuẩn và quan trọng hơn, tất cả chúng đều là các xấp xỉ trung thành với gradient "đúng", nghĩa là di chuyển sang đúng hướng của gradient "đúng".
  1. Tại sao xe buýt nhỏ có thể hoạt động tốt hơn .

Thứ nhất, xe buýt nhỏ làm cho một số vấn đề học tập từ kỹ thuật không thể giải quyết được có thể giải quyết được do nhu cầu tính toán giảm với quy mô lô nhỏ hơn.

Thứ hai, giảm kích thước lô không nhất thiết có nghĩa là giảm độ chính xác của gradient. Các mẫu đào tạo nhiều có rất nhiều tiếng ồn hoặc ngoại lệ hoặc sai lệch. Một xe buýt nhỏ được lấy mẫu ngẫu nhiên có thể phản ánh phân phối tạo dữ liệu thực sự tốt hơn (hoặc không tệ hơn) so với lô đầy đủ ban đầu. Nếu một số lần lặp lại của các bản cập nhật độ dốc nhỏ cho bạn ước tính tốt hơn, thì tổng thể kết quả trung bình của một epoch có thể tốt hơn so với độ dốc được tính toán từ một lô đầy đủ.

Thứ ba, xe buýt nhỏ không chỉ giúp xử lý các mẫu dữ liệu khó chịu mà còn giúp đối phó với chức năng chi phí khó chịu có nhiều cực tiểu địa phương. Như Jason_L_Bens đề cập, đôi khi các đa tạp lỗi có thể dễ dàng bẫy một gradient thông thường vào một cực tiểu cục bộ, trong khi khó khăn hơn để bẫy gradient tạm thời ngẫu nhiên được tính toán với xe buýt nhỏ.

Cuối cùng, với độ dốc giảm dần, bạn không đạt cực tiểu toàn cầu trong một bước, nhưng lặp lại trên đa tạp erro. Gradient phần lớn chỉ cung cấp cho bạn hướng để lặp lại. Với xe buýt nhỏ, bạn có thể lặp lại nhanh hơn nhiều. Trong nhiều trường hợp, càng lặp lại, điểm tốt hơn bạn có thể đạt được. Bạn không thực sự quan tâm ở mọi thời tiết, điểm này là tối ưu trên toàn cầu hoặc thậm chí là cục bộ. Bạn chỉ muốn đạt được một mô hình hợp lý mang lại cho bạn lỗi tổng quát hóa chấp nhận được. Minibatch làm cho điều đó dễ dàng hơn.

Bạn có thể tìm thấy cuốn sách "Học sâu" của Ian Goodfellow, et al, có các cuộc thảo luận khá tốt về chủ đề này nếu bạn đọc kỹ nó.


Đối với các vấn đề tối ưu hóa lồi, những gì bạn nói là tốt. Nhưng để sử dụng các phương thức gradient trên các hàm không lồi, bạn đã bỏ lỡ một lý do rất quan trọng là SGD tốt hơn so với lô GD. Xem phản hồi của tôi datascience.stackexchange.com/questions/16807/ từ
horaceT

@horaceT Cảm ơn bình luận của bạn. Vì điểm bạn đề cập đã được Jason_L_Bens mô tả ở trên với các chi tiết, tôi không buồn nhắc lại mà chỉ đề cập đến câu trả lời của anh ấy trong đoạn thứ ba cuối cùng, với sự tôn trọng. Để giải quyết vấn đề tối ưu hóa độ dốc, độ không lồi được phản ánh bởi cực tiểu cục bộ bao gồm điểm yên ngựa (xem đoạn thứ ba cuối cùng); và vì mục đích mô tả, câu trả lời của tôi mô tả SGD là xe buýt nhỏ nhưng với kích thước lô là 1 (xem đoạn thứ ba).
Xiao-Feng Li

3

Đối với tôi, hàng loạt gradient giống như gradient nạc. Trong gradient nạc, kích thước lô được chọn để mọi tham số sẽ được cập nhật, cũng được thay đổi độc lập, nhưng không nhất thiết phải trực giao trong lô. Ví dụ: nếu lô chứa 10 thử nghiệm, 10 hàng, thì có thể tạo thành cột độc lập. 10 hàng cho phép cập nhật độc lập, nhưng không trực giao, cập nhật 512 tham số.2101=512

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.