
Pengarang: Toluwani Aremu
Awalnya diterbitkan di Towards AI the World’s Leading AI and Technology News and Media Company. Jika Anda sedang membangun produk atau layanan terkait AI, kami mengundang Anda untuk mempertimbangkan untuk menjadi sponsor AI. Di Towards AI, kami membantu menskalakan AI dan startup teknologi. Biarkan kami membantu Anda melepaskan teknologi Anda kepada massa.
Foto oleh Ales Krivec di Unsplash
PENGANTAR
Pernah bertanya-tanya mengapa DNN gagal berkinerja setinggi yang diharapkan dalam hal akurasi, terutama ketika ada laporan resmi atau tidak resmi dari para ahli dan penggemar yang mendapatkan kinerja terbaik dengan jaringan yang sama dan pada kumpulan data yang sama yang Anda gunakan? Saya ingat mengalami masa-masa sulit mencoba untuk menutupi pikiran bahwa model saya baru saja gagal ketika diharapkan untuk tampil baik. Apa yang menyebabkan ini? Pada kenyataannya, ada banyak faktor dengan berbagai tingkat potensi untuk memengaruhi kinerja arsitektur Anda. Namun, saya hanya akan membahas satu di artikel ini. Faktor ini adalah “Pilihan algoritma Optimasi yang akan digunakan”.
Apa itu pengoptimal? Pengoptimal adalah fungsi atau algoritme yang dibuat dan digunakan untuk modifikasi atribut jaringan saraf (yaitu, bobot, kecepatan pembelajaran) untuk tujuan mempercepat konvergensi sambil meminimalkan kerugian dan memaksimalkan akurasi. DNN menggunakan jutaan miliaran parameter, dan Anda memerlukan bobot yang tepat untuk memastikan bahwa DNN Anda belajar dengan baik dari data yang diberikan sambil menggeneralisasi dan beradaptasi dengan baik untuk kinerja yang baik pada data terkait yang tidak terlihat.
Algoritme pengoptimalan yang berbeda telah dibuat selama bertahun-tahun, dan beberapa dari algoritme ini memiliki kelebihan dibandingkan yang lain, serta kekurangannya. Oleh karena itu, sangat penting untuk mengetahui dasar-dasar algoritme ini, serta memahami masalah yang sedang dikerjakan sehingga kami dapat memilih pengoptimal terbaik untuk digunakan.
Selanjutnya, saya perhatikan bahwa banyak peneliti menggunakan pengoptimal SGD-M (Stochastic Gradient Descent with Momentum), tetapi di industri, Adam lebih disukai. Dalam artikel ini, saya akan memberikan deskripsi singkat tingkat tinggi tentang pengoptimal paling populer yang digunakan di dunia AI. Sebenarnya, saya harus melakukan sejumlah percobaan untuk melihat perbedaan antara pengoptimal ini dan menjawab beberapa pertanyaan yang saya miliki tentang penggunaan pengoptimal ini, serta memberikan petunjuk tentang pengoptimal mana yang terbaik dan kapan/bagaimana menggunakannya berdasarkan pengamatan saya.
DESKRIPSI DASAR DARI OPTIMIZER BERBEDA
https://ruthwik.github.io/machinelearning/2018-01-15-gradient-descent/
Pada bagian ini, saya akan membahas secara singkat Stochastic Gradient Descent with Momentum(SGDM), Adaptive Gradient Algorithm (ADAGRAD), Root Mean Squared Propagation (RMSProp), dan Adam optimizer.
SGDM: Karena pengoptimal Gradient Descent (GD) menggunakan seluruh data pelatihan untuk memperbarui bobot model, itu menjadi sangat mahal secara komputasi ketika kita memiliki jutaan titik data. Karena itu, Stochastic Gradient Descent (SGD) dibuat untuk mengatasi masalah ini dengan menggunakan setiap titik data untuk memperbarui bobot. Namun, ini secara komputasi mahal untuk Neural Networks (NN) setiap titik data yang digunakan dalam NN membutuhkan propagasi maju dan mundur. Selain itu, dengan SGD, kami tidak dapat meningkatkan kecepatan pembelajaran saat mencoba mencapai minimum global. Hal ini membuat konvergensi sangat lambat saat memanfaatkan SGD. SGDM adalah solusi untuk itu, karena menambahkan istilah momentum ke SGD normal, yang meningkatkan kecepatan konvergensi. Untuk penjelasan lebih dalam, klik di sini.
Gambar oleh Sebastian Ruder
ADAGRAD: Adaptive Gradient Algorithm (Adagrad) adalah sebuah algoritma untuk optimasi berbasis gradien yang mencoba untuk menyesuaikan tingkat pembelajaran dengan parameter. Tingkat pembelajaran sesuai dengan parameter komponen demi komponen dengan memasukkan wawasan dari pengamatan sebelumnya. Itu membuat pembaruan kecil untuk parameter yang terkait dengan fitur yang sering dan pembaruan besar untuk mereka yang memiliki fitur yang tidak sering terjadi. Adagrad juga menghilangkan kebutuhan untuk menyetel laju pembelajaran secara manual karena secara otomatis memperbarui laju pembelajaran berdasarkan parameter. Namun, tingkat pembelajaran menyusut dengan cepat, membuat model berpikir itu hampir mencapai konvergensi dan berhenti agak kurang dari kinerja yang diharapkan. Untuk mempelajari lebih lanjut, klik di sini.
RMSProp: Diusulkan oleh Geoffrey Hinton (meskipun tetap tidak dipublikasikan), RMSProp adalah perpanjangan dari GD dan versi AdaGrad dari penurunan gradien yang menggunakan rata-rata penurunan gradien parsial dalam adaptasi ukuran langkah untuk setiap parameter. Ditemukan bahwa besarnya gradien dapat berbeda untuk parameter yang berbeda dan dapat berubah selama pelatihan. Oleh karena itu, pilihan kecepatan belajar otomatis Adagrad dapat menjadi pilihan yang tidak dioptimalkan. Hinton memecahkan ini dengan memperbarui bobot yang dipelajari menggunakan rata-rata bergerak dari gradien kuadrat. Untuk mempelajari lebih lanjut, klik di sini.
Adam: Pengoptimal ini diusulkan oleh Diederik Kingma dan Jimmy Ba pada tahun 2015 dan bisa dibilang sebagai pengoptimal paling populer yang pernah dibuat. Ini menggabungkan keunggulan dan manfaat SGDM dan RMSProp dalam arti menggunakan momentum Dari SGDM dan penskalaan dari RMSProp. Ini efisien secara komputasi, tidak seperti GD dan SGD, dan hanya membutuhkan sedikit memori. Itu dirancang untuk digunakan pada masalah dengan gradien yang sangat bising/jarang. Untuk mempelajari lebih lanjut, klik di sini atau di sini.
EKSPERIMEN
Foto oleh Kevin Ku di Unsplash
Karena ukuran sumber daya komputasi saya, saya memutuskan untuk fokus menggunakan LeNet dan AlexNet pada kumpulan data CIFAR-10. Dataset CIFAR-10 terdiri dari 50000 gambar pelatihan dan 10.000 gambar uji. Saya melatih model ini selama 50 zaman menggunakan pengoptimal SGD, SGDM, Adagrad, RMSProp, dan Adam. Untuk SGDM, saya menggunakan momentum 0,9. Tingkat pembelajaran global untuk rangkaian eksperimen pertama saya adalah 0,001 (1e-3).
Catatan: Saya tidak mencari hasil yang sangat baik. Saya malah mencoba melihat dampak dari setiap pengoptimal pada kinerja model.
Saya mulai dengan memanggil perpustakaan penting:
https://medium.com/media/425968addc0d7bb7e1dbe8466f7c788b/href
Kemudian, saya memuat dan mengubah dataset CIFAR-10:
https://medium.com/media/2aed5c7db98e0cf2058155c6832500ea/href
Model LeNet dan AlexNet:
https://medium.com/media/f92213170ff3ae0d7646ce4ed9487925/href
Untuk mendapatkan kode lengkapnya, lihat repositori ini (beri bintang jika Anda tidak keberatan).
Hasilnya adalah sebagai berikut.
Pada model LeNet, akurasi pengujian SGDM adalah yang tertinggi hampir 70%, sedangkan kerugian pelatihannya adalah 0,635. Adam memiliki kehilangan pelatihan paling sedikit, tetapi akurasi tes mereka hanya 67%. LeNet dengan Adagrad menyedihkan dan memiliki akurasi pengujian 48% yang jauh lebih rendah daripada SGD, yang memiliki 54,03%. RMSProp memberikan akurasi tes 65% dan kehilangan kereta 0,630.
Sedangkan untuk model AlexNet, SGDM masih memiliki akurasi pengujian terbaik sebesar 83,75%, diikuti oleh Adagrad dengan 82,79%. Namun, kerugian pelatihan SGD adalah 0,016 sementara Adagrad memiliki 0,005, yang sangat kecil dan memberi model sedikit ruang untuk perbaikan. Hasil Adam sangat rendah, mengingat seberapa tinggi peringkatnya di sektor AI. RMSProp tampaknya tidak memiliki kepercayaan konvergensi tetapi memiliki akurasi pengujian yang serupa dengan Adam.
Dari hasil LeNet, orang dapat dengan mudah menyimpulkan bahwa Adagrad adalah pengoptimal yang buruk, dan dari hasil AlexNet, RMSProp tampak seperti pengoptimal yang mampu membantu model overfit pada data pelatihan, tetapi ada lebih dari sekadar membuat ini kesimpulan awal. Lebih banyak eksperimen harus dilakukan untuk menyelidiki masalah ini.
EKSPERIMEN LEBIH LANJUT
Karena hasil RMSProp dan Adam, saat menggunakan model AlexNet, percobaan lain dilakukan, kali ini menggunakan kecepatan pembelajaran 1e-5.
Sekarang, ini lebih seperti itu. Tingkat pembelajaran yang lebih rendah menstabilkan pengoptimal RMSProp dan meningkatkan kinerja Adam. Kami dapat dengan mudah menyimpulkan dan mengatakan lebih baik menggunakan tingkat pembelajaran yang lebih rendah untuk pengoptimal yang menggunakan penskalaan. Namun, kita perlu memastikan bahwa ini tidak umum, jadi saya mencoba menggunakan tingkat pembelajaran yang lebih rendah dengan SGDM, dan itu memberi saya hasil yang sangat buruk. Oleh karena itu, tingkat pembelajaran yang lebih rendah lebih cocok untuk pengoptimal penskalaan.
Namun, kami tidak memiliki cukup eksperimen untuk melakukan pengamatan lain, jadi di bagian berikutnya, saya akan membahas pengamatan saat ini dari eksperimen singkat saat ini pada setiap pengoptimal.
PEMBAHASAN DAN KESIMPULAN
SGD: Tidak Direkomendasikan! Meskipun pasti untuk bertemu, biasanya butuh waktu untuk belajar. Apa yang bisa dipelajari SGDM atau Adam dalam 50 epoch, SGD akan belajar di sekitar 500 epoch. Namun, ada kemungkinan besar Anda bisa mendapatkan hasil yang layak saat Anda memulai dengan tingkat pembelajaran yang besar (yaitu, 1e-1). Anda juga dapat menggunakannya jika Anda memiliki cukup waktu untuk menunggu konvergensi; lain, menjauhlah.
SGDM: Direkomendasikan! Pengoptimal ini telah memberikan hasil terbaik dalam eksperimen. Namun, itu mungkin tidak berfungsi dengan baik jika tingkat pembelajaran awal rendah. Jika tidak, konvergen cepat dan juga membantu generalisasi model. Ini benar-benar direkomendasikan!
Adagrad: Direkomendasikan! Dari percobaan, dapat dikatakan bahwa pengoptimal ini adalah yang terburuk untuk digunakan, terutama ketika Anda menggunakan model kecil seperti LeNet pada kumpulan data yang kompleks. Namun, di jaringan yang lebih dalam, itu bisa memberikan hasil yang baik, tetapi kinerja yang optimal tidak dijamin.
RMSProp: Direkomendasikan! Pengoptimal ini juga telah memberikan kinerja yang sangat baik. Ketika digunakan dengan tingkat pembelajaran yang lebih rendah, itu bisa memberikan kinerja yang lebih baik. Selain kinerjanya, kecepatan konvergensinya tinggi, dan kita bisa melihat alasan mengapa kadang-kadang digunakan di sektor produksi (industri).
Adam: Direkomendasikan! Menurut beberapa ahli, Adam mempelajari semua pola, termasuk kebisingan di set kereta, dan karena itu cepat untuk berkumpul. Namun, dalam percobaan di atas, kita dapat melihat bahwa itu tidak konvergen sebaik SGDM, tetapi konvergen dan belajar dengan cepat. Juga, saya dapat bertaruh bahwa kinerjanya pada kumpulan data yang lebih besar (yang tentu saja mengandung lebih banyak noise) akan lebih baik daripada pengoptimal lain yang dibahas di atas.
Dengan tampilan praktis tentang pengoptimal populer yang digunakan saat ini, saya harap Anda mendapatkan beberapa wawasan dan intuisi tentang mengapa pengoptimal diperlukan dan bagaimana pengoptimal ini memengaruhi kinerja model. Jika Anda memiliki saran dan umpan balik, silakan tinggalkan komentar atau terhubung dengan saya di LinkedIn. Terima kasih.
Untuk mempelajari tentang pengoptimal ini, serta pengoptimal lain yang tidak dibahas dalam artikel ini, silakan gunakan tautan ini.
Untuk mengakses kode yang digunakan di sini, repositori.
Dampak Pengoptimal dalam Pengklasifikasi Gambar awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.
Diterbitkan melalui Menuju AI