Apa artinya suatu algoritma untuk konvergen?

12

Saya terus menemukan istilah ini ketika membaca tentang pembelajaran penguatan, misalnya dalam kalimat ini:

Jika masalah dimodelkan dengan hati-hati, beberapa algoritma Penguatan Pembelajaran dapat menyatu ke optimal global

http://reinforcementlearning.ai-depot.com/

atau di sini:

Untuk Pi kebijakan tetap apa pun, algoritme TD yang dijelaskan di atas telah terbukti konvergen ke VPi

http://webdocs.cs.ualberta.ca/~sutton/book/ebook/node62.html

Pemahaman saya tentang kata konvergen adalah bahwa itu berarti beberapa hal menyatu ke titik yang sama, tetapi bagaimana satu hal (algoritma) dapat melakukan itu?

bintang laut
sumber
7
Dalam kasus algoritma iteratif, mereka dikatakan konvergen ketika kandidat solusi mereka untuk setiap iterasi cenderung lebih dekat dan lebih dekat ke solusi yang diinginkan.
MetaFight
6
Mungkin membantu untuk mengingat bahwa batas dalam matematika juga dikatakan konvergen atau menyimpang, meskipun "batas" adalah "satu hal".
Ixrec
@Ixrec: "batas" diberi nama setelah nilai yang dikonversikannya ke / dari. Misalnya seperti dalam "itu konvergen ke 1" yang berarti mengatakan "itu tidak pernah berjalan di atas 1" yang berarti mengatakan "1 adalah nilai hasil maksimum" dan dengan demikian "batas" dari harapan Anda. Karena itu bentuknya tunggal.
Flater

Jawaban:

14

Sebuah algoritma iteratif dikatakan konvergen saat, sebagai iterasi melanjutkan, output semakin dekat dan lebih dekat dengan beberapa nilai tertentu. Lebih tepatnya, tidak peduli seberapa kecil rentang kesalahan yang Anda pilih, jika Anda melanjutkan cukup lama fungsi tersebut pada akhirnya akan tetap berada dalam rentang kesalahan di sekitar nilai akhir.

Dalam beberapa keadaan, suatu algoritma tidak akan bertemu, memiliki keluaran yang selalu bervariasi dengan jumlah tertentu. Bahkan bisa menyimpang, di mana outputnya akan mengalami perubahan nilai yang lebih besar dan lebih besar, tidak pernah mendekati hasil yang bermanfaat. Lebih tepatnya, tidak peduli berapa lama Anda melanjutkan, nilai fungsi tidak akan pernah menetap dalam kisaran nilai "final" apa pun.

Ungkapan "konvergen ke global optimal" dalam kalimat pertama Anda adalah referensi ke algoritma yang dapat konvergen, tetapi tidak ke nilai "optimal" (misalnya algoritma mendaki bukit yang, tergantung pada fungsi dan kondisi awal, dapat menyatu ke maksimum lokal, tidak pernah mencapai maksimum global).

Daniel Griscom
sumber
3

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 Ljika untuk setiap kesalahan positif yang Anda pikirkan, ada Xmsedemikian rupa sehingga setiap elemen Xnyang datang setelah Xmberbeda dari Ldengan 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 XNada 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 optimumbiasanya 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 :)

Albuquerque
sumber