Anda benar bahwa konsep dasar NN yang dalam tidak berubah sejak 2012. Tetapi ada berbagai peningkatan cara pelatihan NN yang mendalam yang membuat mereka secara kualitatif lebih kuat. Ada juga beragam arsitektur yang tersedia saat ini. Saya telah membuat daftar beberapa perkembangan sejak 2012, dikelompokkan berdasarkan peningkatan pelatihan dan peningkatan arsitektur:
Perangkat Keras : Perubahan yang paling jelas hanyalah perkembangan hukum Moore yang tak terhindarkan. Ada lebih banyak daya komputasi yang tersedia saat ini. Cloud computing juga memudahkan orang untuk melatih NN besar tanpa perlu membeli rig yang besar.
Perangkat Lunak : Perangkat lunak open source untuk pembelajaran dalam benar-benar sangat ditingkatkan dari 2012. Kembali pada tahun 2012 ada Theano, mungkin Caffe juga. Saya yakin ada beberapa yang lain juga. Tetapi hari ini kami juga memiliki TensorFlow, Torch, Paddle, dan CNTK, yang semuanya didukung oleh perusahaan teknologi besar. Ini terkait erat dengan poin-poin perangkat keras karena banyak dari platform ini membuatnya mudah untuk dilatih pada GPU, yang secara drastis mempercepat waktu pelatihan.
Fungsi aktivasi : Penggunaan fungsi aktivasi ReLU mungkin lebih luas hari ini, yang membuat pelatihan jaringan yang sangat dalam menjadi lebih mudah. Di sisi penelitian, ada berbagai fungsi aktivasi yang dipelajari, termasuk ReLU bocor , parametrik ReLU , dan unit maxout .
Algoritma optimisasi : Ada lebih banyak algoritma optimasi di sekitar hari ini. Adagrad dan Adadelta baru saja diperkenalkan pada tahun 2011 dan 2012, masing-masing. Tetapi kami sekarang juga memiliki pengoptimal Adam dan ini menjadi pilihan yang sangat populer.
Dropout : Dalam beberapa tahun terakhir, dropout telah menjadi alat standar untuk regularisasi ketika melatih jaringan saraf. Dropout adalah bentuk ansambel yang murah secara komputasi untuk NN. Secara umum, satu set model yang dilatih pada sampel acak dataset akan mengungguli model tunggal yang dilatih pada seluruh dataset. Ini sulit dilakukan secara eksplisit untuk NN karena sangat mahal untuk dilatih. Tetapi efek yang serupa dapat diperkirakan hanya dengan "mematikan" neuron secara acak pada setiap langkah. Subgraph yang berbeda di NN pada akhirnya mendapatkan pelatihan pada set data yang berbeda, dan dengan demikian mempelajari hal-hal yang berbeda. Seperti ensembling, ini cenderung membuat NN keseluruhan lebih kuat untuk overfitting. Dropout adalah teknik sederhana yang tampaknya meningkatkan kinerja di hampir setiap kasus, jadi
Normalisasi batch : Sudah diketahui untuk sementara waktu bahwa NN melatih terbaik pada data yang dinormalisasi --- yaitu, ada nol rata-rata dan varians unit. Dalam jaringan yang sangat dalam, ketika data melewati setiap lapisan, input akan ditransformasikan dan umumnya akan hanyut ke distribusi yang tidak memiliki properti yang bagus dan dinormalisasi ini. Ini membuat pembelajaran pada lapisan yang lebih dalam ini lebih sulit karena, dari sudut pandangnya, inputnya tidak memiliki mean nol dan varian unit. Berarti bisa sangat besar dan varians bisa sangat kecil. Normalisasi batch mengatasi hal ini dengan mengubah input ke layer agar memiliki mean nol dan varians unit. Ini tampaknya sangat efektif dalam melatih NN yang sangat dalam.
Teori : Sampai baru-baru ini, diperkirakan bahwa alasan NNs dalam sulit untuk dilatih adalah bahwa algoritma optimasi terjebak dalam minimum lokal dan mengalami kesulitan untuk keluar dan menemukan minimum global. Dalam empat tahun terakhir telah ada sejumlah studi yang tampaknya menunjukkan bahwa intuisi ini salah (misalnya, Goodfellow et al. 2014). Dalam ruang parameter dimensi yang sangat tinggi dari NN yang dalam, minima lokal cenderung tidak jauh lebih buruk daripada minima global. Masalahnya sebenarnya adalah ketika berlatih, NN dapat menemukan dirinya di dataran tinggi yang panjang. Selain itu, dataran tinggi ini dapat berakhir tiba-tiba di tebing curam. Jika NN mengambil langkah-langkah kecil, butuh waktu yang sangat lama untuk belajar. Tetapi jika langkah-langkahnya terlalu besar, ia akan bertemu dengan gradien besar ketika berjalan ke tebing, yang membatalkan semua pekerjaan sebelumnya. (Ini dapat dihindari dengan kliping gradien, inovasi pasca-2012 lainnya.)
Jaringan residual : Para peneliti telah dapat melatih jaringan yang sangat dalam (lebih dari 1000 lapisan!) Menggunakan jaringan residu . Idenya di sini adalah bahwa setiap lapisan tidak hanya menerima output dari lapisan sebelumnya, tetapi juga input asli juga. Jika dilatih dengan benar, ini mendorong setiap lapisan untuk mempelajari sesuatu yang berbeda dari lapisan sebelumnya, sehingga setiap lapisan tambahan menambahkan informasi.
Jaringan yang luas dan dalam : Jaringan yang lebar dan dangkal memiliki kecenderungan untuk hanya menghafal pemetaan antara input dan output mereka. Jaringan dalam menggeneralisasi jauh lebih baik. Biasanya Anda menginginkan generalisasi yang baik, tetapi ada beberapa situasi, seperti sistem rekomendasi, di mana menghafal sederhana tanpa generalisasi juga penting. Dalam kasus ini Anda ingin memberikan solusi substantif yang baik ketika pengguna membuat permintaan umum, tetapi solusi yang sangat tepat ketika pengguna membuat permintaan yang sangat spesifik. Jaringan yang luas dan dalam mampu memenuhi tugas ini dengan baik.
Mesin turing neural : Kelemahan NN berulang tradisional (apakah itu RNN standar atau sesuatu yang lebih canggih seperti LSTM) adalah memori mereka agak "intuitif". Mereka berhasil mengingat input masa lalu dengan menyimpan aktivasi lapisan tersembunyi yang mereka hasilkan di masa depan. Namun, terkadang lebih masuk akal untuk secara eksplisit menyimpan beberapa data. (Ini mungkin perbedaan antara menuliskan nomor telepon di selembar kertas vs. mengingat bahwa jumlahnya memiliki sekitar 7 digit dan ada beberapa angka 3 di sana dan mungkin tanda hubung di suatu tempat di tengah.) Mesin saraf Turingadalah cara untuk mencoba mengatasi masalah ini. Idenya adalah bahwa jaringan dapat belajar untuk secara eksplisit melakukan fakta tertentu ke bank memori. Ini tidak mudah dilakukan karena algoritma backprop membutuhkan fungsi yang dapat dibedakan, tetapi melakukan datum ke alamat memori adalah operasi yang terpisah secara inheren. Akibatnya, mesin saraf Turing menyiasati ini dengan melakukan sedikit data ke distribusi alamat memori yang berbeda. Arsitektur ini tampaknya belum berfungsi dengan sangat baik, tetapi idenya sangat penting. Beberapa varian ini mungkin akan menyebar luas di masa depan.
Jaringan permusuhan generatif : GAN adalah ide yang sangat menarik yang tampaknya telah melihat banyak penggunaan praktis. Idenya di sini adalah untuk melatih dua NN secara bersamaan: satu yang mencoba untuk menghasilkan sampel dari distribusi probabilitas yang mendasari (generator), dan yang mencoba untuk membedakan antara titik data nyata dan titik data palsu yang dihasilkan oleh generator (pembeda). Jadi, misalnya, jika dataset Anda adalah kumpulan gambar kamar tidur, generator akan mencoba membuat gambar kamar tidur sendiri, dan pembeda akan mencoba mencari tahu apakah itu melihat gambar nyata kamar tidur atau gambar palsu kamar tidur. Pada akhirnya, Anda memiliki dua NN yang sangat berguna: satu yang sangat bagus dalam mengklasifikasikan gambar sebagai kamar tidur atau bukan kamar tidur, dan yang benar-benar bagus dalam menghasilkan gambar kamar tidur yang realistis.