Ho sperimentato un po 'con diverse implementazioni di Perceptron e voglio assicurarmi di capire correttamente le "iterazioni".
La regola originale del percettrone di Rosenblatt
A quanto ho capito, nel classico algoritmo perceptron di Rosenblatt, i pesi vengono aggiornati simultaneamente dopo ogni esempio di allenamento tramite
dove è la regola di apprendimento qui. E il target e l'effettivo sono entrambi con soglia (-1 o 1). L'ho implementato come 1 iterazione = 1 passaggio sul campione di allenamento, ma il vettore del peso viene aggiornato dopo ogni campione di allenamento.
E calcolo il valore "effettivo" come
Discesa gradiente stocastica
Uguale alla regola del percettrone, tuttavia, target
e actual
non sono soglie ma valori reali. Inoltre, conto "iterazione" come percorso sul campione di addestramento.
Sia SGD che la classica regola perceptron convergono in questo caso linearmente separabile, tuttavia, ho problemi con l'implementazione della discesa del gradiente.
Discesa a gradiente
Qui, controllo il campione di allenamento e riassumo le variazioni di peso per 1 passaggio sul campione di allenamento e successivamente ho aggiornato i pesi, ad es.
per ogni campione di addestramento:
...
dopo 1 passaggio sul set di allenamento:
Mi chiedo se questa ipotesi sia corretta o se mi manchi qualcosa. Ho provato vari tassi di apprendimento (fino a infinitamente piccoli), ma non sono mai riuscito a far sì che mostrasse alcun segno di convergenza. Quindi, mi chiedo se ho frainteso sth. Qui.
Grazie Sebastian