Qu'est-ce que la convergence, en général
Le concept de convergence est un terme mathématique bien défini. Cela signifie essentiellement que "éventuellement" une séquence d'éléments se rapproche de plus en plus d'une seule valeur. Nous appelons cette valeur unique la "limite".
La définition formelle ressemble à ceci:
Étant donné une séquence (infinie) de nombres réels, X0, X1, X2, ... Xn ...
nous disons Xn converges to a given number L
que pour chaque erreur positive que vous pensez, il y en a une Xm
telle que chaque élément Xn
qui suit Xm
diffère de L
moins que cette erreur.
Exemple:
Imaginez une séquence comme telle:
- X0 = 1
- X1 = 0,1
- X2 = 0,01
- X3 = 0,001
- X4 = 0,0001
- ...
- Xn = 1 / (10 ^ n)
Xn converge-t-il vers zéro? Oui! Pourquoi?
Pensez à une erreur E (par exemple, E = 0.0025
). Y a-t-il un élément dans la séquence qui après cela, chaque élément est en dessous 0.025
? Oui! Cet élément est X3 = 0.001
. Après X2, tout XN
est ci-dessous 0.0025
. Cela peut-il être fait pour chaque E> 0? Oui. Pour chaque erreur positive que nous choisissons, nous pouvons voir combien de zéros il a avant sa première virgule décimale et la séquence sera inférieure à celle à partir de l'élément qui a le même nombre de zéros.
Cela veut dire que Xn = 1/(10^5) converges to 0
. Comme dans "on peut se rapprocher de plus en plus de zéro" autant que l'on veut.
Que signifie la convergence d'un algorithme?
"Techniquement" ce qui converge n'est pas l'algorithme, mais une valeur que l'algorithme manipule ou itère. Par exemple, supposons que nous écrivons un algorithme qui imprime tous les chiffres de PI.
L'algorithme commence à imprimer des nombres comme:
- X0 = 3,14
- X1 = 3,141
- X2 = 3,1415
- X3 = 3,14159
- ...
Nous pourrions nous demander: l'algorithme imprime-t-il des nombres de plus en plus proches de PI? En d'autres termes, la séquence X0, X1, ... XN ...
que notre algorithme imprime converge-t-elle vers PI?
Si c'est le cas, nous disons que notre algorithme converge vers PI.
Nous souhaitons généralement prouver l'exactitude d'un algorithme.
Habituellement, lorsque nous écrivons un algorithme, nous souhaitons savoir si la solution fournie par l'algorithme est la bonne pour le problème qu'il résout. Cela peut parfois prendre la forme d'une convergence.
En général, les algorithmes ont ce que nous appelons des métriques . Une métrique est un nombre que nous donnons à un résultat donné que l'algorithme produit. Par exemple, dans les algorithmes itératifs AI / Machine Learning, il est très courant pour nous de garder une trace de "l'erreur" que l'algorithme génère en fonction de l'entrée. Cette erreur est une métrique.
Dans ces algorithmes itératifs, chaque étape génère une erreur différente. Et ce que l'algorithme essaie de faire est de minimiser cette erreur afin qu'elle devienne de plus en plus petite. On dit que l'algorithme converge si sa séquence d'erreurs converge.
Dans ces cas, le global optimum
est généralement défini comme la configuration qui présente la plus faible erreur possible. Dans ce cas, "l'algorithme converge vers l'optimum global" signifie que "l'algorithme génère des erreurs dans une séquence qui converge vers l'erreur la plus faible possible".
Si «l'optimum global» est notre «bonne solution», affirmer que notre algorithme converge est le même que déclarer que notre algorithme est correct.
Gardez également à l'esprit que déclarer qu'un algorithme converge nécessite une preuve (comme nous l'avons fait pour notre exemple 0,001, 0,0001, ...).
Par exemple, un classificateur
Un exemple de ceci pourrait être dans le cas d'un classificateur. Supposons que nous voulons classer si les nombres sont impairs ou même en utilisant un algorithme d'apprentissage automatique, et que nous avons le jeu de données suivant:
- (1, impair)
- (2, même)
- (3, impair)
- (77, impair)
- (4, même)
Notre algorithme pour chaque ensemble de nombres crache pour chacun d'eux s'ils sont pairs ou impairs. Pour cela, nous pouvons définir une erreur métrique comme étant le nombre de fois où elle s'est trompée divisée par le nombre total d'éléments qui ont été donnés.
Donc, si notre algorithme crache ce qui suit:
- (1, même) // faux
- (2, même)
- (3, même) // faux
- (77, même) // faux
- (4, même)
Notre métrique d'erreur serait 3/5 = 0.6
. Disons maintenant que nous exécutons à nouveau l'algorithme et qu'il crache maintenant:
- (1, même) // faux
- (2, même)
- (3, impair)
- (77, impair)
- (4, même)
Notre métrique d'erreur serait 1/5 = 0.2
.
Disons qu'il s'exécute de plus en plus de fois, et notre séquence d'erreurs ressemble à ceci:
0.6, 0.2, 0.1, 0.01, 0.000456, 0.00000543, 0.000000000444 ....
La grande question est donc: notre algorithme sera-t-il un jour nul? Va-t-il jamais converger vers zéro? Notre algorithme convergera-t-il tous? Pouvons-nous prouver que cela finira par faire les choses correctement (ou aussi près de la droite que possible)?
Si tout va bien :)