Bagaimana gradien merambat dalam jaringan saraf berulang yang tidak dikontrol?

8

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:

masukkan deskripsi gambar di sini

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:3(x1,x2,x3)

Pada saat itu 1, nilai yang diprediksi, , adalahp1

p1=u×σ(ws+vx1)

Saat itu 2, sudah

p2=u×σ(w×σ(ws+vx1)+vx2)

Saat itu 3, sudah

p3=u×σ(w×σ(w×σ(ws+vx1)+vx2)+vx3)

Sejauh ini bagus?

The "unrolled" rnn terlihat seperti ini:

masukkan deskripsi gambar di sini

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 ?E=(p1x1)2+(p2x2)2+(p3x3)2

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?dE/dw,dE/dv,dE/dupi

Jika ada yang bisa membantu membimbing saya melalui contoh mainan ini, saya akan sangat menghargai.

Fequish
sumber
Saya pikir ada sesuatu yang salah dengan fungsi kesalahan, Anda mungkin mendapatkan sebagai istilah elemen kedua dan Anda harus membandingkannya mungkin dengan , dalam kasus sempurna mereka harus sama. Dalam fungsi kesalahan Anda, Anda hanya membandingkan input dan output jaringan. p1x2
itdxer
Saya pikir mungkin itu masalahnya. Tetapi kemudian bagaimana kesalahan didefinisikan untuk elemen yang diprediksi terakhir, ? p3
Fequish

Jawaban:

1

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)

t1=x2, t2=x3, t3=x4

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.x4NN1N1

Jika kita menggunakan jumlah istilah kesalahan kuadrat untuk fungsi tujuan, lalu bagaimana cara mendefinisikannya?

Sejauh yang saya ketahui, Anda benar - kesalahannya adalah jumlah seluruh rangkaian. Ini karena bobot , dan adalah sama pada RNN yang tidak dilipat.uvw

Jadi,

E=tEt=t(ttpt)2

Apakah bobot diperbarui hanya setelah seluruh urutan dilihat (dalam hal ini, urutan 3-titik)?

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

  • Biarkan menunjukkan input ke neuron tersembunyi pada waktu (yaitu )zttz1=ws+vx1
  • Biarkan menunjukkan output untuk neuron tersembunyi pada waktu (yaitu ytty1=σ(ws+vx1))
  • Biarkany0=s
  • Biarkanδt=Ezt

Kemudian, turunannya adalah:

Eu=ytEv=tδtxtEw=tδtyt1

Di mana untuk urutan panjang , dan:t[1, T]T

δt=σ(zt)(u+δt+1w)

Relasi berulang ini berasal dari menyadari bahwa aktivitas tersembunyi tidak hanya memengaruhi kesalahan pada output , , tetapi juga memengaruhi sisa kesalahan selanjutnya di RNN, :tthtthEtEEt

Ezt=Etytytzt+(EEt)zt+1zt+1ytytztEzt=ytzt(Etyt+(EEt)zt+1zt+1yt)Ezt=σ(zt)(u+(EEt)zt+1w)δt=Ezt=σ(zt)(u+δt+1w)

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?

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!

dok
sumber
0

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.

itdxer
sumber