Difference between revisions of "Keras: Introduction to the Adam Optimization Algorithm"

From OnnoWiki
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 48: Line 48:
  
 
* Adaptive Gradient Algorithm (AdaGrad) yang mempertahankan  per-parameter learning rate yang meningkatkan kinerja pada problem dengan sparse gradients (mis. natural language dan computer vision problem).
 
* Adaptive Gradient Algorithm (AdaGrad) yang mempertahankan  per-parameter learning rate yang meningkatkan kinerja pada problem dengan sparse gradients (mis. natural language dan computer vision problem).
* Root Mean Square Propagation (RMSProp) that also maintains per-parameter learning rates that are adapted based on the average of recent magnitudes of the gradients for the weight (e.g. how quickly it is changing). This means the algorithm does well on online and non-stationary problems (e.g. noisy).
+
* Root Mean Square Propagation (RMSProp) yang juga mempertahankan per-parameter learning rate yang diadaptasi berdasarkan average of recent magnitudes of the gradient untuk weight (mis. seberapa cepat ia berubah). Ini berarti algoritme berfungsi dengan baik pada masalah online dan non-stasioner (mis. noisy/berisik).
  
Adam realizes the benefits of both AdaGrad and RMSProp.
+
Adam menyadari manfaat keduanya AdaGrad dan RMSProp.
  
Instead of adapting the parameter learning rates based on the average first moment (the mean) as in RMSProp, Adam also makes use of the average of the second moments of the gradients (the uncentered variance).
+
Daripada mengadaptasi parameter learning rate berdasarkan rata-rata momen pertama (rata-rata) seperti dalam RMSProp, Adam juga memanfaatkan rata-rata momen kedua gradien (uncentered variance).
  
Specifically, the algorithm calculates an exponential moving average of the gradient and the squared gradient, and the parameters beta1 and beta2 control the decay rates of these moving averages.
+
Secara khusus, algoritma menghitung rata-rata exponential moving average dari gradien dan gradien kuadrat, dan parameter beta1 dan beta2 mengontrol decay rate dari moving average tersebut.
  
The initial value of the moving averages and beta1 and beta2 values close to 1.0 (recommended) result in a bias of moment estimates towards zero. This bias is overcome by first calculating the biased estimates before then calculating bias-corrected estimates.
+
Nilai awal dari moving average dan nilai beta1 dan beta2 mendekati 1.0 (disarankan) menghasilkan estimasi bias dari moment menuju nol. Bias ini diatasi dengan terlebih dahulu menghitung estimasi yang bias sebelum kemudian menghitung bias-corrected estimate..
  
The paper is quite readable and I would encourage you to read it if you are interested in the specific implementation details.
+
==Adam Effective==
  
==Adam is Effective==
+
Adam adalah algoritma yang populer di bidang deep learning karena ia mencapai hasil yang baik dengan cepat. Hasil empiris menunjukkan bahwa Adam bekerja dengan baik dalam praktiknya dan lebih baik dibandingkan dengan stochastic optimization method lainnya.
  
Adam is a popular algorithm in the field of deep learning because it achieves good results fast.
+
Dalam makalah aslinya, Adam diperagakan secara empiris untuk menunjukkan bahwa konvergensi memenuhi harapan analisis teoritis. Adam diaplikasikan pada algoritma regresi logistik pada pengenalan digit MNIST dan dataset analisis sentimen IMDB, algoritma Multilayer Perceptron pada dataset MNIST dan Convolutional Neural Networks pada dataset pengenalan gambar CIFAR-10. Mereka menyimpulkan:
  
    Empirical results demonstrate that Adam works well in practice and compares favorably to other stochastic optimization methods.
+
* Using large models and datasets, we demonstrate Adam can efficiently solve practical deep learning problems.
  
In the original paper, Adam was demonstrated empirically to show that convergence meets the expectations of the theoretical analysis. Adam was applied to the logistic regression algorithm on the MNIST digit recognition and IMDB sentiment analysis datasets, a Multilayer Perceptron algorithm on the MNIST dataset and Convolutional Neural Networks on the CIFAR-10 image recognition dataset. They conclude:
+
==Perbandingan Adam terhadap Optimization Algorithms Training lainnya di Multilayer Perceptron==
 
 
    Using large models and datasets, we demonstrate Adam can efficiently solve practical deep learning problems.
 
  
 
Comparison of Adam to Other Optimization Algorithms Training a Multilayer Perceptron
 
Comparison of Adam to Other Optimization Algorithms Training a Multilayer Perceptron
 +
di ambil dari Adam: A Method for Stochastic Optimization, 2015.
  
Comparison of Adam to Other Optimization Algorithms Training a Multilayer Perceptron
+
Sebastian Ruder mengembangkan tinjauan komprehensif modern gradient descent optimization algorithm dengan judul “An overview of gradient descent optimization algorithms” yang dipublikasi pertama kali sebagai blog post, kemudian technical report tahun 2016.
Taken from Adam: A Method for Stochastic Optimization, 2015.
 
  
Sebastian Ruder developed a comprehensive review of modern gradient descent optimization algorithms titled “An overview of gradient descent optimization algorithms” published first as a blog post, then a technical report in 2016.
+
Makalah ini pada dasarnya adalah sebuah tour dari metode modern. Di bagian yang berjudul “Which optimizer to use?“, Ia merekomendasikan menggunakan Adam.
  
The paper is basically a tour of modern methods. In his section titled “Which optimizer to use?“, he recommends using Adam.
 
  
    Insofar, RMSprop, Adadelta, and Adam are very similar algorithms that do well in similar circumstances. […] its bias-correction helps Adam slightly outperform RMSprop towards the end of optimization as gradients become sparser. Insofar, Adam might be the best overall choice.
+
''"Insofar, RMSprop, Adadelta, and Adam are very similar algorithms that do well in similar circumstances. […] its bias-correction helps Adam slightly outperform RMSprop towards the end of optimization as gradients become sparser. Insofar, Adam might be the best overall choice."''
  
In the Stanford course on deep learning for computer vision titled “CS231n: Convolutional Neural Networks for Visual Recognition” developed by Andrej Karpathy, et al., the Adam algorithm is again suggested as the default optimization method for deep learning applications.
 
  
    In practice Adam is currently recommended as the default algorithm to use, and often works slightly better than RMSProp. However, it is often also worth trying SGD+Nesterov Momentum as an alternative.
+
Di Stanford course tentang deep learning untuk computer vision berjudul “CS231n: Convolutional Neural Networks for Visual Recognition” dikembangkan oleh Andrej Karpathy, et al., Algoritma Adam sekali lagi disarankan sebagai metode optimalisasi standar untuk aplikasi deep learning.
  
And later stated more plainly:
+
Dalam praktiknya, Adam saat ini direkomendasikan sebagai algoritma default untuk digunakan, dan hasilnya sering sedikit lebih baik daripada RMSProp. Namun, patut juga dicoba SGD + Nesterov Momentum sebagai alternatif.
  
    The two recommended updates to use are either SGD+Nesterov Momentum or Adam.
+
Dan kemudian dinyatakan lebih jelas "Dua update yang disarankan untuk digunakan adalah SGD + Nesterov Momentum atau Adam."
  
Adam is being adapted for benchmarks in deep learning papers.
+
Adam diadaptasi untuk tolok ukur dalam makalah deep learning.
  
For example, it was used in the paper “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention” on attention in image captioning and “DRAW: A Recurrent Neural Network For Image Generation” on image generation.
+
Contoh, dia digunakan dalam paper “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention” saat image captioning dan “DRAW: A Recurrent Neural Network For Image Generation” pada image generation.
  
Do you know of any other examples of Adam? Let me know in the comments.
+
==Parameter Konfigurasi Adam==
  
==Adam Configuration Parameters==
+
* alpha. Juga disebut sebagai learning rate atau step size. Proporsi yang digunakan weight saat pembaruan (mis. 0,001). Nilai yang lebih besar (mis. 0.3) menghasilkan pembelajaran awal yang lebih cepat sebelum rate diperbarui. Nilai yang lebih kecil (mis. 1.0E-5) memperlambat pembelajaran saat training.
 +
* beta1. Exponential decay rate untuk estimasi momen pertama (mis. 0.9).
 +
* beta2. The exponential decay rate untuk estimasi second-moment (mis. 0,999). Nilai ini harus diset mendekati 1.0 pada masalah dengan sparse gradien (mis. masalah NLP dan computer vision).
 +
* epsilon. Merupakan angka yang sangat kecil untuk mencegah pembagian dengan nol saat implementasi (misalnya 10E-8).
  
* alpha. Also referred to as the learning rate or step size. The proportion that weights are updated (e.g. 0.001). Larger values (e.g. 0.3) results in faster initial learning before the rate is updated. Smaller values (e.g. 1.0E-5) slow learning right down during training
+
Selanjutnya, tingkat peluruhan pembelajaran juga dapat digunakan dengan Adam. Makalah ini menggunakan tingkat peluruhan alpha=alpha/sqrt(t) diperbarui setiap epoch(t) untuk demonstrasi  logistic regression.
* beta1. The exponential decay rate for the first moment estimates (e.g. 0.9).
 
* beta2. The exponential decay rate for the second-moment estimates (e.g. 0.999). This value should be set close to 1.0 on problems with a sparse gradient (e.g. NLP and computer vision problems).
 
* epsilon. Is a very small number to prevent any division by zero in the implementation (e.g. 10E-8).
 
  
Further, learning rate decay can also be used with Adam. The paper uses a decay rate alpha = alpha/sqrt(t) updted each epoch (t) for the logistic regression demonstration.
+
Adam paper menyarankan:
  
The Adam paper suggests:
+
* Pengaturan default yang baik untuk masalah machine learning yang diuji adalah alpha=0.001, beta1=0.9, beta2=0.999 and epsilon=1,0E−8
  
    Good default settings for the tested machine learning problems are alpha=0.001, beta1=0.9, beta2=0.999 and epsilon=10−8
+
Dokumentasi TensorFlow menyarankan tuning epsilon sebagai berikut:
  
The TensorFlow documentation suggests some tuning of epsilon:
+
* Nilai default epsilon 1e-8 mungkin bukan nilai default yang bagus secara umum. Contoh, saat melatih jaringan Inception di ImageNet, pilihan bagus saat ini adalah 1,0 atau 0,1.
  
    The default value of 1e-8 for epsilon might not be a good default in general. For example, when training an Inception network on ImageNet a current good choice is 1.0 or 0.1.
+
Kita dapat melihat bahwa library deep learning yang populer umumnya menggunakan parameter default yang direkomendasikan oleh makalah.
 
 
We can see that the popular deep learning libraries generally use the default parameters recommended by the paper.
 
  
 
  TensorFlow: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.
 
  TensorFlow: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.
Line 121: Line 115:
 
  MxNet: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
 
  MxNet: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
 
  Torch: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
 
  Torch: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
 
Do you know of any other standard configurations for Adam? Let me know in the comments.
 
 
==Further Reading==
 
 
This section lists resources to learn more about the Adam optimization algorithm.
 
 
    Adam: A Method for Stochastic Optimization, 2015
 
    Stochastic gradient descent on Wikipedia
 
    An overview of gradient descent optimization algorithms, 2016
 
    ADAM: A Method for Stochastic Optimization (a review)
 
    Optimization for Deep Networks (slides)
 
    Adam: A Method for Stochastic Optimization (slides)
 
 
Do you know of any other good resources on Adam? Let me know in the comments.
 
  
 
==Summary==
 
==Summary==
  
In this post, you discovered the Adam optimization algorithm for deep learning.
+
Dalam tulisan ini, kita berkenalan dengan algoritma optimisasi Adam untuk deep learning.
 
 
Specifically, you learned:
 
 
 
* Adam is a replacement optimization algorithm for stochastic gradient descent for training deep learning models.
 
* Adam combines the best properties of the AdaGrad and RMSProp algorithms to provide an optimization algorithm that can handle sparse gradients on noisy problems.
 
* Adam is relatively easy to configure where the default configuration parameters do well on most problems.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  
 +
Khususnya, kita belajar:
  
 +
* Adam adalah algoritma optimasi pengganti untuk stochastic gradient descent untuk training model deep learning.
 +
* Adam menggabungkan sifat-sifat terbaik dari algoritma AdaGrad dan RMSProp untuk memberikan optimization algorithm yang dapat menangani sparse gradients pada noisy problem.
 +
* Adam relatif mudah dikonfigurasikan di mana parameter konfigurasi default bekerja dengan baik pada sebagian besar masalah.
  
 
==Referensi==
 
==Referensi==

Latest revision as of 10:48, 8 September 2019

Sumber: https://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/


Pilihan algoritma optimalisasi untuk model deep learning dapat berarti perbedaan antara hasil yang baik dalam hitungan menit, jam, dan hari.

Adam optimization algorithm adalah extension dari stochastic gradient descent yang baru-baru ini memperoleh adopsi yang lebih luas untuk aplikasi deep learning dalam computer vision dan natural language processing.

Dalam tulisan ini, anda akan mendapatkan pengantar tentang Adam optimization algorithm untuk digunakan dalam deep learning.

Setelah membaca posting ini, anda akan tahu:

  • Apa algoritma Adam dan beberapa manfaat menggunakan metode untuk mengoptimalkan model anda.
  • Bagaimana algoritma Adam bekerja dan bagaimana perbedaannya dari metode terkait AdaGrad dan RMSProp.
  • Bagaimana algoritma Adam dapat dikonfigurasi dan parameter konfigurasi yang umum digunakan.

Apakah Adam optimization algorithm?

Adam adalah algoritme pengoptimalan yang dapat digunakan sebagai ganti dari prosedur stochastic gradient descent klasik untuk memperbarui weight network secara iteratif berdasarkan data training.

Adam pertama kali di presentasikan oleh Diederik Kingma dari OpenAI dan Jimmy Ba dari University of Toronto dalam paper mereka di 2015 ICLR yang berjudul “Adam: A Method for Stochastic Optimization“.

Algoritma ini di sebut Adam. Itu bukan singkatan dan tidak ditulis sebagai “ADAM”.

   … the name Adam is derived from adaptive moment estimation.

Ketika memperkenalkan algoritma, penulis memberikan daftar manfaat yang menarik dengan penggunaan Adam pada masalah non-convex optimization, sebagai berikut:

  • Straightforward to implement.
  • Computationally efficient.
  • Little memory requirements.
  • Invariant to diagonal rescale of the gradients.
  • Well suited for problems that are large in terms of data and/or parameters.
  • Appropriate for non-stationary objectives.
  • Appropriate for problems with very noisy/or sparse gradients.
  • Hyper-parameters have intuitive interpretation and typically require little tuning.

Bagaimana Cara Kerja Adam?

Adam berbeda dengan classical stochastic gradient descent.

Stochastic gradient descent menjaga satu learning rate (alpha) untuk semua weight update dan learning rate tidak berubah saat training.

Learning rate dipertahankan untuk setiap weight network (parameter) dan diadaptasi secara terpisah saat learning dibuka.

  • Metoda Adam menghitung individual adaptive learning rates untuk parameter yang berbeda dari perkiraan momen pertama dan kedua dari gradien.

Para penulis menggambarkan Adam sebagai menggabungkan keuntungan dari dua ekstensi lain dari stochastic gradient descent. Secara khusus:

  • Adaptive Gradient Algorithm (AdaGrad) yang mempertahankan per-parameter learning rate yang meningkatkan kinerja pada problem dengan sparse gradients (mis. natural language dan computer vision problem).
  • Root Mean Square Propagation (RMSProp) yang juga mempertahankan per-parameter learning rate yang diadaptasi berdasarkan average of recent magnitudes of the gradient untuk weight (mis. seberapa cepat ia berubah). Ini berarti algoritme berfungsi dengan baik pada masalah online dan non-stasioner (mis. noisy/berisik).

Adam menyadari manfaat keduanya AdaGrad dan RMSProp.

Daripada mengadaptasi parameter learning rate berdasarkan rata-rata momen pertama (rata-rata) seperti dalam RMSProp, Adam juga memanfaatkan rata-rata momen kedua gradien (uncentered variance).

Secara khusus, algoritma menghitung rata-rata exponential moving average dari gradien dan gradien kuadrat, dan parameter beta1 dan beta2 mengontrol decay rate dari moving average tersebut.

Nilai awal dari moving average dan nilai beta1 dan beta2 mendekati 1.0 (disarankan) menghasilkan estimasi bias dari moment menuju nol. Bias ini diatasi dengan terlebih dahulu menghitung estimasi yang bias sebelum kemudian menghitung bias-corrected estimate..

Adam Effective

Adam adalah algoritma yang populer di bidang deep learning karena ia mencapai hasil yang baik dengan cepat. Hasil empiris menunjukkan bahwa Adam bekerja dengan baik dalam praktiknya dan lebih baik dibandingkan dengan stochastic optimization method lainnya.

Dalam makalah aslinya, Adam diperagakan secara empiris untuk menunjukkan bahwa konvergensi memenuhi harapan analisis teoritis. Adam diaplikasikan pada algoritma regresi logistik pada pengenalan digit MNIST dan dataset analisis sentimen IMDB, algoritma Multilayer Perceptron pada dataset MNIST dan Convolutional Neural Networks pada dataset pengenalan gambar CIFAR-10. Mereka menyimpulkan:

  • Using large models and datasets, we demonstrate Adam can efficiently solve practical deep learning problems.

Perbandingan Adam terhadap Optimization Algorithms Training lainnya di Multilayer Perceptron

Comparison of Adam to Other Optimization Algorithms Training a Multilayer Perceptron di ambil dari Adam: A Method for Stochastic Optimization, 2015.

Sebastian Ruder mengembangkan tinjauan komprehensif modern gradient descent optimization algorithm dengan judul “An overview of gradient descent optimization algorithms” yang dipublikasi pertama kali sebagai blog post, kemudian technical report tahun 2016.

Makalah ini pada dasarnya adalah sebuah tour dari metode modern. Di bagian yang berjudul “Which optimizer to use?“, Ia merekomendasikan menggunakan Adam.


"Insofar, RMSprop, Adadelta, and Adam are very similar algorithms that do well in similar circumstances. […] its bias-correction helps Adam slightly outperform RMSprop towards the end of optimization as gradients become sparser. Insofar, Adam might be the best overall choice."


Di Stanford course tentang deep learning untuk computer vision berjudul “CS231n: Convolutional Neural Networks for Visual Recognition” dikembangkan oleh Andrej Karpathy, et al., Algoritma Adam sekali lagi disarankan sebagai metode optimalisasi standar untuk aplikasi deep learning.

Dalam praktiknya, Adam saat ini direkomendasikan sebagai algoritma default untuk digunakan, dan hasilnya sering sedikit lebih baik daripada RMSProp. Namun, patut juga dicoba SGD + Nesterov Momentum sebagai alternatif.

Dan kemudian dinyatakan lebih jelas "Dua update yang disarankan untuk digunakan adalah SGD + Nesterov Momentum atau Adam."

Adam diadaptasi untuk tolok ukur dalam makalah deep learning.

Contoh, dia digunakan dalam paper “Show, Attend and Tell: Neural Image Caption Generation with Visual Attention” saat image captioning dan “DRAW: A Recurrent Neural Network For Image Generation” pada image generation.

Parameter Konfigurasi Adam

  • alpha. Juga disebut sebagai learning rate atau step size. Proporsi yang digunakan weight saat pembaruan (mis. 0,001). Nilai yang lebih besar (mis. 0.3) menghasilkan pembelajaran awal yang lebih cepat sebelum rate diperbarui. Nilai yang lebih kecil (mis. 1.0E-5) memperlambat pembelajaran saat training.
  • beta1. Exponential decay rate untuk estimasi momen pertama (mis. 0.9).
  • beta2. The exponential decay rate untuk estimasi second-moment (mis. 0,999). Nilai ini harus diset mendekati 1.0 pada masalah dengan sparse gradien (mis. masalah NLP dan computer vision).
  • epsilon. Merupakan angka yang sangat kecil untuk mencegah pembagian dengan nol saat implementasi (misalnya 10E-8).

Selanjutnya, tingkat peluruhan pembelajaran juga dapat digunakan dengan Adam. Makalah ini menggunakan tingkat peluruhan alpha=alpha/sqrt(t) diperbarui setiap epoch(t) untuk demonstrasi logistic regression.

Adam paper menyarankan:

  • Pengaturan default yang baik untuk masalah machine learning yang diuji adalah alpha=0.001, beta1=0.9, beta2=0.999 and epsilon=1,0E−8

Dokumentasi TensorFlow menyarankan tuning epsilon sebagai berikut:

  • Nilai default epsilon 1e-8 mungkin bukan nilai default yang bagus secara umum. Contoh, saat melatih jaringan Inception di ImageNet, pilihan bagus saat ini adalah 1,0 atau 0,1.

Kita dapat melihat bahwa library deep learning yang populer umumnya menggunakan parameter default yang direkomendasikan oleh makalah.

TensorFlow: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08.
Keras: lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0.
Blocks: learning_rate=0.002, beta1=0.9, beta2=0.999, epsilon=1e-08, decay_factor=1.
Lasagne: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
Caffe: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08
MxNet: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8
Torch: learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-8

Summary

Dalam tulisan ini, kita berkenalan dengan algoritma optimisasi Adam untuk deep learning.

Khususnya, kita belajar:

  • Adam adalah algoritma optimasi pengganti untuk stochastic gradient descent untuk training model deep learning.
  • Adam menggabungkan sifat-sifat terbaik dari algoritma AdaGrad dan RMSProp untuk memberikan optimization algorithm yang dapat menangani sparse gradients pada noisy problem.
  • Adam relatif mudah dikonfigurasikan di mana parameter konfigurasi default bekerja dengan baik pada sebagian besar masalah.

Referensi


Pranala Menarik