Discussão do artigo "Redes neurais de Maneira Fácil (Parte 6): Experimentos com a taxa de aprendizado da rede neural"

 

Novo artigo Redes neurais de Maneira Fácil (Parte 6): Experimentos com a taxa de aprendizado da rede neural foi publicado:

Anteriormente, nós consideramos vários tipos de redes neurais junto com suas implementações. Em todos os casos, as redes neurais foram treinadas usando o método gradiente descendente, para o qual nós precisamos escolher uma taxa de aprendizado. Neste artigo, eu quero mostrar a importância de uma taxa corretamente selecionada e o seu impacto no treinamento da rede neural, usando exemplos.

O terceiro experimento é um ligeiro desvio do tópico principal do artigo. Sua ideia surgiu durante os dois primeiros experimentos. Então, eu decidi compartilhar com você. Ao observar o treinamento da rede neural, eu percebi que a probabilidade da ausência de um fractal oscila em torno de 60-70% e raramente cai abaixo de 50%. A probabilidade de surgimento de um fractal, seja para comprar ou vender, é em torno de 20-30%. Isso é bastante natural, pois há bem menos fractais no gráfico do que velas dentro das tendências. Portanto, nossa rede neural está sobrecarregada e nós obtemos os resultados acima. Quase 100% dos fractais são perdidos e apenas em casos raros que eles podem ser detectados.  

Treinando o EA com a taxa de aprendizado de 0.01

Para resolver esse problema, eu decidi compensar um pouco a irregularidade da amostra: para a ausência de um fractal no valor de referência, eu especifiquei 0.5 em vez de 1 ao treinar a rede.

            TempData.Add((double)buy);
            TempData.Add((double)sell);
            TempData.Add((double)((!buy && !sell) ? 0.5 : 0));

Este passo produziu um bom efeito. O Expert Advisor rodando com uma taxa de aprendizado de 0.01 e uma matriz de peso obtida dos experimentos anteriores mostra a estabilização do erro de cerca de 0.34 após 5 épocas de treinamento. A percentagem de fractais perdidos diminuiu para 51% e a percentagem de acertos aumentou para 9.88%. Você pode ver no gráfico que o EA gera sinais em grupo e, portanto, ele mostra algumas zonas corretas. Obviamente, a ideia requer desenvolvimento e testes adicionais. Mas os resultados sugerem que essa abordagem é bastante promissora. 

taxa de aprendizado de 0.5 sem fractal

Autor: Dmitriy Gizlyk

 
Eu estava apenas de passagem)))) Você não está confuso com o fato de que o erro aumenta à medida que você aprende???? deveria ser o contrário)))))
 
Александр Алексеевич:
Eu estava apenas passando por aqui)))) Você não está confuso com o fato de que o erro aumenta com o treinamento??? deveria ser o contrário)))))
O erro aumenta durante as primeiras passagens após a inicialização com valores aleatórios. Depois de várias passagens, ele começa a diminuir. Isso pode ser devido à dispersão caótica dos valores iniciais do nível da função de destino. Além disso, é possível notar um leve crescimento do erro no contexto da tendência geral de diminuição, o que é explicado pela não suavidade da função-alvo.
 

Olá, Dmitriy,


Gosto muito dessa série, pois é uma ferramenta de aprendizado para mim sobre redes neurais. Eu uso o MT4, inclusive encontrei uma implementação do SymbolInfo. Acho que é aí que está o problema, pois ele está sendo executado, mas não está fazendo nada durante o aprendizado. Você teria alguma ideia do que seria necessário para que ele fosse executado no MT4? Obrigado!

 

Boa tarde!

Você pode me dizer se treina o NS apenas com base no preço de fechamento? Ou também usa o volume de negociação em uma determinada TM?

 
Oleg Mazurenko:

Boa tarde!

Você pode me dizer se treina o NS apenas com base no preço de fechamento? Ou também usa o volume de negociação em uma determinada TM?

Agora, no exemplo descrito, a rede neural recebe abertura, fechamento, alta, baixa, volume, hora e leituras de 4 indicadores. O processo de transferência dos dados iniciais para a rede neural está descrito no link.

Нейросети — это просто (Часть 2): Обучение и тестирование сети
Нейросети — это просто (Часть 2): Обучение и тестирование сети
  • www.mql5.com
В данной статье мы продолжим изучение нейронных сетей, начатое в предыдущей статье и рассмотрим пример использования в советниках созданного нами класса CNet. Рассмотрены две модели нейронной сети, которые показали схожие результаты как по времени обучения, так и по точности предсказания.
 

Para quem vier depois de mim: observe que o primeiro exemplo Fractal_OCL1.mql não será compilado

Você precisa alterar

//#definir lr 0. 1

double eta=0.1;

 
O principal problema não está na seleção do coeficiente de treinamento, afinal, o Tensor Flo tem uma função que o reduz gradualmente durante o treinamento para um valor especificado, selecionando o ideal. O problema é que a rede neural não encontra padrões estáveis, ela não tem nada a que se agarrar. Usei modelos que vão desde camadas totalmente conectadas até o novo ResNet e o Attention. O efeito não ultrapassa 60%, e isso é em uma área estreita; em geral, tudo cai para 50/50. Com as redes neurais, precisamos pensar no que poderia ser analisado em geral. Apenas matrizes de preços e volumes, em quaisquer combinações, não produzem resultados.
 
eccocom #:
O principal problema não está na seleção do coeficiente de treinamento, afinal, o Tensor Flo tem uma função que o reduz gradualmente durante o treinamento para um valor especificado, selecionando o ideal. O problema é que a rede neural não encontra padrões estáveis, ela não tem nada a que se agarrar. Usei modelos que vão desde camadas totalmente conectadas até o novo ResNet e o Attention. O efeito não ultrapassa 60%, e isso em uma área estreita; em geral, tudo cai para 50/50. Com as redes neurais, precisamos pensar no que poderia ser analisado em geral. Apenas conjuntos de preços e volumes, em quaisquer combinações, não dão resultados.

Tente analisar a correlação entre os dados iniciais e o resultado desejado.

 

"...na ausência de um fractal no valor de referência, ao treinar a rede, especifiquei 0,5 em vez de 1."

Por que exatamente 0,5, de onde veio esse valor?

 
Gexon o treinamento da rede especificou 0,5 em vez de 1."

Por que exatamente 0,5, de onde veio esse valor?

Durante o treinamento, o modelo aprende a distribuição de probabilidade de cada um dos 3 eventos. Como a probabilidade de ausência de fractal é muito maior do que a probabilidade de seu aparecimento, nós a subestimamos artificialmente. Especificamos 0,5 porque, com esse valor, chegamos a um nível aproximadamente igual de probabilidades máximas de eventos. E elas podem ser comparadas.
Concordo que essa abordagem é muito controversa e é ditada por observações da amostra de treinamento.