Bagaimana cara kerja metode Adam penurunan gradien stokastik?

45

Saya kenal dengan algoritma gradient descent dasar untuk pelatihan jaringan saraf. Saya telah membaca makalah yang mengusulkan Adam: ADAM: METODE UNTUK OPTIMISASI STOKASTIK .

Meskipun saya pasti memiliki beberapa wawasan (setidaknya), makalah ini tampaknya terlalu tinggi bagi saya secara keseluruhan. Sebagai contoh, fungsi biaya sering merupakan jumlah dari banyak fungsi yang berbeda, oleh karena itu sejumlah besar perhitungan harus dibuat untuk mengoptimalkan nilainya; turun gradien stokastik - sejauh saya memahami topik - menghitung optimasi hanya untuk subset dari fungsi-fungsi ini. Bagi saya tidak jelas, bagaimana Adam melakukan ini dan mengapa ini menghasilkan kesalahan pelatihan yang menurun untuk seluruh .J(θ)J(θ)

Saya pikir Adam memperbarui gradiennya dengan memperhitungkan gradien sebelumnya. Mereka menyebutnya sesuatu seperti memanfaatkan momentum? Apa sebenarnya momentum ini? Menurut algoritma pada halaman dua dalam makalah, ini adalah semacam moving average, seperti beberapa perkiraan momen pertama dan kedua dari gradien "reguler"?

Secara praktis, saya akan curiga bahwa Adam memungkinkan seseorang untuk menggunakan ukuran langkah efektif yang lebih besar untuk mengurangi gradien dan karena itu kesalahan pelatihan dalam kombinasi dengan perkiraan stokastik. Dengan demikian, vektor pembaruan yang dihasilkan harus "melompat" lebih banyak dalam dimensi spasial, alih-alih mendeskripsikan beberapa kurva seperti yang biasa dilakukan oleh algoritma gradient descent

Adakah yang bisa membingungkan cara kerja Adam? Terutama bagaimana konvergen, khususnya mengapa metode Adam bekerja dan apa sebenarnya manfaatnya?

daniel451
sumber
1
Anda harus memberikan judul yang lebih baik untuk pertanyaan Anda. Apa sebenarnya tentang Adam yang ingin Anda tanyakan? Bahkan jika secara umum, cobalah membuatnya sedikit lebih mudah dicari.
Charlie Parker

Jawaban:

40

Makalah Adam mengatakan, "... banyak fungsi obyektif terdiri dari sejumlah subfungsi yang dievaluasi pada berbagai subsampel data; dalam hal ini optimisasi dapat dibuat lebih efisien dengan mengambil langkah-langkah gradien pada subfungsi individual ..." Di sini, mereka hanya berarti bahwa fungsi obyektif adalah jumlah kesalahan atas contoh pelatihan, dan pelatihan dapat dilakukan pada contoh individu atau minibatch. Ini sama seperti pada stochastic gradient descent (SGD), yang lebih efisien untuk masalah skala besar daripada pelatihan batch karena pembaruan parameter lebih sering.

Adapun mengapa Adam bekerja, itu menggunakan beberapa trik.

Salah satu trik ini adalah momentum, yang dapat memberikan konvergensi yang lebih cepat. Bayangkan fungsi objektif yang berbentuk seperti ngarai panjang dan sempit yang secara bertahap miring ke minimum. Katakanlah kita ingin meminimalkan fungsi ini menggunakan gradient descent. Jika kita mulai dari suatu titik di dinding ngarai, gradien negatif akan menunjuk ke arah penurunan paling curam, yaitu sebagian besar menuju lantai ngarai. Ini karena dinding ngarai jauh lebih curam daripada kemiringan bertahap ngarai menuju minimum. Jika tingkat belajar (yaitu ukuran langkah) kecil, kita bisa turun ke lantai ngarai, lalu ikuti ke minimum. Tetapi, kemajuan akan lambat. Kami dapat meningkatkan tingkat pembelajaran, tetapi ini tidak akan mengubah arah langkah-langkahnya. Dalam hal ini, kami akan melampaui lantai ngarai dan berakhir di dinding seberangnya. Kami kemudian akan mengulangi pola ini, berosilasi dari dinding ke dinding sambil membuat kemajuan lambat menuju minimum. Momentum dapat membantu dalam situasi ini.

Momentum berarti bahwa sebagian kecil dari pembaruan sebelumnya ditambahkan ke pembaruan saat ini, sehingga pembaruan berulang dalam senyawa arah tertentu; kami membangun momentum, bergerak lebih cepat dan lebih cepat ke arah itu. Dalam hal ngarai, kami akan membangun momentum ke arah minimum, karena semua pembaruan memiliki komponen ke arah itu. Sebaliknya, bergerak bolak-balik melintasi dinding ngarai melibatkan pembalikan arah secara konstan, sehingga momentum akan membantu meredam osilasi ke arah itu.

Trik lain yang digunakan Adam adalah secara adaptif memilih tingkat pembelajaran terpisah untuk setiap parameter. Parameter yang biasanya menerima pembaruan yang lebih kecil atau kurang sering menerima pembaruan yang lebih besar dengan Adam (kebalikannya juga benar). Ini mempercepat pembelajaran dalam kasus di mana tingkat pembelajaran yang sesuai bervariasi di seluruh parameter. Sebagai contoh, dalam jaringan yang dalam, gradien dapat menjadi kecil pada lapisan awal, dan masuk akal untuk meningkatkan tingkat pembelajaran untuk parameter yang sesuai. Manfaat lain dari pendekatan ini adalah bahwa, karena tingkat pembelajaran disesuaikan secara otomatis, penyetelan manual menjadi kurang penting. SGD standar membutuhkan penyetelan yang hati-hati (dan mungkin penyesuaian online) dari tingkat pembelajaran, tetapi ini kurang benar dengan Adam dan metode terkait. Masih perlu untuk memilih hyperparameters,

Metode terkait :

Momentum sering digunakan dengan SGD standar. Versi yang ditingkatkan disebut momentum Nesterov atau gradien yang dipercepat Nesterov. Metode lain yang menggunakan tingkat pembelajaran yang disetel secara otomatis untuk setiap parameter meliputi: Adagrad, RMSprop, dan Adadelta. RMSprop dan Adadelta menyelesaikan masalah dengan Adagrad yang dapat menyebabkan pembelajaran berhenti. Adam mirip dengan RMSprop dengan momentum. Nadam memodifikasi Adam untuk menggunakan momentum Nesterov alih-alih momentum klasik.

Referensi :

Kingma dan Ba ​​(2014) . Adam: Metode untuk Optimasi Stochastic.

Goodfellow et al. (2016) . Pembelajaran mendalam, bab 8.

Slide dari kursus Geoff Hinton

Dozat (2016) . Memasukkan Momentum Nesterov ke dalam Adam.

pengguna20160
sumber
2
(+1) Komunitas akan sangat diuntungkan jika Anda dapat memperbarui jawaban Anda untuk memasukkan lebih banyak informasi tentang bukti konvergensi Adam dan koreksi mereka, seperti "Pada Konvergensi Adam dan Beyond" openreview.net/forum?id=ryQu7f- RZ
Reinstate Monica
2
Terima kasih @ Scorax, saya akan mencoba memperbarui ketika saya punya waktu
user20160
1
IIUC, Adam menggunakan sesuatu yang mirip dengan momentum, tetapi berbeda. Saat Anda menulis, metode momentum menambahkan pembaruan saat ini ke sebagian (besar) dari pembaruan sebelumnya. Sebaliknya, Adam menggunakan rata-rata eksponensial membusuk yang terakhir gradien mana yang paling metode SGD menggunakan gradien saat ini. Yaitu setiap langkah Adam hanya mengambil sebagian kecil dari gradien saat ini. Jadi tidak seperti bola sederhana yang mengakumulasi momentum, Adam berperilaku seperti bola yang berat dengan gesekan, seperti yang dijelaskan dalam GAN yang Dilatih oleh Aturan Pembaruan Skala Dua Kali Konvergen ke Ekuilibrium Nash Lokal . w
Oren Milman
Melanjutkan komentar terakhir saya, jawaban ini menjelaskan tentang perbedaan antara Adam dan rmsprop dengan momentum, sambil berfokus pada bagaimana perilaku seperti momentum Adam berbeda dari perilaku seperti momentum biasa. (Jawaban itu juga termasuk kode Python untuk disimulasikan dan secara grafik menunjukkan bagaimana metode yang berbeda berperilaku.)
Oren Milman