Galateo del mercato o buone maniere in un campo minato - pagina 36

 
HideYourRichess писал(а) >>

Qualsiasi linea retta può essere inscritta in tale cerchio, con qualsiasi angolo rispetto all'orizzontale.

Bene, bene!

Come potete vedere, non c'è nessun angolo! - È l'angolo giusto...

 
Neutron >> :

Ora sembra che sia così!

Dov'è la nuvola di formazione promessa?

Metti una griglia in scala sul grafico e dimmi qual è la tangente dell'angolo di inclinazione della linea retta.

Queste erano le immagini ottenute dalla prima differenza del seno a cinque membri da X e la previsione della griglia con pesi casuali (impostazione iniziale dei pesi +/-1) da Y. Il resto è ancora da fare, in arrivo

 
Neutron >> :

Bene, bene!

Come potete vedere, non proprio chiunque! - È quello giusto...

>> Sì, sì, sì.

 

Ecco, è fatta. Qui manca solo un campione di allenamento perché il campione di allenamento è il vettore X. Quindi potete, naturalmente, tracciarlo sul grafico, ma sarà una linea retta che interseca il grafico all'angolo di 45". Il neurone è stato addestrato da tre campioni:

1. Semplice prima differenza 5sin - vettore Y_simpl, colore verde (visone corrispondente)

2. Ipertangente della prima differenza 5sin - blu

3. ingressi binari (da 5sin) - viola


Le tangenti delle linee rette sono così:



Eppure c'è qualcosa che non va. Oppure non capisco il compito che mi hai dato.

Questo neurone è addestrato su ogni nuovo vettore di dati X, lo stesso vettore è usato come asse delle ascisse del grafico. Se lo visualizzi sull'ordinata...? Perché?

Inoltre ho notato che se il foglio di lavoro con gli stessi dati viene ricalcolato i risultati saranno diversi. È normale che sia così? Cioè, i risultati sono molto dipendenti dalle impostazioni iniziali dei pesi.

Bene, quando non ho addestrato il neurone ad ogni passo, ma l'ho solo eseguito su un vettore di dati con pesi iniziali scelti a caso, ho ottenuto disegni con una nuvola nel mezzo (a volte).

Ora si ottiene quello che si vede. Ecco un'altra immagine.


Per sicurezza, allego l'elenco di Matkad

File:
neyron.rar  114 kb
 
paralocus писал(а) >>

Bene, ecco qui. Non c'è nessun campione di allenamento qui, perché il campione di allenamento è il vettore X. Quindi puoi, naturalmente, tracciarlo sul grafico, ma sarà una linea retta che attraversa il grafico con un angolo di 45".

Avete un vettore di addestramento di lunghezza n sul quale l'NS si allena a riconoscere un solo campione, n+1. Abbiamo un insieme di statistiche N>100, che forma un insieme di allenamento (più esattamente, un insieme di esempi di come NS è stato addestrato) di lunghezza N campioni (questo non è un vettore di allenamento, ma un insieme di campioni, ottenuto dalla serie sinusale disponibile, spostandolo di un campione a destra ogni volta fino a N). Così, abbiamo N valori per i quali il NS è stato addestrato (questi sono n+1 elementi dei vettori di addestramento) e abbiamo anche N valori di come li ha appresi. Metteteli rispettivamente sull'ascissa e sull'ordinata e ottenete la nuvola che caratterizza il processo di apprendimento. È chiaro che questa nuvola non avrà una pendenza di 45 gradi. Segue dal fatto che il numero di pesi della maglia - w è molto più piccolo della lunghezza ottimale del vettore di addestramento P=w*w/d e di conseguenza, il sistema di equazioni che NS risolve per trovare i pesi ottimali è sovradeterminato e ha un numero infinito di soluzioni. Pertanto, si cerca un'approssimazione che sia ottimale nel senso di minimizzare l'errore quadratico di apprendimento per tutte le equazioni. Se la lunghezza del vettore di addestramento fosse uguale al numero di pesi, allora ci si aspetterebbe un apprendimento del 100% della rete, ma questo non è ottimale nel senso della capacità della rete di generalizzare la conoscenza accumulata in futuro e porta a errori grandiosi sul campione di prova. Una griglia correttamente addestrata mostrerà l'angolo di pendenza del campione di allenamento vicino all'angolo di pendenza del campione di prova sul diagramma della nuvola. Al contrario, una rete sovrallenata mostrerà un angolo di 45 gradi per la nuvola di allenamento con una varianza trascurabile e un angolo zero con varianza infinita per la nuvola di test. Questo è esattamente il risultato che si ottiene se si cerca di risolvere con precisione un sistema di equazioni algebriche lineari per un singolo perseptron. L'ho già menzionato sopra. Questo è il motivo per cui è molto comodo usare un diagramma a nuvola quando si fa il debug di una rete (cosa che non si può fare in MQL).

Il fatto che il tuo angolo di pendenza cambi di esperimento in esperimento e diventi addirittura negativo, indica chiaramente che la tua ragazza vive la sua vita segreta e non è allenabile. Hai bisogno di una lobotomia :-)

P.S. Salva i file cdjb con estensione *.mcd per 2001i MathCad, altrimenti non posso leggerli.

 
Qui, salvato come *.mcd per Matcad12 e 11. Non ho altre opzioni per i file mcd.
File:
mathcad.rar  40 kb
 

Ora darò un'occhiata.

A proposito, ecco come la mia ragazza risolve la serie dei 5 seni:

È un NS a due strati con due ingressi validi (senza contare il bias costante), k=2, che ha 2 neuroni attivati non lineari nello strato nascosto e un neurone lineare (senza funzione di attivazione) in uscita. Il campione di allenamento è mostrato in rosso e il campione di test (previsioni) è mostrato in blu. Riaddestramento su ogni campione. Le statistiche sono 200 esperimenti. Le tangenti degli angoli sono date nel campo della trama.

 

Ci sono molte cose nel vostro codice che non ho capito per bontà di cuore. Ma da quello che sono riuscito a capire, ciò che segue non corrisponde alle mie idee:

Si dovrebbe avere esattamente la somma cumulativa su tutte le epoche di allenamento P per i quadrati delle deviazioni S[k] . Quello che vedo è solo una ridefinizione delle variabili. Non c'è un'inizializzazione iniziale dei pesi con numeri casuali.

Non ho ancora capito quale subroutine hai introdotto method() e ranif() e dove cercarla?

Ho semplificato un po' il tuo codice (vedi file).

File:
modif1_4.zip  16 kb
 
Sono arrivato ora al computer. Questo è il file sbagliato per te... nella corsa mattutina per attaccarlo. Ora la commenterò e posterò ranif() - è una funzione integrata di Matcad - restituisce un vettore di lunghezza specificata nel primo parametro con numeri casuali uniformemente distribuiti nell'intervallo tra il secondo e il terzo parametro.
 

Commentato ampiamente, corretto un paio di errori lungo la strada

Questo è ciò che disegna:


Allego il file in tre formati 11, 12 e 13 (*.xcmd)

Ora sto guardando le tue correzioni... In realtà avrei dovuto guardare le correzioni prima di commentare... -:)

Sto pensando a quello che hai scritto due post sopra. La cosa principale per me è capire in modo che il "quadro" nella mia testa formato, poi farò tutto.

Quell'immagine finora si è rivelata non del tutto giusta - ho frainteso il "learning by doing", e non ce n'è ancora uno nuovo.

File:
neyron_1.rar  197 kb