pengantar
Langkah pertama
Saya menulis jaringan saraf backpropegating standar, dan untuk mengujinya, saya memutuskan untuk memetakannya XOR.
Ini adalah jaringan 2-2-1 (dengan fungsi aktivasi tanh)
X1 M1
O1
X2 M2
B1 B2
Untuk tujuan pengujian, saya secara manual mengatur neuron tengah atas (M1) menjadi gerbang AND dan neuron bawah (M2) menjadi gerbang OR (baik output 1 jika benar dan -1 jika salah).
Sekarang, saya juga secara manual mengatur koneksi M1-O1 menjadi -.5, M2-O1 menjadi 1, dan B2 menjadi -.75
Jadi jika M1 = 1 dan M2 = 1, jumlahnya adalah (-0,5 +1 -0,75 = -.25) tanh (0,25) = -0,24
jika M1 = -1 dan M2 = 1, jumlahnya adalah ((-0.5) * (- 1) +1 -0.75 = .75) tanh (0.75) = 0.63
jika M1 = -1 dan M2 = -1, jumlahnya adalah ((-0.5) * (- 1) -1 -0.75 = -1.25) tanh (1.25) = -0.8
Ini adalah hasil yang relatif baik untuk "iterasi pertama".
Langkah Dua
Saya kemudian melanjutkan untuk memodifikasi bobot ini sedikit, dan kemudian melatih mereka menggunakan algoritma propagasi kesalahan (berdasarkan gradient descent). Pada tahap ini, saya meninggalkan bobot antara input dan neuron tengah utuh, dan hanya memodifikasi bobot antara tengah (dan bias) dan output.
Untuk pengujian, saya mengatur bobot menjadi dan .5 .4 .3 (masing-masing untuk M1, M2 dan bias)
Di sini, bagaimanapun, saya mulai mengalami masalah.
Pertanyaan saya
Saya menetapkan tingkat belajar saya menjadi 0,2 dan membiarkan program mengulangi melalui data pelatihan (ABA ^ B) untuk 10.000 iterasi atau lebih.
Sebagian besar waktu, bobot menyatu untuk hasil yang baik. Namun, kadang-kadang, bobot tersebut konvergen ke (katakanlah) 1.5, 5.7, dan .9 yang menghasilkan output +1 (datar) ke input {1, 1} (ketika hasilnya harus -1).
Apakah mungkin untuk JST yang relatif sederhana yang memiliki solusi untuk tidak bertemu sama sekali atau ada bug dalam implementasi saya?
sumber
Jika Anda telah memperbaiki bobot antara input dan unit tersembunyi dan hanya memodifikasi bobot disembunyikan ke output selama pelatihan maka tidak akan ada minimum lokal. Dengan input tetap ke bobot tersembunyi masalah optimasi yang Anda selesaikan mirip dengan regresi logistik tetapi dengan tanh bukan fungsi sigmoid. Apapun masalahnya adalah cembung dan seharusnya hanya ada satu, minimum global.
Karena minimum lokal tidak menyebabkan masalah Anda, saya akan merekomendasikan secara numerik perkiraan derivatif Anda dan kemudian membandingkannya dengan nilai yang Anda hitung. Jika Anda tidak yakin bagaimana melakukan ini, tutorial ULFDL Standford memiliki tinjauan yang bagus.
sumber