Discussão do artigo "Redes neurais de maneira fácil (Parte 31): Algoritmos evolutivos"

 

Novo artigo Redes neurais de maneira fácil (Parte 31): Algoritmos evolutivos foi publicado:

No último artigo, iniciamos a análise dos métodos de otimização sem gradiente, e nos familiarizamos com o algoritmo genético. Hoje, continuaremos a discutir o mesmo assunto e também examinaremos outra classe de algoritmos evolutivos.

Após a otimização, testamos o modelo no testador de estratégia. Para testar, usamos o modelo "Evolution-test.mq5", que é uma cópia exata do Expert Advisor de vários artigos anteriores. As alterações afetaram apenas o nome do arquivo do modelo carregado. O código completo do Expert Advisor está disponível no anexo.

Os testes foram realizados nas últimas 2 semanas, com dados que não foram utilizados no treinamento do modelo, para simular o ambiente real o mais próximo possível. Os resultados mostraram que a abordagem proposta é viável. O gráfico abaixo ilustra a dinâmica do crescimento do equilíbrio. Ao todo, foram realizadas 107 operações de negociação durante o período de teste, das quais quase 55% foram lucrativas. A relação entre negociações lucrativas e não lucrativas é próxima de 1:1, mas a média de lucro das negociações bem-sucedidas é 43% maior do que a média das negociações perdedoras, o que resultou em um fator de lucro geral de 1,69 e um fator de recuperação de 3,39.

Resultados do teste do modelo treinado

Resultados do teste do modelo treinado


Autor: Dmitriy Gizlyk

 


Apareceu um erro. Por favor, me diga como resolvê-lo

2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1 undeleted objects left
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1 object of type CBufferFloat left
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1280 bytes de memória vazada
2022.10.21 18:23:13.785 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.21 18:23:13.858 Evolution (EURUSD,H1) OpenCL: dispositivo GPU 'NVIDIA GeForce RTX 3080' selecionado
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Erro de execução do kernel SoftMax FeedForward: 5109
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Train -> 206


No registro
2022.10.21 18:23:12.281 Experts experts Evolution (EURUSD,H1) loaded successfully


E nada acontece, silêncio, não consigo ouvir a placa de vídeo, que normalmente faz barulho quando está funcionando (usando o mesmo Fractal OCL como exemplo).
 
Ivan Butko #:


Um erro está aparecendo. Por favor, me diga como resolver isso

2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1 undeleted objects left
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1 object of type CBufferFloat left
2022.10.21 18:23:12.259 Evolution (EURUSD,H1) 1280 bytes de memória vazada
2022.10.21 18:23:13.785 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.21 18:23:13.858 Evolution (EURUSD,H1) OpenCL: Dispositivo de GPU 'NVIDIA GeForce RTX 3080' selecionado
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Erro de execução do kernel SoftMax FeedForward: 5109
2022.10.21 18:23:16.085 Evolution (EURUSD,H1) Train -> 206


No registro
2022.10.21 18:23:12.281 Experts experts Evolution (EURUSD,H1) loaded successfully


E nada acontece, silêncio, não consigo ouvir a placa de vídeo, que normalmente faz barulho quando está funcionando (usando o mesmo Fractal OCL como exemplo).

Tente reduzir o tamanho da população. Defina-o como 5-10 para o experimento. Se o erro desaparecer, aumente o tamanho. E encontre experimentalmente o limite aceitável.

 
Dmitriy Gizlyk #:

Tente reduzir o tamanho da população. Defina-o como 5-10 para o experimento. Se o erro desaparecer, aumente-o. E encontre experimentalmente o limite aceitável.

Eu tentei, configurei de 5 para 10 e tentei uma vez. O mesmo erro:

2022.10.22 01:42:08.768 Evolution (EURUSD,H1) Erro de execução do kernel SoftMax FeedForward: 5109.


Notei algo, talvez por causa disso: ao salvar um modelo, as seguintes inscrições aparecem no lado esquerdo da janela: "Error of loading model, Select file, error id: 5004". Talvez isso tenha algum efeito.


Além disso: o arquivo criado deve pesar 16 megabytes! Não é comum ver esses tamanhos no mql.




UPD

Tentei em meu laptop e ele também não quer treinar:

2022.10.22 13:07:36.028 Evolution (EURUSD,H1) EURUSD_PERIOD_H1_Evolution.nnw
2022.10.22 13:07:36.028 Evolution (EURUSD,H1) OpenCL: GPU device 'Intel(R) UHD Graphics' selected
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 9 undeleted objects left
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 1 objeto do tipo CLayer left
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 1 objeto do tipo CNeuronBaseOCL left
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 7 objetos do tipo CBufferFloat left
2022.10.22 13:07:37.567 Evolution (EURUSD,H1) 2688 bytes de memória vazada

In log:

2022.10.22 13:07:34.716 Experts expert Evolution (EURUSD,H1) loaded successfully
2022.10.22 13:07:37.568 Experts initialising of Evolution (EURUSD,H1) failed with code 1
2022.10.22 13:07:37.580 Experts expert Evolution (EURUSD,H1) removed


 
Ivan Butko #:

Notei algo, talvez por causa disso: ao salvar um modelo, as seguintes inscrições aparecem no lado esquerdo da janela: "Error of loading model, Select file, error id: 5004". Talvez isso tenha algum efeito.


Isso não é um erro, o NetCreator está apenas tentando carregar o modelo no lado esquerdo e nenhum arquivo é especificado. O erro 5004 é um erro ao abrir um arquivo.

 
Ivan Butko #:

Experimentei, configurei de 5 a 10 e experimentei um. Mesmo erro:

2022.10.22 01:42:08.768 Evolution (EURUSD,H1) Erro de execução do kernel SoftMax FeedForward: 5109

Você usou todos os arquivos do último artigo?

 
Dmitriy Gizlyk #:

Você usou todos os arquivos do último artigo?

Sim.

Se o erro estiver relacionado ao OpenCl, talvez o processador deva ser trocado de alguma forma, talvez ele não queira
Eu tentei em terminais diferentes.

 

Quando a mesma seção do histórico do modelo treinado é testada repetidamente, o resultado é aleatório

Arquivos anexados:
qoymbc.gif  928 kb
 
Ivan Butko #:

Quando a mesma seção do histórico do modelo treinado é testada repetidamente, o resultado é aleatório

Isso é possível com um modelo não treinado ou quando os dados analisados não permitem fazer uma preferência em favor de uma ação. Como pode ser visto, o algoritmo usa a seleção aleatória de uma ação a partir de uma distribuição de probabilidade. Se o modelo gerar probabilidades iguais para todas as ações, obteremos um resultado aleatório na saída.

 
Dmitriy Gizlyk #:

Isso é possível com um modelo não treinado

Para treinar um modelo, você precisa necessariamente executar as 1.000 gerações definidas nas configurações? (mais de um dia de treinamento no 3080)

 

Você escreveu: "O processo de treinamento de modelos já foi descrito em artigos anteriores. Não vou me alongar sobre eles."

Entendo que você não quer repetir, mas poderia pelo menos dar aos seus leitores uma referência ao artigo onde eles podem encontrar essas informações