โดยทั่วไปแล้วการบรรจบกันคืออะไร
แนวคิดของการลู่เข้าเป็นศัพท์ทางคณิตศาสตร์ที่กำหนดไว้อย่างดี มันหมายถึงว่า "ในที่สุด" ลำดับขององค์ประกอบจะเข้าใกล้และใกล้เคียงกับค่าเดียวมากขึ้น เราเรียกค่านี้ว่า "จำกัด "
คำจำกัดความที่เป็นทางการมีลักษณะดังนี้:
กำหนดลำดับ (อนันต์) ของจำนวนจริงที่X0, X1, X2, ... Xn ...
เราบอกว่าXn converges to a given number L
สำหรับทุกข้อผิดพลาดเชิงบวกที่คุณคิดว่ามีXm
องค์ประกอบที่ทุกองค์ประกอบXn
ที่มาหลังจากXm
แตกต่างจากL
โดยน้อยกว่าข้อผิดพลาดนั้น
ตัวอย่าง:
ลองนึกภาพลำดับเช่น:
- X0 = 1
- X1 = 0.1
- X2 = 0.01
- X3 = 0.001
- X4 = 0.0001
- ...
- Xn = 1 / (10 ^ n)
Xn มารวมกันที่ศูนย์หรือไม่ ใช่ ทำไม?
คิดถึงข้อผิดพลาด E (ตัวอย่างเช่นE = 0.0025
) มีองค์ประกอบในลำดับที่หลังจากนั้นทุกองค์ประกอบอยู่ด้านล่าง0.025
? ใช่ X3 = 0.001
องค์ประกอบที่เป็น หลังจาก X2 ทุกด้านล่างXN
0.0025
สามารถทำได้กับทุก E> 0 หรือไม่ ใช่. สำหรับข้อผิดพลาดในเชิงบวกทุกข้อที่เราเลือกเราสามารถเห็นจำนวนศูนย์ที่มีก่อนหน้าจุดทศนิยมแรกและลำดับจะลดลงว่าเริ่มต้นจากองค์ประกอบที่มีเลขศูนย์เท่ากัน
Xn = 1/(10^5) converges to 0
ซึ่งหมายความว่า เช่นเดียวกับใน "มันสามารถเข้าใกล้ศูนย์มากกว่า" ได้มากเท่าที่เราต้องการ
อัลกอริธึมมาบรรจบกันหมายความว่าอะไร?
"ทางเทคนิค" สิ่งที่ลู่เข้ามาไม่ใช่อัลกอริธึม แต่คุณค่าของอัลกอริธึมกำลังจัดการหรือวนซ้ำ ตัวอย่างเช่นสมมติว่าเรากำลังเขียนอัลกอริทึมที่พิมพ์ตัวเลขทั้งหมดของ PI
อัลกอริทึมเริ่มพิมพ์ตัวเลขเช่น:
- X0 = 3.14
- X1 = 3.141
- X2 = 3.1415
- X3 = 3.14159
- ...
เราสามารถถามตัวเองได้: อัลกอริทึมพิมพ์หมายเลขทุกอันใกล้กับ PI มากขึ้นหรือไม่? กล่าวอีกนัยหนึ่งลำดับX0, X1, ... XN ...
ที่อัลกอริทึมของเราพิมพ์เข้าหา PI หรือไม่
ถ้าเป็นเช่นนั้นเราพูดว่าอัลกอริทึมของเราแปรสภาพเป็น PI
เรามักจะสนใจในการพิสูจน์ความถูกต้องของอัลกอริทึม
โดยปกติเมื่อเราเขียนอัลกอริทึมเราสนใจที่จะรู้ว่าวิธีแก้ปัญหาที่อัลกอริทึมนั้นให้นั้นเป็นสิ่งที่ถูกต้องสำหรับปัญหาที่แก้หรือไม่ บางครั้งสิ่งนี้สามารถมาในรูปแบบของคอนเวอร์เจนซ์
โดยทั่วไปขั้นตอนวิธีการมีสิ่งที่เราเรียกว่าตัวชี้วัด ตัวชี้วัดคือจำนวนที่เราให้กับผลลัพธ์ที่กำหนดที่อัลกอริทึมสร้าง ตัวอย่างเช่นใน AI / Machine Learning อัลกอริทึมการวนซ้ำมันเป็นเรื่องธรรมดามากที่เราจะติดตาม "ข้อผิดพลาด" ที่อัลกอริทึมนั้นสร้างขึ้นตามอินพุต ข้อผิดพลาดนี้เป็นตัวชี้วัด
ในอัลกอริทึมซ้ำเหล่านั้นทุกขั้นตอนสร้างข้อผิดพลาดที่แตกต่างกัน และสิ่งที่อัลกอริทึมพยายามทำคือลดข้อผิดพลาดนั้นให้เล็กลงเรื่อย ๆ เราบอกว่าอัลกอริทึมมาบรรจบกันถ้ามันลำดับข้อผิดพลาดมาบรรจบ
ในกรณีเหล่านั้นglobal optimum
มักจะถูกกำหนดให้เป็นการตั้งค่าที่มีข้อผิดพลาดต่ำที่สุด ในกรณีนั้น "อัลกอริธึมมาบรรจบกันเป็นที่สุดของโลก" หมายความว่า "อัลกอริธึมสร้างข้อผิดพลาดในลำดับที่แปรเปลี่ยนเป็นข้อผิดพลาดต่ำที่สุดเท่าที่จะทำได้"
หาก "เหมาะสมที่สุดในโลก" คือ "วิธีแก้ปัญหาที่ถูกต้อง" ของเราระบุว่าอัลกอริทึมของเรามาบรรจบกันเช่นเดียวกับที่ระบุว่าอัลกอริทึมของเราถูกต้อง
นอกจากนี้โปรดทราบว่าการระบุว่าอัลกอริธึมมาบรรจบต้องมีการพิสูจน์ (อย่างที่เราทำสำหรับ 0.001, 0.0001, ... , ตัวอย่าง)
ตัวอย่างเช่นลักษณนาม
ตัวอย่างนี้อาจเป็นกรณีของลักษณนาม สมมติว่าเราต้องการจัดหมวดหมู่หากตัวเลขเป็นเลขคี่หรือแม้กระทั่งใช้อัลกอริทึมการเรียนรู้ของเครื่องและเรามีชุดข้อมูลต่อไปนี้:
- (1, คี่)
- (2 แม้)
- (3 คี่)
- (77, คี่)
- (4 แม้)
อัลกอริทึมของเราสำหรับทุกชุดตัวเลขถ่มน้ำลายสำหรับแต่ละชุดหากพวกเขาเป็นคู่หรือคี่ สำหรับสิ่งนั้นเราสามารถกำหนดข้อผิดพลาดของตัวชี้วัดว่าจำนวนครั้งที่มันผิดโดยหารด้วยจำนวนองค์ประกอบทั้งหมดที่ได้รับ
ดังนั้นหากอัลกอริทึมของเราคายต่อไปนี้:
- (1, คู่) // ผิด
- (2 แม้)
- (3, คู่) // ผิด
- (77, คู่) // ผิด
- (4 แม้)
3/5 = 0.6
ตัวชี้วัดข้อผิดพลาดของเราจะเป็น ตอนนี้สมมติว่าเรารันอัลกอริทึมอีกครั้งและตอนนี้ก็ถุย:
- (1, คู่) // ผิด
- (2 แม้)
- (3 คี่)
- (77, คี่)
- (4 แม้)
1/5 = 0.2
ตัวชี้วัดข้อผิดพลาดของเราจะเป็น
ให้บอกว่ามันทำงานได้มากขึ้นเรื่อย ๆ และลำดับข้อผิดพลาดของเรามีลักษณะดังนี้:
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
ดังนั้นคำถามใหญ่คือ: อัลกอริทึมของเราจะเป็นศูนย์หรือไม่ มันจะรวมกันเป็นศูนย์หรือไม่? อัลกอริทึมของเราจะมาบรรจบกันหรือไม่? เราสามารถพิสูจน์ได้ว่าในที่สุดมันจะทำให้ถูกต้อง (หรือใกล้เคียงที่สุดเท่าที่จะทำได้)?
หวังว่าอย่างนั้น :)