Dalam beberapa tahun terakhir, jaringan saraf convolutional (atau mungkin jaringan saraf yang dalam secara umum) telah menjadi lebih dalam dan lebih dalam, dengan jaringan canggih mulai dari 7 lapisan ( AlexNet ) hingga 1000 lapisan ( Residual Nets) di ruang 4 tahun. Alasan di balik peningkatan kinerja dari jaringan yang lebih dalam, adalah bahwa fungsi yang lebih kompleks dan non-linear dapat dipelajari. Dengan data pelatihan yang memadai, ini memungkinkan jaringan untuk lebih mudah membedakan antara kelas yang berbeda.
Namun, tren tersebut tampaknya tidak diikuti dengan jumlah parameter di setiap lapisan. Sebagai contoh, jumlah peta fitur dalam lapisan konvolusional, atau jumlah node dalam lapisan yang sepenuhnya terhubung, tetap kira-kira sama dan masih relatif kecil, meskipun ada peningkatan besar dalam jumlah lapisan. Dari intuisi saya, tampaknya bahwa meningkatkan jumlah parameter per lapisan akan memberikan setiap lapisan sumber data yang lebih kaya dari mana untuk mempelajari fungsi non-liniernya; tetapi ide ini tampaknya telah diabaikan demi hanya menambahkan lebih banyak lapisan, masing-masing dengan sejumlah kecil parameter.
Jadi, sementara jaringan telah menjadi "lebih dalam", mereka tidak menjadi "lebih luas". Kenapa ini?
sumber
Jawaban:
Sebagai penafian, saya bekerja pada jaring saraf dalam penelitian saya, tetapi saya biasanya menggunakan jaring saraf yang relatif kecil dan dangkal daripada jaringan yang sangat dalam di ujung tombak penelitian yang Anda kutip dalam pertanyaan Anda. Saya bukan ahli tentang keanehan dan kekhasan jaringan yang sangat dalam dan saya akan tunduk pada seseorang yang ada.
Pertama, pada prinsipnya, tidak ada alasan Anda membutuhkan jaring saraf yang dalam sama sekali. Jaringan saraf yang cukup luas dengan hanya satu lapisan tersembunyi dapat memperkirakan setiap fungsi (wajar) yang diberikan data pelatihan yang cukup. Namun, ada beberapa kesulitan dengan menggunakan jaringan yang sangat luas dan dangkal. Masalah utamanya adalah bahwa jaringan yang sangat luas dan dangkal ini sangat bagus dalam menghafal, tetapi tidak begitu bagus dalam generalisasi . Jadi, jika Anda melatih jaringan dengan setiap nilai input yang mungkin, jaringan super lebar pada akhirnya bisa menghafal nilai output yang sesuai yang Anda inginkan. Tapi itu tidak berguna karena untuk aplikasi praktis Anda tidak akan memiliki setiap nilai input yang mungkin untuk dilatih.
Keuntungan dari banyak lapisan adalah mereka dapat mempelajari fitur pada berbagai tingkat abstraksi . Sebagai contoh, jika Anda melatih jaringan saraf convolutional yang mendalam untuk mengklasifikasikan gambar, Anda akan menemukan bahwa lapisan pertama akan melatih dirinya sendiri untuk mengenali hal-hal yang sangat mendasar seperti tepi, lapisan berikutnya akan melatih dirinya untuk mengenali koleksi tepi seperti bentuk, selanjutnya lapisan akan melatih dirinya untuk mengenali koleksi bentuk seperti mata atau hidung, dan lapisan berikutnya akan mempelajari fitur tingkat tinggi seperti wajah. Beberapa layer jauh lebih baik dalam generalisasi karena mereka mempelajari semua fitur antara antara data mentah dan klasifikasi tingkat tinggi.
Jadi itu menjelaskan mengapa Anda mungkin menggunakan jaringan yang dalam daripada jaringan yang sangat luas tapi dangkal. Tetapi mengapa tidak jaringan yang sangat dalam, sangat luas? Saya pikir jawabannya ada bahwa Anda ingin jaringan Anda menjadi sekecil mungkin untuk menghasilkan hasil yang baik. Ketika Anda meningkatkan ukuran jaringan, Anda benar-benar hanya memperkenalkan lebih banyak parameter yang perlu dipelajari jaringan Anda, dan karenanya meningkatkan kemungkinan overfitting. Jika Anda membangun jaringan yang sangat luas, sangat dalam, Anda menjalankan peluang setiap lapisan hanya menghafal seperti apa output yang Anda inginkan, dan Anda berakhir dengan jaringan saraf yang gagal menggeneralisasi ke data baru.
Selain dari momok overfitting, semakin luas jaringan Anda, semakin lama waktu yang dibutuhkan untuk berlatih . Jaringan yang dalam sudah bisa menjadi komputasi yang sangat mahal untuk dilatih, jadi ada insentif yang kuat untuk membuatnya cukup lebar sehingga bisa bekerja dengan baik, tetapi tidak lebih luas.
sumber
Saya tidak berpikir ada jawaban yang pasti untuk pertanyaan Anda. Tetapi saya pikir kebijaksanaan konvensional berlaku sebagai berikut:
Pada dasarnya, ketika ruang hipotesis dari algoritma pembelajaran bertambah, algoritma tersebut dapat mempelajari struktur yang lebih kaya dan lebih kaya. Tetapi pada saat yang sama, algoritma menjadi lebih rentan terhadap overfitting dan kesalahan generalisasinya cenderung meningkat.
Jadi pada akhirnya, untuk setiap dataset yang diberikan, disarankan untuk bekerja dengan model minimal yang memiliki kapasitas yang cukup untuk mempelajari struktur data yang sebenarnya. Tetapi ini adalah saran yang sangat bergelombang, karena biasanya "struktur data yang sebenarnya" tidak diketahui, dan seringkali bahkan kapasitas model kandidat hanya dipahami secara samar-samar.
Ketika datang ke jaringan saraf, ukuran ruang hipotesis dikendalikan oleh jumlah parameter. Dan tampaknya untuk sejumlah parameter tertentu (atau urutan besarnya tetap), semakin dalam memungkinkan model untuk menangkap struktur yang lebih kaya (misalnya makalah ini ).
Ini sebagian dapat menjelaskan keberhasilan model yang lebih dalam dengan parameter yang lebih sedikit: VGGNet (dari 2014) memiliki 16 lapisan dengan ~ 140 juta parameter, sementara ResNet (dari 2015) mengalahkannya dengan 152 lapisan tetapi hanya ~ 2 juta parameter
(sebagai sisi, model yang lebih kecil mungkin secara komputasi lebih mudah untuk dilatih - tetapi saya tidak berpikir itu merupakan faktor utama dengan sendirinya - karena kedalaman sebenarnya mempersulit pelatihan)
Perhatikan bahwa tren ini (lebih dalam, lebih sedikit parameter) sebagian besar hadir dalam tugas terkait visi dan jaringan konvolusional, dan ini membutuhkan penjelasan khusus domain. Jadi inilah perspektif lain:
Setiap "neuron" dalam lapisan konvolusional memiliki "bidang reseptif", yang merupakan ukuran dan bentuk input yang memengaruhi setiap output. Secara intuitif, setiap kernel menangkap semacam hubungan antara input terdekat. Dan kernel kecil (yang umum dan disukai) memiliki bidang reseptif kecil, sehingga mereka dapat memberikan informasi hanya mengenai hubungan lokal.
Tetapi ketika Anda masuk lebih dalam, bidang reseptif dari masing-masing neuron sehubungan dengan beberapa lapisan sebelumnya menjadi lebih besar. Jadi lapisan dalam dapat menyediakan fitur dengan makna semantik global dan detail abstrak (hubungan relasi ... relasi objek), sementara hanya menggunakan kernel kecil (yang mengatur hubungan yang dipelajari jaringan, dan membantu konvergen dan generalisasi).
Jadi kegunaan jaringan konvolusional yang mendalam dalam visi komputer dapat sebagian dijelaskan oleh struktur spasial gambar dan video. Mungkin saja waktu akan mengatakan bahwa untuk berbagai jenis masalah, atau untuk arsitektur non-konvolusional, kedalaman sebenarnya tidak berfungsi dengan baik.
sumber
Menambahkan lebih banyak fitur membantu tetapi manfaat dengan cepat menjadi marjinal setelah banyak fitur ditambahkan. Itulah salah satu alasan mengapa alat-alat seperti PCA berfungsi: beberapa komponen menangkap sebagian besar varian fitur. Oleh karena itu, menambahkan lebih banyak fitur setelah beberapa titik hampir tidak berguna.
Di sisi lain menemukan fungsional yang tepat untuk fitur tersebut selalu merupakan ide yang bagus. Namun, jika Anda tidak memiliki teori yang baik, tentu saja sulit menghasilkan fungsi yang benar. Jadi, menambahkan layer sangat membantu sebagai bentuk pendekatan brute force.
Pertimbangkan kasus sederhana: hambatan udara mobil. Katakanlah, kita tidak tahu persamaan: di mana - area crossectional mobil, - kerapatan udara, dan - kecepatan mobil. Kita dapat memperkirakan bahwa pengukuran mobil itu penting dan menambahkannya sebagai fitur, kecepatan mobil juga akan masuk. Jadi kami terus menambahkan fitur, dan mungkin menambahkan tekanan udara, suhu, panjang, lebar mobil, jumlah kursi, dll.
Kita akan berakhir dengan model seperti Anda melihat bagaimana fitur-fitur ini tidak akan merakit diri ke dalam persamaan "true" kecuali jika kita menambahkan semua interaksi dan polinomial. Namun, jika persamaan yang sebenarnya tidak sesuai secara polinomial, katakan itu memiliki eksponen atau fungsi transendental aneh lainnya, maka kita tidak akan memiliki kesempatan untuk menirunya dengan memperluas set fitur atau memperluas jaringan.
Namun, membuat jaringan lebih dalam akan dengan mudah membawa Anda ke persamaan di atas hanya dengan dua lapisan. Fungsi yang lebih rumit akan membutuhkan lebih banyak lapisan, itu sebabnya memperdalam jumlah lapisan bisa menjadi cara untuk mengatasi banyak masalah.
sumber
Untuk jaring saraf yang terhubung rapat dengan kedalaman dan lebar , jumlah parameter (karenanya, RAM yang diperlukan untuk menjalankan atau melatih jaringan) adalah . Jadi, jika Anda hanya memiliki sejumlah parameter, sering kali lebih masuk akal untuk lebih memilih peningkatan kedalaman yang besar daripada peningkatan lebar yang kecil.d w O(dw2)
Mengapa Anda mencoba membatasi jumlah parameter? Sejumlah alasan:
Dari mana datangnya ? Untuk dua lapisan tetangga dengan lebar , koneksi di antara keduanya dijelaskan oleh . Jadi jika Anda memiliki lapisan lebar (ditambah input dan lapisan keluaran), jumlah parameter adalah Alih-alih membatasi lebar, strategi alternatif yang kadang-kadang digunakan adalah menggunakan koneksi jarang. Misalnya, ketika menginisialisasi topologi jaringan, Anda dapat mengakui setiap koneksi dengan probabilitas sehingga jumlah total parameter adalahw 1 , w 2 w 1 × w 2 ( d - 2 ) w ( d - 2 ) w 2 + w ⋅ ( lebar lapisan input ) + w ⋅ ( lebar lapisan output ) = O ( d w 2 ) . 1 / √O(dw2) w1,w2 w1×w2 (d−2) w
sumber