You are on page 1of 5

Algoritma Backpropagation Ada banyak variasi dari algoritma backpropagation, beberapa yang akan kita bahas dalam bab

ini. Implementasi sederhana dari backpropagation belajar update bobot jaringan dan bias ke arah di mana fungsi kinerja menurun paling cepat - negatif dari gradien. Salah satu iterasi dari algoritma ini dapat ditulis:

dimana adalah vektor bobot dan bias saat ini, pembelajaran.

adalah gradien saat ini, dan

merupakan tingkat

Ada dua cara yang berbeda di mana ini algoritma gradient descent dapat diimplementasikan: modus tambahan dan modus batch. Dalam modus tambahan, gradien dihitung dan bobot yang diperbarui setelah setiap masukan yang diterapkan pada jaringan. Dalam modus batch semua input diterapkan ke jaringan sebelum bobot diperbarui. Bagian selanjutnya menjelaskan modus batch pelatihan, pelatihan tambahan akan dibahas dalam bab berikutnya. Batch Pelatihan (train). Dalam modus batch bobot dan bias dari jaringan diperbarui hanya setelah training set keseluruhan telah diterapkan pada jaringan. Gradien dihitung pada setiap contoh pelatihan ditambahkan bersama-sama untuk menentukan perubahan bobot dan bias. Untuk pembahasan pelatihan batch dengan algoritma backpropagation lihat halaman 12-7 dari [HDB96]. Batch Gradient Descent (traingd). Batch curam keturunan fungsi pelatihan traingd. Bobot dan bias diperbarui dalam arah gradien negatif dari fungsi kinerja. Jika Anda ingin melatih jaringan menggunakan keturunan batch yang curam, Anda harus mengatur jaringan trainFcn to traingd, dan kemudian memanggil fungsi train. Hanya ada satu pelatihan fungsi yang terkait dengan jaringan tertentu. Ada parameter pelatihan tujuh terkait dengan traingd: epochs, show, goal, time, min_grad, max_fail, and lr. Tingkat lr belajar dikalikan kali negatif dari gradien untuk menentukan perubahan bobot dan bias. Tingkat yang lebih besar belajar, semakin besar langkah. Jika tingkat belajar dibuat terlalu besar, algoritma menjadi tidak stabil. Jika tingkat pembelajaran diatur terlalu kecil, algoritma membutuhkan waktu lama untuk berkumpul. Lihat halaman 12-8 dari [HDB96] untuk diskusi pilihan belajar tingkat. Status pelatihan ditampilkan untuk setiap iterasi menunjukkan algoritma. (Jika acara diatur ke NaN, maka status pelatihan tidak pernah menampilkan.) Parameter lain menentukan kapan pelatihan berhenti. Pelatihan ini berhenti jika jumlah iterasi melebihi zaman, jika fungsi kinerja turun di bawah gawang, jika besarnya gradien kurang dari mingrad, atau jika waktu pelatihan yang lebih lama dari waktu detik. Kami membahas max_fail, yang berhubungan dengan teknik berhenti awal, pada bagian meningkatkan generalisasi. Kode berikut membuat pelatihan set input p dan t target. Untuk pelatihan batch, semua vektor masukan ditempatkan dalam satu matriks.

p = [-1 -1 2 2;0 5 0 5]; t = [-1 -1 1 1]; Selanjutnya, kita buat jaringan feedforward. Di sini kita menggunakan minmax fungsi untuk menentukan rentang input yang akan digunakan dalam menciptakan jaringan. net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingd'); Pada titik ini, kita mungkin ingin tomodify beberapa parameter standar pelatihan. net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5; Jika Anda ingin menggunakan parameter standar pelatihan, perintah di atas tidak diperlukan. Sekarang kita siap untuk melatih jaringan. [net,tr]=train(net,p,t); TRAINGD, Epoch 0/300, MSE 1.59423/1e-05, Gradient 2.76799/ 1e-10 TRAINGD, Epoch 50/300, MSE 0.00236382/1e-05, Gradient 0.0495292/1e-10 TRAINGD, Epoch 100/300, MSE 0.000435947/1e-05, Gradient 0.0161202/1e-10 TRAINGD, Epoch 150/300, MSE 8.68462e-05/1e-05, Gradient 0.00769588/1e-10 TRAINGD, Epoch 200/300, MSE 1.45042e-05/1e-05, Gradient 0.00325667/1e-10 TRAINGD, Epoch 211/300, MSE 9.64816e-06/1e-05, Gradient 0.00266775/1e-10 TRAINGD, Performance goal met. Catatan pelatihan tr berisi informasi tentang kemajuan pelatihan. Contoh penggunaannya diberikan dalam Sesi Pelatihan Sampel dekat akhir bab ini.

Sekarang jaringan terlatih dapat disimulasikan untuk memperoleh respon terhadap masukan dalam training set. a = sim(net,p) a = -1.0010 -0.9989 1.0018 0.9985 Coba Desain Demonstrasi Jaringan Syaraf nnd12sd1 [HDB96] untuk ilustrasi kinerja algoritma gradien bets keturunan. Batch Gradient Descent dengan Momentum (traingdm). Selain traingd, ada lagi algoritma batch untuk jaringan feedforward yang sering menyediakan lebih cepat konvergensi - traingdm, keturunan curam dengan momentum. Momentum memungkinkan jaringan untuk merespon tidak hanya untuk gradien lokal, tetapi juga untuk tren terbaru dalam permukaan kesalahan. Bertindak seperti filter lowpass, momentum memungkinkan jaringan untuk mengabaikan fitur kecil di permukaan kesalahan. Tanpa momentum jaringan mungkin terjebak dalam minimum lokal dangkal. Dengan momentum jaringan dapat meluncur melalui seperti minimum. Lihat halaman 12-9 dari [HDB96] untuk diskusi momentum. Momentum dapat ditambahkan ke pembelajaran backpropagation dengan melakukan perubahan bobot yang sama dengan jumlah dari sebagian kecil dari perubahan berat terakhir dan perubahan baru yang disarankan oleh aturan backpropagation. Besarnya efek bahwa perubahan berat terakhir diperbolehkan untuk memiliki dimediasi oleh momentum konstan, mc, yang dapat berupa angka antara 0 dan 1. Ketika konstanta momentum adalah 0, perubahan berat badan hanya didasarkan pada gradien. Ketika konstanta momentum adalah 1, perubahan berat badan baru diatur untuk sama dengan perubahan berat badan terakhir dan gradien hanya diabaikan. Gradien dihitung dengan menjumlahkan gradien dihitung pada setiap contoh pelatihan, dan bobot dan bias hanya diperbarui setelah semua contoh pelatihan telah disajikan. Jika fungsi kinerja baru pada iterasi yang diberikan melebihi fungsi kinerja pada iterasi sebelumnya oleh lebih dari rasio standar max_perf_inc (biasanya 1,04), bobot baru dan bias yang dibuang, dan momentum mc koefisien diatur ke nol. Bentuk batch gradient descent dengan momentum dipanggil menggunakan fungsi pelatihan traingdm. Fungsi traingdm dipanggil menggunakan langkah-langkah yang sama yang ditunjukkan di atas untuk fungsi traingd, kecuali bahwa parameter mc, lr dan max_perf_inc belajar semua bisa diatur. Dalam kode berikut kami menciptakan jaringan kami sebelumnya dan melatih menggunakan gradient descent dengan momentum. Parameter pelatihan untuk traingdm adalah sama dengan yang untuk traingd, dengan penambahan mc faktor momentum dan kinerja maksimum meningkat max_perf_inc. (Parameter pelatihan diatur ulang ke nilai default setiap kali net.trainFcn diatur ke traingdm.)

p = [-1 -1 2 2;0 5 0 5]; t = [-1 -1 1 1]; net=newff(minmax(p),[3,1],{'tansig','purelin'},'traingdm'); net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 300; net.trainParam.goal = 1e-5; [net,tr]=train(net,p,t); TRAINGDM, Epoch 0/300, MSE 3.6913/1e-05, Gradient 4.54729/ 1e-10 TRAINGDM, Epoch 50/300, MSE 0.00532188/1e-05, Gradient 0.213222/1e-10 TRAINGDM, Epoch 100/300, MSE 6.34868e-05/1e-05, Gradient 0.0409749/1e-10 TRAINGDM, Epoch 114/300, MSE 9.06235e-06/1e-05, Gradient 0.00908756/1e-10 TRAINGDM, Performance goal met. a = sim(net,p) a = -1.0026 -1.0044 0.9969 0.9992 Perhatikan bahwa karena kita menginisialisasi bobot dan bias sebelum pelatihan (dengan memanggil newff lagi), kita memperoleh mean square berarti berbeda daripada yang kita lakukan menggunakan traingd. Jika kita reinitialize dan melatih lagi menggunakan traingdm, kita akan mendapatkan namun square error yang berbeda berarti. Pilihan acak bobot awal dan bias akan mempengaruhi kinerja dari algoritma. Jika Anda ingin membandingkan kinerja algoritma yang berbeda, Anda harus menguji masing-masing menggunakan set yang berbeda dari bobot awal dan bias. Anda mungkin ingin menggunakan net = init (net) untuk reinitialize bobot, daripada menciptakan jaringan dengan seluruh newff.

Coba Demonstrasi Jaringan Syaraf Desain nnd12mo [HDB96] untuk ilustrasi kinerja algoritma momentum batch. Pelatihan lebih cepat Bagian sebelumnya disajikan dua algoritma pelatihan backpropagation: gradient descent, dan gradient descent dengan momentum. Kedua metode ini sering terlalu lambat untuk masalah praktis. Pada bagian ini kita membahas algoritma kinerja tinggi beberapa yang bisa menyatu 10-100 kali lebih cepat daripada algoritma dibahas sebelumnya. Semua algoritma dalam bagian ini beroperasi dalam modus batch dan dipanggil dengan menggunakan train. Algoritma ini lebih cepat jatuh ke dalam dua kategori utama. Kategori pertama menggunakan teknik heuristik, yang dikembangkan dari analisis kinerja algoritma standar keturunan curam. Salah satu modifikasi heuristik themomentum teknik, yang disajikan dalam bagian sebelumnya. Bagian ini membahas teknik heuristik twomore: pembelajaran backpropagation variable rate, traingda, dan backpropagation tangguh trainrp. Kategori kedua dari algoritma cepat menggunakan teknik standar optimasi numerik. (. Lihat Bab 9 dari [HDB96] untuk review optimasi numerik dasar) Kemudian dalam bagian ini kami menyajikan tiga jenis teknik optimasi numerik untuk pelatihan jaringan syaraf: conjugate gradient (traincgf, traincgp, traincgb, trainscg), quasi-Newton (trainbfg, trainoss), dan LevenbergMarquardt (trainlm). Belajar Variable Rate (traingda, traingdx) Dengan keturunan curam standar, tingkat pembelajaran tetap konstan sepanjang pelatihan. Kinerja algoritma yang sangat sensitif terhadap pengaturan yang tepat dari tingkat pembelajaran. Jika tingkat pembelajaran diatur terlalu tinggi, algoritma dapat berosilasi dan menjadi tidak stabil. Jika learning rate terlalu kecil, algoritma akan memakan waktu terlalu lama untuk berkumpul. Hal ini tidak praktis untuk menentukan pengaturan yang optimal untuk tingkat belajar sebelum pelatihan, dan, pada kenyataannya, perubahan tingkat optimal belajar selama proses pelatihan, sebagai algoritma bergerak melintasi permukaan kinerja. Kinerja algoritma keturunan curam dapat ditingkatkan jika kita membiarkan tingkat belajar untuk berubah selama proses pelatihan. Sebuah tingkat pembelajaran adaptif akan berusaha untuk menjaga ukuran langkah pembelajaran sebagai besar mungkin sekaligus menjaga belajar stabil. Tingkat belajar ismade responsif terhadap kompleksitas permukaan kesalahan lokal. Sebuah tingkat belajar adaptif memerlukan beberapa perubahan dalam prosedur pelatihan yang digunakan oleh traingd. Pertama, output jaringan awal dan kesalahan dihitung. pada masing-masing epoch bobot baru dan bias dihitung dengan menggunakan current saat belajar. Output Baru dan kesalahan kemudian dihitung.

You might also like