Bagaimana cara mendapatkan kesalahan dalam jaringan saraf dengan algoritma backpropagation?


10

Dari video ini oleh Andrew Ng sekitar pukul 5:00

masukkan deskripsi gambar di sini

Bagaimana dan diturunkan? Bahkan, apa artinya ? didapat dengan membandingkan ke y, tidak ada perbandingan seperti itu untuk output dari lapisan tersembunyi, kan?δ3δ2δ3δ4


Tautan video tidak berfungsi. Harap perbarui, atau berikan tautan ke kursus. Terima kasih.
— MadHatter

Jawaban:


15

Saya akan menjawab pertanyaan Anda tentang , tetapi ingat bahwa pertanyaan Anda adalah sub pertanyaan dari pertanyaan yang lebih besar, itulah sebabnya:δsaya(l)

∇sayaj(l)=∑kθksaya(l+1)δk(l+1)∗(Sebuahsaya(l)(1-Sebuahsaya(l)))∗Sebuahj(l-1)

Pengingat tentang langkah-langkah di jaringan saraf:

  • Langkah 1: meneruskan propagasi (perhitungan )Sebuahsaya(l)

  • Langkah 2a: propagasi mundur: perhitungan kesalahan δsaya(l)

  • Langkah 2b: propagasi mundur: perhitungan gradien ∇sayaj(l) dari J (Θ) menggunakan kesalahan δsaya(l+1) dan Sebuahsaya(l),

  • Langkah 3: gradient descent: hitung yang baru θsayaj(l) menggunakan gradien ∇sayaj(l)

Pertama, untuk memahami apa ituδsaya(l)adalah , apa yang mereka wakili dan mengapa Andrew NG membicarakannya , Anda perlu memahami apa yang sebenarnya dilakukan Andrew pada saat itu dan mengapa kami melakukan semua perhitungan ini: Dia menghitung gradien∇sayaj(l) dari θsayaj(l) untuk digunakan dalam algoritma keturunan Gradient.

Gradien didefinisikan sebagai:

∇sayaj(l)=∂C∂θsayaj(l)

Karena kita tidak dapat benar-benar menyelesaikan rumus ini secara langsung, kita akan memodifikasinya menggunakan DUA TRIK MAGIK untuk sampai pada formula yang sebenarnya dapat kita hitung. Formula akhir yang dapat digunakan ini adalah:

∇sayaj(l)=θ(l+1)Tδ(l+1).∗(Sebuahsaya(l)(1-Sebuahsaya(l)))∗Sebuahj(l-1)

Untuk sampai pada hasil ini, TRIK MAGIC PERTAMA adalah kita dapat menulis gradien∇sayaj(l) dari θsayaj(l) menggunakan δsaya(l):

∇sayaj(l)=δsaya(l)∗Sebuahj(l-1)
Dengan δsaya(L.) didefinisikan (hanya untuk indeks L) sebagai:

δsaya(L.)=∂C∂zsaya(l)

Dan kemudian TRIC MAGIC KEDUA menggunakan hubungan antaraδsaya(l) dan δsaya(l+1), untuk menentukan indeks lainnya,

δsaya(l)=θ(l+1)Tδ(l+1).∗(Sebuahsaya(l)(1-Sebuahsaya(l)))

Dan seperti yang saya katakan, akhirnya kita bisa menulis formula yang kita tahu semua istilah:

∇sayaj(l)=θ(l+1)Tδ(l+1).∗(Sebuahsaya(l)(1-Sebuahsaya(l)))∗Sebuahj(l-1)

DEMONSTRASI TRIK AJAIB PERTAMA: ∇ij(l)=δi(l)∗aj(l−1)

Kami mendefinisikan:

∇ij(l)=∂C∂θij(l)

The Rantai aturan untuk dimensi yang lebih tinggi (Anda harus benar-benar membaca properti ini dari Rantai aturan) memungkinkan kita untuk menulis:

∇ij(l)=∑k∂C∂zk(l)∗∂zk(l)∂θij(l)

Namun, seperti:

zk(l)=∑mθkm(l)∗Sebuahm(l-1)

Kami kemudian dapat menulis:

∂zk(l)∂θsayaj(l)=∂∂θsayaj(l)∑mθkm(l)∗Sebuahm(l-1)

Karena linearitas diferensiasi [(u + v) '= u' + v '], kita dapat menulis:

∂zk(l)∂θsayaj(l)=∑m∂θkm(l)∂θsayaj(l)∗Sebuahm(l-1)

dengan:

sayafk,m≠saya,j,  ∂θkm(l)∂θsayaj(l)∗Sebuahm(l-1)=0

sayafk,m=saya,j,  ∂θkm(l)∂θsayaj(l)∗Sebuahm(l-1)=∂θsayaj(l)∂θsayaj(l)∗Sebuahj(l-1)=Sebuahj(l-1)

Kemudian untuk k = i (jika tidak sama dengan nol):

∂zsaya(l)∂θsayaj(l)=∂θsayaj(l)∂θsayaj(l)∗Sebuahj(l-1)+∑m≠j∂θsayam(l)∂θsayaj(l)∗Sebuahj(l-1)=Sebuahj(l-1)+0

Akhirnya, untuk k = i:

∂zsaya(l)∂θsayaj(l)=Sebuahj(l-1)

Sebagai hasilnya, kita dapat menulis ekspresi gradien pertama kita ∇sayaj(l):

∇sayaj(l)=∂C∂zsaya(l)∗∂zsaya(l)∂θsayaj(l)

Yang setara dengan:

∇sayaj(l)=∂C∂zsaya(l)∗Sebuahj(l-1)

Atau:

∇sayaj(l)=δsaya(l)∗Sebuahj(l-1)

DEMONSTRASI TRIK SIHIR KEDUA :δsaya(l)=θ(l+1)Tδ(l+1).∗(Sebuahsaya(l)(1-Sebuahsaya(l))) atau:

δ(l)=θ(l+1)Tδ(l+1).∗(Sebuah(l)(1-Sebuah(l)))

Ingatlah bahwa kami berpose:

δ(l)=∂C∂z(l)   Sebuahnd   δsaya(l)=∂C∂zsaya(l)

Sekali lagi, aturan Rantai untuk dimensi yang lebih tinggi memungkinkan kita untuk menulis:

δsaya(l)=∑k∂C∂zk(l+1)∂zk(l+1)∂zsaya(l)

Mengganti ∂C∂zk(l+1) oleh δk(l+1), kita punya:

δsaya(l)=∑kδk(l+1)∂zk(l+1)∂zsaya(l)

Sekarang, mari fokus ∂zk(l+1)∂zsaya(l). Kita punya:

zk(l+1)=∑jθkj(l+1)∗Sebuahj(l)=∑jθkj(l+1)∗g(zj(l))

Kemudian kami menurunkan ungkapan ini tentang zk(saya):

∂zk(l+1)∂zsaya(l)=∂∑jθkj(l)∗g(zj(l))∂zsaya(l)

Karena linearitas derivasi, kita dapat menulis:

∂zk(l+1)∂zsaya(l)=∑jθkj(l)∗∂g(zj(l))∂zsaya(l)

Jika j ≠ Lalu saya ∂θkj(l)∗g(zj(l))∂zsaya(l)=0

Sebagai konsekuensi:

∂zk(l+1)∂zsaya(l)=θksaya(l)∗∂g(zsaya(l))∂zsaya(l)

Lalu:

δsaya(l)=∑kδk(l+1)θksaya(l)∗∂g(zsaya(l))∂zsaya(l)

Sebagai g '(z) = g (z) (1-g (z)), kita memiliki:

δsaya(l)=∑kδk(l+1)θksaya(l)∗g(zsaya(l))(1-g(zsaya(l))

Dan sebagai g(zsaya(l)=Sebuahsaya(l), kita punya:

δsaya(l)=∑kδk(l+1)θksaya(l+1)∗Sebuahsaya(l)(1-Sebuahsaya(l))

Dan akhirnya, menggunakan notasi vektor:

∇sayaj(l)=[θ(l+1)Tδ(l+1)∗(Sebuahsaya(l)(1-Sebuahsaya(l)))]∗[Sebuahj(l-1)]

1
Terima kasih atas jawaban Anda. Saya membesarkan hati Anda !! Bisakah Anda mengutip sumber yang Anda rujuk untuk sampai pada jawabannya ... :)
— Adithya Upadhya

@tmangin: Mengikuti pembicaraan Andrew Ng, sudah δj(saya)adalah kesalahan simpul j di lapisan l. Bagaimana Anda mendapatkan definisiδj(saya)=∂C∂Zj(l).
— phuong

@ phuong Sebenarnya, saya Anda benar untuk bertanya: hanya itu
δsaya(L.)
dengan indeks "l" tertinggi L didefinisikan sebagai
δsaya(L.)=∂C∂zsaya(l)
Sedangkan delta dengan indeks "l" yang lebih rendah ditentukan oleh rumus berikut:
δsaya(l)=θ(l+1)Tδ(l+1).∗(Sebuahsaya(l)(1-Sebuahsaya(l)))
— tmangin

3
Saya sangat merekomendasikan membaca notasi vektor backprop menghitung gradien.
— CKM

Formula akhir yang bisa digunakan bukan apa yang dimiliki Andrew Ng, yang membuatnya sangat frustasi untuk mengikuti bukti Anda. Dia memiliki ∇ (l) ij = θ (l) Tδ (l + 1). ∗ (a (l) i (1 − a (l) i)) ∗ a (l − 1) j, bukan θ (l + 1) Tδ (l + 1)
— Aziz Javed

0

Perhitungan ini membantu. Satu-satunya perbedaan dari hasil ini dengan hasil Andrew adalah karena definisi theta. Dalam definisi Andrew, z (l + 1) = theta (l) * a (l). Dalam perhitungan ini, z (l + 1) = theta (l + 1) * a (l). Jadi sebenarnya tidak ada perbedaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.