Discussão do artigo "Redes neurais de maneira fácil (Parte 2): Treinamento e teste da rede"

 

Novo artigo Redes neurais de maneira fácil (Parte 2): Treinamento e teste da rede foi publicado:

Neste segundo artigo, nós continuaremos a estudar as redes neurais e nós vamos considerar um exemplo utilizando a nossa classe criada CNet nos Expert Advisors. Nós trabalharemos com dois modelos de rede neural, que apresentam resultados semelhantes tanto em termos de tempo de treinamento quanto de precisão de predição.

A primeira época é fortemente dependente dos pesos da rede neural que foram selecionados aleatoriamente no estágio inicial.

Após 35 épocas de treinamento, a diferença nas estatísticas aumentou ligeiramente - o modelo de rede neural de regressão obteve um melhor desempenho:

Valor Rede neural de regressão Rede neural de classificação
Raiz do erro quadrático médio 0.68 0.78
Percentual de acerto 12.68% 11.22%
Fractais não reconhecidos 20.22% 24.65%

Resultado da 35ª época de treinamento da rede neural de regressão (1 neurônio de saída) Resultado da 35ª época de treinamento da rede neural de classificação (3 neurônios de saída)

Os resultados dos testes mostram que ambas as variantes da organização da rede neural geram resultados semelhantes em termos de tempo de treinamento e precisão de previsão. Ao mesmo tempo, os resultados obtidos mostram que a rede neural necessita de tempo e recursos adicionais para o treinamento. Se você deseja analisar a dinâmica de aprendizagem da rede neural, verifique as capturas de tela de cada época de aprendizagem no anexo.

Autor: Dmitriy Gizlyk

 

Este artigo é interessante. Eu nunca havia tentado dar uma olhada nas redes neurais antes, pois acreditava que elas eram uma "floresta escura" e tudo o que li sobre esse tópico antes foi repelido pela abundância de palavras incompreensíveis, mas nesse artigo, de fato, a teoria é bastante simples e compreensível, obrigado ao autor por isso!

E eu gostaria de esclarecer esta frase: "Ambos os EAs mostraram resultados semelhantes com uma taxa de acerto de pouco mais de 6%." Estou certo ao entender que, após a primeira "passagem" do treinamento, a previsão da rede neural foi justificada em apenas 6%.
E após 35 épocas de treinamento - apenas 12% ???

Um resultado tão baixo não motiva o estudo mais aprofundado do tópico.

Quais são os métodos para melhorar a precisão da previsão?

 

Boa tarde, Dimitri.

O tópico é muito interessante e necessário. Obrigado por esses artigos).

1. Tenho uma dúvida sobre o código do método Traine(... ):

            TempData.Clear();
            bool sell=(High.GetData(i+2)<High.GetData(i+1) && High.GetData(i)<High.GetData(i+1));
            
            //в строчке ниже скорее всего не верно определяется Low фрактал  
            bool buy=(Low.GetData(i+2)<Low.GetData(i+1) && Low.GetData(i)<Low.GetData(i+1));
           
            //знаки сравнения нужно поменять наоборот
            buy=(Low.GetData(i+2)>Low.GetData(i+1) && Low.GetData(i)>Low.GetData(i+1));/

Quando executei a versão modificada no treinamento, os resultados melhoraram:

Já na época 8, a precisão foi de 16,98% contra 10,87% da variante antiga na mesma época


2. Por que a rede neural de múltiplas camadas tem uma porcentagem de precisão tão baixa, não chegando a 50%?

 
Alexandr Ishkov:

Boa tarde, Dimitri.

O tópico é muito interessante e necessário. Obrigado por esses artigos).

1. Tenho uma dúvida sobre o código do método Traine(...):

Quando executei a versão modificada no treinamento, os resultados melhoraram:

Já na época 8, a precisão foi de 16,98%, em comparação com a variante antiga na mesma época, de 10,87%

Obrigado pelo comentário, Alexander. Um infeliz erro de copypaste.

 
Alexandr Ishkov:

Boa tarde, Dimitri.

2. Por que a rede neural de múltiplas camadas tem uma porcentagem de precisão tão baixa, não chegando a 50%?

Escrevi no primeiro artigo que peguei indicadores aleatórios de indicadores padrão com parâmetros padrão. Uma rede neural é uma boa ferramenta, mas não é algo sobrenatural. Ela procura padrões onde eles estão. Mas se não houver padrões nos dados brutos, ela não os encontrará por conta própria. Chegar exatamente a um fractal é uma tarefa bastante difícil e, para ser sincero, eu não esperava chegar a um resultado exato. Mas o que obtive dá base para trabalhos futuros.

 
Dmitriy Gizlyk:

Obrigado pelo comentário, Alexander. Um erro infeliz de copiar e colar.

Isso acontece)

Dmitriy Gizlyk:

Escrevi no primeiro artigo que peguei indicadores aleatórios de indicadores padrão com parâmetros padrão. Uma rede neural é uma boa ferramenta, mas não é algo sobrenatural. Ela procura padrões onde eles estão. Mas se não houver padrões nos dados brutos, ela não os encontrará por conta própria. Chegar exatamente a um fractal é uma tarefa bastante difícil e, para ser sincero, eu não esperava chegar a um resultado exato. Mas o que obtive dá base para trabalhos futuros.

Faz sentido).

Obrigado, seu trabalho é ótimo de qualquer forma.)

 

Dmitry, boa tarde!

Muito interessante a série de artigos sobre redes neurais. No momento, estou fazendo experiências com diferentes conjuntos de indicadores e tarefas para a rede. Decidi definir uma tarefa para a rede para determinar a probabilidade de ocorrência da próxima barra com o nível Alto maior que o nível Aberto da barra atual em 100 pontos ou com o nível Baixo menor que o nível Aberto da barra atual em 100 pontos.

         if(add_loop && i<(int)(bars-MathMax(HistoryBars,0)-1) && i>1 && Time.GetData(i)>dtStudied && dPrevSignal!=-2)
           {
            TempData.Clear();
            double DiffMin=100;
            double DiffLow=Open.GetData(i+1)-Low.GetData(i);
            double DiffHigh=High.GetData(i)-Open.GetData(i+1);
            bool sell=(DiffLow>=DiffMin);
            bool buy=(DiffHigh>=DiffMin);
            TempData.Add((double)buy);
            TempData.Add((double)sell);
            TempData.Add((double)(!buy && !sell));
            Net.backProp(TempData);
	    ...
           }

Ao testar o Expert Advisor, os rótulos dos fractais previstos são exibidos no gráfico, mas as estatísticas dos fractais previstos corretamente e não encontrados não são atualizadas e são sempre iguais a 0,00%.

        if(DoubleToSignal(dPrevSignal)!=Undefine)
              {
               if(DoubleToSignal(dPrevSignal)==DoubleToSignal(TempData.At(0)))
                  dForecast+=(100-dForecast)/Net.recentAverageSmoothingFactor;
               else
                  dForecast-=dForecast/Net.recentAverageSmoothingFactor;
               dUndefine-=dUndefine/Net.recentAverageSmoothingFactor;
              }
            else
              {
               if(sell || buy)
                  dUndefine+=(100-dUndefine)/Net.recentAverageSmoothingFactor;
              }
Как протестировать торгового робота перед покупкой
Как протестировать торгового робота перед покупкой
  • www.mql5.com
Покупка торгового робота в MQL5 Маркете имеет одно большое преимущество перед всеми другими подобными предложениями -  вы можете устроить комплексную проверку предлагаемой автоматической системы прямо в терминале MetaTrader 5. Советник перед покупкой можно и нужно тщательно прогнать во всех неблагоприятных режимах во встроенном тестере торговых...
 
altec3:

Dimitri, boa tarde!

Muito interessante a série de artigos sobre redes neurais. No momento, estou fazendo experiências com diferentes conjuntos de indicadores e tarefas para a rede. Decidi definir uma tarefa para a rede para determinar a probabilidade de ocorrência da próxima barra com o nível Alto mais alto do que o nível Aberto da barra atual em 100 pontos ou com o nível Baixo mais baixo do que o nível Aberto da barra atual em 100 pontos.

Ao testar o Expert Advisor, os rótulos dos fractais previstos são exibidos no gráfico, mas as estatísticas dos fractais previstos corretamente e não encontrados não são atualizadas e são sempre iguais a 0,00%.

Boa tarde,
você especificou Diff=100, pelo que entendi é em pips. E a diferença é calculada pelo preço. Ou seja, para o EURUSD, ela é calculada como 1,16715-1,15615=0,01. Como resultado, você não tem dados comparáveis e a venda e a compra sempre serão falsas.

 
Dmitriy Gizlyk:

Bom dia,
você especificou Diff=100, pelo que entendi é em pontos. E a diferença é calculada pelo preço. Ou seja, para o EURUSD, ela será calculada como 1,16715-1,15615=0,01. Como resultado, você não tem dados comparáveis e a venda e a compra sempre serão falsas.

Obrigado! De fato, assim que coloquei tudo em um denominador comum, o problema foi resolvido.
 

Tenho uma pergunta: Por que diabos estudar o tópico de toda uma série de artigos megaabstratos se essa rede neural tem precisão insignificante... Acho que o tópico deve ser descontinuado ou o EA deve ser aprimorado.

Gostaria de acrescentar que minha rede neural é muito mais "complexa" do que a sua, mas é garantido que ela forneça 70-80% das entradas corretas e, ao mesmo tempo, sua estrutura é muito mais simples ...

e eu acrescentaria que há muitas outras redes neurais com precisão muito melhor do que a sua.

Em geral, tenho a impressão de que você recebe dinheiro por seus artigos, mas eles não servem para nada... Sinto muito.

Também não concordo com o título "As redes neurais são fáceis". Aqueles que estão envolvidos com o aprendizado de máquina em big data sabem que não é fácil... :-)

>Para avaliar o desempenho da rede, você pode usar o erro quadrático médio da previsão, a porcentagem de fractais previstos corretamente e a porcentagem de fractais perdidos.

Não concordo nem um pouco com isso - o resultado é apenas o saldo final, o lucro líquido e nada mais ... nada mesmo, não é ciência pela ciência, é ciência pelo lucro.

Vou até lhe dizer por quê: existem Expert Advisors com 60% de precisão ... mas, graças a um sistema inteligente, eles dão mais lucro do que os consultores com 80% de precisão ...

E você deve começar com o gráfico das estatísticas finais de negociação do seu EA, caso contrário, não vale a pena lê-lo. Se não houver estatísticas ou se ele não atender aos meus requisitos, eu o rejeito imediatamente, então você não pode ler nada.

estático

 
Boris Egorov:

E você deve começar com o gráfico do estado final de negociação do seu EA, ou não faz sentido lê-lo, eu imediatamente desisto, se não houver estado ou se ele não atender aos meus requisitos, então você não pode ler nada, abaixo está o teste do meu neuronka não muito inteligente.

então você não precisa da seção de artigos.

Para seus requisitos - um site lucrativo -, as seções Codobase e Market são adequadas.

sim, a propósito, até mesmo sua mensagem não se encaixa em seus requisitos, então ela também pode ser ignorada? )))


Você precisa de artigos, precisa deles para testar adequadamente um EA que trabalha com base em uma rede neural. Há uma grande probabilidade de que seu estado seja de um testador, não apenas do MT4, mas você pode não ter dividido a amostra de treinamento em treinamento/teste/validação.

Você precisa de artigos para aprender a escrever um código bem estruturado e legível - acho que o código do autor no artigo é perfeito para esses requisitos.