Keturunan Gradien – Menuju AI

Keturunan Gradien – Menuju AI

Pengarang: Jacob Bumgarner

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.

Menjelajahi dan memvisualisasikan dasar-dasar matematika penurunan gradien dengan Grad-Descent-Visualizer.

https://medium.com/media/df365dbb19a98dcb4f4755c8440a130c/href

Garis besar
1. Apa itu Gradient Descent?
2. Menghancurkan Keturunan Gradien
2.1 Menghitung Gradien
2.2 Menuruni Gradien
3. Memvisualisasikan Keturunan Multivarian dengan Grad-Descent-Visualizer
3.1 Montase Keturunan
4. Kesimpulan: Mengkontekstualisasikan Keturunan Gradien
5. Sumber Daya

1. Apa itu Gradient Descent?

Penurunan gradien adalah algoritme pengoptimalan yang digunakan untuk meningkatkan kinerja model pembelajaran dalam/mesin. Selama serangkaian langkah pelatihan yang berulang, penurunan gradien mengidentifikasi nilai parameter optimal yang meminimalkan output dari fungsi biaya.

Di dua bagian berikutnya dari posting ini, kita akan turun dari deskripsi tampilan satelit ini dan memecah penurunan gradien menjadi sesuatu yang sedikit lebih mudah dipahami. Kami juga akan memvisualisasikan penurunan gradien dari berbagai fungsi pengujian dengan paket Python saya, grad-descent-visualizer.

https://medium.com/media/cebbf1786e7d51e385ec71376f752247/href

2. Menghancurkan Keturunan Gradien

Untuk mendapatkan pemahaman intuitif tentang penurunan gradien, pertama-tama abaikan pembelajaran mesin dan pembelajaran mendalam. Mari kita mulai dengan fungsi sederhana:

Fungsi univariat sederhana

Tujuan dalam penurunan gradien adalah untuk menemukan minimum suatu fungsi atau nilai keluaran serendah mungkin dari fungsi tersebut. Ini berarti bahwa mengingat fungsi f(x) di atas, tujuan penurunan gradien adalah untuk menemukan nilai x yang mengarahkan output f(x) mendekati 0. Dengan memvisualisasikan fungsi ini (di bawah), cukup jelas untuk lihat bahwa x = 0 menghasilkan minimum f(x).

https://medium.com/media/3336b0c82749895a74d920601b8179c9/href

Bagian penting dari penurunan gradien adalah: jika kita menginisialisasi x ke beberapa angka acak, katakanlah x = 1,8, apakah ada cara untuk memperbarui x secara otomatis sehingga pada akhirnya menghasilkan output minimal dari fungsi tersebut? Memang, kita dapat secara otomatis menemukan output minimal ini dengan proses dua langkah:

Temukan kemiringan fungsi pada titik di mana parameter input kita x berada. Perbarui parameter input kita x dengan menurunkannya di gradien.

Dalam algoritme penurunan gradien sederhana kami, proses dua langkah ini diulang berulang-ulang hingga output fungsi kami stabil minimal, atau mencapai tingkat toleransi gradien yang ditentukan. Sebagai catatan, algoritma keturunan lain yang lebih efisien mengambil pendekatan yang berbeda (misalnya, RMSProp, AdaGrad, Adam).

2.1. Menghitung gradien

Untuk mencari kemiringan (atau gradien, maka penurunan gradien) dari fungsi f(x) pada sembarang nilai x, kita dapat membedakan* fungsi tersebut. Membedakan fungsi contoh sederhana sederhana dengan aturan pangkat (di bawah), memberikan kita: f'(x) = 2x.

Aturan Daya

Menggunakan titik awal x = 1,8, kita menemukan gradien awal x (dx) menjadi dx = 3,6.

Mari kita tulis fungsi sederhana dalam python untuk secara otomatis menghitung turunan dari setiap variabel input untuk f(x) = x².

*Saya sangat menyarankan untuk melihat video 3Blue1Brown untuk memahami diferensiasi secara intuitif. Diferensiasi fungsi sampel ini dari prinsip pertama dapat dilihat di sini.

https://medium.com/media/36d794a90d21f550724cac98fd94bb2a/href

Gradien pada x = 1,8: dx = 3,6

2.2. Menuruni gradien

Setelah kami menemukan gradien titik awal, kami ingin memperbarui parameter input kami sehingga menurunkan gradien ini. Melakukan hal ini akan meminimalkan output dari fungsi tersebut.

Untuk memindahkan variabel ke bawah gradiennya, kita cukup mengurangi gradien dari parameter input. Namun, jika Anda telah melihat lebih dekat, Anda mungkin telah memperhatikan bahwa mengurangi seluruh gradien dari parameter input x=1.8 akan menyebabkannya memantul bolak-balik tanpa batas antara 1,8 dan -1,8, mencegahnya mendekati 0.

Sebagai gantinya, kita dapat mendefinisikan Tingkat Pembelajaran = 0,1. Kita akan menskalakan dx dengan kecepatan belajar ini sebelum mengurangkannya dari x. Dengan menyetel kecepatan belajar, kita dapat membuat turunan yang ‘lebih halus’. Tingkat pembelajaran yang besar menghasilkan lompatan besar di sepanjang fungsi, dan tingkat pembelajaran yang kecil menyebabkan langkah-langkah kecil di sepanjang fungsi.

Terakhir, kita akhirnya harus menghentikan penurunan gradien. Jika tidak, algoritme akan berlanjut tanpa henti saat gradien mendekati 0. Untuk contoh ini, kita cukup menghentikan penurunan setelah dx kurang dari 0,01. Dalam IDE Anda sendiri, Anda dapat mengubah parameter learning_rate dan toleransi untuk melihat bagaimana iterasi dan output dari x bervariasi.

https://medium.com/media/40a69e5304d24f1c052528096c16dc37/href

Fungsi minimum ditemukan dalam 27 iterasi. X = 0,00

Seperti yang terlihat dalam video di atas, nilai awal x = 1,8 dapat diperbarui secara otomatis ke x = 0,0 melalui proses iterasi penurunan gradien.

3. Memvisualisasikan Keturunan Multivarian dengan Grad-Descent-Visualizer

Mudah-mudahan, contoh univariat ini memberikan beberapa wawasan mendasar tentang apa yang sebenarnya dilakukan oleh penurunan gradien. Sekarang mari kita memperluas konteks fungsi multivarian.

Pertama-tama kita akan memvisualisasikan penurunan gradien dari fungsi Himmelblau.

Fungsi Himmelblau

Ada beberapa perbedaan utama dalam penurunan fungsi multivariat.

Pertama, kita perlu menghitung turunan parsial untuk memperbarui setiap parameter. Dalam fungsi Himmelblau, gradien x bergantung pada y (jumlahnya dikuadratkan, memerlukan aturan rantai). Ini berarti bahwa rumus yang digunakan untuk membedakan x akan berisi y dan sebaliknya.

Kedua, Anda mungkin telah memperhatikan bahwa hanya ada satu minimum dalam fungsi sederhana dari Bagian 2. Pada kenyataannya, mungkin ada banyak minimum lokal yang tidak diketahui dalam fungsi biaya kami. Ini berarti bahwa minima lokal yang ditemukan parameter kita akan bergantung pada posisi awal dan perilaku algoritma penurunan gradien.

Untuk memvisualisasikan penurunan lanskap ini, kita akan menginisialisasi parameter awal kita sebagai x = -0,4 dan y = -0,65. Kita kemudian dapat melihat penurunan setiap parameter dalam dimensinya sendiri dan penurunan 2D, diiris oleh posisi parameter yang berlawanan.

https://medium.com/media/2d6ae66878dc30c5de7d320c9865133d/href

Untuk konteks yang lebih besar, mari visualisasikan penurunan titik yang sama dalam 3D menggunakan paket grad-descent-visualizer saya yang dibuat dengan bantuan PyVista.

https://medium.com/media/658b3ed7ddf99b69e153af5c31086040/href

3.1 Montase Keturunan

Sekarang mari kita visualisasikan turunan dari beberapa fungsi pengujian lainnya! Kami akan menempatkan grid titik di setiap fungsi ini dan melihat bagaimana titik bergerak saat mereka menuruni gradien apa pun yang mereka duduki.

Fungsi Bola.

https://medium.com/media/d381fcda5f011cc77e6bebeb63141cef/href

Fungsi Griewank.

https://medium.com/media/5083e075fc8fabcc7a437891210fa661/href

Fungsi Unta Enam Punuk. Perhatikan banyak minimum lokal dari fungsi tersebut.

https://medium.com/media/1d2cb59f3526e0f0c4a2f5664a05e7fd/href

Mari kita memvisualisasikan kembali penurunan grid dari Fungsi Himmelblau. Perhatikan bagaimana inisialisasi parameter yang berbeda menghasilkan minimum yang berbeda.

https://medium.com/media/568b990a9db3661b3884ed395b17e8ef/href

Dan terakhir, Fungsi Easom. Perhatikan berapa banyak titik yang diam karena diinisialisasi pada gradien datar.

https://medium.com/media/a450bd69905793f36459d3d0c86a08d7/href

4. Kesimpulan: Mengkontekstualisasikan Keturunan Gradien

Sejauh ini, kami telah bekerja melalui penurunan gradien dengan fungsi univariat dan telah memvisualisasikan penurunan beberapa fungsi multivariat. Pada kenyataannya, model pembelajaran mendalam modern memiliki parameter yang jauh lebih banyak daripada fungsi yang telah kami periksa.

Misalnya, model pemrosesan bahasa alami terbaru dari Hugging Face, Bloom, memiliki 175 miliar parameter. Fungsi berantai yang digunakan dalam model ini juga lebih rumit daripada fungsi pengujian kami.

Namun, penting untuk menyadari bahwa dasar dari apa yang telah kita pelajari tentang penurunan gradien masih berlaku. Selama setiap iterasi pelatihan model pembelajaran mendalam apa pun, gradien setiap parameter dihitung. Gradien ini kemudian akan dirata-ratakan di seluruh contoh pelatihan dan kemudian dikurangkan dari parameter sehingga mereka ‘mengurangi’ gradiennya, mendorongnya untuk menghasilkan output minimal dari fungsi biaya model.

Terima kasih sudah membaca!

5. Sumber Daya

– Grad-Descent-Visualizer
– 3Biru1Coklat
– Keturunan Gradien
– Derivatif
– Universitas Simon Fraser: Uji Fungsi untuk Pengoptimalan
– PyVista
– Jaringan Neural dan Pembelajaran Mendalam Michael Nielsen

Breaking it Down: Gradient Descent awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI

Author: Scott Anderson