Kapan saya harus menggunakan algoritma genetika sebagai lawan dari jaringan saraf? [Tutup]
139
Apakah ada aturan praktis (atau serangkaian contoh) untuk menentukan kapan harus menggunakan algoritma genetika sebagai lawan dari jaringan saraf (dan sebaliknya) untuk memecahkan masalah?
Saya tahu ada beberapa kasus di mana Anda dapat memiliki kedua metode dicampur, tapi saya mencari perbandingan tingkat tinggi antara kedua metode.
Ada baiknya menunjukkan ada dua jenis jaringan saraf - diawasi dan tidak diawasi. Dibimbing mendapatkan data pelatihan dari manusia, umpan balik tanpa pengawasan ke diri mereka sendiri dan lebih seperti GA dalam hal itu.
Chris S
3
Saya tidak berpikir itu "daftar-y" sama sekali. Jawabannya membandingkan dua metode, dan mengklarifikasi kapan harus menggunakan satu vs yang lain.
Neil N
Jawaban singkat: gunakan GA ketika fungsi untuk memodelkan adalah non-kontinu / diskrit, atau ketika dataset secara dimensi tinggi. Gunakan neural networks atau GA (atau model lain) untuk sisanya tergantung pada apa yang memberi Anda hasil terbaik. Untuk info lebih lanjut, lihat jawaban saya di sini: stackoverflow.com/a/49684833/1121352
gaborous
Jawaban:
130
Dari wikipedia:
Sebuah algoritma genetika (GA) adalah teknik pencarian yang digunakan dalam komputasi untuk menemukan yang tepat atau perkiraan solusi untuk optimasi dan mencari masalah.
dan:
Jaringan saraf adalah alat pemodelan data statistik non-linear. Mereka dapat digunakan untuk memodelkan hubungan yang kompleks antara input dan output atau untuk menemukan pola dalam data.
Jika Anda memiliki masalah di mana Anda dapat menghitung nilai suatu solusi, suatu algoritma genetika dapat melakukan pencarian terarah dari ruang solusi. (Misalnya menemukan rute terpendek antara dua titik)
Ketika Anda memiliki sejumlah item di kelas yang berbeda, jaringan saraf dapat "belajar" untuk mengklasifikasikan item yang belum "dilihat" sebelumnya. (Misalnya pengenalan wajah, pengenalan suara)
Waktu eksekusi juga harus dipertimbangkan. Algoritme genetik membutuhkan waktu lama untuk menemukan solusi yang dapat diterima. Jaringan saraf membutuhkan waktu lama untuk "belajar", tetapi kemudian dapat secara instan mengklasifikasikan input baru.
Saya hanya ingin menambahkan sedikit ke definisi GA. Kadang-kadang orang menganggap ruang solusi masalah GA sebagai seperangkat status atau nilai. Seperti "Temukan semua cara, set empat keping catur dapat diatur di papan catur untuk membuat skakmat." Namun ruang solusi juga dapat berupa serangkaian algoritma. Di sinilah kekuatan nyata dari algoritma genetika ikut berperan. Mereka membantu Anda menjawab pertanyaan seperti "Temukan urutan gerakan dengan serangkaian bidak catur yang akan menghasilkan skakmat."
lfalin
44
Algoritma genetika (meskipun namanya seksi), untuk sebagian besar tujuan, merupakan teknik optimasi . Ini terutama bermuara pada Anda memiliki sejumlah variabel dan ingin menemukan kombinasi nilai terbaik untuk variabel-variabel ini. Itu hanya meminjam teknik dari evolusi alami untuk sampai ke sana.
Jaringan saraf bermanfaat untuk mengenali pola . Mereka mengikuti model otak yang sederhana, dan dengan mengubah sejumlah bobot di antara mereka, berupaya untuk memprediksi keluaran berdasarkan input.
Mereka adalah dua entitas yang secara fundamental berbeda, tetapi kadang-kadang masalah mereka mampu menyelesaikan tumpang tindih.
+1 untuk algoritma genetika (optimisasi) dan jaringan saraf (pembelajaran terbimbing) hampir tidak memiliki kesamaan.
alfa
2
Satu-satunya elemen yang umum adalah bahwa mereka secara dinamis mengatur ulang diri mereka sendiri ketika mereka mendekati suatu tujuan.
lfalin
1
Saya tidak yakin ada tumpang tindih, sungguh. Jaringan saraf adalah model dengan fungsi biaya, GA adalah teknik optimisasi yang dapat digunakan untuk meminimalkan fungsi biaya ini, seperti kata @zenna.
Matthieu Brucher
37
GAS menghasilkan pola baru dalam struktur yang Anda tetapkan.
NN mengklasifikasikan (atau mengenali) pola yang ada berdasarkan data pelatihan yang Anda berikan.
GA berfungsi dengan baik dalam mencari solusi ruang keadaan besar secara efisien, dan menyatu pada satu atau lebih solusi yang baik, tetapi belum tentu solusi 'terbaik'.
NN dapat belajar mengenali pola (melalui pelatihan), tetapi sangat sulit untuk mengetahui apa yang telah mereka pelajari, yaitu untuk mengekstrak pengetahuan dari mereka yang pernah dilatih, dan menggunakan kembali pengetahuan di beberapa lainnya (non-NN).
Anda membandingkan dua hal yang sangat berbeda di sini.
Neural Networks digunakan untuk regresi / klasifikasi - diberikan satu set (x, y) contoh, Anda ingin mengembalikan y yang tidak diketahui untuk beberapa yang diberikan x.
Algoritma genetika adalah teknik optimasi. Diberikan fungsi f (x), Anda ingin menentukan x yang meminimalkan / memaksimalkan f (x).
Memang. Mereka benar-benar teknik 'ortogonal'. Anda dapat menggunakan GA untuk menemukan bobot dan / atau arsitektur jaringan saraf.
redcalx
23
Ada banyak kesamaan di antara mereka, jadi saya hanya akan mencoba menguraikan perbedaan mereka .
Jaringan saraf
Mampu menganalisis pola online (yang berubah seiring waktu). Secara umum, ini adalah sampel yang bervariasi waktu yang perlu dicocokkan dan diprediksi.
Contoh :
Ekstrapolasi grafik
Pengenalan wajah
Algoritma genetika
Digunakan saat Anda dapat mengkode atribut yang menurut Anda dapat berkontribusi pada masalah spesifik yang tidak berubah. Penekanannya adalah pada kemampuan untuk kode atribut ini (kadang-kadang Anda tahu apa itu) dan bahwa masalahnya adalah sebagian besar tidak berubah (kalau tidak evolusi tidak menyatu).
Contoh :
Penjadwalan pesawat / pengiriman
Jadwal.
Menemukan karakteristik terbaik untuk agen sederhana di lingkungan buatan
Anda dapat menggunakan algoritma genetika sebagai alternatif dari algoritma backpropagation untuk memperbarui bobot dalam jaringan saraf. Untuk contoh, lihat:
http://www.ai-junkie.com/ann/evolved/nnt1.html .
Algoritma genetika (biasanya) bekerja pada data diskrit (enum, rentang integer, dll.). Aplikasi khas untuk GAS adalah mencari ruang diskrit untuk solusi "cukup baik" ketika satu-satunya alternatif yang tersedia adalah pencarian brute-force (mengevaluasi semua kombinasi).
Jaringan saraf, di sisi lain, (biasanya) bekerja pada data kontinu (mengapung, dll.). Aplikasi tipikal untuk NN adalah aproksimasi fungsi, di mana Anda memiliki himpunan input X dan himpunan keluaran terkait, tetapi fungsi analitis f: X → Y.
Tentu saja, ada ribuan varian keduanya, sehingga garis di antara keduanya agak kabur.
Tidak ada aturan praktis. Dalam banyak kasus, Anda dapat merumuskan masalah Anda untuk menggunakan salah satunya. Pembelajaran mesin masih merupakan bidang penelitian aktif dan model pembelajaran mana yang dapat diperdebatkan.
GA mengambil bahasa-bahasa seksi dari evolusi tetapi Anda menunggu komputer Anda menemukan solusi melalui proses acak. Pelajari data Anda, buat asumsi yang baik, cobalah untuk mengetahui apa yang Anda inginkan dan pilih pendekatan yang dapat memanfaatkannya dengan baik. Jika pilihan pertama Anda memberikan hasil yang buruk, ketahui mengapa demikian, dan perbaiki algoritme itu sendiri atau pilih yang lebih baik.
Jawaban:
Dari wikipedia:
dan:
Jika Anda memiliki masalah di mana Anda dapat menghitung nilai suatu solusi, suatu algoritma genetika dapat melakukan pencarian terarah dari ruang solusi. (Misalnya menemukan rute terpendek antara dua titik)
Ketika Anda memiliki sejumlah item di kelas yang berbeda, jaringan saraf dapat "belajar" untuk mengklasifikasikan item yang belum "dilihat" sebelumnya. (Misalnya pengenalan wajah, pengenalan suara)
Waktu eksekusi juga harus dipertimbangkan. Algoritme genetik membutuhkan waktu lama untuk menemukan solusi yang dapat diterima. Jaringan saraf membutuhkan waktu lama untuk "belajar", tetapi kemudian dapat secara instan mengklasifikasikan input baru.
sumber
Algoritma genetika (meskipun namanya seksi), untuk sebagian besar tujuan, merupakan teknik optimasi . Ini terutama bermuara pada Anda memiliki sejumlah variabel dan ingin menemukan kombinasi nilai terbaik untuk variabel-variabel ini. Itu hanya meminjam teknik dari evolusi alami untuk sampai ke sana.
Jaringan saraf bermanfaat untuk mengenali pola . Mereka mengikuti model otak yang sederhana, dan dengan mengubah sejumlah bobot di antara mereka, berupaya untuk memprediksi keluaran berdasarkan input.
Mereka adalah dua entitas yang secara fundamental berbeda, tetapi kadang-kadang masalah mereka mampu menyelesaikan tumpang tindih.
sumber
GAS menghasilkan pola baru dalam struktur yang Anda tetapkan.
NN mengklasifikasikan (atau mengenali) pola yang ada berdasarkan data pelatihan yang Anda berikan.
GA berfungsi dengan baik dalam mencari solusi ruang keadaan besar secara efisien, dan menyatu pada satu atau lebih solusi yang baik, tetapi belum tentu solusi 'terbaik'.
NN dapat belajar mengenali pola (melalui pelatihan), tetapi sangat sulit untuk mengetahui apa yang telah mereka pelajari, yaitu untuk mengekstrak pengetahuan dari mereka yang pernah dilatih, dan menggunakan kembali pengetahuan di beberapa lainnya (non-NN).
sumber
Anda membandingkan dua hal yang sangat berbeda di sini.
Neural Networks digunakan untuk regresi / klasifikasi - diberikan satu set (x, y) contoh, Anda ingin mengembalikan y yang tidak diketahui untuk beberapa yang diberikan x.
Algoritma genetika adalah teknik optimasi. Diberikan fungsi f (x), Anda ingin menentukan x yang meminimalkan / memaksimalkan f (x).
sumber
Ada banyak kesamaan di antara mereka, jadi saya hanya akan mencoba menguraikan perbedaan mereka .
Jaringan saraf
Mampu menganalisis pola online (yang berubah seiring waktu). Secara umum, ini adalah sampel yang bervariasi waktu yang perlu dicocokkan dan diprediksi.
Contoh :
Algoritma genetika
Digunakan saat Anda dapat mengkode atribut yang menurut Anda dapat berkontribusi pada masalah spesifik yang tidak berubah. Penekanannya adalah pada kemampuan untuk kode atribut ini (kadang-kadang Anda tahu apa itu) dan bahwa masalahnya adalah sebagian besar tidak berubah (kalau tidak evolusi tidak menyatu).
Contoh :
sumber
Anda dapat menggunakan algoritma genetika sebagai alternatif dari algoritma backpropagation untuk memperbarui bobot dalam jaringan saraf. Untuk contoh, lihat: http://www.ai-junkie.com/ann/evolved/nnt1.html .
sumber
Algoritma genetika (biasanya) bekerja pada data diskrit (enum, rentang integer, dll.). Aplikasi khas untuk GAS adalah mencari ruang diskrit untuk solusi "cukup baik" ketika satu-satunya alternatif yang tersedia adalah pencarian brute-force (mengevaluasi semua kombinasi).
Jaringan saraf, di sisi lain, (biasanya) bekerja pada data kontinu (mengapung, dll.). Aplikasi tipikal untuk NN adalah aproksimasi fungsi, di mana Anda memiliki himpunan input X dan himpunan keluaran terkait, tetapi fungsi analitis f: X → Y.
Tentu saja, ada ribuan varian keduanya, sehingga garis di antara keduanya agak kabur.
sumber
Tidak ada aturan praktis. Dalam banyak kasus, Anda dapat merumuskan masalah Anda untuk menggunakan salah satunya. Pembelajaran mesin masih merupakan bidang penelitian aktif dan model pembelajaran mana yang dapat diperdebatkan.
GA mengambil bahasa-bahasa seksi dari evolusi tetapi Anda menunggu komputer Anda menemukan solusi melalui proses acak. Pelajari data Anda, buat asumsi yang baik, cobalah untuk mengetahui apa yang Anda inginkan dan pilih pendekatan yang dapat memanfaatkannya dengan baik. Jika pilihan pertama Anda memberikan hasil yang buruk, ketahui mengapa demikian, dan perbaiki algoritme itu sendiri atau pilih yang lebih baik.
sumber