Bagaimana bobot diperbarui dalam metode pembelajaran batch dalam jaringan saraf?

15

Bisakah seseorang tolong beri tahu saya bagaimana saya seharusnya membangun jaringan saraf menggunakan metode batch?

Saya telah membaca bahwa, dalam mode batch, untuk semua sampel dalam set pelatihan, kami menghitung kesalahan, delta dan dengan demikian bobot delta untuk setiap neuron dalam jaringan dan kemudian alih-alih segera memperbarui bobot, kami mengakumulasikannya, dan sebelum memulai zaman berikutnya, kami memperbarui bobot.

Saya juga membaca di suatu tempat bahwa, metode batch seperti metode online tetapi dengan perbedaan menjadi satu hanya perlu menjumlahkan kesalahan untuk semua sampel dalam set pelatihan dan kemudian mengambil rata-rata dan kemudian menggunakannya untuk memperbarui bobot seperti satu tidak dalam metode online (perbedaannya hanya rata-rata itu) seperti ini:

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
  • Yang satu ini benar-benar bentuk metode batch yang benar?
  • Dalam kasus yang pertama, bukankah mengumpulkan semua bobot delta menghasilkan jumlah yang sangat besar?
Rika
sumber
1
Metode "benar" tergantung pada konteksnya. Ternyata dalam banyak kasus, memperbarui bobot hanya sekali per zaman akan menyatu jauh lebih lambat daripada memperbarui stokastik (memperbarui bobot setelah setiap contoh). Saya akan menambahkan ada konsensus bahwa Anda umumnya ingin menggunakan beberapa bentuk pembaruan batch, tetapi jauh lebih sering dari 1x per zaman.
Tahlor

Jawaban:

9

Menggunakan rata-rata atau jumlah adalah setara, dalam arti bahwa ada pasangan tingkat belajar yang menghasilkan pembaruan yang sama.

Untuk mengonfirmasi ini, ingat kembali aturan pembaruan:

Δwsayaj=-αEwsayaj

μEnnμEnw

Δwsayaj=-α(nμ)wsayaj=-αnμwsayaj

ΔwΔw

Sean Easter
sumber
1
Apakah mini-batch gradient descent sama dengan batch-gradient descent? Saya tersesat di sini! jika tidak apa bedanya ini? Perbaiki saya jika saya salah, dalam mode Batch, seluruh dataset harus dibaca dalam batch, gradien dihitung, dan ketika semua dibaca, maka mereka dirata-rata dan kemudian parameter diperbarui, sementara, dalam mini-batch, masing-masing batch dibaca, gradien dihitung dan kemudian parameter diperbarui, dan kemudian batch mini berikutnya dibaca sampai satu zaman berakhir.
Rika
1
Itulah definisi yang diberikan secara umum: Perbarui parameter menggunakan satu himpunan bagian data pelatihan sekaligus. (Ada beberapa metode di mana mini-batch diambil secara acak hingga konvergensi, yaitu batch tidak akan dilalui dalam zaman.) Lihat apakah ini membantu.
Sean Easter
0

Kedua jawaban itu setara. Saya pribadi akan menganggapnya sebagai kesalahan rata-rata, bukan jumlah. Tetapi ingat bahwa gradient descent memiliki parameter yang disebut tingkat pembelajaran, dan hanya sebagian dari gradien kesalahan yang dikurangi. Jadi apakah kesalahan didefinisikan sebagai total rata-rata dapat dikompensasi dengan mengubah tingkat pembelajaran.

jlimahaverford
sumber
terima kasih, tetapi jika mereka benar-benar sama, mengapa repot-repot membuang begitu banyak memori untuk mempertahankan pembaruan akumulatif untuk setiap pola, ketika kita hanya dapat menjumlahkan kesalahan yang hanya akan menjadi variabel sederhana?
Rika