Що таке конвергенція, взагалі
Поняття конвергенції - це добре визначений математичний термін. Це по суті означає, що "зрештою" послідовність елементів наближається і наближається до одного значення. Це одне значення ми називаємо "межею".
Формальне визначення має приблизно таке:
Враховуючи (нескінченну) послідовність дійсних чисел, 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 ....
Отже, велике питання: чи буде наш алгоритм коли-небудь нульовим? Чи коли-небудь він сходиться до нуля? Чи сходиться кожен наш алгоритм? Чи можемо ми довести, що зрештою це вийде правильно (або як можна ближче до правого)?
Сподіваємось так :)