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 .
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?
sumber
Jawaban:
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.
sumber