Saya mencoba memahami bagaimana rnn dapat digunakan untuk memprediksi urutan dengan bekerja melalui contoh sederhana. Ini adalah jaringan sederhana saya, yang terdiri dari satu input, satu neuron tersembunyi, dan satu output:
Neuron tersembunyi adalah fungsi sigmoid, dan output dianggap sebagai output linier sederhana. Jadi, saya pikir jaringan bekerja sebagai berikut: jika unit tersembunyi mulai dalam keadaan s
, dan kami sedang memproses titik data yang merupakan urutan panjang , , maka:
Pada saat itu 1
, nilai yang diprediksi, , adalah
Saat itu 2
, sudah
Saat itu 3
, sudah
Sejauh ini bagus?
The "unrolled" rnn terlihat seperti ini:
Jika kita menggunakan jumlah istilah kesalahan kuadrat untuk fungsi tujuan, lalu bagaimana cara mendefinisikannya? Di seluruh urutan? Dalam hal ini kita akan memiliki sesuatu seperti ?
Apakah bobot diperbarui hanya setelah seluruh urutan dilihat (dalam hal ini, urutan 3-titik)?
Adapun gradien sehubungan dengan bobot, kita perlu menghitung , saya akan mencoba melakukan hanya dengan memeriksa 3 persamaan untuk atas, jika semuanya terlihat benar. Selain melakukannya dengan cara seperti itu, ini tidak terlihat seperti propagasi balik vanila bagi saya, karena parameter yang sama muncul di berbagai lapisan jaringan. Bagaimana kita menyesuaikannya?
Jika ada yang bisa membantu membimbing saya melalui contoh mainan ini, saya akan sangat menghargai.
Jawaban:
Saya pikir Anda perlu nilai target. Jadi untuk urutan , Anda perlu target yang sesuai . Karena Anda tampaknya ingin memprediksi istilah berikutnya dari urutan input asli, Anda perlu:(x1,x2,x3) (t1,t2,t3)
Anda perlu mendefinisikan , jadi jika Anda memiliki urutan input dengan panjang untuk melatih RNN, Anda hanya dapat menggunakan istilah pertama sebagai nilai input dan istilah terakhir sebagai target nilai-nilai.x4 N N- 1 N- 1
Sejauh yang saya ketahui, Anda benar - kesalahannya adalah jumlah seluruh rangkaian. Ini karena bobot , dan adalah sama pada RNN yang tidak dilipat.kamu v w
Jadi,
Ya, jika menggunakan back propagation melalui waktu maka saya percaya begitu.
Adapun perbedaan, Anda tidak akan ingin memperluas seluruh ekspresi untuk dan membedakannya ketika datang ke RNN yang lebih besar. Jadi, beberapa notasi dapat membuatnya lebih rapi:E
Kemudian, turunannya adalah:
Di mana untuk urutan panjang , dan:t∈[1, T] T
Relasi berulang ini berasal dari menyadari bahwa aktivitas tersembunyi tidak hanya memengaruhi kesalahan pada output , , tetapi juga memengaruhi sisa kesalahan selanjutnya di RNN, :tth tth Et E−Et
Metode ini disebut propagasi balik melalui waktu (BPTT), dan mirip dengan propagasi balik dalam arti bahwa ia menggunakan aplikasi berulang dari aturan rantai.
Contoh kerja yang lebih terperinci tetapi rumit untuk RNN dapat ditemukan di Bab 3.2 dari 'Pelabelan Urutan Supervisi dengan Jaringan Syaraf Berulang' oleh Alex Graves - baca yang sangat menarik!
sumber
Kesalahan yang Anda jelaskan di atas (setelah modifikasi yang saya tulis dalam komentar di bawah pertanyaan) Anda hanya dapat menggunakan seperti prediksi kesalahan total, tetapi Anda tidak dapat menggunakannya dalam proses pembelajaran. Pada setiap iterasi, Anda menempatkan satu nilai input dalam jaringan dan mendapatkan satu output. Ketika Anda mendapatkan output, Anda harus memeriksa hasil jaringan Anda dan menyebarkan kesalahan ke semua bobot. Setelah pembaruan, Anda akan menempatkan nilai berikutnya secara berurutan dan membuat prediksi untuk nilai ini, selain itu Anda juga menyebarkan kesalahan dan seterusnya.
sumber