Mengapa menggunakan jaringan yang dalam?
Mari kita coba menyelesaikan tugas klasifikasi yang sangat sederhana. Katakanlah, Anda memoderasi forum web yang terkadang dibanjiri pesan spam. Pesan-pesan ini mudah diidentifikasi - paling sering mengandung kata-kata spesifik seperti "beli", "porno", dll. Dan URL ke sumber daya luar. Anda ingin membuat filter yang akan memberi tahu Anda tentang pesan mencurigakan tersebut. Ternyata cukup mudah - Anda mendapatkan daftar fitur (misalnya daftar kata-kata yang mencurigakan dan keberadaan URL) dan melatih regresi logistik sederhana (alias perceptron), yaitu model seperti:
g(w0 + w1*x1 + w2*x2 + ... + wnxn)
di mana x1..xn
fitur Anda (baik keberadaan kata atau URL tertentu), w0..wn
- koefisien yang dipelajari dan g()
merupakan fungsi logistik untuk membuat hasil antara 0 dan 1. Ini adalah pengelompokan yang sangat sederhana, tetapi untuk tugas sederhana ini dapat memberikan hasil yang sangat baik, menciptakan batas keputusan linear. Dengan asumsi Anda hanya menggunakan 2 fitur, batas ini mungkin terlihat seperti ini:
Di sini 2 sumbu mewakili fitur (misalnya jumlah kemunculan kata tertentu dalam pesan, dinormalkan sekitar nol), titik merah tetap untuk spam dan titik biru - untuk pesan normal, sedangkan garis hitam menunjukkan garis pemisahan.
Namun segera Anda perhatikan bahwa beberapa pesan bagus mengandung banyak kemunculan kata "beli", tetapi tidak ada URL, atau diskusi panjang tentang deteksi porno , tidak benar-benar merujuk pada film porno. Batas keputusan linier tidak bisa menangani situasi seperti itu. Sebaliknya Anda membutuhkan sesuatu seperti ini:
Batas keputusan non-linear baru ini jauh lebih fleksibel , yaitu dapat menyesuaikan data lebih dekat. Ada banyak cara untuk mencapai non-linearitas ini - Anda dapat menggunakan fitur polinom (misalnya x1^2
) atau kombinasinya (mis. x1*x2
) Atau memproyeksikannya ke dimensi yang lebih tinggi seperti dalam metode kernel . Tetapi dalam jaringan saraf itu biasa untuk menyelesaikannya dengan menggabungkan perceptron atau, dengan kata lain, dengan membangun perceptron multilayer. Non-linearitas di sini berasal dari fungsi logistik antar lapisan. Semakin banyak lapisan, pola yang lebih canggih mungkin tercakup oleh MLP. Satu lapisan (perceptron) dapat menangani deteksi spam sederhana, jaringan dengan 2-3 lapisan dapat menangkap kombinasi fitur yang rumit, dan jaringan 5-9 lapisan, yang digunakan oleh laboratorium penelitian besar dan perusahaan seperti Google, dapat memodelkan seluruh bahasa atau mendeteksi kucing pada gambar.
Ini adalah alasan penting untuk memiliki arsitektur yang mendalam - mereka dapat memodelkan pola yang lebih canggih .
Mengapa jaringan yang dalam sulit untuk dilatih?
Dengan hanya satu fitur dan batas keputusan linier, sebenarnya cukup untuk hanya memiliki 2 contoh pelatihan - satu positif dan satu negatif. Dengan beberapa fitur dan / atau batas keputusan non-linear, Anda memerlukan beberapa pesanan lebih banyak contoh untuk mencakup semua kasus yang mungkin (mis. Anda tidak hanya perlu menemukan contoh dengan word1
, word2
dan word3
, tetapi juga dengan semua kemungkinan kombinasi mereka). Dan dalam kehidupan nyata Anda perlu berurusan dengan ratusan dan ribuan fitur (misalnya kata-kata dalam bahasa atau piksel dalam gambar) dan setidaknya beberapa lapisan untuk memiliki cukup non-linearitas. Ukuran kumpulan data, yang diperlukan untuk sepenuhnya melatih jaringan tersebut, dengan mudah melebihi 10 ^ 30 contoh, sehingga sama sekali tidak mungkin untuk mendapatkan data yang cukup. Dengan kata lain, dengan banyak fitur dan banyak lapisan, fungsi keputusan kami menjadi terlalu fleksibeluntuk dapat mempelajarinya secara tepat .
Namun demikian, cara untuk mempelajarinya sekitar . Sebagai contoh, jika kita bekerja dalam pengaturan probabilistik, maka alih-alih mempelajari frekuensi semua kombinasi semua fitur, kita dapat mengasumsikan bahwa mereka independen dan hanya belajar frekuensi individual, mengurangi classifier Bayes penuh dan tidak dibatasi menjadi Naif Bayes dan karenanya membutuhkan banyak, apalagi data untuk dipelajari.
Dalam jaringan saraf ada beberapa upaya untuk (secara bermakna) mengurangi kompleksitas (fleksibilitas) fungsi keputusan. Misalnya, jaringan konvolusional, yang banyak digunakan dalam klasifikasi gambar, hanya mengasumsikan koneksi lokal antara piksel terdekat dan karenanya hanya mencoba mempelajari kombinasi piksel dalam "jendela" kecil (katakanlah, 16x16 piksel = 256 neuron input) sebagai lawan dari gambar penuh (katakanlah, 100x100 piksel = 10.000 input neuron). Pendekatan lain termasuk rekayasa fitur, yaitu mencari deskriptor input data spesifik yang ditemukan manusia.
Fitur yang ditemukan secara manual sebenarnya sangat menjanjikan. Dalam pemrosesan bahasa alami, misalnya, terkadang bermanfaat untuk menggunakan kamus khusus (seperti yang berisi kata-kata khusus spam) atau menangkap negasi (mis. " Tidak baik"). Dan dalam visi komputer hal-hal seperti deskriptor SURF atau fitur seperti Haar hampir tak tergantikan.
Tetapi masalah dengan teknik fitur manual adalah bahwa dibutuhkan beberapa tahun untuk menghasilkan deskriptor yang baik. Selain itu, fitur-fitur ini seringkali spesifik
Pra-pelatihan tanpa pengawasan
Tetapi ternyata kita dapat memperoleh fitur yang baik secara otomatis langsung dari data menggunakan algoritma seperti autoencoder dan mesin Boltzmann terbatas . Saya menjelaskannya secara terperinci dalam jawaban saya yang lain , tetapi singkatnya mereka memungkinkan untuk menemukan pola berulang dalam data input dan mengubahnya menjadi fitur tingkat yang lebih tinggi. Misalnya, hanya diberi nilai piksel baris sebagai input, algoritme ini dapat mengidentifikasi dan melewati seluruh tepi yang lebih tinggi, kemudian dari tepi ini membangun angka dan seterusnya, hingga Anda mendapatkan deskriptor tingkat tinggi seperti variasi di wajah.
Setelah jaringan pretraining (tanpa pengawasan) tersebut biasanya dikonversi menjadi MLP dan digunakan untuk pelatihan yang diawasi secara normal. Perhatikan, bahwa pretraining dilakukan dengan bijaksana. Ini secara signifikan mengurangi ruang solusi untuk algoritma pembelajaran (dan karenanya dibutuhkan sejumlah contoh pelatihan) karena hanya perlu mempelajari parameter di dalam setiap lapisan tanpa memperhitungkan lapisan lainnya.
Dan seterusnya...
Pretraining tanpa pengawasan telah ada di sini untuk beberapa waktu sekarang, tetapi baru-baru ini algoritma lain ditemukan untuk meningkatkan pembelajaran keduanya - bersama dengan pretraining dan tanpa itu. Salah satu contoh penting dari algoritma tersebut adalah teknik putus sekolah - sederhana, yang secara acak "menjatuhkan" beberapa neuron selama pelatihan, membuat beberapa distorsi dan mencegah jaringan mengikuti data terlalu dekat. Ini masih topik penelitian yang panas, jadi saya serahkan ini pada pembaca.