Apa itu konvergensi, secara umum
Konsep konvergensi adalah istilah matematika yang didefinisikan dengan baik. Ini pada dasarnya berarti bahwa "pada akhirnya" urutan elemen semakin dekat dan lebih dekat ke nilai tunggal. Kami menyebut nilai tunggal ini sebagai "batas".
Definisi formal berbunyi seperti ini:
Diberikan (tak terhingga) urutan bilangan real X0, X1, X2, ... Xn ...
kita katakan Xn converges to a given number L
jika untuk setiap kesalahan positif yang Anda pikirkan, ada Xm
sedemikian rupa sehingga setiap elemen Xn
yang datang setelah Xm
berbeda dari L
dengan kurang dari kesalahan itu.
Contoh:
Bayangkan urutannya seperti ini:
- X0 = 1
- X1 = 0,1
- X2 = 0,01
- X3 = 0,001
- X4 = 0,0001
- ...
- Xn = 1 / (10 ^ n)
Apakah Xn konvergen ke nol? Iya! Mengapa?
Pikirkan kesalahan E (misalnya, E = 0.0025
). Apakah ada elemen dalam urutan itu setelah itu setiap elemen di bawah 0.025
? Iya! Unsur itu adalah X3 = 0.001
. Setelah X2, semua XN
ada di bawah 0.0025
. Bisakah ini dilakukan untuk setiap E> 0? Iya. Untuk setiap kesalahan positif yang kita pilih, kita dapat melihat berapa banyak nol yang dimilikinya sebelum titik desimal pertamanya dan urutannya akan lebih rendah yang dimulai dari elemen yang memiliki jumlah nol yang sama.
Ini artinya Xn = 1/(10^5) converges to 0
. Seperti dalam "itu bisa semakin dekat dan lebih dekat ke nol" sebanyak yang kita inginkan.
Apa artinya suatu algoritma untuk konvergen?
"Secara teknis" yang konvergen bukanlah algoritme, tetapi nilai yang dimanipulasi atau diulang algoritme. Sebagai contoh, katakanlah kita sedang menulis sebuah algoritma yang mencetak semua digit PI.
Algoritme mulai mencetak angka seperti:
- X0 = 3.14
- X1 = 3.141
- X2 = 3.1415
- X3 = 3.14159
- ...
Kita bisa bertanya pada diri sendiri: apakah algoritme mencetak angka yang semakin dekat dengan PI? Dengan kata lain, apakah urutan X0, X1, ... XN ...
yang dicetak algoritma kami konvergen ke PI?
Jika demikian, kami katakan algoritma kami menyatu ke PI.
Kami biasanya tertarik untuk membuktikan kebenaran suatu algoritma.
Biasanya, ketika kita menulis suatu algoritma, kita tertarik untuk mengetahui apakah solusi yang diberikan algoritma adalah yang benar untuk masalah yang dipecahkannya. Ini kadang-kadang bisa datang dalam bentuk konvergensi.
Secara umum, algoritma memiliki apa yang kita sebut metrik . Metrik adalah angka yang kami berikan untuk hasil yang diberikan algoritma. Sebagai contoh, dalam algoritma iteratif AI / Machine Learning, sangat umum bagi kita untuk melacak "kesalahan" yang dihasilkan oleh algoritma berdasarkan input. Kesalahan ini adalah metrik.
Dalam algoritma iteratif tersebut, setiap langkah menghasilkan kesalahan yang berbeda. Dan yang coba dilakukan oleh algoritma adalah meminimalkan kesalahan itu sehingga semakin kecil dan semakin kecil. Kami mengatakan bahwa algoritma akan menyatu jika urutan kesalahan menyatu.
Dalam kasus tersebut, global optimum
biasanya didefinisikan sebagai pengaturan yang memiliki kesalahan serendah mungkin. Dalam hal itu, "algoritma konvergen ke global optimum" berarti bahwa "algoritma menghasilkan kesalahan dalam urutan yang menyatu dengan kesalahan serendah mungkin".
Jika "global optimum" adalah "solusi yang tepat" kami, menyatakan bahwa algoritma kami konvergen sama dengan menyatakan bahwa algoritma kami benar.
Juga, perlu diingat bahwa menyatakan bahwa suatu algoritma konvergen memerlukan bukti (seperti yang kami lakukan untuk 0,001, 0,0001, ..., contoh kami).
Sebagai contoh, sebuah classifier
Contoh dari ini bisa dalam kasus classifier. Misalkan kita ingin mengklasifikasikan jika angka ganjil atau bahkan menggunakan algoritma pembelajaran mesin, dan bahwa kita memiliki dataset berikut:
- (1, aneh)
- (2, bahkan)
- (3, aneh)
- (77, aneh)
- (4, bahkan)
Algoritme kami untuk setiap rangkaian angka meludah untuk masing-masing jika genap atau ganjil. Untuk itu, kita dapat mendefinisikan kesalahan metrik sebagai berapa kali kesalahannya dibagi dengan jumlah elemen yang diberikan.
Jadi, jika algoritme kami meludah:
- (1, genap) // salah
- (2, bahkan)
- (3, genap) // salah
- (77, bahkan) // salah
- (4, bahkan)
Metrik kesalahan kami adalah 3/5 = 0.6
. Sekarang katakanlah kita menjalankan algoritma lagi dan sekarang meludah:
- (1, genap) // salah
- (2, bahkan)
- (3, aneh)
- (77, aneh)
- (4, bahkan)
Metrik kesalahan kami adalah 1/5 = 0.2
.
Katakanlah itu berjalan lebih banyak dan lebih banyak, dan urutan kesalahan kami terlihat seperti ini:
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
Jadi pertanyaan besarnya adalah: apakah algoritma kami akan menjadi nol? Apakah akan pernah konvergen menjadi nol? Apakah algoritma kami akan bertemu? Bisakah kita membuktikan bahwa pada akhirnya itu akan benar (atau sedekat mungkin ke kanan)?
Semoga begitu :)