Làm thế nào các trọng số được cập nhật trong phương pháp học tập hàng loạt trong các mạng thần kinh?


13

Ai đó có thể vui lòng cho tôi biết làm thế nào tôi có thể xây dựng một mạng lưới thần kinh bằng phương pháp bó không?

Tôi đã đọc rằng, ở chế độ hàng loạt, đối với tất cả các mẫu trong tập huấn luyện, chúng tôi tính toán sai số, delta và do đó trọng số delta cho mỗi nơ ron trong mạng và sau đó thay vì cập nhật ngay các trọng số, chúng tôi tích lũy chúng, và trước khi bắt đầu kỷ nguyên tiếp theo, chúng tôi cập nhật các trọng số.

Tôi cũng đọc được ở đâu đó rằng, phương thức bó giống như phương pháp trực tuyến nhưng với sự khác biệt là người ta chỉ cần tổng hợp các lỗi cho tất cả các mẫu trong tập huấn luyện và sau đó lấy trung bình của nó và sau đó sử dụng phương pháp đó để cập nhật trọng số như người ta làm trong phương pháp trực tuyến (sự khác biệt chỉ ở mức trung bình) như thế này:

for epoch=1 to numberOfEpochs

   for all i samples in training set

         calculate the errors in output layer
         SumOfErrors += (d[i] - y[i])
   end

   errorAvg = SumOfErrors / number of Samples in training set

   now update the output layer with this error
   update all other previous layers

   go to the next epoch

end
  • Mà một trong số này thực sự là hình thức chính xác của phương pháp lô?
  • Trong trường hợp đầu tiên, không tích lũy tất cả các trọng số delta dẫn đến một số lượng lớn?

1
Phương pháp "chính xác" phụ thuộc vào ngữ cảnh. Nó chỉ ra rằng trong nhiều trường hợp, việc cập nhật các trọng số chỉ một lần trên mỗi epoch sẽ hội tụ chậm hơn nhiều so với cập nhật ngẫu nhiên (cập nhật các trọng số sau mỗi ví dụ). Tôi sẽ thêm một sự đồng thuận rằng bạn thường muốn sử dụng một số hình thức cập nhật hàng loạt, nhưng thường xuyên hơn 1 lần mỗi epoch.
Tahlor

Câu trả lời:


8

Sử dụng trung bình hoặc tổng là tương đương, theo nghĩa là tồn tại các cặp tỷ lệ học tập mà chúng tạo ra cùng một bản cập nhật.

Để xác nhận điều này, trước tiên hãy nhớ lại quy tắc cập nhật:

ΔwTôij= =-αEwTôij

μEnnμEnw

ΔwTôij= =-α(nμ)wTôij= =-αnμwTôij

ΔwΔw


1
Là độ dốc nhỏ hàng loạt giảm dần cùng một độ dốc gradient? Tôi bị lạc ở đây! Nếu không có gì khác biệt giữa những điều này? Chỉnh sửa cho tôi nếu tôi sai, trong chế độ Batch, toàn bộ tập dữ liệu cần được đọc theo lô, độ dốc được tính toán và khi tất cả được đọc, sau đó chúng được tính trung bình và sau đó các tham số được cập nhật, trong khi, trong từng đợt nhỏ lô được đọc, độ dốc được tính toán và sau đó các tham số được cập nhật, và sau đó lô nhỏ tiếp theo được đọc cho đến khi một epoch kết thúc.
Rika

1
Đó là định nghĩa thường được đưa ra: Cập nhật các tham số bằng cách sử dụng một tập hợp con của dữ liệu huấn luyện tại một thời điểm. (Có một số phương pháp trong đó các lô nhỏ được lấy mẫu ngẫu nhiên cho đến khi hội tụ, tức là Lô sẽ không được chuyển qua một kỷ nguyên.) Xem nếu điều này hữu ích.
Sean Easter

0

Hai câu trả lời là tương đương. Cá nhân tôi sẽ nghĩ đó là lỗi trung bình thay vì tổng. Nhưng hãy nhớ rằng độ dốc gốc có một tham số gọi là tốc độ học tập và chỉ một phần độ dốc của lỗi bị trừ. Vì vậy, liệu lỗi được xác định là tổng trung bình có thể được bù bằng cách thay đổi tỷ lệ học tập.


cảm ơn, nhưng nếu chúng thực sự giống nhau, tại sao lại lãng phí quá nhiều bộ nhớ vào việc giữ lại các bản cập nhật tích lũy cho mỗi mẫu, khi chúng ta chỉ có thể tính tổng các lỗi chỉ là một biến đơn giản?
Rika
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.