Dalam jaringan saraf berulang, Anda biasanya akan maju merambat melalui beberapa langkah waktu, "membuka gulungan" jaringan, dan kemudian kembali merambat melintasi urutan input.
Mengapa Anda tidak hanya memperbarui bobot setelah masing-masing langkah dalam urutan? (setara dengan menggunakan panjang pemotongan 1, sehingga tidak ada yang membuka gulungan) Ini benar-benar menghilangkan masalah gradien menghilang, sangat menyederhanakan algoritma, mungkin akan mengurangi kemungkinan terjebak dalam minimum lokal, dan yang paling penting tampaknya berfungsi dengan baik . Saya melatih model dengan cara ini untuk menghasilkan teks dan hasilnya tampak sebanding dengan hasil yang saya lihat dari model yang dilatih BPTT. Saya hanya bingung tentang ini karena setiap tutorial tentang RNNs saya telah melihat mengatakan untuk menggunakan BPTT, hampir seolah-olah diperlukan untuk pembelajaran yang tepat, yang tidak terjadi.
Pembaruan: Saya menambahkan jawaban
Jawaban:
Sunting: Saya membuat kesalahan besar ketika membandingkan dua metode dan harus mengubah jawaban saya. Ternyata cara saya melakukannya, hanya kembali merambat pada langkah waktu saat ini, sebenarnya mulai belajar lebih cepat. Pembaruan cepat mempelajari pola paling dasar dengan sangat cepat. Tetapi pada kumpulan data yang lebih besar dan dengan waktu pelatihan yang lebih lama, BPTT sebenarnya keluar di atas. Saya menguji sampel kecil hanya untuk beberapa zaman dan berasumsi siapa pun yang memulai memenangkan perlombaan akan menjadi pemenang. Tapi ini memang membawa saya ke penemuan yang menarik. Jika Anda memulai pelatihan Anda kembali menyebarkan hanya satu langkah waktu, kemudian beralih ke BPTT dan perlahan-lahan meningkatkan seberapa jauh Anda menyebarkan, Anda mendapatkan konvergensi yang lebih cepat.
sumber
RNN adalah Deep Neural Network (DNN) di mana setiap layer dapat mengambil input baru tetapi memiliki parameter yang sama. BPT adalah kata yang bagus untuk Back Propagation pada jaringan yang seperti itu sendiri adalah kata yang bagus untuk Gradient Descent.
Mengatakan bahwa RNN output y t dalam setiap langkah dan e r r o r t = ( y t - y t ) 2y^t
Untuk mempelajari bobot, kita memerlukan gradien untuk fungsi untuk menjawab pertanyaan "berapa perubahan parameter yang mempengaruhi fungsi kerugian?" dan pindahkan parameter ke arah yang diberikan oleh:
Yaitu kami memiliki DNN di mana kami mendapatkan umpan balik tentang seberapa bagus prediksi di setiap lapisan. Karena perubahan parameter akan mengubah setiap lapisan dalam DNN (timestep) dan setiap lapisan berkontribusi pada output yang akan datang, ini perlu diperhitungkan.
Ambil satu jaringan neuron-satu lapisan sederhana untuk melihatnya secara semi-eksplisit:
Mungkin setiap langkah kemudian akan memberikan kontribusi arah kasar yang cukup dalam agregasi? Ini bisa menjelaskan hasil Anda tetapi saya benar-benar tertarik mendengar lebih banyak tentang fungsi metode / kerugian Anda! Juga akan tertarik pada perbandingan dengan JST berjendela dua timestep.
sunting4: Setelah membaca komentar sepertinya arsitektur Anda bukan RNN.
Model Anda: Stateless - status tersembunyi dibangun kembali di setiap langkahedit2: menambahkan lebih banyak referensi ke DNNs edit3: memperbaiki gradstep dan beberapa notasi edit5: Memperbaiki interpretasi model Anda setelah jawaban / klarifikasi Anda.sumber
sumber