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?
Jawaban:
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:
sumber
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.
sumber