Hội tụ là gì, nói chung
Khái niệm hội tụ là một thuật ngữ toán học được xác định rõ. Về cơ bản, điều đó có nghĩa là "cuối cùng" một chuỗi các yếu tố ngày càng gần hơn với một giá trị duy nhất. Chúng tôi gọi giá trị duy nhất này là "giới hạn".
Định nghĩa chính thức đi một cái gì đó như thế này:
X0, X1, X2, ... Xn ...
Chúng tôi nói rằng (vô hạn) các số thực mà chúng tôi nói Xn converges to a given number L
nếu với mỗi lỗi dương mà bạn nghĩ, có một Xm
phần tử Xn
mà mọi phần tử xuất hiện sau Xm
khác nhau L
ít hơn lỗi đó.
Thí dụ:
Hãy tưởng tượng một chuỗi như vậy:
- X0 = 1
- X1 = 0,1
- X2 = 0,01
- X3 = 0,001
- X4 = 0,0001
- ...
- Xn = 1 / (10 ^ n)
Xn có hội tụ về không? Đúng! Tại sao?
Hãy nghĩ về một lỗi E (ví dụ, E = 0.0025
). Có một yếu tố trong chuỗi mà sau đó mọi yếu tố dưới đây 0.025
? Đúng! Yếu tố đó là X3 = 0.001
. Sau X2, mọi thứ đều XN
ở dưới 0.0025
. Điều này có thể được thực hiện cho mọi E> 0 không? Đúng. Đối với mỗi lỗi dương mà chúng ta chọn, chúng ta có thể thấy nó có bao nhiêu số 0 trước dấu thập phân đầu tiên của nó và chuỗi sẽ thấp hơn khi nó bắt đầu từ phần tử có cùng số 0.
Điều này có nghĩa là Xn = 1/(10^5) converges to 0
. Như trong "nó có thể tiến gần hơn và gần bằng 0" nhiều như chúng ta muốn.
Nó có nghĩa gì cho một thuật toán hội tụ?
"Về mặt kỹ thuật" những gì hội tụ không phải là thuật toán, mà là một giá trị mà thuật toán đang thao tác hoặc lặp lại. Ví dụ: giả sử chúng ta đang viết một thuật toán in tất cả các chữ số của PI.
Thuật toán bắt đầu in các số như:
- X0 = 3,14
- X1 = 3.141
- X2 = 3,1415
- X3 = 3,14159
- ...
Chúng ta có thể tự hỏi: thuật toán có in số ngày càng gần với PI không? Nói cách khác, trình tự X0, X1, ... XN ...
in thuật toán của chúng tôi có hội tụ đến PI không?
Nếu vậy, chúng tôi nói thuật toán của chúng tôi hội tụ đến PI.
Chúng tôi thường quan tâm đến việc chứng minh tính đúng đắn của một thuật toán.
Thông thường, khi chúng ta viết một thuật toán, chúng ta quan tâm đến việc liệu giải pháp mà thuật toán cung cấp có phải là giải pháp chính xác cho vấn đề mà nó giải quyết hay không. Điều này đôi khi có thể đến ở dạng hội tụ.
Nói chung, các thuật toán có những gì chúng ta gọi là số liệu . Một số liệu là một số mà chúng tôi đưa ra cho một kết quả nhất định mà thuật toán tạo ra. Chẳng hạn, trong các thuật toán lặp AI / Machine Learning, việc chúng ta theo dõi "lỗi" mà thuật toán tạo ra dựa trên đầu vào là điều rất phổ biến. Lỗi này là một số liệu.
Trong các thuật toán lặp đó, mỗi bước tạo ra một lỗi khác nhau. Và những gì thuật toán cố gắng làm là giảm thiểu lỗi đó để nó ngày càng nhỏ hơn. Chúng tôi nói rằng thuật toán hội tụ nếu chuỗi lỗi hội tụ.
Trong những trường hợp đó, global optimum
thường được định nghĩa là thiết lập có lỗi thấp nhất có thể. Trong trường hợp đó, "thuật toán hội tụ đến mức tối ưu toàn cầu" có nghĩa là "thuật toán tạo ra các lỗi trong chuỗi hội tụ đến sai số thấp nhất có thể".
Nếu "tối ưu toàn cầu" là "giải pháp chính xác" của chúng tôi, nói rằng thuật toán của chúng tôi hội tụ giống như nói rằng thuật toán của chúng tôi là chính xác.
Ngoài ra, hãy nhớ rằng việc thuật toán hội tụ đòi hỏi phải có bằng chứng (như chúng tôi đã làm cho 0,001, 0,0001, ..., ví dụ).
Ví dụ, một bộ phân loại
Một ví dụ về điều này có thể là trong trường hợp phân loại. Giả sử chúng ta muốn phân loại nếu các số là số lẻ hoặc thậm chí sử dụng thuật toán học máy và chúng ta có bộ dữ liệu sau:
- (1, lẻ)
- (2, thậm chí)
- (3, lẻ)
- (77, lẻ)
- (4, thậm chí)
Thuật toán của chúng tôi cho mỗi bộ số nhổ cho mỗi số nếu chúng là số chẵn hoặc lẻ. Do đó, chúng ta có thể định nghĩa một lỗi số liệu là số lần nó bị sai chia cho tổng số phần tử được đưa ra.
Vì vậy, nếu thuật toán của chúng tôi phun ra như sau:
- (1, chẵn) // sai
- (2, thậm chí)
- (3, chẵn) // sai
- (77, chẵn) // sai
- (4, thậm chí)
Số liệu lỗi của chúng tôi sẽ là 3/5 = 0.6
. Bây giờ hãy nói rằng chúng tôi chạy lại thuật toán và bây giờ nó sẽ xuất hiện:
- (1, chẵn) // sai
- (2, thậm chí)
- (3, lẻ)
- (77, lẻ)
- (4, thậm chí)
Số liệu lỗi của chúng tôi sẽ là 1/5 = 0.2
.
Hãy nói rằng nó chạy nhiều lần hơn và chuỗi lỗi của chúng ta trông giống như thế này:
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
Vì vậy, câu hỏi lớn là: thuật toán của chúng ta sẽ bằng không? Nó sẽ bao giờ hội tụ về không? Thuật toán của chúng tôi sẽ hội tụ? Chúng ta có thể chứng minh rằng cuối cùng nó sẽ làm cho đúng (hoặc càng gần đúng càng tốt)?
Hy vọng là vậy :)