JST (Jaringan Saraf Tiruan) dan SVM (Support Vector Machines) adalah dua strategi populer untuk pembelajaran dan klasifikasi mesin yang diawasi. Tidak sering jelas metode mana yang lebih baik untuk proyek tertentu, dan saya yakin jawabannya selalu "itu tergantung." Seringkali, kombinasi keduanya bersama dengan klasifikasi Bayesian digunakan.
Pertanyaan-pertanyaan tentang Stackoverflow ini telah diajukan mengenai JST vs SVM:
apa perbedaan antara JST, SVM, dan KNN dalam pertanyaan klasifikasi saya
Mendukung Mesin Vektor atau Jaringan Syaraf Tiruan untuk pemrosesan teks?
Dalam pertanyaan ini, saya ingin mengetahui secara spesifik aspek apa dari JST (khususnya, Multilayer Perceptron) yang membuatnya diinginkan untuk digunakan di atas SVM? Alasan saya bertanya adalah karena mudah untuk menjawab pertanyaan sebaliknya : Support Vector Machines sering lebih unggul daripada JST karena mereka menghindari dua kelemahan utama JST:
(1) JST sering bertemu pada minima lokal daripada minima global, yang berarti bahwa mereka pada dasarnya "kehilangan gambaran besar" kadang-kadang (atau kehilangan hutan untuk pepohonan)
(2) JST sering mengenakan pakaian berlebih jika pelatihan berlangsung terlalu lama, yang berarti bahwa untuk pola tertentu, JST mungkin mulai mempertimbangkan kebisingan sebagai bagian dari pola.
SVM tidak menderita salah satu dari dua masalah ini. Namun, tidak jelas bahwa SVM dimaksudkan sebagai pengganti total untuk JST. Jadi, keuntungan spesifik apa yang dimiliki JST atas SVM yang mungkin berlaku untuk situasi tertentu? Saya telah membuat daftar keunggulan spesifik SVM dibandingkan ANN, sekarang saya ingin melihat daftar keunggulan ANN (jika ada).
sumber
Jawaban:
Dilihat dari contoh yang Anda berikan, saya berasumsi bahwa dengan JST, yang Anda maksud adalah jaringan umpan maju multilayer (singkatnya FF jaring), seperti perceptrons multilayer, karena mereka berada dalam persaingan langsung dengan SVM.
Satu manfaat spesifik yang dimiliki model-model ini dibandingkan SVM adalah ukurannya tetap: mereka adalah model parametrik , sedangkan SVM non-parametrik. Artinya, dalam JST Anda memiliki banyak lapisan tersembunyi dengan ukuran h 1 hingga h ntergantung pada jumlah fitur, ditambah parameter bias, dan mereka yang membentuk model Anda. Sebaliknya, SVM (setidaknya yang kernel) terdiri dari satu set vektor dukungan, dipilih dari set pelatihan, dengan bobot masing-masing. Dalam kasus terburuk, jumlah vektor pendukung persis jumlah sampel pelatihan (meskipun itu terutama terjadi dengan set pelatihan kecil atau dalam kasus degenerasi) dan secara umum ukuran modelnya skala secara linear. Dalam pemrosesan bahasa alami, pengklasifikasi SVM dengan puluhan ribu vektor dukungan, masing-masing memiliki ratusan ribu fitur, tidak pernah terdengar sebelumnya.
Juga, pelatihan jaring FF secara online sangat sederhana dibandingkan dengan pemasangan SVM online, dan memprediksi bisa sedikit lebih cepat.
EDIT : semua hal di atas berkaitan dengan kasus umum SVM kernel. Linear SVM adalah kasus khusus dalam bahwa mereka adalah parametrik dan memungkinkan pembelajaran online dengan algoritma sederhana seperti gradient descent stokastik.
sumber
Satu keuntungan nyata dari jaringan syaraf tiruan dari pada mesin-mesin vektor pendukung adalah bahwa jaringan syaraf tiruan mungkin memiliki sejumlah output, sementara mesin-mesin vektor pendukung hanya memiliki satu. Cara paling langsung untuk membuat n-ary classifier dengan mesin vektor dukungan adalah dengan membuat mesin dukungan n dan melatih masing-masing satu per satu. Di sisi lain, classifier n-ary dengan jaringan saraf dapat dilatih dalam sekali jalan. Selain itu, jaringan saraf akan lebih masuk akal karena satu kesatuan, sedangkan mesin vektor dukungan adalah sistem yang terisolasi. Ini sangat berguna jika keluarannya saling terkait.
Misalnya, jika tujuannya adalah untuk mengklasifikasikan angka tulisan tangan, sepuluh mesin vektor dukungan akan dilakukan. Setiap mesin dukungan vektor akan mengenali tepat satu digit, dan gagal mengenali semua yang lain. Karena setiap digit tulisan tangan tidak dapat dimaksudkan untuk menampung informasi lebih dari sekadar kelasnya, tidak masuk akal untuk mencoba menyelesaikannya dengan jaringan saraf tiruan.
Namun, misalkan tujuannya adalah untuk memodelkan keseimbangan hormon seseorang (untuk beberapa hormon) sebagai fungsi faktor fisiologis yang mudah diukur seperti waktu sejak makan terakhir, detak jantung, dll ... Karena faktor-faktor ini semuanya saling terkait, saraf tiruan regresi jaringan lebih masuk akal daripada mendukung regresi mesin vektor.
sumber
Satu hal yang perlu diperhatikan adalah bahwa keduanya sebenarnya sangat terkait. SVM linear setara dengan NN single-layer (yaitu, perceptrons), dan NN multi-layer dapat diekspresikan dalam istilah SVM. Lihat di sini untuk beberapa detail.
sumber
Jika Anda ingin menggunakan kernel SVM, Anda harus menebak kernelnya. Namun, JST adalah penduga universal dengan hanya menebak yang harus dilakukan adalah lebar (akurasi aproksimasi) dan tinggi (efisiensi aproksimasi). Jika Anda mendesain masalah optimisasi dengan benar, Anda tidak terlalu fit (silakan lihat daftar pustaka untuk over-fitting). Ini juga tergantung pada contoh pelatihan jika mereka memindai ruang pencarian dengan benar dan seragam. Penemuan lebar dan kedalaman adalah subjek pemrograman bilangan bulat.
Misalkan Anda memiliki fungsi terikat f (.) Dan aproksimator universal terikat pada I = [0,1] dengan rentang lagi I = [0,1] misalnya yang diparetrize dengan urutan nyata dukungan kompak U (., A) dengan properti yang ada urutan dengan
dan Anda menggambar contoh dan tes
(x,y)
dengan distribusi D onIxI
.Untuk dukungan yang ditentukan, apa yang Anda lakukan adalah menemukan yang terbaik sehingga
Biarkan ini
a=aa
yang merupakan variabel acak !, pas kemudianrata-rata menggunakan
D and D^{N} of ( y - U(x,aa) )^{2}
Izinkan saya menjelaskan mengapa, jika Anda memilih
aa
sedemikian rupa sehingga kesalahan diminimalkan, maka untuk sekumpulan nilai yang jarang Anda miliki sangat cocok. Namun, karena mereka jarang, rata-rata tidak pernah 0. Anda ingin meminimalkan yang kedua meskipun Anda memiliki pendekatan diskrit untuk D. Dan perlu diingat bahwa panjang dukungan gratis.sumber
Satu jawaban yang saya lewatkan di sini: Multi-layer perceptron dapat menemukan hubungan antara fitur. Misalnya diperlukan dalam visi komputer ketika gambar mentah disediakan untuk algoritma pembelajaran dan sekarang fitur canggih dihitung. Pada dasarnya level menengah dapat menghitung fitur baru yang tidak dikenal.
sumber
Kami juga harus mempertimbangkan bahwa sistem SVM dapat diterapkan langsung ke ruang non-metrik, seperti seperangkat grafik atau string berlabel. Faktanya, fungsi kernel internal dapat digeneralisasikan dengan benar ke hampir semua jenis input, asalkan persyaratan kepastian positif dari kernel terpenuhi. Di sisi lain, untuk dapat menggunakan JST pada set grafik berlabel, prosedur embedding eksplisit harus dipertimbangkan.
sumber