Nó có nghĩa gì cho một thuật toán hội tụ?


12

Tôi tiếp tục gặp thuật ngữ này khi đọc về học tập củng cố, ví dụ trong câu này:

Nếu sự cố được mô hình hóa cẩn thận, một số thuật toán Học tăng cường có thể hội tụ đến mức tối ưu toàn cầu

http://reinfor thilearning.ai-depot.com/

hoặc ở đây:

Đối với bất kỳ chính sách cố định Pi nào, thuật toán TD được mô tả ở trên đã được chứng minh là hội tụ vào VPi

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

Sự hiểu biết của tôi về từ hội tụ là nó có nghĩa là một số thứ kết hợp đến cùng một điểm, nhưng làm thế nào một điều duy nhất (thuật toán) có thể làm điều đó?


7
Trong trường hợp thuật toán lặp, chúng được cho là hội tụ khi các giải pháp ứng cử viên của chúng cho mỗi lần lặp có xu hướng tiến gần hơn và gần hơn với giải pháp mong muốn.
MetaFight

6
Nó có thể giúp nhớ lại rằng một giới hạn trong toán học cũng được cho là hội tụ hoặc phân kỳ, mặc dù "giới hạn" là "một điều duy nhất".
Ixrec

@Ixrec: "Giới hạn" được đặt tên theo giá trị mà nó chuyển / chuyển sang / từ. Ví dụ như trong "nó hội tụ đến 1" có nghĩa là "nó không bao giờ vượt quá 1" có nghĩa là "1 là giá trị kết quả tối đa" và do đó là "giới hạn" của sự mong đợi của bạn. Do đó số ít.
Flater

Câu trả lời:


14

Một thuật toán lặp được cho là hội tụ khi, khi các bước lặp tiến hành, đầu ra càng ngày càng gần với một số giá trị cụ thể. Chính xác hơn, cho dù bạn chọn phạm vi lỗi nhỏ đến mức nào, nếu bạn tiếp tục đủ lâu, cuối cùng chức năng sẽ nằm trong phạm vi lỗi đó xung quanh giá trị cuối cùng.

Trong một số trường hợp, một thuật toán sẽ không hội tụ, có đầu ra luôn thay đổi theo một số lượng. Nó thậm chí có thể phân kỳ, nơi đầu ra của nó sẽ trải qua sự dao động giá trị lớn hơn và lớn hơn, không bao giờ tiếp cận một kết quả hữu ích. Chính xác hơn, bất kể bạn tiếp tục bao lâu, giá trị hàm sẽ không bao giờ lắng xuống trong phạm vi của bất kỳ giá trị "cuối cùng" nào.

Cụm từ "hội tụ đến tối ưu toàn cầu" trong câu đầu tiên của bạn là một tham chiếu đến các thuật toán có thể hội tụ, nhưng không phải là giá trị "tối ưu" (ví dụ: thuật toán leo đồi, tùy thuộc vào chức năng và điều kiện ban đầu, có thể hội tụ một mức tối đa cục bộ, không bao giờ đạt đến mức tối đa toàn cầu).


3

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 Lnếu với mỗi lỗi dương mà bạn nghĩ, có một Xmphần tử Xnmà mọi phần tử xuất hiện sau Xmkhá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 optimumthườ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 :)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.