J'ai expérimenté un peu avec différentes implémentations de Perceptron et je veux m'assurer si je comprends bien les "itérations".
La règle originale de Perceptron de Rosenblatt
D'après ce que je comprends, dans l'algorithme de perceptron classique de Rosenblatt, les poids sont mis à jour simultanément après chaque exemple de formation via
où est la règle d'apprentissage ici. Et cible et réel sont tous deux seuillés (-1 ou 1). Je l'ai implémenté comme 1 itération = 1 passage sur l'échantillon d'entraînement, mais le vecteur de poids est mis à jour après chaque échantillon d'entraînement.
Et je calcule la valeur "réelle" comme
Descente de gradient stochastique
Identique à la règle du perceptron, cependant, target
et actual
ne sont pas des seuils mais des valeurs réelles. De plus, je compte "l'itération" comme chemin sur l'échantillon d'apprentissage.
SGD et la règle classique du perceptron convergent dans ce cas linéairement séparable, cependant, j'ai des problèmes avec la mise en œuvre de la descente de gradient.
Descente graduelle
Ici, je passe en revue l'échantillon d'entraînement et résume les changements de poids pour 1 passage sur l'échantillon d'entraînement et met à jour les poids par la suite, par exemple,
pour chaque échantillon de formation:
...
après 1 passage sur l'ensemble d'entraînement:
Je me demande si cette hypothèse est correcte ou s'il me manque quelque chose. J'ai essayé différents taux d'apprentissage (jusqu'à infiniment petits), mais je n'ai jamais réussi à montrer un signe de convergence. Je me demande donc si j'ai mal compris qc. ici.
Merci, Sebastian