Là đào tạo mạng lưới thần kinh được thực hiện từng cái một? [bản sao]


9

Tôi đang cố gắng tìm hiểu các mạng thần kinh bằng cách xem loạt video này và triển khai một mạng lưới thần kinh đơn giản trong Python.

Đây là một trong những điều tôi băn khoăn: Tôi đang đào tạo mạng lưới thần kinh về dữ liệu mẫu và tôi đã có 1.000 mẫu. Việc đào tạo bao gồm thay đổi dần trọng lượng và thành kiến ​​để làm cho hàm chi phí dẫn đến chi phí nhỏ hơn.

Câu hỏi của tôi: Tôi có nên thay đổi trọng số / độ lệch trên mỗi mẫu đơn trước khi chuyển sang mẫu tiếp theo hay trước tiên tôi nên tính toán các thay đổi mong muốn cho toàn bộ 1.000 mẫu và sau đó chỉ bắt đầu áp dụng chúng cho mạng?

Câu trả lời:


9

Tôi có nên thay đổi trọng số / độ lệch trên mỗi mẫu đơn trước khi chuyển sang mẫu tiếp theo không,

Bạn có thể làm điều này, nó được gọi là stochastic gradient descent (SGD) và thông thường bạn sẽ xáo trộn bộ dữ liệu trước khi làm việc với nó mỗi lần.

hoặc trước tiên tôi nên tính toán các thay đổi mong muốn cho toàn bộ 1.000 mẫu và chỉ sau đó bắt đầu áp dụng chúng cho mạng?

Bạn có thể làm điều này, nó được gọi là giảm độ dốc hàng loạt , hoặc trong một số trường hợp (đặc biệt là trong các tài nguyên cũ) chỉ được coi là cách tiếp cận thông thường và được gọi là giảm độ dốc.

Mỗi cách tiếp cận đều đưa ra những ưu điểm và nhược điểm. Nói chung:

  • SGD làm cho mỗi bản cập nhật sớm hơn về lượng dữ liệu đã được xử lý. Vì vậy, bạn có thể cần ít kỷ nguyên hơn trước khi hội tụ các giá trị hợp lý.

  • SGD thực hiện nhiều xử lý hơn trên mỗi mẫu (vì nó cập nhật thường xuyên hơn), do đó cũng chậm hơn theo nghĩa là sẽ mất nhiều thời gian hơn để xử lý từng mẫu.

  • SGD có thể tận dụng lợi thế song song ít hơn, vì các bước cập nhật có nghĩa là bạn phải chạy từng mục dữ liệu một cách an toàn (vì các trọng số đã thay đổi và kết quả lỗi / độ dốc được tính cho một tập trọng số cụ thể).

  • Các bước riêng lẻ của SGD thường chỉ đưa ra những dự đoán rất thô sơ về độ dốc chính xác để thay đổi trọng số. Đây vừa là nhược điểm (hiệu suất của NN so với mục tiêu trên tập huấn luyện có thể giảm cũng như tăng) và lợi thế (ít có khả năng hơn bị mắc kẹt tại một điểm dừng tại địa phương do "jitter" gây ra những khác biệt ngẫu nhiên này).

Điều xảy ra trong thực tế là hầu hết các phần mềm cho phép bạn thỏa hiệp giữa xử lý hàng loạt và xử lý mẫu đơn, để thử và có được các đặc tính cập nhật và hiệu suất tốt nhất. Điều này được gọi là xử lý hàng loạt nhỏ, bao gồm:

  • Xáo trộn bộ dữ liệu ở đầu mỗi kỷ nguyên.

  • Làm việc thông qua dữ liệu được xáo trộn, N mục mỗi lần trong đó N có thể thay đổi từ 10 đến 1000, tùy thuộc vào sự cố và bất kỳ ràng buộc nào trên phần cứng. Một quyết định phổ biến là xử lý kích thước lô lớn nhất mà khả năng tăng tốc GPU cho phép chạy song song.

  • Tính toán cập nhật cần thiết cho từng lô nhỏ, sau đó áp dụng nó.

Ngày nay, đây là phương pháp cập nhật phổ biến nhất mà hầu hết các thư viện mạng thần kinh đều thừa nhận và hầu như họ sẽ chấp nhận một tham số kích thước lô trong API đào tạo. Hầu hết các thư viện vẫn sẽ gọi các trình tối ưu hóa đơn giản thực hiện SGD đó; về mặt kỹ thuật là sự thật, các gradient được tính toán vẫn có phần ngẫu nhiên do không sử dụng toàn bộ lô, nhưng bạn có thể thấy điều này được gọi là độ dốc giảm dần của lô nhỏ trong một số bài báo cũ.


'Một quyết định chung là xử lý kích thước lô lớn nhất mà khả năng tăng tốc GPU cho phép chạy song song.' Làm thế nào để bạn xác định điều này? Tôi chưa thấy tài nguyên nào có thể nhận xét khi kích thước lô vừa đủ để song song hóa cực đại
DuttaA


Một câu hỏi tương tự đã được hỏi trước đây trên trang web này. Tôi thậm chí nghĩ rằng đó là một bản sao (mặc dù từ góc độ hơi khác). Xem: ai.stackexchange.com/q/11667/2444 .
nbro

"Một quyết định chung là xử lý kích thước lô lớn nhất mà khả năng tăng tốc GPU cho phép chạy song song." - Bạn có nó ngược! Các heuristic đầu tiên là xử lý kích thước lô nhỏ nhất dẫn đến hiệu suất chấp nhận được. Tuy nhiên, với nhiều kiểu máy, bạn đạt giới hạn bộ nhớ trước khi đạt hiệu quả phần cứng, vì vậy cuối cùng bạn sẽ chạy mô hình lớn nhất sẽ phù hợp với RAM. Nói chung, mặc dù, kích thước lô nhỏ hơn tìm thấy cực tiểu tốt hơn vì chúng thể hiện tính ngẫu nhiên nhiều hơn. Một cảnh báo là phá vỡ quy tắc hàng loạt với kích thước lô rất nhỏ.
Alexanderr Dubinsky

@AleksandrDubinsky RAM là phần cứng.
DuttaA

0

Lý tưởng nhất, bạn cần cập nhật trọng số bằng cách xem qua tất cả các mẫu trong bộ dữ liệu. Điều này được gọi là Batch Gradient Descent . Nhưng, như không. ví dụ đào tạo tăng lên, tính toán trở nên rất lớn và đào tạo sẽ rất chậm. Với sự ra đời của học tập sâu, quy mô đào tạo là hàng triệu và tính toán sử dụng tất cả các ví dụ đào tạo là rất không thực tế và rất chậm.

Đây là nơi, hai kỹ thuật tối ưu hóa trở nên nổi bật.

  1. Giảm dần hàng loạt
  2. Stochastic Gradient Descent (SGD)

Trong giảm dần độ dốc hàng loạt nhỏ, bạn sử dụng kích thước lô nhỏ hơn đáng kể so với tổng số không. về các ví dụ đào tạo và cập nhật trọng lượng của bạn sau khi đi qua các ví dụ này.

Trong giảm dần độ dốc ngẫu nhiên, bạn cập nhật các trọng số sau khi đi qua từng ví dụ đào tạo.

Đến với những lợi thế và bất lợi của ba phương pháp chúng tôi đã thảo luận.

  • Độ dốc hàng loạt dần dần hội tụ đến mức tối thiểu toàn cầu nhưng nó chậm và đòi hỏi sức mạnh tính toán rất lớn.

  • Độ dốc dốc ngẫu nhiên hội tụ nhanh nhưng không đến mức tối thiểu toàn cầu, nó hội tụ ở đâu đó gần mức tối thiểu toàn cầu và dao động quanh điểm đó, nhưng không hội tụ đến mức tối thiểu toàn cầu. Nhưng, điểm hội tụ trong gốc dốc Stochastic là đủ tốt cho tất cả các mục đích thực tế.

  • Mini-Batch gradient là một sự đánh đổi hai phương pháp trên. Tuy nhiên, nếu bạn đã triển khai véc tơ về cập nhật trọng số và bạn
    đang đào tạo với thiết lập đa lõi hoặc gửi đào tạo cho
    nhiều máy, đây là phương pháp tốt nhất cả về thời gian đào tạo và hội tụ đến mức tối thiểu toàn cầu.

Bạn có thể vẽ đồ thị hàm chi phí, không có. lặp đi lặp lại để hiểu sự khác biệt giữa hội tụ trong cả 3 loại độ dốc gốc.

  • Âm mưu giảm dần hàng loạt rơi trơn tru và chậm và được ổn định và đạt mức tối thiểu toàn cầu.

  • Âm mưu gốc dốc ngẫu nhiên sẽ có dao động, sẽ giảm nhanh nhưng dao động xung quanh mức tối thiểu toàn cầu.

Đây là một số blog có giải thích chi tiết về ưu điểm, nhược điểm của từng phương pháp và cả biểu đồ về cách thay đổi hàm chi phí cho cả ba phương pháp với các lần lặp.

https://adventuresinmachinelearning.com/stochastic-gradient-descent/

https://machinelearningmastery.com/gentle-intributiontion-mini-batch-gradient-descent-configure-batch-size/

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.