L'apprendimento automatico nel trading: teoria, modelli, pratica e algo-trading - pagina 3322

 
Nessuno stava discutendo di nulla, sei intervenuto in una conversazione sulla complessità del modello o hai reagito a un post, quindi sei conosciuto come un ottimizzatore.
 
Maxim Dmitrievsky #:
Nessuno ha discusso nulla, hai interferito in una conversazione sulla complessità del modello o hai reagito a un post, quindi sei conosciuto come un ottimizzatore.

Questo è tutto, Maxim. Non ha senso discutere ulteriormente, tutti hanno già scoperto tutto. Qui sta guardando Sanych, che da secoli sostiene con me che è dannoso cercare un globale, al quale ho risposto "dipende da che tipo di globale", e Sanych non ha ancora capito che alla fine sta cercando un globale.

Spero di riportare la discussione in una direzione calma, amichevole e costruttiva.

E tutti coloro che leggono regolarmente questo thread ricordano chi e cosa e quando ha detto, non includere l'incoscienza - è inutile. Oggi ho commesso un errore - ho sbagliato a disegnare il grafico, ho ammesso con calma l'errore e l'ho detto. È normale ammettere i propri errori, Maxim.

 
Andrey Dik #:

Perché no? Sì. Non ho un'idea diversa, è solo che a molte persone non piace chiamare le cose con il loro nome proprio per qualche motivo.

Quando esattamente smettere di imparare è una questione di scelta metodologica, io stavo solo sottolineando che è impossibile smettere di imparare senza rilevare un estremo globale (beh, o forzatamente, il che non avrebbe alcuna utilità pratica).

Vedo solo un fraintendimento degli avversari - prima si parlava di ottimizzazione, e che l'overfitting in un tester e l'addestramento di un modello sono cose diverse. È solo che nell'apprendimento automatico il processo di selezione dei predittori è di solito un'attività separata, mentre nel tester terminale è spesso possibile modificare i valori di questi predittori - un semplice esempio è la ricerca delle impostazioni degli indicatori, ma allo stesso tempo nel tester è possibile utilizzare variabili per elaborare i valori di questi indicatori - soglie mobili, regole di confronto, coefficienti con un significato logico diverso.

Pertanto, senza vedere il codice dell'Expert Advisor, non si può dire in modo inequivocabile quale sia il processo di ottimizzazione: la creazione di regole o la ricerca di predittori che funzionano meglio con regole fisse, oppure l'una e l'altra parte sono implementate. Da qui l'intera discussione, a mio avviso, su questo argomento.

Considerando che in genere si applica l'overfitting a qualsiasi cosa, Maxim sostiene che non si tratta di un apprendimento con un insegnante, poiché la logica di markup può mancare e le situazioni non sono simili tra loro, il che complica il processo di apprendimento. E a ragione, in sostanza abbiamo molte classi diverse che vengono raggruppate in base ai gusti e alle preferenze, ma che potrebbero non essere simili tra loro. Prima ho suggerito un metodo per eliminare gradualmente questi dati, attraverso l'apprendimento incrementale, isolando l'assenza di contraddizioni nel campione iniziale con un modello addestrato e poi addestrando i dati rimanenti. Questa non è l'unica soluzione. L'argomento merita davvero attenzione.

Per quanto riguarda il criterio di arresto, è possibile scegliere il criterio e cercare il suo valore ottimale, a seconda di ciò che è più prioritario nelle risposte del modello. Tuttavia, non deve essere necessariamente un criterio di apprendimento automatico: a volte si può semplicemente impostare un numero fisso di iterazioni, cioè si può addestrare senza questo criterio. La questione è sempre un'altra: come scegliere un modello che funzioni su nuovi dati. È meglio cercare criteri che rispondano a questa domanda.

 
Andrey Dik #:


Pertanto, l'apprendimento automatico può essere visto come un'ottimizzazione, in cui l'obiettivo è trovare la combinazione di parametri del modello che minimizzi la funzione di perdita e ottenga le migliori prestazioni del modello.
Non sono d'accordo. Questa è solo una piccola parte del MOE. Trasformatori, l'apprendimento causale in MOE non è assolutamente un'ottimizzazione in generale.
 
Andrey Dik #:

Bingo!

Ora avete finalmente capito che qualsiasi apprendimento non è altro che un'ottimizzazione con ricerca di un estremo globale. O forse non l'avete ancora capito, ma lo capirete.

Non può essere altrimenti, è sempre necessario un criterio inequivocabile per fermare l'apprendimento e questo criterio è sempre progettato in modo che sia un estremo globale. Di solito si progetta un criterio integrale (non sempre). Lei ha definito i criteri integrali.

Ho sempre pensato che la ricerca degli estremi di una funzione sia un'analisi funzionale, così come lo sviluppo di un algoritmo può essere chiamato ottimizzazione. Dopo tutto, scegliamo il migliore in base a qualche criterio).
 
Oh questi termini e la loro interpretazione))))))
E' come una sorta di attività sacra)))))
 

Il problema dei neuroni in Python è rappresentato da bellissime immagini di statistiche su scala macro. Non appena si inizia ad analizzarle, si scopre che il neurone diventa una media mobile - è vicino al prezzo di previsione, ma non indovina la direzione. La direzione è indovinata al 50%, quindi è impossibile fare trading su questi neuroni.

Ho provato gli articoli qui riportati, e con ChatGPT abbiamo raccolto 10 000 neuroni in 3 strati, o 10 strati di 1000 neuroni, o uno strato di 100 000 neuroni (la mia RTX 3080 era completamente intasata, e se si prende di più - python ha scritto che non c'è abbastanza memoria), e RNN, e LSTM, e CNN, e CNN-LSTM, e CNN-BiLSTM, e CNN-BiLSTM-MLP con due regolazioni e abbandoni, e Q-learning. Solo DQN ha fallito, Chat ha scritto Actor-Critic per alcune pagine, ma il codice si è rivelato avere dei bug che né io né Chat siamo riusciti a risolvere.

Tutto il codice non funziona. Il risultato è lo stesso ovunque: si trasforma in una media mobile. Ho inserito tutto il possibile dal thread "cosa inserire nella rete neurale" e molte altre cose.

Ed eccomi qui a tagliare cipolle in cucina, con YouTube in sottofondo e le raccomandazioni date a un tizio dai capelli ricci che sta per costruire una rete neurale che predice i prezzi. Ok, dai, mi dico, provaci.

E così apre Google-collab e inizia a scrivere codice Python (credo sia Python). Ci butta dentro i prezzi di chiusura, se non sbaglio, del giorno, dei bitcoin. Lo allena. Lo controlla. Qui mi sono asciugato gli occhi dall'arco e ho iniziato a guardare il risultato.

Il risultato è il seguente: la previsione va vicino al prezzo effettivo, ma... con una previsione direzionale. Quindi, diciamo che era 35000, la previsione è 37500, il fatto è 37100. Passo successivo: previsione 35700, fatto 35300. Previsione 34000, fatto - 35000. E così via. Ha scritto una rete che prevede non il prezzo successivo, ma 12, credo, prezzi successivi di fila alla volta. E qui coincidevano dopo ogni passo nella direzione.


Domanda: è davvero possibile scrivere qualcosa che funzioni in Python?

 
Andrey Dik #:

È tutto, Maxim. Ulteriori discussioni non hanno senso, tutto è già stato scoperto. Qui qui vicino e Sanych osserva, che da tempo immemorabile ha discusso con me che, diciamo, la ricerca globale è dannoso, a cui ho risposto "a seconda di quale globale", e Sanych anche non ha ancora capito che alla fine è alla ricerca di un globale.

Spero di riportare la discussione in una direzione calma, amichevole e costruttiva.

E tutti coloro che leggono questo thread su base regolare ricordare chi e cosa e quando ha detto, non includere l'incoscienza - è inutile. Oggi ho commesso un errore - ho sbagliato a disegnare il grafico, ho ammesso con calma l'errore e l'ho detto. È normale ammettere i propri errori, Maxim.

Non farlo per me.

Stavamo parlando del tester, non del MO.

Nel MO non si cerca un optimum, ma la coincidenza di un errore in fase di traine, test e validazione. Poi lo eseguono passo dopo passo su un altro file. Ovunque dovrebbe esserci all'incirca lo stesso errore.

Non c'è spazio per l'ottimizzazione.

 
СанСаныч Фоменко #:

Non farlo per me.

La discussione riguardava il tester, non il modus operandi.

Nel MO non si cerca un optimum, ma una coincidenza di errore su traine, test e validazione. E poi lo si esegue passo dopo passo su un altro file. Dovrebbe esserci all'incirca lo stesso errore ovunque.

Non c'è spazio per l'ottimizzazione.

Il rosso è l'ottimizzazione, nel vostro caso suonerà come "ridurre la varianza" o "impostare una varianza fissa di un dato valore" a seconda di ciò che state facendo)))

 
Andrey Dik #:

Il rosso è l'ottimizzazione, nel vostro caso suonerebbe come "ridurre la varianza" o "impostare una varianza fissa di un dato valore" a seconda di ciò che state facendo)))

In qualche modo non state percependo il testo.

L'ottimizzazione(?) è possibile SOLO sulla linea su cui il modello è stato addestrato. Durante l'addestramento c'è un algoritmo e si può vedere l'ottimizzazione con una lente di ingrandimento. Poi c'è un test di questo modello, che non ha alcun riscontro con l'"ottimizzazione", perché non ci sono parametri nel modello che possano influenzare i risultati del test. Per influire bisogna intervenire sui predittori e/o sull'insegnante.

Nel MOE, ovvero la preelaborazione, l'adattamento del modello e la stima del modello, NON ci può essere ottimizzazione perché l'errore risultante è una proprietà di queste tre fasi.