Discussão do artigo "Redes neurais de maneira fácil (Parte 88): Codificador denso de séries temporais (TiDE)"

 

Novo artigo Redes neurais de maneira fácil (Parte 88): Codificador denso de séries temporais (TiDE) foi publicado:

O desejo de obter previsões mais precisas leva os pesquisadores a complicar os modelos de previsão. Isso, por sua vez, aumenta os custos de treinamento e manutenção do modelo. Mas será que isso sempre é justificado? Neste artigo, proponho que você conheça um algoritmo que utiliza a simplicidade e a velocidade dos modelos lineares, e demonstra resultados no nível dos melhores com uma arquitetura mais complexa.

Como em vários artigos anteriores, o modelo de Codificação do estado do ambiente não depende do saldo da conta nem das posições abertas. Portanto, podemos treinar o modelo mesmo em um conjunto de dados de treinamento com uma única passagem de interação com o ambiente, até atingir a precisão desejada na previsão dos estados futuros. Naturalmente, a "precisão desejada da previsão" não pode exceder as capacidades do próprio modelo. Você deve lembrar que "não se pode pular mais alto do que a própria cabeça".

Após o treinamento do modelo de previsão dos estados do ambiente, passamos para a segunda etapa — o treinamento da política de comportamento do Ator. Nesta fase, treinamos iterativamente os modelos do Ator e do Crítico, com a atualização periódica do buffer de reprodução de experiência.

Lembro que, por atualização do buffer de reprodução de experiência, nos referimos ao descarte adicional da experiência de interação com o ambiente, levando em consideração a política de comportamento atualizada do Ator. Afinal, o ambiente financeiro que estamos estudando é bastante multifacetado. E não podemos coletar completamente todas as suas manifestações no buffer de reprodução de experiência. Fazemos apenas um pequeno corte em uma pequena vizinhança das ações da política atual do Ator. Analisando esse corte, damos um pequeno passo no caminho da otimização da política de comportamento do nosso Ator. E, ao nos aproximarmos dos limites desse corte, precisamos coletar dados adicionais, expandindo a área visível nas proximidades da política atualizada do Ator.

Como resultado dessas iterações, consegui treinar uma política de Ator capaz de gerar tanto na amostra de treinamento quanto na amostra de teste.

Результаты тестирования модели Результаты тестирования модели

No gráfico acima, vemos uma operação com prejuízo no início, que é seguida por uma tendência claramente lucrativa. Sim, a proporção de operações lucrativas é inferior a 40%. Praticamente, para cada operação lucrativa, há duas operações com prejuízo. No entanto, observamos que as operações com prejuízo são significativamente menores que as operações lucrativas. A operação lucrativa média é quase duas vezes maior que a operação com prejuízo média. Tudo isso permite que o modelo obtenha lucro no período de teste. Ao final do teste, o fator de lucro foi de 1,23.

Autor: Dmitriy Gizlyk

 

Olá, Dmitriy,

Usar o MLP em vez de outras redes mais complexas é bastante interessante, especialmente porque os resultados são melhores.

Infelizmente, encontrei vários erros ao testar esse algoritmo. Aqui estão algumas das principais linhas do registro:

2024.11.15 00:15:51.269 Core 01 Iterations=100000

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 TiDEEnc.nnw

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Criar novo modelo

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 OpenCL: Dispositivo de GPU 'GeForce GTX 1060' selecionado

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Erro de execução do kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: erro desconhecido de OpenCL 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Train -> 164

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Trem -> 179 -> Codificador 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00:00 Função ExpertRemove() chamada

Você tem alguma ideia do que poderia ser o motivo?

Antes, o OpenCL funcionava muito bem.

Chris.

Dmitriy Gizlyk
Dmitriy Gizlyk
  • 2024.11.13
  • www.mql5.com
Trader's profile
 
Chris kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: erro desconhecido do OpenCL 65536

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Train -> 164

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00 Train -> 179 -> Encoder 1543.0718994

2024.11.15 00:15:51.269 Core 01 2024.01.01 00:00:00:00 Função ExpertRemove() chamada

Você tem alguma ideia do que poderia ser o motivo?

Antes, o OpenCL funcionava muito bem.

Chris.

Oi, Chris.

Você fez algumas alterações na arquitetura do modelo ou usou modelos padrão do artigo?

 
Dmitriy Gizlyk #:

Oi, Chris.

Você fez algumas alterações na arquitetura do modelo ou usou modelos padrão do artigo?

Olá. Não foram feitas alterações. Simplesmente copiei a pasta "Experts" por completo e executei os scripts como estavam, após a compilação, nesta ordem: "Research", "StudyEncoder", "Study" e "Test". Os erros apareceram no estágio "Test". A única diferença foi o instrumento, ou seja, a mudança de EURUSD para EURJPY.

Chris

 

Dmitriy, tenho uma correção importante. O erro apareceu depois de iniciar o StudyEncoder. Aqui está outro exemplo:

2024.11.18 03:23:51.770 Core 01 Iterations=100000

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 TiDEEnc.nnw

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00:00 Criar novo modelo

2024.11.18 03:23:51.770 Core 01 opencl.dll successfully loaded

2024.11.18 03:23:51.770 Core 01 device #0: GPU 'GeForce GTX 1060' com OpenCL 1.2 (10 unidades, 1771 MHz, 6144 Mb, versão 457.20, classificação 4444)

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 OpenCL: dispositivo de GPU 'GeForce GTX 1060' selecionado

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Erro de execução do kernel bool CNeuronBaseOCL::SumAndNormilize(CBufferFloat*,CBufferFloat*,CBufferFloat*,CBufferFloat*,int,bool,int,int,int,float) MatrixSum: erro desconhecido de OpenCL 65536

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Train -> 164

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 Train -> 179 -> Encoder 1815.1101074

2024.11.18 03:23:51.770 Core 01 2023.11.01 00:00:00 ExpertRemove() function called


Chris