Algoritma untuk melatih jaringan saraf multilayer menggunakan metode backpropagation. Metode propagasi mundur: matematika, contoh, kode

Langganan
Bergabunglah dengan komunitas “koon.ru”!
Berhubungan dengan:

Metode propagasi mundur

Metode backpropagation merupakan metode untuk melatih perceptron multilayer, salah satu pilihan untuk supervisored learning. Metode ini pertama kali dijelaskan oleh Paul J. Verbos. Dikembangkan lebih lanjut secara signifikan pada tahun 1986 oleh David I. Rumelhart, J. E. Hinton dan Ronald J. Williams. Ini adalah algoritma gradien berulang yang digunakan untuk meminimalkan kesalahan pengoperasian perceptron multilayer dan mendapatkan keluaran yang diinginkan.

Ide utama dari metode ini adalah untuk menyebarkan sinyal kesalahan dari keluaran jaringan ke masukannya, dalam arah yang berlawanan dengan perambatan sinyal langsung dalam operasi normal. Bartsev dan Okhonin segera menawarkan metode umum(“prinsip dualitas”), berlaku untuk kelas sistem yang lebih luas, termasuk sistem tertunda, sistem terdistribusi, dll.

Metodenya adalah modifikasi metode klasik penurunan gradien.

Algoritma propagasi mundur

Mari kita memiliki jaringan feedforward multilayer dengan koefisien pembobotan acak. Ada beberapa set pelatihan yang terdiri dari pasangan input jaringan – output yang diinginkan. Misalkan Y menunjukkan nilai keluaran sebenarnya dari jaringan kita, yang pada awalnya hampir acak karena keacakan koefisien bobot.

Pelatihan terdiri dari pemilihan koefisien pembobotan sedemikian rupa untuk meminimalkan beberapa fungsi tujuan. Sebagai fungsi tujuan, pertimbangkan jumlah kesalahan jaringan kuadrat menggunakan contoh dari set pelatihan.

di mana keluaran nyata dari lapisan keluaran ke-N jaringan untuk neuron ke-p pada contoh pelatihan ke-j, keluaran yang diinginkan. Artinya, dengan meminimalkan fungsi tersebut, kita memperoleh solusi menggunakan metode kuadrat terkecil.

Karena koefisien pembobotan masuk ke dalam ketergantungan secara nonlinier, kita akan menggunakan metode penurunan paling curam untuk mencari nilai minimum. Artinya, pada setiap langkah pembelajaran kita akan mengubah koefisien pembobotan sesuai rumus

dimana adalah koefisien bobot neuron ke-j pada lapisan ke-n untuk berkomunikasi dengan neuron ke-i pada lapisan (n-1).

Parameter tersebut disebut parameter kecepatan pembelajaran.

Oleh karena itu, diperlukan penentuan turunan parsial fungsi tujuan E pada seluruh koefisien pembobotan jaringan. Menurut aturan diferensiasi fungsi yang kompleks

di mana adalah keluarannya, dan merupakan jumlah tertimbang masukan dari neuron ke-j pada lapisan ke-n. Perhatikan bahwa, dengan mengetahui fungsi aktivasi, kita dapat menghitung. Misalnya, untuk sigmoid, nilai ini akan sama dengan

Faktor ketiga / tidak lebih dari keluaran neuron ke-i pada lapisan ke-(n-1), yaitu

Turunan parsial dari fungsi tujuan terhadap bobot neuron lapisan keluaran kini dapat dengan mudah dihitung. Membedakan (1) dengan dan memperhitungkan (3) dan (5) akan kita dapatkan

Mari kita perkenalkan notasinya

Kemudian untuk neuron lapisan keluaran

Untuk bobot neuron lapisan dalam kita tidak dapat langsung menuliskan berapa faktor pertama dari (4), tetapi dapat direpresentasikan sebagai berikut:

Perhatikan bahwa dalam rumus ini, dua faktor pertama tidak lebih dari. Jadi, dengan menggunakan (9) dimungkinkan untuk menyatakan nilai neuron pada lapisan ke-n dalam bentuk neuron pada lapisan (n+1). Karena untuk lapisan terakhir mudah dihitung dengan (8), hal ini dapat dilakukan dengan menggunakan rumus rekursif

dapatkan nilai untuk semua neuron di semua lapisan.

Terakhir, rumus (2) untuk memodifikasi koefisien bobot dapat dituliskan dalam bentuk

Dengan demikian, algoritma lengkap untuk melatih jaringan saraf menggunakan algoritma backpropagation dibangun sebagai berikut.

Kami menetapkan nilai awal acak untuk semua koefisien bobot jaringan. Dalam hal ini, jaringan akan melakukan beberapa transformasi acak pada sinyal masukan dan nilai fungsi tujuan (1) akan menjadi besar.

Masukkan salah satu vektor masukan dari set pelatihan ke masukan jaringan. Hitung nilai keluaran jaringan, sambil mengingat nilai keluaran masing-masing neuron.

Sesuaikan bobot jaringan:

Penilaian Kinerja Jaringan

Dalam kasus di mana kinerja jaringan dapat dievaluasi, pelatihan jaringan saraf dapat direpresentasikan sebagai masalah optimasi. Mengevaluasi berarti menunjukkan secara kuantitatif apakah jaringan menyelesaikan tugas yang diberikan kepadanya dengan baik atau buruk. Untuk tujuan ini, fungsi evaluasi dibangun. Biasanya, ini bergantung secara eksplisit pada sinyal keluaran jaringan dan secara implisit (melalui operasi) pada semua parameternya. Contoh evaluasi yang paling sederhana dan umum adalah jumlah kuadrat jarak dari sinyal keluaran jaringan ke nilai yang diperlukan:

di mana adalah nilai sinyal keluaran yang diperlukan.

Metode kuadrat terkecil tidak selalu demikian pilihan terbaik penilaian. Desain fungsi evaluasi yang cermat memungkinkan seseorang untuk meningkatkan efisiensi pelatihan jaringan dengan urutan besarnya, serta memperoleh Informasi tambahan- “tingkat kepercayaan” jaringan terhadap jawaban yang diberikan.

Kekurangan algoritma

Meskipun banyak aplikasi yang berhasil propagasi mundur bukanlah obat mujarab. Yang paling menyusahkan adalah proses pembelajaran yang panjang tanpa batas waktu. DI DALAM tugas yang kompleks Mungkin diperlukan waktu berhari-hari atau bahkan berminggu-minggu untuk melatih jaringan, atau mungkin tidak belajar sama sekali. Alasannya mungkin salah satu yang dijelaskan di bawah ini.

Kelumpuhan Jaringan

Selama proses pelatihan jaringan, nilai bobot bisa menjadi sangat besar akibat koreksi. Hal ini dapat mengakibatkan semua atau sebagian besar neuron beroperasi pada nilai OUT yang sangat besar, di wilayah yang turunan fungsi kontraksinya sangat kecil. Karena kesalahan yang dikirim kembali selama proses pembelajaran sebanding dengan turunan ini, proses pembelajaran bisa dibilang terhenti. Dari sudut pandang teoretis, masalah ini masih kurang dipahami. Hal ini biasanya dihindari dengan mengurangi ukuran langkah h, namun hal ini meningkatkan waktu pelatihan. Berbagai heuristik telah digunakan untuk mencegah atau memulihkan kelumpuhan, namun untuk saat ini hanya dapat dianggap eksperimental.

Minimum lokal

Propagasi mundur menggunakan bentuk penurunan gradien, yaitu menurunkan permukaan kesalahan, terus-menerus menyesuaikan bobot ke arah minimum. Permukaan kesalahan jaringan kompleks sangat terjal dan terdiri dari bukit, lembah, lipatan, dan jurang dalam ruang berdimensi tinggi. Suatu jaringan mungkin jatuh ke dalam minimum lokal (lembah dangkal) ketika terdapat minimum yang lebih dalam di dekatnya. Pada titik minimum lokal, semua arah mengarah ke atas, dan jaringan tidak dapat lepas darinya. Kesulitan utama dalam melatih jaringan saraf justru terletak pada metode untuk keluar dari minimum lokal: setiap kali meninggalkan minimum lokal, minimum lokal berikutnya dicari lagi menggunakan metode propagasi mundur kesalahan yang sama hingga tidak mungkin lagi menemukan jalan keluarnya. .

Ukuran langkah

Pemeriksaan yang cermat terhadap bukti konvergensi menunjukkan bahwa koreksi bobot diasumsikan sangat kecil. Jelas bahwa hal ini tidak mungkin dilakukan dalam praktiknya, karena hal ini menyebabkan waktu pembelajaran yang tidak ada habisnya. Ukuran langkah harus dianggap terbatas. Jika ukuran langkah tetap dan sangat kecil, maka konvergensi terlalu lambat; jika tetap dan terlalu besar, kelumpuhan atau ketidakstabilan terus-menerus dapat terjadi. Adalah efektif untuk meningkatkan langkah sampai peningkatan perkiraan pada arah antigradien tertentu berhenti dan menurunkannya jika perbaikan tersebut tidak terjadi. P. D. Wasserman menjelaskan algoritma pemilihan langkah adaptif yang secara otomatis menyesuaikan ukuran langkah selama proses pembelajaran. Buku karya A. N. Gorban mengusulkan teknologi ekstensif untuk mengoptimalkan pembelajaran.

Perlu juga dicatat bahwa jaringan dapat dilatih ulang, yang kemungkinan besar disebabkan oleh desain topologi yang salah. Kapan juga jumlah besar neuron, kemampuan jaringan untuk menggeneralisasi informasi hilang. Seluruh rangkaian gambar yang disediakan untuk pelatihan akan dipelajari oleh jaringan, tetapi gambar lainnya, bahkan yang sangat mirip, mungkin salah diklasifikasikan.

Lingkungan pengembangan dan alasan memilihnya

Aplikasi akan dikembangkan dalam bahasa pemrograman C# dengan framework .NETFramework4.0 di lingkungan pengembangan MicrosoftVisualStudio 2010. Fragmen kode yang memerlukan perhitungan masif dikembangkan dalam C++. MSVisualStudio 2010 mencakup serangkaian fitur baru dan lebih baik yang menyederhanakan setiap langkah proses pengembangan mulai dari desain hingga penerapan.

MicrosoftVisualStudio 2010 Ultimate - Lingkungan Terintegrasi peralatan dan infrastruktur server yang menyederhanakan proses pengembangan aplikasi secara keseluruhan. Aplikasi bisnis dibangun menggunakan proses yang efisien, dapat diprediksi, dan dapat disesuaikan. Analisis terperinci meningkatkan transparansi dan ketertelusuran segala hal lingkaran kehidupan aplikasi. Baik membuat solusi baru atau menyempurnakan solusi yang sudah ada, pengembangan tersedia menggunakan pembuatan prototipe, desain arsitektur, dan alat pengembangan canggih yang memungkinkan Anda mengembangkan aplikasi untuk berbagai platform dan teknologi, seperti komputasi awan dan pemrosesan paralel. Kemampuan koordinasi tingkat lanjut kegiatan bersama bersama dengan alat pengujian dan debugging yang terintegrasi dan inovatif akan meningkatkan produktivitas tim dan memberikan solusi berkualitas tinggi dan berbiaya rendah.

Pengembangan aplikasi pada MicrosoftVisualStudio2010 Ultimate dalam bahasa C# dengan framework .NETFramework4.0 dilakukan dengan menggunakan pemrograman berorientasi objek dan pemrograman visual.

Kesalahan dari keluaran jaringan ke masukannya, dalam arah yang berlawanan dengan perambatan sinyal maju dalam operasi normal. Bartsev dan Okhonin segera mengusulkan metode umum (“prinsip dualitas”), yang dapat diterapkan pada kelas sistem yang lebih luas, termasuk sistem dengan penundaan, sistem terdistribusi, dll.

Untuk dapat menggunakan metode backpropagation, fungsi transfer neuron harus dapat terdiferensiasi. Metode tersebut merupakan modifikasi dari metode penurunan gradien klasik.

Fungsi aktivasi sigmoid

Fungsi aktivasi yang paling umum digunakan adalah jenis berikut sigmoid:

Fungsi Fermi (sigmoid eksponensial):

Sigmoid rasional:

Garis singgung hiperbolik:

,

di mana s adalah keluaran penambah neuron dan merupakan konstanta sembarang.

Perhitungan sigmoid rasional memerlukan waktu CPU paling sedikit, dibandingkan sigmoid lainnya. Menghitung garis singgung hiperbolik memerlukan siklus prosesor paling banyak. Dibandingkan dengan fungsi aktivasi ambang batas, sigmoid dihitung sangat lambat. Jika setelah menjumlahkan fungsi ambang batas Anda dapat langsung mulai membandingkan dengan nilai tertentu (ambang batas), maka dalam kasus fungsi aktivasi sigmoid Anda perlu menghitung sigmoid (menghabiskan waktu dalam skenario kasus terbaik menjadi tiga operasi: mengambil modul, menambah dan membagi), dan baru kemudian membandingkannya dengan nilai ambang batas (misalnya nol). Jika kita berasumsi bahwa semua operasi paling sederhana dihitung oleh prosesor dalam waktu kira-kira waktu yang sama, maka kerja fungsi aktivasi sigmoidal setelah penjumlahan (yang memakan waktu sama) akan lebih lambat dibandingkan fungsi aktivasi ambang batas sebesar 1:4.

Fungsi evaluasi jaringan

Dalam kasus di mana kinerja jaringan dapat dievaluasi, pelatihan jaringan saraf dapat direpresentasikan sebagai masalah optimasi. Mengevaluasi berarti menunjukkan secara kuantitatif apakah jaringan menyelesaikan tugas yang diberikan kepadanya dengan baik atau buruk. Untuk tujuan ini, fungsi evaluasi dibangun. Biasanya, ini bergantung secara eksplisit pada sinyal keluaran jaringan dan secara implisit (melalui operasi) pada semua parameternya. Contoh evaluasi yang paling sederhana dan umum adalah jumlah kuadrat jarak dari sinyal keluaran jaringan ke nilai yang diperlukan:

,

di mana adalah nilai sinyal keluaran yang diperlukan.

Deskripsi algoritma

Arsitektur Perceptron Multilayer

Algoritma backpropagation diterapkan pada perceptron multilayer. Sebuah jaringan memiliki banyak masukan, banyak keluaran, dan banyak node internal. Mari kita memberi nomor ulang semua node (termasuk input dan output) dengan angka dari 1 hingga N (penomoran terus menerus, terlepas dari topologi lapisannya). Mari kita nyatakan dengan bobot yang berdiri di tepi yang menghubungkan node ke-i dan ke-j, dan dengan keluaran dari node ke-i. Jika kita mengetahui contoh pelatihan (jawaban jaringan yang benar), maka fungsi error yang diperoleh dengan menggunakan metode kuadrat terkecil akan terlihat seperti ini:

Bagaimana cara memodifikasi bobot? Kami akan menerapkan penurunan gradien stokastik, yaitu, kami akan menyesuaikan bobot setelah setiap contoh pelatihan dan, dengan demikian, "bergerak" dalam ruang bobot multidimensi. Untuk “mendapatkan” kesalahan minimum, kita perlu “bergerak” ke arah yang berlawanan dengan gradien, yaitu berdasarkan setiap kelompok jawaban yang benar, tambahkan bobot pada setiap kelompok.

,

dimana adalah pengali yang menentukan kecepatan “gerakan”.

Turunannya dihitung sebagai berikut. Biarkan dulu, yaitu bobot yang kita minati, masuk ke neuron level terakhir. Pertama, kami mencatat bahwa ini mempengaruhi keluaran jaringan hanya sebagai bagian dari penjumlahan, di mana penjumlahan tersebut diambil alih masukan dari node ke-j. Itu sebabnya

Demikian pula, ini mempengaruhi kesalahan keseluruhan hanya dalam output dari node ke-j (ingat bahwa ini adalah output dari seluruh jaringan). Itu sebabnya

Jika simpul ke-j- bukan pada level terakhir, maka ada jalan keluarnya; mari kita nyatakan dengan Children(j). Pada kasus ini

, .

Ya - ini adalah koreksi yang persis sama, tetapi dihitung untuk simpul tingkat berikutnya, kami akan menyatakannya dengan - berbeda dari itu karena tidak adanya pengali. Karena kita telah belajar menghitung koreksi untuk node pada level terakhir dan menyatakan koreksi untuk node lainnya level rendah melalui koreksi yang lebih tinggi, Anda sudah dapat menulis suatu algoritma. Karena fitur penghitungan koreksi inilah algoritma ini disebut algoritma propagasi mundur(propagasi mundur). Ringkasan singkat dari pekerjaan yang dilakukan:

  • untuk node tingkat terakhir
  • untuk node jaringan internal
  • untuk semua node

Algoritma yang dihasilkan disajikan di bawah ini. Sebagai masukan pada algoritma, selain parameter yang ditentukan, struktur jaringan juga perlu dikirimkan dalam beberapa format. Dalam prakteknya sangat hasil yang baik menunjukkan jaringan dengan struktur yang cukup sederhana, terdiri dari dua tingkat neuron - tingkat tersembunyi (unit tersembunyi) dan neuron keluaran (unit keluaran); setiap masukan jaringan dihubungkan ke semua neuron tersembunyi, dan hasil kerja setiap neuron tersembunyi diumpankan ke masukan masing-masing neuron keluaran. Dalam hal ini, cukup menyediakan jumlah neuron tingkat tersembunyi sebagai masukan.

Algoritma

Algoritma: Propagasi Kembali

dimana adalah koefisien inersia untuk menghaluskan lompatan tajam ketika bergerak sepanjang permukaan fungsi tujuan

Interpretasi matematis dari pelatihan jaringan saraf

Pada setiap iterasi algoritma backpropagation, bobot jaringan saraf dimodifikasi untuk meningkatkan solusi dari satu contoh. Jadi, selama proses pembelajaran, masalah optimasi kriteria tunggal diselesaikan secara siklis.

Pelatihan jaringan saraf dicirikan oleh empat keterbatasan khusus yang membedakan pelatihan jaringan saraf dari masalah optimasi umum: jumlah parameter yang sangat besar, kebutuhan akan paralelisme yang tinggi selama pelatihan, sifat multi-kriteria dari masalah yang sedang dipecahkan, dan kebutuhan untuk menemukan solusi. area yang cukup luas dimana nilai semua fungsi yang diminimalkan mendekati minimal. Jika tidak, masalah pembelajaran secara umum dapat dirumuskan sebagai masalah minimalisasi skor. Kehati-hatian pada frasa sebelumnya (“biasanya”) disebabkan oleh fakta bahwa sebenarnya kita tidak mengetahui dan tidak akan pernah mengetahui semua kemungkinan tugas untuk jaringan saraf, dan mungkin di suatu tempat yang tidak diketahui ada tugas yang tidak dapat direduksi menjadi meminimalkan memperkirakan. Meminimalkan perkiraan adalah masalah yang kompleks: terdapat sejumlah besar parameter (untuk contoh standar yang diterapkan pada PC - dari 100 hingga 1.000.000), bantuan adaptif (grafik evaluasi sebagai fungsi dari parameter yang disesuaikan) rumit dan mungkin berisi banyak minimum lokal.

Kekurangan algoritma

Meskipun banyak penerapan backpropagation yang berhasil, hal ini bukanlah obat mujarab. Yang paling menyusahkan adalah proses pembelajaran yang panjang tanpa batas waktu. Dalam permasalahan yang kompleks, mungkin diperlukan waktu berhari-hari atau bahkan berminggu-minggu untuk melatih jaringan, atau mungkin jaringan tidak belajar sama sekali. Alasannya mungkin salah satu yang dijelaskan di bawah ini.

Kelumpuhan Jaringan

Selama proses pelatihan jaringan, nilai bobot bisa menjadi sangat besar akibat koreksi. Hal ini dapat mengakibatkan semua atau sebagian besar neuron beroperasi pada nilai OUT yang sangat besar, di wilayah yang turunan fungsi kontraksinya sangat kecil. Karena kesalahan yang dikirim kembali selama proses pembelajaran sebanding dengan turunan ini, proses pembelajaran bisa dibilang terhenti. Dari sudut pandang teoretis, masalah ini masih kurang dipahami. Hal ini biasanya dihindari dengan mengurangi ukuran langkah η, namun hal ini meningkatkan waktu pelatihan. Berbagai heuristik telah digunakan untuk mencegah atau memulihkan kelumpuhan, namun untuk saat ini hanya dapat dianggap eksperimental.

Minimum lokal

Propagasi mundur menggunakan bentuk penurunan gradien, yaitu menurunkan permukaan kesalahan, terus-menerus menyesuaikan bobot ke arah minimum. Permukaan kesalahan jaringan kompleks sangat terjal dan terdiri dari bukit, lembah, lipatan, dan jurang dalam ruang berdimensi tinggi. Suatu jaringan mungkin jatuh ke dalam minimum lokal (lembah dangkal) ketika terdapat minimum yang lebih dalam di dekatnya. Pada titik minimum lokal, semua arah mengarah ke atas, dan jaringan tidak dapat lepas darinya. Kesulitan utama dalam melatih jaringan saraf justru terletak pada metode untuk keluar dari minimum lokal: setiap kali meninggalkan minimum lokal, minimum lokal berikutnya dicari lagi menggunakan metode propagasi balik kesalahan yang sama hingga tidak mungkin lagi menemukan jalan keluarnya. dia.

Ukuran langkah

Pemeriksaan yang cermat terhadap bukti konvergensi menunjukkan bahwa koreksi bobot diasumsikan sangat kecil. Jelas bahwa hal ini tidak mungkin dilakukan dalam praktiknya, karena hal ini menyebabkan waktu pembelajaran yang tidak ada habisnya. Ukuran langkah harus dianggap terbatas. Jika ukuran langkah tetap dan sangat kecil, maka konvergensi terlalu lambat; jika tetap dan terlalu besar, kelumpuhan atau ketidakstabilan terus-menerus dapat terjadi. Adalah efektif untuk meningkatkan langkah sampai peningkatan perkiraan pada arah antigradien tertentu berhenti dan menurunkannya jika perbaikan tersebut tidak terjadi. P. D. Wasserman menjelaskan algoritma pemilihan langkah adaptif yang secara otomatis menyesuaikan ukuran langkah selama proses pembelajaran. Buku karya A. N. Gorban mengusulkan teknologi ekstensif untuk mengoptimalkan pembelajaran.

Perlu juga dicatat bahwa jaringan dapat dilatih ulang, yang kemungkinan besar disebabkan oleh desain topologi yang salah. Dengan terlalu banyak neuron, kemampuan jaringan untuk menggeneralisasi informasi akan hilang. Seluruh rangkaian gambar yang disediakan untuk pelatihan akan dipelajari oleh jaringan, tetapi gambar lainnya, bahkan yang sangat mirip, mungkin salah diklasifikasikan.

Lihat juga

  • Algoritma Gradien Kecepatan

literatur

  1. Wasserman F.Sejarah pertemuanWasserman F. Neurocomputing: Teori dan Praktek. - M.: “Mir”, 1992.
  2. Khaikin S. Jaringan saraf: Kursus lengkap. Per. dari bahasa Inggris N.N.Kussul, A.Yu.Shelestova. edisi ke-2, putaran. - M.: Rumah Penerbitan Williams, 2008, 1103 hal.

Tautan

  1. Koposov A.I., Shcherbakov I.B., Kislenko N.A., Kislenko O.P., Varivoda Yu.V. dkk.. - M.: VNIIGAZ, 1995.

Dalam jaringan saraf multilayer, nilai keluaran optimal neuron dari semua lapisan kecuali yang terakhir, sebagai suatu peraturan, tidak diketahui; perceptron tiga atau lebih lapisan tidak dapat lagi dilatih, hanya dipandu oleh nilai kesalahan pada output jaringan

Salah satu pilihan untuk memecahkan masalah ini adalah dengan mengembangkan kumpulan sinyal keluaran yang sesuai dengan sinyal masukan untuk setiap lapisan jaringan saraf, yang tentu saja merupakan operasi yang sangat memakan waktu dan tidak selalu dapat dilakukan. untuk secara dinamis menyesuaikan koefisien pembobotan sinapsis, di mana, sebagai aturan, koneksi terlemah dan berubah sedikit dalam satu arah atau lainnya, dan hanya perubahan yang disimpan yang mengarah pada penurunan kesalahan pada keluaran sinapsis seluruh jaringan.Tentu saja, metode ini

kesederhanaan yang terlihat jelas, memerlukan penghitungan rutin yang rumit. Dan yang terakhir, pilihan ketiga yang lebih dapat diterima adalah perambatan sinyal kesalahan dari keluaran jaringan saraf ke masukannya, dalam arah yang berlawanan dengan perambatan langsung sinyal dalam operasi normal. Algoritma ini dinamakan prosedur propagasi mundur (error back propagation) Dialah yang akan dibahas dibawah ini

Algoritma backpropagation adalah algoritma pembelajaran gradien berulang yang digunakan untuk meminimalkan standar deviasi arus dari keluaran yang diperlukan jaringan saraf multilayer dengan koneksi serial

Menurut metode kuadrat terkecil, fungsi kesalahan target jaringan saraf yang ingin diminimalkan adalah nilainya

di mana keadaan keluaran sebenarnya dari neuron pada lapisan keluaran jaringan saraf ketika gambar diumpankan ke masukannya, keadaan keluaran yang diperlukan dari neuron ini

Penjumlahan dilakukan pada seluruh neuron pada lapisan keluaran dan pada semua gambar yang diproses oleh jaringan.Minimalisasi menggunakan metode penurunan gradien memastikan penyesuaian koefisien bobot sebagai berikut

dimana adalah koefisien pembobotan koneksi sinaptik yang menghubungkan neuron lapisan ke neuron lapisan - koefisien kecepatan pembelajaran,

Sesuai dengan aturan diferensiasi fungsi kompleks

di mana adalah jumlah tertimbang dari sinyal input neuron dan argumen fungsi aktivasi Karena turunan dari fungsi aktivasi harus ditentukan pada seluruh sumbu absis, fungsi lompat satuan dan fungsi aktivasi lainnya dengan ketidakhomogenan tidak cocok untuk jaringan saraf yang sedang dipertimbangkan.Mereka menggunakan yang berikut ini fungsi halus, sebagai garis singgung hiperbolik atau sigmoid klasik dengan eksponensial (lihat Tabel 1 1) Misalnya, dalam kasus garis singgung hiperbolik

Pengganda ketiga sama dengan keluaran neuron lapisan sebelumnya

Adapun faktor pertama pada (1.11) dapat dengan mudah diperluas sebagai berikut:

Di sini penjumlahan dilakukan di antara neuron-neuron lapisan dengan memperkenalkan variabel baru:

kita memperoleh rumus rekursif untuk menghitung nilai suatu lapisan dari nilai lapisan yang lebih tua

Untuk lapisan keluaran:

Sekarang kita dapat menulis (1.10) dalam bentuk yang diperluas:

Kadang-kadang, untuk memberikan beberapa inersia pada proses koreksi bobot, menghaluskan lompatan tajam saat bergerak sepanjang permukaan fungsi tujuan, (1.17) dilengkapi dengan nilai perubahan bobot pada iterasi sebelumnya.

dimana koefisien inersia; nomor iterasi saat ini.

Dengan demikian, algoritma lengkap untuk melatih jaringan saraf menggunakan prosedur propagasi mundur dibangun sebagai berikut.

LANGKAH 1. Terapkan salah satu gambar yang mungkin ke input jaringan dan, dalam mode operasi normal jaringan saraf, ketika sinyal merambat dari input ke output, hitung nilai yang terakhir. Izinkan kami mengingatkan Anda bahwa:

di mana adalah jumlah neuron dalam lapisan, dengan memperhitungkan neuron dengan status keluaran konstan yang menentukan bias; masukan neuron pada lapisan tersebut

dimana sigmoidnya,

dimana adalah komponen vektor dari gambar masukan.

LANGKAH 4. Sesuaikan semua bobot di jaringan saraf:

LANGKAH 5. Jika kesalahan jaringan signifikan, lanjutkan ke langkah 1. Jika tidak, akhiri.

Pada Langkah 1, jaringan disajikan secara bergantian dalam urutan acak dengan semua gambar pelatihan sehingga jaringan, secara kiasan, tidak melupakan beberapa gambar sementara jaringan mengingat yang lain.

Dari ekspresi (1.17) dapat disimpulkan bahwa ketika nilai keluaran cenderung nol, efisiensi pembelajaran menurun secara nyata. Dengan vektor input biner, rata-rata setengah dari bobot tidak akan disesuaikan, begitu pula wilayahnya nilai yang mungkin Output neuron diinginkan untuk digeser dalam batas yang dapat dicapai dengan modifikasi sederhana pada fungsi logistik. Misalnya, sigmoid dengan eksponensial diubah menjadi bentuk:

Mari kita pertimbangkan pertanyaan tentang kapasitas jaringan saraf, yaitu jumlah gambar yang disajikan ke masukannya yang dapat dipelajari untuk dikenali. Untuk jaringan dengan lebih dari dua lapisan, pertanyaan ini tetap terbuka. Untuk jaringan dengan dua lapisan, kapasitas jaringan deterministik diperkirakan sebagai berikut:

dimana adalah jumlah bobot yang dapat disesuaikan, adalah jumlah neuron pada lapisan keluaran.

Ungkapan ini diperoleh dengan mempertimbangkan beberapa batasan. Pertama, jumlah input dan neuron pada lapisan tersembunyi harus memenuhi pertidaksamaan. Kedua, namun perkiraan di atas dibuat untuk jaringan dengan fungsi aktivasi ambang batas neuron, dan kapasitas jaringan dengan fungsi aktivasi lancar, misalnya (1.23), biasanya lebih besar. Selain itu, istilah deterministik berarti perkiraan kapasitas yang dihasilkan cocok untuk semua pola masukan yang dapat diwakili oleh masukan tersebut. Pada kenyataannya, distribusi pola masukan cenderung memiliki keteraturan tertentu, yang memungkinkan jaringan saraf untuk menggeneralisasi dan dengan demikian meningkatkan kapasitas sebenarnya. Karena distribusi gambar, secara umum, tidak diketahui sebelumnya, kita hanya dapat membicarakan kapasitas sebenarnya secara tentatif, tetapi biasanya dua kali lebih besar dari kapasitas deterministik.

Pertanyaan tentang kapasitas jaringan saraf berkaitan erat dengan pertanyaan tentang daya yang dibutuhkan lapisan keluaran jaringan yang melakukan klasifikasi akhir gambar. Misalnya, untuk membagi sekumpulan gambar masukan menjadi dua kelas, satu neuron keluaran sudah cukup. Dalam hal ini, setiap level logis akan menunjuk kelas terpisah. Pada dua neuron keluaran dengan fungsi aktivasi ambang batas, empat kelas dapat dikodekan. Untuk meningkatkan keandalan klasifikasi, disarankan untuk memperkenalkan redundansi dengan menugaskan ke setiap kelas satu neuron di lapisan keluaran atau, lebih baik lagi, beberapa neuron, yang masing-masing dilatih untuk menentukan apakah suatu gambar termasuk dalam kelas dengan derajatnya sendiri. kepercayaan diri, misalnya: tinggi, sedang dan rendah. Jaringan saraf seperti itu memungkinkan untuk mengklasifikasikan gambar masukan yang digabungkan menjadi kumpulan fuzzy (buram atau berpotongan). Properti ini membawa jaringan tersebut lebih dekat ke kondisi operasi sebenarnya dari jaringan saraf biologis.

Jaringan saraf yang dimaksud memiliki beberapa hambatan. Pertama, dalam prosesnya, nilai bobot positif atau negatif yang besar dapat menggeser titik operasi pada sigmoid neuron ke wilayah saturasi. Nilai kecil dari turunan fungsi logistik akan menyebabkan, sesuai dengan (1.15) dan (1.16), pembelajaran terhenti, yang melumpuhkan jaringan. Kedua, penggunaan metode penurunan gradien tidak menjamin ditemukannya nilai minimum global dari fungsi tujuan. Hal ini erat kaitannya dengan persoalan pemilihan learning rate. Kenaikan bobot dan, oleh karena itu, kecepatan pembelajaran untuk menemukan titik ekstrem harus sangat kecil, namun dalam kasus ini pembelajarannya akan sangat kecil.

terjadi secara perlahan dan tidak dapat diterima. Sebaliknya, penyesuaian bobot yang terlalu besar dapat mengakibatkan ketidakstabilan permanen dalam proses pembelajaran. Oleh karena itu, angka yang kurang dari 1 (misalnya 0,1) biasanya dipilih sebagai koefisien kecepatan pembelajaran 1], yang secara bertahap menurun selama proses pembelajaran. Selain itu, untuk mengecualikan serangan jaringan yang tidak disengaja pada minimum lokal, terkadang, setelah menstabilkan nilai koefisien bobot, 7 ditingkatkan secara signifikan dalam waktu singkat untuk memulai penurunan gradien dari titik baru. Jika mengulangi prosedur ini beberapa kali membawa jaringan ke keadaan yang sama, kita dapat berasumsi bahwa nilai minimum global telah ditemukan.

Ada metode lain untuk menghilangkan minimum lokal dan kelumpuhan jaringan, yaitu dengan menggunakan jaringan saraf stokastik.

Mari kita berikan interpretasi geometris di atas.

Dalam algoritma backpropagation, vektor gradien dari permukaan kesalahan dihitung. Vektor ini menunjukkan arah penurunan terpendek di sepanjang permukaan dari titik saat ini, pergerakan sepanjang itu menyebabkan penurunan kesalahan. Serangkaian langkah menurun akan menghasilkan minimal satu jenis atau lainnya. Kesulitannya di sini adalah masalah pemilihan panjang langkah.

Dengan ukuran langkah yang besar, konvergensi akan lebih cepat, namun terdapat bahaya melompati solusi atau kasus bentuk yang kompleks permukaan yang salah mengarah ke arah yang salah, misalnya bergerak menyusuri jurang sempit dengan lereng curam, melompat dari satu sisi ke sisi lain. Sebaliknya, dengan langkah kecil dan arah yang benar, diperlukan banyak iterasi. Dalam prakteknya, ukuran langkah diambil sebanding dengan kecuraman lereng, sehingga algoritma memperlambat mendekati minimum. Pilihan tepat kecepatan belajar tergantung pada tugas tertentu dan biasanya dilakukan secara eksperimental. Konstanta ini mungkin juga bergantung pada waktu, menurun seiring kemajuan algoritma.

Biasanya algoritma ini dimodifikasi untuk memasukkan istilah momentum (atau inersia). Hal ini mendorong kemajuan dalam arah yang tetap, jadi jika beberapa langkah telah diambil dalam arah yang sama, algoritme akan meningkatkan kecepatan, yang terkadang memungkinkan Anda menghindari minimum lokal, serta melewati area datar dengan lebih cepat.

Pada setiap langkah algoritme, semua contoh pelatihan diumpankan ke masukan jaringan secara bergantian, nilai keluaran sebenarnya dari jaringan dibandingkan dengan nilai yang diperlukan, dan kesalahan dihitung. Nilai error serta gradien permukaan error

digunakan untuk mengatur timbangan, setelah itu semua tindakan diulangi. Proses pembelajaran berhenti ketika sejumlah epoch tertentu telah berlalu, atau ketika kesalahan mencapai tingkat kecil tertentu, atau ketika kesalahan berhenti berkurang.

Mari kita pertimbangkan masalah generalisasi dan pelatihan ulang jaringan saraf secara lebih rinci. Generalisasi adalah kemampuan jaringan saraf untuk membuat prediksi akurat pada data yang bukan milik set pelatihan asli. Overfitting adalah overfitting yang terjadi ketika algoritma pelatihan memakan waktu terlalu lama dan jaringan terlalu rumit untuk tugas atau jumlah data yang tersedia.

Mari kita tunjukkan masalah generalisasi dan pelatihan ulang dengan menggunakan contoh memperkirakan ketergantungan tertentu bukan dengan jaringan saraf, tetapi melalui polinomial, dan esensi dari fenomena tersebut akan sama persis.

Grafik polinomial dapat memiliki bentuk yang berbeda, dan semakin tinggi derajat dan jumlah sukunya, semakin kompleks pula bentuknya. Untuk data awal, Anda dapat memilih kurva (model) polinomial sehingga memperoleh penjelasan tentang ketergantungan yang ada. Datanya mungkin berisik, jadi tidak dapat diasumsikan demikian model terbaik melewati tepat melalui semua titik yang tersedia. Polinomial tingkat rendah mungkin lebih baik dalam menjelaskan hubungan tetapi mungkin tidak cukup fleksibel untuk menyesuaikan dengan data, sedangkan polinomial tingkat tinggi mungkin terlalu fleksibel tetapi akan mengikuti data dengan cermat sambil mengambil bentuk berbelit-belit yang tidak ada hubungannya dengan data. hubungan sebenarnya. .

Jaringan saraf menghadapi kesulitan yang sama. Jaringan dengan bobot lebih banyak memodelkan fungsi yang lebih kompleks dan oleh karena itu rentan terhadap overfitting. Jaringan dengan jumlah bobot yang kecil mungkin tidak cukup fleksibel untuk memodelkan ketergantungan yang ada. Misalnya, jaringan tanpa lapisan tersembunyi hanya memodelkan fungsi linier biasa.

Bagaimana cara memilih tingkat kompleksitas jaringan yang tepat? Hampir selalu jaringan yang lebih kompleks menghasilkan kesalahan yang lebih kecil, tapi ini mungkin tidak menunjukkannya kualitas baik model, tetapi tentang melatih kembali jaringan.

Solusinya adalah dengan menggunakan validasi silang benchmark. Untuk tujuan ini, sebagian dari sampel pelatihan dicadangkan, yang digunakan bukan untuk melatih jaringan menggunakan algoritma propagasi mundur, tetapi untuk kontrol independen atas hasil selama algoritma. Pada awal pekerjaan, terjadi kesalahan jaringan pada pelatihan dan

set kontrol akan sama. Saat jaringan dilatih, kesalahan pelatihan berkurang, begitu pula kesalahan pada set kontrol. Jika periksa kesalahan berhenti menurun atau bahkan mulai meningkat, hal ini menunjukkan bahwa jaringan mulai memperkirakan data terlalu dekat (overtrained) dan pelatihan harus dihentikan. Jika hal ini terjadi, maka jumlah elemen dan/atau lapisan tersembunyi harus dikurangi, karena jaringan terlalu kuat untuk melakukan tugas ini. Jika kedua kesalahan (pelatihan dan validasi silang) tidak mencapai tingkat yang cukup kecil, maka pelatihan ulang secara alami tidak terjadi, dan jaringan, sebaliknya, tidak cukup kuat untuk memodelkan ketergantungan yang ada.

Masalah yang dijelaskan mengarah pada fakta bahwa kapan kerja praktek Dengan jaringan saraf, Anda harus bereksperimen dengan sejumlah besar jaringan berbeda, terkadang melatih masing-masing jaringan beberapa kali dan membandingkan hasilnya. Indikator utama kualitas hasil adalah kesalahan pengendalian. Pada saat yang sama, sesuai dengan prinsip seluruh sistem, dari dua jaringan dengan kesalahan kontrol yang kira-kira sama, masuk akal untuk memilih salah satu yang lebih sederhana.

Perlunya eksperimen berulang mengarah pada fakta bahwa set kontrol mulai memainkan peran kunci dalam memilih model dan menjadi bagian dari proses pembelajaran. Hal ini melemahkan perannya sebagai kriteria independen untuk kualitas model. Pada jumlah besar percobaan, ada kemungkinan besar untuk memilih jaringan yang berhasil yang memberikan hasil yang baik pada set kontrol. Namun, untuk memberikan model akhir keandalan yang tepat, mereka sering kali (jika jumlah contoh pelatihan memungkinkan) melakukan hal berikut: mencadangkan serangkaian contoh pengujian. Model akhir diuji pada data dari kumpulan ini untuk memastikan bahwa hasil yang dicapai pada kumpulan contoh pelatihan dan pengujian adalah nyata dan bukan artefak dari proses pembelajaran. Tentu saja, agar dapat menjalankan perannya dengan baik, set tes hanya boleh digunakan satu kali saja: jika digunakan kembali untuk menyesuaikan proses pembelajaran, justru akan menjadi set kontrol.

Untuk mempercepat proses pembelajaran jaringan, banyak modifikasi algoritma error backpropagation telah diusulkan terkait dengan penggunaan berbagai fungsi error, prosedur penentuan arah dan ukuran langkah.

1) Fungsi kesalahan:

Kesalahan integral berfungsi pada seluruh rangkaian contoh pelatihan;

Fungsi kesalahan pangkat bilangan bulat dan pecahan

2) Tata cara penentuan ukuran langkah pada setiap iterasi

Pembelahan dua;

Hubungan inersia (lihat di atas);

3) Tata cara menentukan arah langkah.

Menggunakan matriks turunan orde dua (metode Newton);

Menggunakan petunjuk dalam beberapa langkah (metode partan).

Tujuan propagasi mundur sederhana: menyesuaikan setiap bobot secara proporsional dengan seberapa besar kontribusinya terhadap kesalahan keseluruhan. Jika kita mengurangi kesalahan setiap bobot secara berulang, pada akhirnya kita akan memiliki sekumpulan bobot yang menghasilkan prediksi yang baik.

Memperbarui Aturan Rantai

Dapat dianggap sebagai rangkaian persamaan bersarang yang panjang. Jika itu yang Anda pikirkan tentang propagasi maju, maka propagasi mundur hanyalah sebuah aplikasi aturan rantai(diferensiasi fungsi kompleks) untuk mencari turunan kerugian terhadap variabel apa pun dalam persamaan bertingkat. Dengan memperhatikan fungsi propagasi maju:

F(x)=SEBUAH(B(C(x)))

A, B, dan C berada pada lapisan yang berbeda. Dengan menggunakan aturan rantai, kita dapat dengan mudah menghitung turunan f(x) terhadap x:

F′(x)=f′(A)⋅A′(B)⋅B′(C)⋅C′(x)

Bagaimana dengan turunannya terhadap B? Untuk mencari turunan terhadap B, Anda dapat berpura-pura bahwa B(C(x)) adalah sebuah konstanta, menggantinya dengan variabel placeholder B, dan terus mencari turunannya terhadap B standar.

F′(B)=f′(A)⋅A′(B)

Metode sederhana ini meluas ke variabel apa pun dalam suatu fungsi dan memungkinkan kita menentukan dampaknya secara akurat setiap variabel dengan hasil keseluruhan.

Menerapkan aturan rantai

Mari kita gunakan aturan rantai untuk menghitung turunan kerugian terhadap bobot apa pun dalam jaringan. Aturan rangkaian akan membantu kita menentukan seberapa besar kontribusi setiap bobot terhadap kesalahan keseluruhan dan arah pembaruan setiap bobot untuk mengurangi kesalahan. Berikut persamaan yang Anda perlukan untuk membuat perkiraan dan menghitung total kesalahan atau kerugian:

Mengingat jaringan yang terdiri dari satu neuron, total hilangnya jaringan saraf dapat dihitung sebagai:

Biaya=C(R(Z(XW)))

Dengan menggunakan aturan rantai, kita dapat dengan mudah mencari turunan kerugian terhadap berat W.

C′(W)=C′(R)⋅R′(Z)⋅Z′(W)=(y^−y)⋅R′(Z)⋅X

Sekarang kita memiliki persamaan untuk menghitung turunan kerugian terhadap bobot apa pun, mari kita lihat contoh jaringan saraf:

Apa turunan dari kerugian tersebut Wah?

C′(WO)=C′(y^)⋅y^′(ZO)⋅Z′O(WO)=(y^−y)⋅R′(ZO)⋅H

Dan tentang apa Ap? Untuk mengetahuinya, kita terus mengulang kembali fungsi kita, menerapkan aturan rangkaian secara rekursif, hingga kita mendapatkan fungsi yang memiliki elemen Ap.

C′(Wh)=C′(y^)⋅O′(Zo)⋅Z′o(H)⋅H′(Zh)⋅Z′h(Wh)=(y^−y)⋅R′(Zo )⋅Wo⋅R′(Zh)⋅X

Dan sekedar iseng, bagaimana jika jaringan kita memiliki 10 lapisan tersembunyi. Berapakah turunan dari rugi bobot pertama w1?

C(w1)=(dC/dy^)⋅(dy^/dZ11)⋅(dZ11/dH10)⋅(dH10/dZ10)⋅(dZ10/dH9)⋅(dH9/dZ9)⋅(dZ9/dH8)⋅( dH8/dZ8)⋅(dZ8/dH7)⋅(dH7/dZ7)⋅(dZ7/dH6)⋅(dH6/dZ6)⋅(dZ6/dH5)⋅(dH5/dZ5)⋅(dZ5/dH4)⋅(dH4/ dZ4)⋅(dZ4/dH3)⋅(dH3/dZ3)⋅(dZ3/dH2)⋅(dH2/dZ2)⋅(dZ2/dH1)⋅(dH1/dZ1)⋅(dZ1/dW1)

Perhatikan sebuah pola? Jumlah komputasi yang diperlukan untuk menghitung kerugian derivatif meningkat seiring dengan semakin dalamnya jaringan kami. Juga mencatat redundansi dalam perhitungan derivatif kami. Turunan kerugian setiap lapisan menambahkan dua elemen baru ke elemen yang telah dihitung oleh lapisan di atasnya. Bagaimana jika ada cara untuk menyelamatkan pekerjaan kita dan menghindari penghitungan berulang ini?

Menyimpan pekerjaan dengan memoisasi

Memoisasi adalah istilah dalam ilmu komputer yang memiliki arti sederhana: jangan menghitung hal yang sama berulang kali. Dalam memoisasi, kami menyimpan hasil yang dihitung sebelumnya untuk menghindari penghitungan ulang fungsi yang sama. Hal ini berguna untuk mempercepat fungsi rekursif salah satunya backpropagation. Perhatikan pola persamaan turunan di bawah ini.

Masing-masing lapisan ini menghitung ulang turunan yang sama! Daripada menuliskan persamaan turunan panjang untuk setiap bobot, kita dapat menggunakan memoisasi untuk menyimpan pekerjaan kita saat kita mengembalikan kesalahan melalui jaringan. Untuk melakukan ini, kita mendefinisikan 3 persamaan (di bawah) yang bersama-sama dinyatakan dalam bentuk pendek semua perhitungan yang diperlukan untuk propagasi mundur. Perhitungannya sama, tetapi persamaannya memberikan jalan pintas yang bagus yang dapat kita gunakan untuk melacak perhitungan yang telah kita lakukan dan menyimpan pekerjaan kita saat kita kembali melalui jaringan.

Pertama kita menghitung kesalahan lapisan keluaran dan meneruskan hasilnya ke lapisan tersembunyi di depannya. Setelah menghitung kesalahan lapisan tersembunyi, kita meneruskan nilainya kembali ke lapisan tersembunyi sebelumnya. Dan seterusnya dan seterusnya. Kembali melalui jaringan, kami menerapkan rumus ke-3 pada setiap lapisan untuk menghitung turunan kerugian terhadap bobot lapisan tersebut. Turunan ini memberitahu kita ke arah mana untuk menyesuaikan bobot kita untuk mengurangi kerugian secara keseluruhan.

Catatan: ketentuan kesalahan lapisan mengacu pada turunan kerugian sehubungan dengan pintu masuk ke lapisan. Ini menjawab pertanyaan: bagaimana keluaran dari fungsi kerugian berubah ketika masukan ke lapisan ini berubah?

Kesalahan Lapisan Keluaran

Untuk menghitung kesalahan lapisan keluaran, perlu dicari turunan kerugian terhadap masukan ke lapisan keluaran, Zo. Ini menjawab pertanyaan: bagaimana bobot lapisan terakhir mempengaruhi kesalahan jaringan secara keseluruhan? Maka turunannya adalah:

C′(Zo)=(y^−y)⋅R′(Zo)

Untuk mempermudah pencatatan, praktisi MO biasanya mengganti urutannya (y^−y)∗R"(Zo) ketentuan Eo. Jadi rumus kami untuk kesalahan lapisan keluaran adalah:

Eo=(y^−y)⋅R′(Zo)

Kesalahan lapisan tersembunyi

Untuk menghitung kesalahan lapisan tersembunyi, Anda perlu mencari turunan kerugian terhadap masukan lapisan tersembunyi, Zh.

Eh=Eo⋅Wo⋅R′(Zh)

Rumus ini adalah dasar dari backpropagation. Kami menghitung kesalahan lapisan saat ini dan meneruskan kesalahan tertimbang kembali ke lapisan sebelumnya, melanjutkan proses hingga kami mencapai lapisan tersembunyi pertama. Sepanjang prosesnya, kami memperbarui bobot menggunakan turunan kerugian terhadap setiap bobot.

Turunan dari kerugian terhadap berat apa pun

Mari kita kembali ke rumus turunan kerugian terhadap bobot lapisan keluaran Wah.

C′(WO)=(y^−y)⋅R′(ZO)⋅H

Kita tahu bahwa kita dapat mengganti bagian pertama dengan persamaan kesalahan lapisan keluaran Eh. H mewakili aktivasi lapisan tersembunyi.

C′(Wo)=Eo⋅H

Jadi, untuk mencari turunan kerugian terhadap bobot apa pun di jaringan kita, kita cukup mengalikan kesalahan lapisan terkait dengan masukannya (keluaran dari lapisan sebelumnya).

C′(w)=CurrentLayerError⋅CurrentLayerInput

Catatan: pintu masuk mengacu pada aktivasi dari lapisan sebelumnya, bukan input berbobot, Z.

Meringkas

Berikut adalah 3 persamaan terakhir yang bersama-sama menjadi dasar propagasi mundur.

Berikut proses yang divisualisasikan menggunakan contoh jaringan saraf di atas:

Propagasi mundur: Kode Contoh

def relu_prime(z): jika z > 0: kembali 1 kembali 0 def biaya(yHat, y): kembali 0,5 * (yHat - y)**2 def biaya_prime(yHat, y): kembali yHat-y def backprop(x, y, Ap, Wo, lr): yHat = feed_forward(x, Ap, Wo) # Kesalahan Lapisan Eo = (yHat - y) * relu_prime(Zo) Eh = Eo * Wo * relu_prime(Zh) # Biaya turunan untuk bobot dWo = Eo * H dWh = Eh * x # Perbarui bobot Ap -= lr * dWh Wo -= lr * dWo

Kesalahan dari keluaran jaringan ke masukannya, dalam arah yang berlawanan dengan perambatan sinyal maju dalam operasi normal. Bartsev dan Okhonin segera mengusulkan metode umum (“prinsip dualitas”), yang dapat diterapkan pada kelas sistem yang lebih luas, termasuk sistem dengan penundaan, sistem terdistribusi, dll.

Untuk dapat menggunakan metode backpropagation, fungsi transfer neuron harus dapat terdiferensiasi. Metode tersebut merupakan modifikasi dari metode penurunan gradien klasik.

Fungsi aktivasi sigmoid

Jenis sigmoid berikut ini paling sering digunakan sebagai fungsi aktivasi:

Fungsi Fermi (sigmoid eksponensial):

Sigmoid rasional:

Garis singgung hiperbolik:

,

di mana s adalah keluaran penambah neuron dan merupakan konstanta sembarang.

Perhitungan sigmoid rasional memerlukan waktu CPU paling sedikit, dibandingkan sigmoid lainnya. Menghitung garis singgung hiperbolik memerlukan siklus prosesor paling banyak. Dibandingkan dengan fungsi aktivasi ambang batas, sigmoid dihitung sangat lambat. Jika, setelah menjumlahkan fungsi ambang batas, Anda dapat segera memulai perbandingan dengan nilai tertentu (ambang batas), maka dalam kasus fungsi aktivasi sigmoid, Anda perlu menghitung sigmoid (menghabiskan waktu, paling banter, pada tiga operasi: mengambil modul, penjumlahan dan pembagian), baru kemudian dibandingkan dengan nilai ambang batas (misalnya nol). Jika kita berasumsi bahwa semua operasi paling sederhana dihitung oleh prosesor dalam waktu yang kira-kira sama, maka pengoperasian fungsi aktivasi sigmoidal setelah penjumlahan (yang akan memakan waktu yang sama) akan lebih lambat daripada fungsi aktivasi ambang batas dengan faktor 1:4.

Fungsi evaluasi jaringan

Dalam kasus di mana kinerja jaringan dapat dievaluasi, pelatihan jaringan saraf dapat direpresentasikan sebagai masalah optimasi. Mengevaluasi berarti menunjukkan secara kuantitatif apakah jaringan menyelesaikan tugas yang diberikan kepadanya dengan baik atau buruk. Untuk tujuan ini, fungsi evaluasi dibangun. Biasanya, ini bergantung secara eksplisit pada sinyal keluaran jaringan dan secara implisit (melalui operasi) pada semua parameternya. Contoh evaluasi yang paling sederhana dan umum adalah jumlah kuadrat jarak dari sinyal keluaran jaringan ke nilai yang diperlukan:

,

di mana adalah nilai sinyal keluaran yang diperlukan.

Deskripsi algoritma

Arsitektur Perceptron Multilayer

Algoritma backpropagation diterapkan pada perceptron multilayer. Sebuah jaringan memiliki banyak masukan, banyak keluaran, dan banyak node internal. Mari kita memberi nomor ulang semua node (termasuk input dan output) dengan angka dari 1 hingga N (penomoran terus menerus, terlepas dari topologi lapisannya). Mari kita nyatakan dengan bobot yang berdiri di tepi yang menghubungkan node ke-i dan ke-j, dan dengan keluaran dari node ke-i. Jika kita mengetahui contoh pelatihan (jawaban jaringan yang benar), maka fungsi error yang diperoleh dengan menggunakan metode kuadrat terkecil akan terlihat seperti ini:

Bagaimana cara memodifikasi bobot? Kami akan menerapkan penurunan gradien stokastik, yaitu, kami akan menyesuaikan bobot setelah setiap contoh pelatihan dan, dengan demikian, "bergerak" dalam ruang bobot multidimensi. Untuk “mendapatkan” kesalahan minimum, kita perlu “bergerak” ke arah yang berlawanan dengan gradien, yaitu berdasarkan setiap kelompok jawaban yang benar, tambahkan bobot pada setiap kelompok.

,

dimana adalah pengali yang menentukan kecepatan “gerakan”.

Turunannya dihitung sebagai berikut. Biarkan dulu, yaitu bobot yang kita minati, masuk ke neuron level terakhir. Pertama, kami mencatat bahwa ini mempengaruhi keluaran jaringan hanya sebagai bagian dari penjumlahan, di mana penjumlahan tersebut diambil alih masukan dari node ke-j. Itu sebabnya

Demikian pula, ini mempengaruhi kesalahan keseluruhan hanya dalam output dari node ke-j (ingat bahwa ini adalah output dari seluruh jaringan). Itu sebabnya

Jika node ke-j tidak berada pada level terakhir, maka node tersebut mempunyai keluaran; mari kita nyatakan dengan Children(j). Pada kasus ini

, .

Ya - ini adalah koreksi yang persis sama, tetapi dihitung untuk simpul tingkat berikutnya, kami akan menyatakannya dengan - berbeda dari itu karena tidak adanya pengali. Karena kita telah belajar menghitung koreksi untuk node pada level terakhir dan menyatakan koreksi untuk node pada level yang lebih rendah melalui koreksi pada level yang lebih tinggi, kita sudah dapat menulis sebuah algoritma. Karena fitur penghitungan koreksi inilah algoritma ini disebut algoritma propagasi mundur(propagasi mundur). Ringkasan singkat dari pekerjaan yang dilakukan:

  • untuk node tingkat terakhir
  • untuk node jaringan internal
  • untuk semua node

Algoritma yang dihasilkan disajikan di bawah ini. Sebagai masukan pada algoritma, selain parameter yang ditentukan, struktur jaringan juga perlu dikirimkan dalam beberapa format. Dalam praktiknya, hasil yang sangat baik ditunjukkan oleh jaringan dengan struktur yang cukup sederhana, terdiri dari dua tingkat neuron - tingkat tersembunyi (unit tersembunyi) dan neuron keluaran (unit keluaran); setiap masukan jaringan dihubungkan ke semua neuron tersembunyi, dan hasil kerja setiap neuron tersembunyi diumpankan ke masukan masing-masing neuron keluaran. Dalam hal ini, cukup menyediakan jumlah neuron tingkat tersembunyi sebagai masukan.

Algoritma

Algoritma: Propagasi Kembali

dimana adalah koefisien inersia untuk menghaluskan lompatan tajam ketika bergerak sepanjang permukaan fungsi tujuan

Interpretasi matematis dari pelatihan jaringan saraf

Pada setiap iterasi algoritma backpropagation, bobot jaringan saraf dimodifikasi untuk meningkatkan solusi dari satu contoh. Jadi, selama proses pembelajaran, masalah optimasi kriteria tunggal diselesaikan secara siklis.

Pelatihan jaringan saraf dicirikan oleh empat keterbatasan khusus yang membedakan pelatihan jaringan saraf dari masalah optimasi umum: jumlah parameter yang sangat besar, kebutuhan akan paralelisme yang tinggi selama pelatihan, sifat multi-kriteria dari masalah yang sedang dipecahkan, dan kebutuhan untuk menemukan solusi. area yang cukup luas dimana nilai semua fungsi yang diminimalkan mendekati minimal. Jika tidak, masalah pembelajaran secara umum dapat dirumuskan sebagai masalah minimalisasi skor. Kehati-hatian pada frasa sebelumnya (“biasanya”) disebabkan oleh fakta bahwa sebenarnya kita tidak mengetahui dan tidak akan pernah mengetahui semua kemungkinan tugas untuk jaringan saraf, dan mungkin di suatu tempat yang tidak diketahui ada tugas yang tidak dapat direduksi menjadi meminimalkan memperkirakan. Meminimalkan perkiraan adalah masalah yang kompleks: terdapat sejumlah besar parameter (untuk contoh standar yang diterapkan pada PC - dari 100 hingga 1.000.000), bantuan adaptif (grafik evaluasi sebagai fungsi dari parameter yang disesuaikan) rumit dan mungkin berisi banyak minimum lokal.

Kekurangan algoritma

Meskipun banyak penerapan backpropagation yang berhasil, hal ini bukanlah obat mujarab. Yang paling menyusahkan adalah proses pembelajaran yang panjang tanpa batas waktu. Dalam permasalahan yang kompleks, mungkin diperlukan waktu berhari-hari atau bahkan berminggu-minggu untuk melatih jaringan, atau mungkin jaringan tidak belajar sama sekali. Alasannya mungkin salah satu yang dijelaskan di bawah ini.

Kelumpuhan Jaringan

Selama proses pelatihan jaringan, nilai bobot bisa menjadi sangat besar akibat koreksi. Hal ini dapat mengakibatkan semua atau sebagian besar neuron beroperasi pada nilai OUT yang sangat besar, di wilayah yang turunan fungsi kontraksinya sangat kecil. Karena kesalahan yang dikirim kembali selama proses pembelajaran sebanding dengan turunan ini, proses pembelajaran bisa dibilang terhenti. Dari sudut pandang teoretis, masalah ini masih kurang dipahami. Hal ini biasanya dihindari dengan mengurangi ukuran langkah η, namun hal ini meningkatkan waktu pelatihan. Berbagai heuristik telah digunakan untuk mencegah atau memulihkan kelumpuhan, namun untuk saat ini hanya dapat dianggap eksperimental.

Minimum lokal

Propagasi mundur menggunakan bentuk penurunan gradien, yaitu menurunkan permukaan kesalahan, terus-menerus menyesuaikan bobot ke arah minimum. Permukaan kesalahan jaringan kompleks sangat terjal dan terdiri dari bukit, lembah, lipatan, dan jurang dalam ruang berdimensi tinggi. Suatu jaringan mungkin jatuh ke dalam minimum lokal (lembah dangkal) ketika terdapat minimum yang lebih dalam di dekatnya. Pada titik minimum lokal, semua arah mengarah ke atas, dan jaringan tidak dapat lepas darinya. Kesulitan utama dalam melatih jaringan saraf justru terletak pada metode untuk keluar dari minimum lokal: setiap kali meninggalkan minimum lokal, minimum lokal berikutnya dicari lagi menggunakan metode propagasi balik kesalahan yang sama hingga tidak mungkin lagi menemukan jalan keluarnya. dia.

Ukuran langkah

Pemeriksaan yang cermat terhadap bukti konvergensi menunjukkan bahwa koreksi bobot diasumsikan sangat kecil. Jelas bahwa hal ini tidak mungkin dilakukan dalam praktiknya, karena hal ini menyebabkan waktu pembelajaran yang tidak ada habisnya. Ukuran langkah harus dianggap terbatas. Jika ukuran langkah tetap dan sangat kecil, maka konvergensi terlalu lambat; jika tetap dan terlalu besar, kelumpuhan atau ketidakstabilan terus-menerus dapat terjadi. Adalah efektif untuk meningkatkan langkah sampai peningkatan perkiraan pada arah antigradien tertentu berhenti dan menurunkannya jika perbaikan tersebut tidak terjadi. P. D. Wasserman menjelaskan algoritma pemilihan langkah adaptif yang secara otomatis menyesuaikan ukuran langkah selama proses pembelajaran. Buku karya A. N. Gorban mengusulkan teknologi ekstensif untuk mengoptimalkan pembelajaran.

Perlu juga dicatat bahwa jaringan dapat dilatih ulang, yang kemungkinan besar disebabkan oleh desain topologi yang salah. Dengan terlalu banyak neuron, kemampuan jaringan untuk menggeneralisasi informasi akan hilang. Seluruh rangkaian gambar yang disediakan untuk pelatihan akan dipelajari oleh jaringan, tetapi gambar lainnya, bahkan yang sangat mirip, mungkin salah diklasifikasikan.

Lihat juga

  • Algoritma Gradien Kecepatan

literatur

  1. Wasserman F.Sejarah pertemuanWasserman F. Neurocomputing: Teori dan Praktek. - M.: “Mir”, 1992.
  2. Khaikin S. Jaringan saraf: Kursus lengkap. Per. dari bahasa Inggris N.N.Kussul, A.Yu.Shelestova. edisi ke-2, putaran. - M.: Rumah Penerbitan Williams, 2008, 1103 hal.

Tautan

  1. Koposov A.I., Shcherbakov I.B., Kislenko N.A., Kislenko O.P., Varivoda Yu.V. dkk.. - M.: VNIIGAZ, 1995.

Kembali

×
Bergabunglah dengan komunitas “koon.ru”!
Berhubungan dengan:
Saya sudah berlangganan komunitas “koon.ru”