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 gradiensayaj(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 gradiensayaj(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.)=Czsaya(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(l1)

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)=kCzk(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,msaya,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)+mjθ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)=Czsaya(l)zsaya(l)θsayaj(l)

Yang setara dengan:

sayaj(l)=Czsaya(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)=Cz(l)   Sebuahnd   δsaya(l)=Czsaya(l)

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

δsaya(l)=kCzk(l+1)zk(l+1)zsaya(l)

Mengganti Czk(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)=CZj(l).
phuong

@ phuong Sebenarnya, saya Anda benar untuk bertanya: hanya itu
δsaya(L.)
dengan indeks "l" tertinggi L didefinisikan sebagai
δsaya(L.)=Czsaya(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.