Banyak buku dan tutorial jaringan saraf menghabiskan banyak waktu pada algoritma backpropagation, yang pada dasarnya adalah alat untuk menghitung gradien.
Mari kita asumsikan kita sedang membangun model dengan ~ 10K parameter / bobot. Apakah mungkin untuk menjalankan pengoptimalan menggunakan beberapa algoritma pengoptimalan bebas gradien?
Saya pikir menghitung gradien numerik akan terlalu lambat, tetapi bagaimana dengan metode lain seperti Nelder-Mead, Simulated Annealing atau Algoritma Genetika?
Semua algoritma akan menderita dari minimum lokal, mengapa terobsesi dengan gradien?
Jawaban:
Dua algoritma pertama yang Anda sebutkan (Nelder-Mead dan Simulated Annealing) umumnya dianggap cukup usang di lingkaran optimisasi, karena ada banyak alternatif yang lebih baik yang keduanya lebih dapat diandalkan dan lebih murah. Algoritma genetika mencakup beragam, dan beberapa di antaranya masuk akal.
Namun, dalam kelas yang lebih luas dari algoritma derivatif-bebas optimasi (DFO), ada banyak yang secara signifikan lebih baik daripada "klasik" ini, karena ini telah menjadi area penelitian aktif dalam beberapa dekade terakhir. Jadi, bisakah beberapa pendekatan baru ini masuk akal untuk pembelajaran yang mendalam?
Makalah yang relatif baru membandingkan keadaan seni adalah sebagai berikut:
Ini adalah kertas bagus yang memiliki banyak wawasan menarik tentang teknik terbaru. Misalnya, hasilnya jelas menunjukkan bahwa pengoptimal lokal terbaik semua "berbasis model", menggunakan berbagai bentuk pemrograman kuadratik sekuensial (SQP).
Namun, seperti dicatat dalam abstrak mereka, "Kami menemukan bahwa kemampuan semua pemecah ini untuk mendapatkan solusi yang baik berkurang dengan meningkatnya ukuran masalah." Untuk memberikan gambaran tentang angka-angka, untuk semua masalah, pemecah diberi anggaran evaluasi fungsi 2.500, dan ukuran masalah maksimum ~ 300 parameter untuk dioptimalkan. Di luar parameter O [10], sangat sedikit pengoptimal ini berkinerja sangat baik, dan bahkan yang terbaik menunjukkan penurunan kinerja yang nyata ketika ukuran masalah meningkat.
Jadi untuk masalah dimensi yang sangat tinggi, algoritma DFO tidak kompetitif dengan yang berbasis turunan. Untuk memberikan beberapa perspektif, optimasi berbasis PDE (persamaan diferensial parsial) adalah area lain dengan masalah dimensi yang sangat tinggi (misalnya beberapa parameter untuk setiap sel dari grid elemen hingga 3D yang besar). Di dunia ini, " metode adjoint " adalah salah satu metode yang paling banyak digunakan. Ini juga merupakan pengoptimal gradien-turun berdasarkan diferensiasi otomatis dari kode model maju.
Yang paling dekat dengan pengoptimal DFO dimensi tinggi mungkin adalah Ensemble Kalman Filter , yang digunakan untuk mengasimilasi data ke dalam simulasi PDE yang kompleks, misalnya model cuaca. Menariknya, ini pada dasarnya adalah pendekatan SQP, tetapi dengan interpretasi Bayesian-Gaussian (jadi model kuadratik adalah pasti positif, yaitu tidak ada poin pelana). Tetapi saya tidak berpikir bahwa jumlah parameter atau pengamatan dalam aplikasi ini sebanding dengan apa yang terlihat dalam pembelajaran mendalam.
Catatan tambahan (minimum lokal): Dari sedikit yang saya baca tentang pembelajaran mendalam, saya pikir konsensus adalah bahwa itu adalah poin pelana daripada minimum lokal, yang paling bermasalah untuk ruang parameter NN-dimensi tinggi.
Sebagai contoh, ulasan baru - baru ini di Nature mengatakan, "Hasil teoritis dan empiris baru - baru ini sangat menyarankan bahwa minimum lokal secara umum bukan masalah. Sebagai gantinya, lanskap tersebut dikemas dengan sejumlah besar titik pelana di mana gradiennya nol, dan permukaan kurva di sebagian besar dimensi dan kurva di sisanya. "
Kekhawatiran terkait adalah tentang pengoptimalan lokal vs. global (misalnya pertanyaan ini ditunjukkan dalam komentar). Meskipun saya tidak melakukan pembelajaran yang mendalam, dalam pengalaman saya overfitting jelas merupakan masalah yang valid. Menurut pendapat saya, metode optimasi global paling cocok untuk masalah desain teknik yang tidak terlalu bergantung pada data "alami". Dalam masalah Data asimilasi, setiap minima global saat ini bisa dengan mudah mengubah pada penambahan data baru (peringatan: Pengalaman saya adalah terkonsentrasi di masalah geoscience, dimana data umumnya "jarang" relatif terhadap kapasitas model).
Perspektif yang menarik mungkin
yang memberikan argumen semi-teoretis tentang mengapa dan kapan perkiraan optimasi mungkin lebih disukai dalam praktiknya.
Catatan akhir (optimisasi-meta): Walaupun teknik berbasis gradien tampaknya lebih dominan untuk jaringan pelatihan, mungkin ada peran DFO dalam tugas-tugas meta-optimisasi terkait.
Salah satu contohnya adalah penyetelan hyper-parameter. (Menariknya, pengoptimal DFO berbasis model yang sukses dari Rios & Sahinidis dapat dilihat sebagai pada dasarnya memecahkan serangkaian masalah desain-percobaan / permukaan respon .)
Contoh lain mungkin mendesain arsitektur, dalam hal pengaturan lapisan (misalnya jumlah, jenis, urutan, node / lapisan). Dalam konteks optimasi diskrit ini, algoritma gaya genetika mungkin lebih tepat. Perhatikan bahwa di sini saya memikirkan kasus di mana konektivitas ditentukan secara implisit oleh faktor-faktor ini (misalnya, lapisan yang sepenuhnya terhubung, lapisan konvolusional, dll.). Dengan kata lain konektivitas dioptimalkan secara meta secara eksplisit. (Kekuatan koneksi akan jatuh di bawah pelatihan, di mana mis sparsity dapat dipromosikan oleh regularisasi dan / atau aktivasi ReLU ... namun pilihan ini dapat dioptimalkan secara meta.)O[N2] not L1
sumber
Ada segala macam algoritma pencarian lokal yang dapat Anda gunakan, backpropagation baru saja terbukti menjadi yang paling efisien untuk tugas yang lebih kompleks secara umum ; ada keadaan di mana pencarian lokal lainnya lebih baik.
Anda dapat menggunakan pendakian bukit secara acak pada jaringan saraf untuk menemukan solusi yang baik dengan cepat, tetapi tidak mungkin untuk menemukan solusi yang mendekati optimal.
Wikipedia (saya tahu, bukan sumber terbesar, tetapi masih) kata
sumber
Adapun algoritma genetika, saya akan melihat Backpropagation vs Genetic Algorithm untuk pelatihan Neural Network
Kasus utama yang akan saya buat untuk backprop adalah bahwa ini sangat banyak digunakan dan telah mengalami banyak peningkatan besar . Gambar-gambar ini benar - benar menunjukkan beberapa kemajuan luar biasa untuk backpropagation vanilla.
Saya tidak akan menganggap backprop sebagai satu algoritma, tetapi sebuah kelas algoritma.
Saya juga ingin menambahkan bahwa untuk jaringan saraf, parameter 10k adalah kacang kecil. Pencarian lain akan berhasil, tetapi pada jaringan yang dalam dengan jutaan parameter, ini hampir tidak praktis.
sumber
Nah, jaringan saraf asli, sebelum revolusi backpropagation di tahun 70-an, "dilatih" dengan tangan. :)
Yang telah dibilang:
Ada "sekolah" pembelajaran mesin yang disebut mesin pembelajaran ekstrim yang tidak menggunakan backpropagation.
Apa yang mereka lakukan adalah membuat jaringan saraf dengan banyak, banyak, banyak node - dengan bobot acak - dan kemudian melatih lapisan terakhir menggunakan kuadrat minimum (seperti regresi linier). Mereka kemudian memangkas jaringan saraf setelahnya atau mereka menerapkan regularisasi pada langkah terakhir (seperti laso) untuk menghindari overfitting. Saya telah melihat ini diterapkan pada jaringan saraf dengan satu lapisan tersembunyi saja. Tidak ada pelatihan, jadi ini sangat cepat. Saya melakukan beberapa tes dan mengejutkan, jaringan saraf ini "dilatih" dengan cara ini cukup akurat.
Kebanyakan orang, setidaknya yang bekerja sama dengan saya, memperlakukan mesin ini dengan belajar "sekolah" dengan cemoohan dan mereka adalah kelompok yang terbuang dengan konferensi mereka sendiri dan seterusnya, tetapi saya benar-benar berpikir itu agak cerdik.
Satu hal lain: dalam backpropagation, ada alternatif yang jarang disebutkan seperti backproagation tangguh , yang diimplementasikan dalam R dalam
neuralnet
paket, yang hanya menggunakan besarnya turunan. Algoritma ini dibuat dari kondisi if-else dan bukan aljabar linier. Mereka memiliki beberapa keunggulan dibandingkan backpropagation tradisional, yaitu Anda tidak perlu menormalkan data Anda karena mereka tidak menderita masalah gradien hilang .sumber
Anda dapat menggunakan hampir semua algoritma optimasi numerik untuk mengoptimalkan bobot jaringan saraf. Anda juga dapat menggunakan algoritme optimisasi campuran kontinu-diskrit untuk mengoptimalkan tidak hanya bobot, tetapi juga tata letak itu sendiri (jumlah lapisan, jumlah neuron di setiap lapisan, bahkan jenis neuron). Namun tidak ada algoritma optimasi yang tidak menderita "kutukan dimensi" dan optimas lokal dalam beberapa cara
sumber
Anda juga dapat menggunakan jaringan lain untuk memberi saran bagaimana parameter harus diperbarui.
Ada Decoupled Neural Interfaces (DNI) dari Google Deepmind. Alih-alih menggunakan backpropagation, ia menggunakan jaringan neural lain untuk memprediksi cara memperbarui parameter, yang memungkinkan pembaruan parameter paralel dan asinkron.
Makalah ini menunjukkan bahwa DNI meningkatkan kecepatan pelatihan dan kapasitas model RNN, dan memberikan hasil yang sebanding untuk RNN dan FFNN pada berbagai tugas.
Makalah ini juga mendaftar dan membandingkan banyak metode nonpropagasi lainnya
sumber
Selama ini adalah pertanyaan komunitas, saya pikir saya akan menambahkan respons lain. "Back Propagation" hanyalah algoritma gradient descent. Ini melibatkan hanya menggunakan turunan pertama dari fungsi yang satu mencoba untuk menemukan minima atau maxima lokal. Ada metode lain yang disebut metode Newton atau Newton-Raphson yang melibatkan menghitung Hessian dan menggunakan turunan kedua. Ini dapat berhasil dalam kasus di mana gradient descent gagal. Saya diberitahu oleh orang lain yang lebih berpengetahuan daripada saya, dan ya ini adalah permintaan pihak kedua kepada otoritas, bahwa itu tidak digunakan dalam jaring saraf karena menghitung semua turunan kedua terlalu mahal dalam hal perhitungan.
sumber