Penggunaan turunan dalam jaringan saraf adalah untuk proses pelatihan yang disebut backpropagation . Teknik ini menggunakan gradient descent untuk menemukan set parameter model yang optimal untuk meminimalkan fungsi kerugian. Dalam contoh Anda, Anda harus menggunakan turunan dari sigmoid karena itu adalah aktivasi yang digunakan neuron individu Anda.
Fungsi kerugian
Inti dari pembelajaran mesin adalah untuk mengoptimalkan fungsi biaya sehingga kita dapat meminimalkan atau memaksimalkan beberapa fungsi target. Ini biasanya disebut kerugian atau biaya funtion. Kami biasanya ingin meminimalkan fungsi ini. Fungsi biaya, , mengaitkan beberapa penalti berdasarkan kesalahan yang dihasilkan ketika meneruskan data melalui model Anda sebagai fungsi dari parameter model.C
Mari kita lihat contoh di mana kita mencoba memberi label apakah suatu gambar mengandung kucing atau anjing. Jika kita memiliki model yang sempurna, kita dapat memberikan gambar model dan itu akan memberi tahu kita apakah itu kucing atau anjing. Namun, tidak ada model yang sempurna dan itu akan membuat kesalahan.
Ketika kami melatih model kami untuk dapat menyimpulkan makna dari input data kami ingin meminimalkan jumlah kesalahan yang dibuatnya. Jadi kami menggunakan set pelatihan, data ini berisi banyak gambar anjing dan kucing dan kami memiliki label kebenaran dasar yang terkait dengan gambar itu. Setiap kali kami menjalankan iterasi pelatihan model, kami menghitung biaya (jumlah kesalahan) model tersebut. Kami ingin meminimalkan biaya ini.
Banyak fungsi biaya ada masing-masing melayani tujuan mereka sendiri. Fungsi biaya umum yang digunakan adalah biaya kuadratik yang didefinisikan sebagai
C=1N∑Ni=0(y^−y)2 .
Ini adalah kuadrat dari perbedaan antara label yang diprediksi dan label kebenaran dasar untuk gambar yang kami latih. Kami ingin meminimalkan hal ini dalam beberapa cara.N
Meminimalkan fungsi kerugian
Memang sebagian besar pembelajaran mesin hanyalah keluarga kerangka kerja yang mampu menentukan distribusi dengan meminimalkan beberapa fungsi biaya. Pertanyaan yang bisa kita tanyakan adalah "bagaimana kita bisa meminimalkan suatu fungsi"?
Mari meminimalkan fungsi berikut
y=x2−4x+6 .
Jika kita memplot ini kita bisa melihat bahwa ada minimum di . Untuk melakukan ini secara analitis kita dapat mengambil turunan dari fungsi ini sebagaix=2
dydx=2x−4=0
x=2 .
Namun, sering kali menemukan minimum global secara analitik tidak layak. Jadi alih-alih kami menggunakan beberapa teknik optimasi. Di sini juga ada banyak cara berbeda seperti: Newton-Raphson, pencarian grid, dll. Di antaranya adalah gradient descent . Ini adalah teknik yang digunakan oleh jaringan saraf.
Keturunan Gradien
Mari kita gunakan analogi yang terkenal digunakan untuk memahami ini. Bayangkan masalah minimisasi 2D. Ini sama dengan berada di kenaikan gunung di hutan belantara. Anda ingin kembali ke desa yang Anda tahu berada di titik terendah. Bahkan jika Anda tidak tahu arah mata angin desa. Yang perlu Anda lakukan adalah terus mengambil jalan terjal, dan Anda akhirnya akan sampai ke desa. Jadi kita akan turun ke permukaan berdasarkan kecuraman lereng.
Mari kita ambil fungsi kita
y=x2−4x+6
kita akan menentukan yang diminimalkan . Algoritma keturunan gradien pertama mengatakan kita akan memilih nilai acak untuk . Mari kita inisialisasi pada . Kemudian algoritma akan melakukan hal berikut secara iteratif sampai kita mencapai konvergensi.y x x = 8xyxx=8
xnew=xold−νdydx
di mana adalah tingkat pembelajaran, kita dapat mengatur ini untuk nilai apa pun yang kita suka. Namun ada cara cerdas untuk memilih ini. Terlalu besar dan kita tidak akan pernah mencapai nilai minimum kita, dan terlalu besar kita akan membuang banyak waktu sebelum kita sampai di sana. Ini analog dengan ukuran anak tangga yang ingin Anda turuni lereng yang curam. Langkah-langkah kecil dan Anda akan mati di gunung, Anda tidak akan pernah turun. Langkah terlalu besar dan Anda berisiko menembak desa dan berakhir di sisi lain gunung. Derivatif adalah sarana yang digunakan untuk melakukan perjalanan menuruni lereng menuju minimum.ν
dydx=2x−4
ν=0.1
Iterasi 1:
x n e w = 6.8 - 0.1 ( 2 ∗ 6.8 - 4 ) = 5.84 x n e w = 5.84 - 0.1 ( 2 ∗ 5.84 - 4 ) = 5.07 x n e w = 5.07 - 0.1xnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
x n e w = 4.45 - 0.1 ( 2 ∗ 4.45 - 4 ) = 3.96 x n e w = 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57 x n e w = 3.57 - 0,1 ( 2 ∗ 3,57 - 4 )xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xn e w= 3.96 - 0.1 ( 2 ∗ 3.96 - 4 ) = 3.57
x n e w = 3,25 - 0,1 ( 2 ∗ 3,25 - 4 ) = 3,00 x n e w = 3,00 - 0,1 ( 2 ∗ 3,00 - 4 ) = 2,80 x n e w = 2,80 - 0,1 ( 2 ∗ 2,80 - 4 ) = 2.64 x n e w =xn e w= 3,57 - 0,1 ( 2 ∗ 3,57 - 4 ) = 3,25
xn e w= 3,25 - 0,1 ( 2 ∗ 3,25 - 4 ) = 3,00
xn e w= 3,00 - 0,1 ( 2 ∗ 3,00 - 4 ) = 2,80
xn e w= 2.80 - 0.1 ( 2 ∗ 2.80 - 4 ) = 2.64
x n e w = 2.51 - 0.1 ( 2 ∗ 2.51 - 4 ) = 2.41 x n e w = 2.41 - 0.1 ( 2 ∗ 2.41 - 4 ) = 2.32 x n e w = 2.32 - 0.1 ( 2 ∗ 2.32xn e w= 2.64 - 0.1 ( 2 ∗ 2.64 - 4 ) = 2.51
xn e w= 2,51 - 0,1 ( 2 ∗ 2,51 - 4 ) = 2,41
xn e w= 2.41 - 0.1 ( 2 ∗ 2.41 - 4 ) = 2.32
x n e w = 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21 x n e w = 2.21 - 0.1 ( 2 ∗ 2.21 - 4 ) = 2.16 x n e w = 2.16 - 0.1 ( 2 ∗ 2.16 - 4 ) = 2.13 x nxn e w= 2.32 - 0.1 ( 2 ∗ 2.32 - 4 ) = 2.26
xn e w= 2.26 - 0.1 ( 2 ∗ 2.26 - 4 ) = 2.21
xn e w= 2.21 - 0.1 ( 2 ∗ 2.21 - 4 ) = 2.16
xn e w= 2.16 - 0.1 ( 2 ∗ 2.16 - 4 ) = 2.13
x n e w =2.10-0.1(2∗2.10-4)=2.08 x n e w =2.08-0.1(2∗2.08-4)=2.06 x n e w =2.06-0.1(xn e w=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
x n e w = 2.05 - 0.1 ( 2 ∗ 2.05 - 4 ) = 2.04 x n e w = 2.04 - 0.1 ( 2 ∗ 2.04 - 4 ) = 2.03 x n e w = 2.03 - 0.1 ( 2 ∗ 2.03 - 4 ) =xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
x n e w = 2,02 - 0,1 ( 2 ∗ 2,02 - 4 ) = 2,02 x n e w = 2,02 - 0,1 ( 2 ∗ 2,02 - 4 ) = 2,01 x n e w = 2,01 - 0,1 ( 2 ∗ 2,01 - 4 ) = 2.01 x n e w = 2.01xn e w= 2.03 - 0.1 ( 2 ∗ 2.03 - 4 ) = 2.02
xn e w= 2.02 - 0.1 ( 2 ∗ 2.02 - 4 ) = 2.02
xn e w=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
x n e w = 2.01 - 0.1 ( 2 ∗ 2.01 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00 x n e w = 2,00 - 0,1 ( 2 ∗ 2,00 -xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00 x n e w = 2.00 - 0.1 ( 2 ∗ 2.00 - 4 ) = 2.00xnew=2.00−0.1(2∗2.00−4)=2.00
xn e w= 2,00 - 0,1 ( 2 ∗ 2,00 - 4 ) = 2,00
xn e w= 2,00 - 0,1 ( 2 ∗ 2,00 - 4 ) = 2,00
Dan kita melihat bahwa algoritma konvergen di ! Kami telah menemukan minimum.x = 2
Diterapkan ke jaringan saraf
Jaringan saraf pertama hanya memiliki satu neuron yang mengambil beberapa input dan kemudian memberikan output . Fungsi umum yang digunakan adalah fungsi sigmoidyxy^
σ( z) = 11 + e x p ( z)
y^( bTx ) = 11 + e x p ( wTx + b )
di mana adalah bobot terkait untuk setiap input dan kami memiliki bias . Kami kemudian ingin meminimalkan fungsi biaya kamix bwxb
C= 12 N∑Ni = 0( y^- y)2 .
Bagaimana cara melatih jaringan saraf?
Kami akan menggunakan gradient descent untuk melatih bobot berdasarkan output dari fungsi sigmoid dan kami akan menggunakan beberapa fungsi biaya dan kereta api pada batch data ukuran .NCN
C= 12 N∑Nsaya( y^- y)2
ywy^ adalah kelas prediksi yang diperoleh dari fungsi sigmoid dan adalah label kebenaran dasar. Kami akan menggunakan gradient descent untuk meminimalkan fungsi biaya sehubungan dengan bobot . Untuk mempermudah hidup kami, kami akan membagi turunannya sebagai berikutyw
∂C∂w= ∂C∂y^∂y^∂w .
∂C∂y^= y^- y
dan kami memiliki dan turunan dari fungsi sigmoid adalah demikian yang kita miliki,y^= σ( bTx )∂σ( z)∂z= σ( z) ( 1 - σ( z) )
∂y^∂w= 11 + e x p ( wTx + b )( 1 - 11 + e x p ( wTx + b )) .
Jadi kita dapat memperbarui bobot melalui gradient descent sebagai
wn e w= wo l d- η∂C∂w
di mana adalah tingkat belajar.η