Saya mengumpulkan jawaban untuk pertanyaan ini di sini jika ada yang tertarik (saya tidak ingin memposting ulang).
Phylliida
Jawaban:
14
Algoritma back propagation adalah algoritma gradient descent untuk pemasangan model jaringan saraf. (seperti yang disebutkan oleh @Dikran) Mari saya jelaskan caranya.
Secara formal: Menggunakan perhitungan gradien pada akhir posting ini dalam persamaan [1] di bawah ini (yang merupakan definisi dari gradient descent) memberikan algoritma propagasi balik sebagai kasus khusus dari penggunaan gradient descent.
Model jaringan saraf
Secara formal, kami memperbaiki ide dengan model lapisan tunggal sederhana:
g : R → R s : R M → R M m = 1 ... , M s ( x ) [ m ] = σ ( x [ m ] ) A 1 : R M → R A
f( x ) = g( A1( s ( A2( x ) ) ) )
mana dan dikenal dengan untuk semua , , dan , adalah fungsi affine yang tidak diketahui. Fungsi disebut fungsi aktivasi dalam kerangka klasifikasi.g:R→Rs:RM→RMm=1…,Ms(x)[m]=σ(x[m])A1:RM→RA2Rp→RMσ:R→R
Fungsi Rugi kuadratik diambil untuk memperbaiki ide. Karenanya input vektor dari dapat dipasangkan ke output nyata dari (bisa menjadi vektor) dengan meminimalkan empiris kehilangan:
sehubungan dengan pilihan dan .R p ( y 1 , ... , y n ) R R n ( A 1 , A 2 ) = n ∑ i = 1 ( y i - f ( x i ) ) 2(x1,…,xn)Rp(y1,…,yn)RA 1 A 2
Rn(A1,A2)=∑i=1n(yi−f(xi))2[1]
A1A2
Gradient descent Keturunan
grandient untuk meminimalkanadalah algoritma yang mengulang::
untuk ukuran langkah yang dipilih dengan baik(juga disebut tingkat pembelajaran dalam kerangka propagasi balik). Ini membutuhkan perhitungan gradien dari. Dalam kasus yang dipertimbangkan.a l + 1 = a l - γ l ∇ R ( a l ) , l ≥ 0. ( γ l ) l R a l = ( A 1 l , A 2 l )R
al+1=al−γl∇R(al),l≥0.
(γl)lRal=(A1l,A2l)
Gradien dariR (untuk model jaring neural yang dianggap sederhana) Mari kita menyatakan, oleh gradien dari sebagai fungsi dari , dan gradien dari sebagai fungsi dari . Perhitungan standar (menggunakan aturan untuk derivasi komposisi fungsi) dan penggunaan notasi memberikan
untuk semua∇1RRA1∇2RRA2zi=A1(s(A2(xi)))
Back-propogation adalah cara mengerjakan turunan dari fungsi kesalahan sehubungan dengan bobot, sehingga model dapat dilatih dengan metode optimasi gradient descent - ini pada dasarnya hanya penerapan "aturan rantai". Tidak ada yang lebih dari itu, jadi jika Anda merasa nyaman dengan kalkulus itu pada dasarnya adalah cara terbaik untuk melihatnya.
Jika Anda tidak nyaman dengan kalkulus, cara yang lebih baik adalah dengan mengatakan bahwa kami tahu betapa buruknya unit output karena kami memiliki output yang diinginkan untuk membandingkan output aktual. Namun kami tidak memiliki output yang diinginkan untuk unit tersembunyi, jadi apa yang kita lakukan? Aturan back-propagation pada dasarnya adalah cara untuk menetapkan kesalahan atas kesalahan unit output ke unit tersembunyi. Semakin banyak pengaruh yang dimiliki unit tersembunyi pada unit output tertentu, semakin besar pula kesalahan yang didapat karena kesalahan tersebut. Kesalahan total yang terkait dengan unit tersembunyi kemudian memberikan indikasi seberapa banyak bobot lapisan input-ke-tersembunyi perlu diubah. Dua hal yang mengatur berapa banyak kesalahan yang ditimpakan kembali adalah berat yang menghubungkan bobot lapisan tersembunyi dan keluaran (jelas) dan output dari unit tersembunyi (jika berteriak daripada berbisik, kemungkinan memiliki pengaruh yang lebih besar). Sisanya hanyalah basa-basi matematis yang mengubah intuisi itu menjadi turunan dari kriteria pelatihan.
Saya juga merekomendasikan buku Uskup untuk jawaban yang tepat! ;Hai)
Ini adalah algoritma untuk melatih jaringan saraf multilayer feedforward (multilayer perceptrons). Ada beberapa applet java yang bagus di web yang menggambarkan apa yang terjadi, seperti ini: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Juga, buku Uskup tentang NN adalah referensi meja standar untuk segala sesuatu yang berkaitan dengan NN.
Dalam mencoba membangun repositori permanen dari informasi statistik berkualitas tinggi dalam bentuk pertanyaan & jawaban, kami mencoba menghindari jawaban hanya tautan . Jika Anda dapat, dapatkah Anda memperluas ini, mungkin dengan memberikan ringkasan informasi di tautan?
Jawaban:
Algoritma back propagation adalah algoritma gradient descent untuk pemasangan model jaringan saraf. (seperti yang disebutkan oleh @Dikran) Mari saya jelaskan caranya.
Secara formal: Menggunakan perhitungan gradien pada akhir posting ini dalam persamaan [1] di bawah ini (yang merupakan definisi dari gradient descent) memberikan algoritma propagasi balik sebagai kasus khusus dari penggunaan gradient descent.
Model jaringan saraf Secara formal, kami memperbaiki ide dengan model lapisan tunggal sederhana:
g : R → R s : R M → R M m = 1 ... , M s ( x ) [ m ] = σ ( x [ m ] ) A 1 : R M → R A
Fungsi Rugi kuadratik diambil untuk memperbaiki ide. Karenanya input vektor dari dapat dipasangkan ke output nyata dari (bisa menjadi vektor) dengan meminimalkan empiris kehilangan: sehubungan dengan pilihan dan .R p ( y 1 , ... , y n ) R R n ( A 1 , A 2 ) = n ∑ i = 1 ( y i - f ( x i ) ) 2(x1,…,xn) Rp (y1,…,yn) R A 1 A 2
Gradient descent Keturunan grandient untuk meminimalkanadalah algoritma yang mengulang:: untuk ukuran langkah yang dipilih dengan baik(juga disebut tingkat pembelajaran dalam kerangka propagasi balik). Ini membutuhkan perhitungan gradien dari. Dalam kasus yang dipertimbangkan.a l + 1 = a l - γ l ∇ R ( a l ) , l ≥ 0. ( γ l ) l R a l = ( A 1 l , A 2 l )R
Gradien dariR (untuk model jaring neural yang dianggap sederhana) Mari kita menyatakan, oleh gradien dari sebagai fungsi dari , dan gradien dari sebagai fungsi dari . Perhitungan standar (menggunakan aturan untuk derivasi komposisi fungsi) dan penggunaan notasi memberikan
untuk semua∇1R R A1 ∇2R R A2 zi=A1(s(A2(xi)))
Di sini saya menggunakan notasi R: adalah vektor yang terdiri dari koordinat dari indeks ke indeks .x a bx[a:b] x a b
sumber
Back-propogation adalah cara mengerjakan turunan dari fungsi kesalahan sehubungan dengan bobot, sehingga model dapat dilatih dengan metode optimasi gradient descent - ini pada dasarnya hanya penerapan "aturan rantai". Tidak ada yang lebih dari itu, jadi jika Anda merasa nyaman dengan kalkulus itu pada dasarnya adalah cara terbaik untuk melihatnya.
Jika Anda tidak nyaman dengan kalkulus, cara yang lebih baik adalah dengan mengatakan bahwa kami tahu betapa buruknya unit output karena kami memiliki output yang diinginkan untuk membandingkan output aktual. Namun kami tidak memiliki output yang diinginkan untuk unit tersembunyi, jadi apa yang kita lakukan? Aturan back-propagation pada dasarnya adalah cara untuk menetapkan kesalahan atas kesalahan unit output ke unit tersembunyi. Semakin banyak pengaruh yang dimiliki unit tersembunyi pada unit output tertentu, semakin besar pula kesalahan yang didapat karena kesalahan tersebut. Kesalahan total yang terkait dengan unit tersembunyi kemudian memberikan indikasi seberapa banyak bobot lapisan input-ke-tersembunyi perlu diubah. Dua hal yang mengatur berapa banyak kesalahan yang ditimpakan kembali adalah berat yang menghubungkan bobot lapisan tersembunyi dan keluaran (jelas) dan output dari unit tersembunyi (jika berteriak daripada berbisik, kemungkinan memiliki pengaruh yang lebih besar). Sisanya hanyalah basa-basi matematis yang mengubah intuisi itu menjadi turunan dari kriteria pelatihan.
Saya juga merekomendasikan buku Uskup untuk jawaban yang tepat! ;Hai)
sumber
Ini adalah algoritma untuk melatih jaringan saraf multilayer feedforward (multilayer perceptrons). Ada beberapa applet java yang bagus di web yang menggambarkan apa yang terjadi, seperti ini: http://neuron.eng.wayne.edu/bpFunctionApprox/bpFunctionApprox.html . Juga, buku Uskup tentang NN adalah referensi meja standar untuk segala sesuatu yang berkaitan dengan NN.
sumber