Difference between revisions of "Keras: Embrace Randomness"

From OnnoWiki
Jump to navigation Jump to search
 
(17 intermediate revisions by the same user not shown)
Line 17: Line 17:
  
  
==Mengapa hasil yang diperoleh berbada pada menggunakan data yang sama?==
+
==Mengapa hasil berbeda padahal data sama?==
  
 
Banyak orang menanyakan pertanyaan ini atau varian dari pertanyaan ini.
 
Banyak orang menanyakan pertanyaan ini atau varian dari pertanyaan ini.
Line 23: Line 23:
 
Anda tidak sendiri!
 
Anda tidak sendiri!
  
Here are some similar questions posted to Q&A sites:
+
Berikut adalah beberapa pertanyaan serupa yang diposting di situs Q&A:
  
    Why do I get different results each time I run my algorithm?
+
* Why do I get different results each time I run my algorithm?
    Cross-Validation gives different result on the same data
+
* Cross-Validation gives different result on the same data
    Randomness in Artificial Intelligence & Machine Learning
+
* Why are the weights different in each running after convergence?
    Why are the weights different in each running after convergence?
+
* Does the same neural network with the same learning data and same test data in two computers give different results?
    Does the same neural network with the same learning data and same test data in two computers give different results?
 
  
Machine Learning Algorithms Use Random Numbers
+
==Algoritma Machine Learning Menggunakan Angka Random==
  
Machine learning algorithms make use of randomness.
+
Algoritma machine learning menggunakan keacakan (randomness).
  
1. Randomness in Data Collection
+
# '''Randomness saat Data Collection''' - Di training dengan data yang berbeda, algoritma machine learning akan membangun model yang berbeda. Itu tergantung pada algoritma. Betapa berbedanya suatu model dengan data yang berbeda disebut varian model (seperti dalam bias-variance trade off). Jadi, data itu sendiri adalah sumber keacakan. Keacakan dalam pengumpulan data.
 +
# '''Randomness saat Observation Order''' - Urutan pengamatan yang diberikan pada model mempengaruhi keputusan internal. Beberapa algoritma sangat rentan terhadap hal ini, seperti neural network. Merupakan praktik yang baik untuk mengacak data training secara acak sebelum setiap iterasi training. Bahkan jika algoritme anda tidak rentan. Ini praktik terbaik.
 +
# '''Randomness dalam Algoritma''' - Algoritma memanfaatkan randomness (keacakan). Algoritma dapat diinisialisasi ke keadaan random (acak). Seperti inisialisasi weight dalam artificial neural network. Voting yang berakhir dengan hasil imbang (dan keputusan internal lainnya) selama training dalam metode deterministik mungkin bergantung pada randomness (keacakan) untuk bisa menyelesaikan-nya.
 +
# '''Randomness dalam Sampling''' - Kita mungkin memiliki terlalu banyak data untuk dikerjakan secara wajar. Dalam hal ini, kita dapat bekerja dengan subsampel acak untuk men-train model.
 +
# '''Randomness dalam Resampling''' - Kita akan mengambil sampel ketika kita mengevaluasi suatu algoritma. Kita akan menggunakan teknik seperti split data menjadi training data secara acak dan set test atau menggunakan validasi k-fold yang membuat k split acak data. Hasilnya adalah perkiraan kinerja model (dan proses yang digunakan untuk membuatnya) pada data yang tak terlihat.
  
Trained with different data, machine learning algorithms will construct different models. It depends on the algorithm. How different a model is with different data is called the model variance (as in the bias-variance trade off).
+
Tanpa keraguan. Tidak ada keraguan, keacakan (randomness) memainkan peran besar dalam penerapan machine learning.
  
So, the data itself is a source of randomness. Randomness in the collection of the data.
+
==Random Seed dan Hasil yang Reproducible==
  
2. Randomness in Observation Order
+
Jalankan algoritma pada dataset dan dapatkan model.
  
The order that the observations are exposed to the model affects internal decisions.
+
Bisakah kita mendapatkan model yang sama dengan data yang sama?
  
Some algorithms are especially susceptible to this, like neural networks.
+
Kita harusnya bisa. Ini harus menjadi persyaratan yang di lekatakn cukup tinggi dalam daftar di proyek pemodelan kita.
  
It is good practice to randomly shuffle the training data before each training iteration. Even if your algorithm is not susceptible. It’s a best practice.
+
Kita bisa mencapai reproduktifitas dalam penerapan machine learning dengan menggunakan kode, data, dan urutan angka random yang sama persis.
  
3. Randomness in the Algorithm
+
Nomor random dihasilkan dalam perangkat lunak menggunakan pretend random (pseudorandom) number generator. Ini adalah fungsi matematika sederhana yang menghasilkan urutan angka yang cukup acak untuk sebagian besar aplikasi.
  
Algorithms harness randomness.
+
Fungsi matematika ini bersifat deterministik. Jika menggunakan titik awal yang sama yang disebut seed number, maka fungsi ini akan memberikan urutan angka random yang sama.
 
 
An algorithm may be initialized to a random state. Such as the initial weights in an artificial neural network.
 
 
 
Votes that end in a draw (and other internal decisions) during training in a deterministic method may rely on randomness to resolve.
 
 
 
4. Randomness in Sampling
 
 
 
We may have too much data to reasonably work with.
 
 
 
In which case, we may work with a random subsample to train the model.
 
 
 
5. Randomness in Resampling
 
 
 
We sample when we evaluate an algorithm.
 
 
 
We use techniques like splitting the data into a random training and test set or use k-fold cross validation that makes k random splits of the data.
 
 
 
The result is an estimate of the performance of the model (and process used to create it) on unseen data.
 
No Doubt
 
 
 
There’s no doubt, randomness plays a big part in applied machine learning.
 
 
 
 
 
 
 
 
 
==Random Seeds and Reproducible Results==
 
 
 
Run an algorithm on a dataset and get a model.
 
 
 
Can you get the same model again given the same data?
 
 
 
You should be able to. It should be a requirement that is high on the list for your modeling project.
 
 
 
We achieve reproducibility in applied machine learning by using the exact same code, data and sequence of random numbers.
 
 
 
Random numbers are generated in software using a pretend random number generator. It’s a simple math function that generates a sequence of numbers that are random enough for most applications.
 
 
 
This math function is deterministic. If it uses the same starting point called a seed number, it will give the same sequence of random numbers.
 
  
 
Problem solved.
 
Problem solved.
Mostly.
 
  
We can get reproducible results by fixing the random number generator’s seed before each model we construct.
+
Kita bisa mendapatkan hasil yang dapat direproduksi dengan mem-fix-kan seed random number generator sebelum setiap model yang kita buat.
  
In fact, this is a best practice.
+
Sebenarnya, ini adalah best practice.
  
We should be doing this if not already.
+
Kita harus melakukan ini jika belum.
  
In fact, we should be giving the same sequence of random numbers to each algorithm we compare and each technique we try.
+
Faktanya, kita harus memberikan urutan random number yang sama untuk setiap algoritma yang kita bandingkan dan setiap teknik yang kita coba.
  
It should be a default part of each experiment we run.
+
Itu harus menjadi bagian default dari setiap percobaan yang kita jalankan.
  
==Machine Learning Algorithms are Stochastic==
+
==Algoritma Machine Learning adalah Stochastic==
  
If a machine learning algorithm gives a different model with a different sequence of random numbers, then which model do we pick?
+
Jika algoritma pembelajaran mesin memberikan model yang berbeda dengan urutan random number  yang berbeda, maka model mana yang kita pilih?
  
Ouch. There’s the rub.
+
Ups ...
  
I get asked this question from time to time and I love it.
+
Ini pertanyaan dasar machine learning, seperti ..
  
It’s a sign that someone really gets to the meat of all this applied machine learning stuff – or is about to.
+
* Different runs of an algorithm with…
 +
* Different random numbers give…
 +
* Different models with…
 +
* Different performance characteristics…
  
    Different runs of an algorithm with…
+
Akan tetapi perbedaan yang ada masih dalam sebuah cakupan / range.
    Different random numbers give…
 
    Different models with…
 
    Different performance characteristics…
 
  
But the differences are within a range.
+
Nama fancy untuk perbedaan ini atau perilaku random dalam suatu rentang adalah stochastic.
  
A fancy name for this difference or random behavior within a range is stochastic.
+
Algoritma Machine learning dalam prakteknya adalah stochastic.
  
Machine learning algorithms are stochastic in practice.
+
* Expect them to be stochastic.
 +
* Expect there to be a range of models to choose from and not a single model.
 +
* Expect the performance to be a range and not a single value.
  
    Expect them to be stochastic.
+
Ini adalah expektasi yang sangat nyata yang harus kita tangani dalam praktik.
    Expect there to be a range of models to choose from and not a single model.
 
    Expect the performance to be a range and not a single value.
 
  
These are very real expectations that you MUST address in practice.
+
==Taktik Untuk Mengatasi Ketidakpastian Algoritma Stochastic==
  
==Tactics To Address The Uncertainty of Stochastic Algorithms==
+
Untungnya, para akademisi telah berjuang dengan tantangan ini sejak lama.
  
Thankfully, academics have been struggling with this challenge for a long time.
+
Ada 2 strategi sederhana yang dapat kita gunakan:
  
There are 2 simple strategies that you can use:
+
* Kurangi Ketidakpastian (Reduce the Uncertainty).
 +
* Laporkan Ketidakpastian (Report the Uncertainty).
  
    Reduce the Uncertainty.
+
===Taktik untuk Mengurangi Ketidakpastian===
    Report the Uncertainty.
 
  
==Tactics to Reduce the Uncertainty==
+
Jika kita mendapatkan model yang berbeda pada setiap kali kita menjalankan algoritma, apa yang bisa kita lakukan?
  
If we get different models essentially every time we run an algorithm, what can we do?
+
Bagaimana kalau kita mencoba menjalankan algoritma berkali-kali dan mengumpulkan populasi ukuran kinerja.
  
How about we try running the algorithm many times and gather a population of performance measures.
+
Kita sudah melakukan ini jika kita menggunakan k-fold cross validation. Kita membuat k model yang berbeda.
  
We already do this if we use k-fold cross validation. We build k different models.
+
Kita dapat meningkatkan k dan membangun lebih banyak model, selama data dalam setiap lipatan tetap mewakili masalah.
  
We can increase k and build even more models, as long as the data within each fold remains representative of the problem.
+
Kita juga dapat mengulangi proses evaluasi kita berkali-kali untuk mendapatkan jumlah pengukuran kinerja yang lebih banyak lagi.
  
We can also repeat our evaluation process n times to get even more numbers in our population of performance measures.
+
Taktik ini di kenal sebagai random repeat atau random restart.
  
This tactic is called random repeats or random restarts.
+
Ini lebih lazim dengan stochastic optimization dan neural networks, tetapi sama relevan secara umum. Cobalah.
  
It is more prevalent with stochastic optimization and neural networks, but is just as relevant generally. Try it.
+
===Taktik untuk Melaporkan Ketidakpastian===
  
==Tactics to Report the Uncertainty==
+
Jangan pernah melaporkan kinerja algoritma pembelajaran mesin anda dengan sebuah angka.
  
Never report the performance of your machine learning algorithm with a single number.
+
Jika ya, kemungkinan besar anda membuat kesalahan.
  
If you do, you’ve most likely made an error.
+
Anda dapat mengumpulkan populasi ukuran kinerja. Gunakan statistik pada populasi ini.
  
You have gathered a population of performance measures. Use statistics on this population.
+
Taktik ini dikenal sebagai Report Summary Statistics.
 
 
This tactic is called report summary statistics.
 
  
 
The distribution of results is most likely a Gaussian, so a great start would be to report the mean and standard deviation of performance. Include the highest and lowest performance observed.
 
The distribution of results is most likely a Gaussian, so a great start would be to report the mean and standard deviation of performance. Include the highest and lowest performance observed.
Line 180: Line 141:
 
Lean on statistical significance tests. Statistical tests can determine if the difference between one population of result measures is significantly different from a second population of results.
 
Lean on statistical significance tests. Statistical tests can determine if the difference between one population of result measures is significantly different from a second population of results.
  
Report the significance as well.
+
Laporkan significance-nya juga.
  
This too is a best practice, that sadly does not have enough adoption.
+
Ini juga merupakan best practice, yang sayangnya tidak banyak yang mengadopsi.
Wait, What About Final Model Selection
+
 
 +
==Wait, What About Final Model Selection==
  
 
The final model is the one prepared on the entire training dataset, once we have chosen an algorithm and configuration.
 
The final model is the one prepared on the entire training dataset, once we have chosen an algorithm and configuration.
Line 227: Line 189:
  
 
Ask your question in the comments and I will do my best to answer.
 
Ask your question in the comments and I will do my best to answer.
 
  
 
==Referensi==
 
==Referensi==

Latest revision as of 13:46, 12 September 2019

Sumber: https://machinelearningmastery.com/randomness-in-machine-learning/



Applied Machine Learning adalah pintu gerbang untuk terobosan dan perubahan pola pikir.

Memahami peran keacakan dalam algoritma machine learning adalah salah satu terobosan tersebut.

Setelah anda mendapatkannya, anda akan melihat berbagai hal secara berbeda. Dalam cahaya sinar yang sama sekali baru. Hal-hal seperti memilih antara satu algoritma dan lainnya, penyetelan hyperparameter dan hasil pelaporan.

Anda juga akan mulai melihat abuse di mana-mana. Klaim kinerja tanpa didukung yang memadai.

Dalam tulisan ini, mata anda akan dibuka secara perlahan tentang peran angka random dalam machine learning. Jika akan diberikan tool untuk merangkul randomness (ketidakpastian) tersebut. Agar anda dapat lebih mudah melakukan terobosan.



Mengapa hasil berbeda padahal data sama?

Banyak orang menanyakan pertanyaan ini atau varian dari pertanyaan ini.

Anda tidak sendiri!

Berikut adalah beberapa pertanyaan serupa yang diposting di situs Q&A:

  • Why do I get different results each time I run my algorithm?
  • Cross-Validation gives different result on the same data
  • Why are the weights different in each running after convergence?
  • Does the same neural network with the same learning data and same test data in two computers give different results?

Algoritma Machine Learning Menggunakan Angka Random

Algoritma machine learning menggunakan keacakan (randomness).

  1. Randomness saat Data Collection - Di training dengan data yang berbeda, algoritma machine learning akan membangun model yang berbeda. Itu tergantung pada algoritma. Betapa berbedanya suatu model dengan data yang berbeda disebut varian model (seperti dalam bias-variance trade off). Jadi, data itu sendiri adalah sumber keacakan. Keacakan dalam pengumpulan data.
  2. Randomness saat Observation Order - Urutan pengamatan yang diberikan pada model mempengaruhi keputusan internal. Beberapa algoritma sangat rentan terhadap hal ini, seperti neural network. Merupakan praktik yang baik untuk mengacak data training secara acak sebelum setiap iterasi training. Bahkan jika algoritme anda tidak rentan. Ini praktik terbaik.
  3. Randomness dalam Algoritma - Algoritma memanfaatkan randomness (keacakan). Algoritma dapat diinisialisasi ke keadaan random (acak). Seperti inisialisasi weight dalam artificial neural network. Voting yang berakhir dengan hasil imbang (dan keputusan internal lainnya) selama training dalam metode deterministik mungkin bergantung pada randomness (keacakan) untuk bisa menyelesaikan-nya.
  4. Randomness dalam Sampling - Kita mungkin memiliki terlalu banyak data untuk dikerjakan secara wajar. Dalam hal ini, kita dapat bekerja dengan subsampel acak untuk men-train model.
  5. Randomness dalam Resampling - Kita akan mengambil sampel ketika kita mengevaluasi suatu algoritma. Kita akan menggunakan teknik seperti split data menjadi training data secara acak dan set test atau menggunakan validasi k-fold yang membuat k split acak data. Hasilnya adalah perkiraan kinerja model (dan proses yang digunakan untuk membuatnya) pada data yang tak terlihat.

Tanpa keraguan. Tidak ada keraguan, keacakan (randomness) memainkan peran besar dalam penerapan machine learning.

Random Seed dan Hasil yang Reproducible

Jalankan algoritma pada dataset dan dapatkan model.

Bisakah kita mendapatkan model yang sama dengan data yang sama?

Kita harusnya bisa. Ini harus menjadi persyaratan yang di lekatakn cukup tinggi dalam daftar di proyek pemodelan kita.

Kita bisa mencapai reproduktifitas dalam penerapan machine learning dengan menggunakan kode, data, dan urutan angka random yang sama persis.

Nomor random dihasilkan dalam perangkat lunak menggunakan pretend random (pseudorandom) number generator. Ini adalah fungsi matematika sederhana yang menghasilkan urutan angka yang cukup acak untuk sebagian besar aplikasi.

Fungsi matematika ini bersifat deterministik. Jika menggunakan titik awal yang sama yang disebut seed number, maka fungsi ini akan memberikan urutan angka random yang sama.

Problem solved.

Kita bisa mendapatkan hasil yang dapat direproduksi dengan mem-fix-kan seed random number generator sebelum setiap model yang kita buat.

Sebenarnya, ini adalah best practice.

Kita harus melakukan ini jika belum.

Faktanya, kita harus memberikan urutan random number yang sama untuk setiap algoritma yang kita bandingkan dan setiap teknik yang kita coba.

Itu harus menjadi bagian default dari setiap percobaan yang kita jalankan.

Algoritma Machine Learning adalah Stochastic

Jika algoritma pembelajaran mesin memberikan model yang berbeda dengan urutan random number yang berbeda, maka model mana yang kita pilih?

Ups ...

Ini pertanyaan dasar machine learning, seperti ..

  • Different runs of an algorithm with…
  • Different random numbers give…
  • Different models with…
  • Different performance characteristics…

Akan tetapi perbedaan yang ada masih dalam sebuah cakupan / range.

Nama fancy untuk perbedaan ini atau perilaku random dalam suatu rentang adalah stochastic.

Algoritma Machine learning dalam prakteknya adalah stochastic.

  • Expect them to be stochastic.
  • Expect there to be a range of models to choose from and not a single model.
  • Expect the performance to be a range and not a single value.

Ini adalah expektasi yang sangat nyata yang harus kita tangani dalam praktik.

Taktik Untuk Mengatasi Ketidakpastian Algoritma Stochastic

Untungnya, para akademisi telah berjuang dengan tantangan ini sejak lama.

Ada 2 strategi sederhana yang dapat kita gunakan:

  • Kurangi Ketidakpastian (Reduce the Uncertainty).
  • Laporkan Ketidakpastian (Report the Uncertainty).

Taktik untuk Mengurangi Ketidakpastian

Jika kita mendapatkan model yang berbeda pada setiap kali kita menjalankan algoritma, apa yang bisa kita lakukan?

Bagaimana kalau kita mencoba menjalankan algoritma berkali-kali dan mengumpulkan populasi ukuran kinerja.

Kita sudah melakukan ini jika kita menggunakan k-fold cross validation. Kita membuat k model yang berbeda.

Kita dapat meningkatkan k dan membangun lebih banyak model, selama data dalam setiap lipatan tetap mewakili masalah.

Kita juga dapat mengulangi proses evaluasi kita berkali-kali untuk mendapatkan jumlah pengukuran kinerja yang lebih banyak lagi.

Taktik ini di kenal sebagai random repeat atau random restart.

Ini lebih lazim dengan stochastic optimization dan neural networks, tetapi sama relevan secara umum. Cobalah.

Taktik untuk Melaporkan Ketidakpastian

Jangan pernah melaporkan kinerja algoritma pembelajaran mesin anda dengan sebuah angka.

Jika ya, kemungkinan besar anda membuat kesalahan.

Anda dapat mengumpulkan populasi ukuran kinerja. Gunakan statistik pada populasi ini.

Taktik ini dikenal sebagai Report Summary Statistics.

The distribution of results is most likely a Gaussian, so a great start would be to report the mean and standard deviation of performance. Include the highest and lowest performance observed.

In fact, this is a best practice.

You can then compare populations of result measures when you’re performing model selection. Such as:

   Choosing between algorithms.
   Choosing between configurations for one algorithm.

You can see that this has important implications on the processes you follow. Such as: to select which algorithm to use on your problem and for tuning and choosing algorithm hyperparameters.

Lean on statistical significance tests. Statistical tests can determine if the difference between one population of result measures is significantly different from a second population of results.

Laporkan significance-nya juga.

Ini juga merupakan best practice, yang sayangnya tidak banyak yang mengadopsi.

Wait, What About Final Model Selection

The final model is the one prepared on the entire training dataset, once we have chosen an algorithm and configuration.

It’s the model we intend to use to make predictions or deploy into operations.

We also get a different final model with different sequences of random numbers.

I’ve had some students ask:

   Should I create many final models and select the one with the best accuracy on a hold out validation dataset.

“No” I replied.

This would be a fragile process, highly dependent on the quality of the held out validation dataset. You are selecting random numbers that optimize for a small sample of data.

Sounds like a recipe for overfitting.

In general, I would rely on the confidence gained from the above tactics on reducing and reporting uncertainty. Often I just take the first model, it’s just as good as any other.

Sometimes your application domain makes you care more.

In this situation, I would tell you to build an ensemble of models, each trained with a different random number seed.

Use a simple voting ensemble. Each model makes a prediction and the mean of all predictions is reported as the final prediction.

Make the ensemble as big as you need to. I think 10, 30 or 100 are nice round numbers.

Maybe keep adding new models until the predictions become stable. For example, continue until the variance of the predictions tightens up on some holdout set. Summary

In this post, you discovered why random numbers are integral to applied machine learning. You can’t really escape them.

You learned about tactics that you can use to ensure that your results are reproducible.

You learned about techniques that you can use to embrace the stochastic nature of machine learning algorithms when selecting models and reporting results.

For more information on the importance of reproducible results in machine learning and techniques that you can use, see the post:

   Reproducible Machine Learning Results By Default

Do you have any questions about random numbers in machine learning or about this post?

Ask your question in the comments and I will do my best to answer.

Referensi

Pranala Menarik