Khususnya dalam konteks kompetisi kaggle saya perhatikan bahwa kinerja model adalah semua tentang pemilihan fitur / teknik. Sementara saya dapat sepenuhnya memahami mengapa hal ini terjadi ketika berhadapan dengan algoritma ML yang lebih konvensional / jadul, saya tidak melihat mengapa ini akan menjadi kasus ketika menggunakan jaringan saraf yang dalam.
Mengutip buku Deep Learning:
Pembelajaran mendalam memecahkan masalah sentral ini dalam pembelajaran representasi dengan memperkenalkan representasi yang diekspresikan dalam bentuk representasi lain yang lebih sederhana. Pembelajaran yang mendalam memungkinkan komputer untuk membangun konsep yang kompleks dari konsep yang lebih sederhana.
Oleh karena itu saya selalu berpikir bahwa jika "informasi ada dalam data", jaringan saraf yang cukup dalam dan parameterisasi baik akan mengambil fitur yang tepat mengingat waktu pelatihan yang cukup.
Jawaban:
Bagaimana jika jaringan "cukup dalam" sangat besar, baik membuat pelatihan model terlalu mahal (biaya AWS bertambah!) Atau karena Anda perlu menggunakan jaringan di lingkungan yang terbatas sumber daya?
Bagaimana Anda tahu, apriori bahwa jaringan memiliki parameter yang baik? Diperlukan banyak percobaan untuk menemukan jaringan yang berfungsi dengan baik.
Bagaimana jika data yang Anda kerjakan tidak "bersahabat" dengan metode analisis standar, seperti string biner yang terdiri dari ribuan atau jutaan bit, di mana setiap urutan memiliki panjang yang berbeda?
Bagaimana jika Anda tertarik pada data tingkat pengguna, tetapi Anda terpaksa bekerja dengan database yang hanya mengumpulkan data tingkat transaksi?
Misalkan data Anda adalah bentuk bilangan bulat seperti , dan tugas Anda adalah memprediksi jumlah digit, sehingga target dalam contoh ini adalah . Sangat mudah untuk mengurai setiap digit ke dalam array dan kemudian menjumlahkan array ("fitur engineering") tetapi menantang sebaliknya.3 , 5 , 18 , 712,32,486,7 3,5,18,7
Kami ingin hidup di dunia di mana analisis data adalah "turnkey," tetapi solusi semacam ini biasanya hanya ada dalam contoh khusus. Banyak pekerjaan yang dilakukan untuk mengembangkan CNN mendalam untuk klasifikasi gambar - pekerjaan sebelumnya memiliki langkah yang mengubah setiap gambar menjadi vektor dengan panjang tetap.
Rekayasa fitur memungkinkan praktisi secara langsung mengubah pengetahuan tentang masalah menjadi vektor dengan panjang tetap yang dapat diterima untuk jaringan umpan-maju. Pemilihan fitur dapat menyelesaikan masalah dengan memasukkan begitu banyak fitur yang tidak relevan sehingga sinyal apa pun hilang, serta secara dramatis mengurangi jumlah parameter pada model.
sumber
Kata-kata kunci di sini adalah prior dan skala . Sebagai contoh sederhana, bayangkan Anda mencoba memprediksi usia seseorang dari sebuah foto. Dengan set data gambar dan usia, Anda dapat melatih model pembelajaran mendalam untuk membuat prediksi. Ini secara objektif sangat tidak efisien karena 90% dari gambar tidak berguna, dan hanya wilayah dengan orang yang benar-benar berguna. Khususnya, wajah orang itu, tubuh mereka dan mungkin pakaian mereka.
Di sisi lain, Anda bisa menggunakan jaringan deteksi objek pra-terlatih untuk mengekstrak kotak pembatas pertama untuk orang tersebut, memotong gambar, dan kemudian meneruskannya melalui jaringan. Proses ini akan secara signifikan meningkatkan akurasi model Anda karena sejumlah alasan:
1) Semua sumber daya jaringan (yaitu bobot) dapat fokus pada tugas sebenarnya prediksi usia, sebagai lawan harus terlebih dahulu menemukan orang tersebut terlebih dahulu. Ini sangat penting karena wajah orang tersebut mengandung fitur yang bermanfaat. Jika tidak, fitur yang lebih baik yang Anda butuhkan mungkin hilang di beberapa lapisan pertama. Secara teori jaringan yang cukup besar mungkin bisa menyelesaikan ini, tetapi akan sangat tidak efisien. Gambar yang dipangkas juga jauh lebih teratur daripada gambar aslinya. Sedangkan gambar asli memiliki satu ton suara, itu diperdebatkan perbedaan dalam gambar yang dipotong jauh lebih berkorelasi dengan tujuan.
2) Gambar yang dipangkas dapat dinormalisasi untuk memiliki skala yang sama . Ini membantu jaringan kedua menangani masalah penskalaan, karena dalam gambar asli, orang dapat muncul di dekat atau jauh. Skala normalisasi sebelumnya membuatnya sehingga gambar yang dipangkas dijamin memiliki seseorang di dalamnya yang mengisi gambar yang dipangkas penuh (meskipun terlikuidasi jika mereka jauh). Untuk melihat bagaimana hal ini dapat membantu skala, potongan tubuh yang setengah lebar dan tinggi gambar asli memiliki piksel 4x lebih sedikit untuk diproses, dan karenanya jaringan yang sama yang diterapkan pada gambar ini akan memiliki 4x bidang reseptif jaringan asli di setiap lapisan.
Sebagai contoh, dalam kompetisi paru-paru kaggle, tema umum dalam solusi teratas adalah semacam preprocessing pada gambar paru-paru yang memotongnya sebanyak mungkin dan mengisolasi komponen dari setiap paru-paru. Ini sangat penting dalam gambar 3D karena efeknya kubik: dengan menghapus 20% dari setiap dimensi, Anda menyingkirkan hampir setengah piksel!
sumber
Intuisi saya tentang fenomena ini terhubung dengan kompleksitas model yang akan dipelajari. Jaringan saraf yang dalam memang bisa memperkirakan fungsi apa pun dalam teori , tetapi dimensi ruang parameter bisa sangat besar, seperti dalam jutaan. Jadi, sebenarnya menemukan jaringan saraf yang baik sangat sulit. Saya suka berpikir tentang rekayasa fitur sebagai permulaan bagi algoritma, memberikan beberapa informasi tambahan mengenai representasi data yang cukup baik dalam beberapa hal. Tentu saja, ini bukan penjelasan formal, pertanyaan ini mungkin sangat sulit dijawab dengan ketelitian ilmiah.
sumber