Saya ingin tahu apakah keturunan Gradient adalah algoritma utama yang digunakan dalam pengoptimal seperti Adam, Adagrad, RMSProp dan beberapa pengoptimal lainnya.
Saya ingin tahu apakah keturunan Gradient adalah algoritma utama yang digunakan dalam pengoptimal seperti Adam, Adagrad, RMSProp dan beberapa pengoptimal lainnya.
Jawaban:
Tidak. Gradient descent digunakan dalam algoritme pengoptimalan yang menggunakan gradien sebagai dasar gerakan langkahnya. Adam
,, Adagrad
dan RMSProp
semua menggunakan beberapa bentuk gradient descent, namun mereka tidak membuat setiap optimizer. Algoritma evolusioner seperti Particle Swarm Optimization dan Genetic Algorithms yang terinspirasi oleh fenomena alam tidak menggunakan gradien. Algoritma lain, seperti Bayesian Optimization , mengambil inspirasi dari statistik.
Lihat visualisasi Bayesian Optimization ini dalam aksi:
Ada juga beberapa algoritma yang menggabungkan konsep dari optimasi berbasis evolusi dan gradien.
Algoritma optimisasi berbasis non-derivatif dapat sangat berguna dalam fungsi biaya non-cembung yang tidak teratur, fungsi biaya yang tidak dapat dibedakan, atau fungsi biaya yang memiliki turunan kiri atau kanan yang berbeda .
Untuk memahami mengapa orang dapat memilih algoritma optimasi berbasis non-derivatif. Lihatlah fungsi benchmark Rastrigin . Optimalisasi berbasis gradien tidak cocok untuk mengoptimalkan fungsi dengan banyak minimum lokal.
Sesuai dengan judulnya:
Tidak. Hanya jenis pengoptimal tertentu yang didasarkan pada Gradient Descent. Contoh tandingan langsung adalah ketika optimasi melebihi ruang diskrit di mana gradien tidak terdefinisi.
Menurut tubuh:
Ya. Adam, Adagrad, RMSProp, dan pengoptimal serupa lainnya (Nesterov, Nadam, dll.) Semuanya mencoba untuk mengusulkan ukuran langkah adaptif (laju pembelajaran) untuk gradient descent untuk meningkatkan kecepatan konvergensi tanpa mengorbankan kinerja (yaitu mengarah ke minimum lokal yang lebih buruk / maksimum).
Perlu dicatat bahwa ada juga metode Newton, dan juga metode kuasi-Newton, yang bekerja dengan turunan orde kedua dari fungsi kehilangan (gradient descent bekerja dengan turunan orde pertama). Metode ini telah kehilangan trade-off skalabilitas kecepatan ke gradient descent karena banyaknya parameter model dalam masalah praktis.
Beberapa catatan tambahan
Bentuk fungsi kerugian tergantung pada parameter model dan data, sehingga memilih metode terbaik selalu tergantung pada tugas dan membutuhkan coba-coba.
Bagian stokastik dari penurunan gradien dicapai dengan menggunakan kumpulan data daripada data lengkap. Teknik ini paralel dengan semua metode yang disebutkan, artinya semuanya dapat bersifat stokastik (menggunakan kumpulan data) atau deterministik (menggunakan seluruh data).
, atau beberapa poin layak lainnya tergantung pada lintasan dan metode spesifik. Teknik ini juga paralel dengan metode yang disebutkan, kita bisa memproyeksikan stochastic Adam .
Jawaban atas pertanyaan itu mungkin tidak. Alasannya hanya karena banyak algoritme pengoptimalan yang tersedia, tetapi memilih satu sangat tergantung pada konteks dan waktu yang Anda miliki untuk mengoptimalkan. Misalnya, algoritma Genetika adalah pendekatan optimisasi terkenal yang tidak memiliki gradient descent di dalamnya. Ada juga pendekatan lain seperti mundur dalam beberapa konteks. Mereka semua dapat digunakan yang tidak meningkatkan gradient descent langkah demi langkah.
Di sisi lain, untuk tugas-tugas seperti regresi, Anda dapat menemukan bentuk-dekat untuk menyelesaikan masalah untuk menemukan ekstrem, tetapi intinya adalah bahwa tergantung pada ruang fitur dan jumlah input Anda dapat memilih persamaan bentuk-dekat atau gradien keturunan untuk mengurangi jumlah perhitungan.
Meskipun ada begitu banyak algoritma optimasi, dalam pendekatan neural network gradient descent digunakan lebih karena beberapa alasan. Pertama-tama, mereka sangat cepat. Dalam pembelajaran yang mendalam, Anda harus menyediakan begitu banyak data sehingga tidak dapat dimuat ke memori secara bersamaan. Akibatnya, Anda harus menerapkan metode gradien batch untuk optimisasi. Ini sedikit statistik tetapi Anda dapat mempertimbangkan bahwa setiap sampel yang Anda bawa ke jaringan Anda dapat memiliki distribusi yang hampir sama dengan data nyata dan dapat cukup representatif untuk menemukan gradien yang dapat mendekati gradien nyata dari fungsi biaya yang seharusnya dibangun menggunakan semua data di tangan.
Kedua, Kompleksitas menemukan ekstrem menggunakan matriks dan kebalikannya untuk tugas regresi sederhana yang parameternya dapat ditemukan menggunakan . Ternyata metode berbasis gradien sederhana dapat memiliki kinerja yang lebih baik. Juga harus disebutkan bahwa dalam kasus sebelumnya, Anda harus membawa data secara bersamaan ke memori yang tidak mungkin untuk kesempatan di mana Anda menangani tugas-tugas big data.
Ketiga, ada masalah optimasi yang tidak selalu memiliki solusi bentuk dekat. Regresi logistik adalah salah satunya.
Nah, Anda memilih pengoptimal yang digunakan dalam jaringan saraf, pengoptimal itu memang menggunakan algoritma berbasis gradien. Sebagian besar algoritma berbasis gradien kali digunakan dalam jaringan saraf. Mengapa demikian? Nah, apakah Anda lebih suka mencoba mencari minimum mengetahui kemiringan kurva atau tanpa menyadarinya? Ketika Anda tidak dapat menghitung gradien maka Anda akan kembali ke optimasi Derivatif-gratis . Meskipun begitu, ada beberapa kasus ketika Anda memiliki info tentang gradien, lebih baik menggunakan metode bebas-gradien. Ini biasanya terjadi dengan fungsi yang memiliki banyak minimum lokal. Algoritma berbasis populasi seperti strategi evolusi dan algoritma genetika lebih unggul di sini. Dan ada juga cabang optimasi kombinatorial di mana satu set alat yang berbeda digunakan.