Backpropagation vs Genetic Algorithm untuk pelatihan Neural Network

34

Saya telah membaca beberapa makalah yang membahas pro dan kontra dari masing-masing metode, beberapa berpendapat bahwa GA tidak memberikan perbaikan dalam menemukan solusi optimal sementara yang lain menunjukkan bahwa itu lebih efektif. Tampaknya GA umumnya lebih disukai dalam literatur (walaupun kebanyakan orang memodifikasinya dengan cara tertentu untuk mencapai hasil yang mereka butuhkan), lalu mengapa sebagian besar solusi perangkat lunak tampaknya menggunakan backpropagation saja?

Apakah ada aturan umum kapan harus menggunakan satu atau yang lain? Mungkin itu tergantung pada jenis NN atau ada beberapa solusi canggih yang umumnya mengungguli yang lain?

Jika mungkin saya mencari jawaban umum: yaitu, "jika NN besar, GA lebih baik", atau "GA selalu lebih baik tetapi memiliki masalah kinerja komputasi" dll ...

sashkello
sumber

Jawaban:

23

Jika Anda perhatikan dengan seksama literatur ilmiah Anda akan menemukan hasil yang kontras. Jelas, dalam beberapa kasus GA (dan lebih umum lagi, Evolutionary Algorithms) dapat membantu Anda menemukan desain NN yang optimal tetapi biasanya mereka memiliki banyak kelemahan (penyetelan parameter algoritma, kompleksitas komputasi dll) dan penggunaannya tidak layak untuk real- aplikasi dunia. Tentu saja Anda dapat menemukan serangkaian masalah di mana GA / EA selalulebih baik dari backpropagation. Mengingat bahwa menemukan desain NN yang optimal adalah masalah optimisasi multimoda yang kompleks, GA / EA dapat membantu (sebagai metaheuristik) untuk meningkatkan hasil yang diperoleh dengan algoritma "tradisional", misalnya menggunakan GA / EA untuk menemukan hanya konfigurasi bobot awal atau membantu algoritma tradisional untuk melarikan diri dari minimum lokal (jika Anda tertarik saya menulis makalah tentang topik ini).

Saya banyak bekerja di bidang ini dan saya dapat memberi tahu Anda bahwa ada banyak karya ilmiah tentang GA / EA yang diterapkan pada NN karena mereka (atau lebih baik, dulu) merupakan bidang penelitian yang sedang berkembang.

Matteo De Felice
sumber
2
Ini adalah sesuatu yang saya juga buat dengan baru-baru ini - pertama temukan solusi 'baik' dan kemudian tingkatkan lebih lanjut dengan GA. Tidak hanya berlaku untuk NNs, tetapi optimasi secara umum ...
sashkello
1
Saya bingung mengapa mereka saling eksklusif. Saya pikir GA seharusnya mempelajari struktur; Backpropagation hanya dapat mempelajari bobot
pete
8

Salah satu masalah utama dengan jaringan saraf adalah over-fitting, yang berarti bahwa algoritma yang berusaha sangat keras untuk menemukan jaringan yang meminimalkan beberapa kriteria berdasarkan sampel data yang terbatas akan berakhir dengan jaringan yang bekerja sangat baik untuk sampel tertentu data, tetapi yang akan memiliki generalisasi yang buruk. Saya agak khawatir menggunakan GAS untuk merancang jaringan saraf karena alasan ini, terutama jika mereka melakukan optimasi arsitektur pada saat yang sama dengan mengoptimalkan bobot. Saya secara umum telah menemukan bahwa jaringan pelatihan (dengan regularisasi) dari sejumlah (katakanlah 20) vektor bobot awal acak dan kemudian membentuk sebuah ensemble dari semua jaringan yang dihasilkan pada umumnya sama baiknya dengan pendekatan apa pun.

Pada dasarnya optimasi adalah akar dari semua kejahatan dalam pembelajaran mesin, semakin banyak yang Anda lakukan, semakin besar kemungkinan Anda akan berakhir terlalu pas data.

Dikran Marsupial
sumber
Dikran, meskipun GA membuat seleksi alam tetapi tidak mengabaikan informasi seperti yang Anda sebutkan, itu hanya memastikan jika solusi yang dipilih menyelesaikan masalahnya jika tidak, ia mengetahui untuk mengetahui mengapa dan meningkatkan agoritma yang membentuk basis dinamismenya hingga jaringan bertemu pada satu atau dua solusi terbaik. harap Anda mendapatkan bahwa rignt?
konvergen ke terbaik solusi dievaluasi lebih sampel yang terbatas data adalah persis apa yang menyebabkan over-pas. Untuk menghindari overfitting Anda ingin bertemu pada solusi yang bukan yang terbaik (misalnya berhenti lebih awal dalam pelatihan jaringan saraf). GAS tidak lebih baik daripada bentuk optimasi lainnya dalam pemasangan jaringan saraf, Anda harus menghindari optimasi kriteria pelatihan yang berlebihan.
Dikran Marsupial
5

Setiap kali Anda berurusan dengan sejumlah besar data dan Anda ingin menyelesaikan tugas belajar yang diawasi dengan jaringan saraf umpan-maju, solusi berdasarkan backpropagation jauh lebih layak. Alasan untuk ini adalah, bahwa untuk jaringan saraf yang kompleks, jumlah parameter bebas sangat tinggi. Satu proyek industri yang saat ini saya kerjakan melibatkan jaringan saraf umpan-maju dengan sekitar 1000 input, masing-masing dua lapisan tersembunyi @ 384 neuron dan 60 output. Ini mengarah ke 1000 * 384 + 384 * 384 + 384 * 60 = 554496 parameter berat yang harus dioptimalkan. Menggunakan pendekatan GA di sini akan sangat lambat.

schreon
sumber
Pemahaman saya adalah bahwa GA dirancang untuk mengatasi masalah yang lebih sulit untuk diselesaikan dengan pendekatan standar. Tidakkah seharusnya kinerjanya lebih baik persis dalam situasi yang Anda gambarkan?
sashkello
2
Saya pikir GA seharusnya digunakan untuk mencari tahu struktur apa itu misalnya berapa banyak lapisan tersembunyi dan bagaimana mereka terhubung. Backpropagation hanya bisa mengetahui bobotnya
pete
2

Jawaban kedua salah. Overfitting tidak disebabkan oleh optimasi. Overfitting terjadi ketika model Anda terlalu rumit dan dapat memuat semua titik data tanpa mempelajari aturan sebenarnya yang membuatnya (yaitu hanya menghafalnya, dalam kasus ekstrem.) Ada banyak cara untuk mencegah overfitting seperti memilih model yang lebih sederhana, putus, dropconnect, penurunan berat badan, dan hanya menggunakan lebih banyak data. Tujuannya adalah untuk mengoptimalkan jaringan Anda dan membuatnya seakurat mungkin, dengan mempertimbangkan kendala-kendala itu.

Untuk menjawab pertanyaan, backprop seharusnya jauh lebih cepat daripada optimasi stokastik (algoritma genetika dan sejenisnya.) Dugaan saya adalah ini karena ia mengambil keuntungan dari apa yang seharusnya dihasilkan oleh output , menyesuaikan bobot pada arah yang benar berdasarkan pada itu , di mana optimasi stokastik mencoba perubahan sepenuhnya acak dan mengabaikan informasi itu.

Namun dengan menjelajahi area yang lebih luas, GAS mungkin akan melakukan yang lebih baik dalam jangka panjang dengan menghindari optimas lokal, itu hanya akan memakan waktu lebih lama untuk dilatih.

Saya ingin tahu berapa banyak GAS lebih lambat daripada backprop, dan jika ada yang tahu tentang algoritma hybrid (pencarian pencar sepertinya akan ideal untuk ini.)

Penghuni rumah
sumber
1
Tidak setuju dengan paragraf pertama Anda. Overfitting dicegah terutama melalui pendekatan regularisasi dalam masalah pelatihan . Jika Anda mulai melakukan meta-optimasi --- yaitu menyelesaikan banyak masalah pelatihan (misalnya menyetel parameter kernel, arsitektur jaringan, ...) - merawat overfitting menjadi jauh lebih sulit dan tentu saja tidak dijamin secara implisit lagi.
Marc Claesen
Jika overfitting tidak disebabkan oleh optimasi, penghentian dini tidak akan menjadi obat yang efektif untuk overfitting.
Dikran Marsupial
1

Saya perbedaan antara GA dan backpropagation adalah bahwa GA didasarkan pada angka acak dan backpropagation didasarkan pada algoritma statis seperti penurunan gradien stokastik. GA yang didasarkan pada angka acak dan menambah mutasi itu berarti kemungkinan akan menghindari tertangkap dalam minimum lokal. Tetapi GA yang didasarkan pada angka acak berarti kemungkinan untuk 2 kali berbeda saat Anda menjalankan pembelajaran di jaringan yang sama, GA mungkin mencapai kesimpulan yang berbeda yaitu seperangkat bobot yang berbeda.

pengguna4433437
sumber
Sekedar berkomentar, kami juga menggunakan init acak. untuk bobot di back-prop. Jika kami menggunakan benih yang sama saat inisialisasi, itu akan mengarah ke solusi yang sama, tetapi jika Anda tidak, mungkin tidak. Jadi, back-prop juga tergantung pada input acak. Ketika Anda memperbaiki benih, Anda juga akan memiliki hasil yang sama dalam algoritma genetika karena akan menggunakan seq yang sama. nomor lagi.
senjata