Discussão do artigo "Redes Neurais de Maneira Fácil (Parte 12): Dropout"

 

Novo artigo Redes Neurais de Maneira Fácil (Parte 12): Dropout foi publicado:

Como a próxima etapa no estudo das redes neurais, eu sugiro considerar os métodos de aumentar a convergência durante o treinamento da rede neural. Existem vários desses métodos. Neste artigo, nós consideraremos um deles intitulado Dropout.

Ao treinar uma rede neural, um grande número de características é alimentado em cada neurônio e é difícil avaliar o impacto de cada característica separada. Como resultado, os erros de alguns neurônios são atenuados pelos valores corretos de outros neurônios, enquanto esses erros são acumulados na saída da rede neural. Isso faz com que o treinamento pare em um determinado mínimo local com um erro bastante grande. Esse efeito é conhecido como co-adaptação de detectores de características, em que a influência de cada recurso se ajusta ao ambiente. Seria melhor ter o efeito oposto, quando o ambiente é decomposto em características separadas e é possível avaliar a influência de cada característica separadamente.

Em 2012, um grupo de cientistas da universidade de Toronto propôs excluir aleatoriamente alguns dos neurônios do processo de aprendizado como uma solução para o complexo problema de co-adaptação [12] Uma diminuição no número de recursos no treinamento aumenta a importância de cada característica, e uma mudança constante na composição quantitativa e qualitativa dos recursos reduz o risco de sua co-adaptação. Este método é denominado Dropout. Às vezes, a aplicação desse método é comparada as árvores de decisão: eliminando alguns dos neurônios, nós obtemos uma nova rede neural com seus próprios pesos a cada iteração de treinamento. De acordo com as regras combinatórias, tais redes apresentam uma variabilidade bastante elevada.


Autor: Dmitriy Gizlyk

 

Observação: quando usado em Fractal_OCL_AttentionMLMH_d em vez de Net.feedForward(TempData,12,true);

verifique se(!Net.feedForward(TempData,12,true))

printf("erro no feed forward da rede. verifique a topologia e os dados de entrada");

gerará um erro. Ao contrário da versão Fractal_OCL_AttentionMLMH, em que não haverá esse erro.

Verifique o motivo.

 
Dmitry Nazarov:

Observação quando usado em Fractal_OCL_AttentionMLMH_d em vez de Net.feedForward(TempData,12,true);

verifique se(!Net.feedForward(TempData,12,true))

printf("erro no feed forward da rede. verifique a topologia e os dados de entrada");

gerará um erro. Ao contrário da versão Fractal_OCL_AttentionMLMH, em que não haverá esse erro.

Verifique o motivo.

Obrigado, vou verificar.

 
Precisamos verificar se todos os valores de feedforward são NaN, Inf, caso contrário, o FeedForward retornará falsamente.
 
Dmitry Nazarov:

Observação quando usado em Fractal_OCL_AttentionMLMH_d em vez de Net.feedForward(TempData,12,true);

verifique se(!Net.feedForward(TempData,12,true))

printf("erro no feed forward da rede. verifique a topologia e os dados de entrada");

gerará um erro. Ao contrário da versão Fractal_OCL_AttentionMLMH, em que não haverá esse erro.

Verifique o motivo.

Tente essa variante, não tive erros.

Arquivos anexados:
 
Está bem. O erro foi eliminado. Obrigado.
 

Muito obrigado por este artigo. Já adaptei meus robôs aos novos recursos e eles funcionam muito bem.

 
Presumo que nada funcione sem o OCL? Que pena, não sou um jogador e a placa é antiga.....
 
O autor agradece imensamente pelo robô, verifique o erro no código do próprio EA, pois durante o treinamento, quando o algoritmo mostra um sinal indefinido, o número de padrões perdidos tende a 100%, quando no final da época na última barra aparece compra ou venda, então na próxima época o valor dos padrões perdidos diminui.
 
Alexey Volchanskiy:
Presumo que nada funcione sem o OCL? Que pena, não sou um jogador e a placa é antiga....
Se o processador for de vários núcleos, coloque drivers na OCL para o processador; a velocidade não será muito rápida, mas você pode verificar.
 
Dmitry, você poderia explicar um pouco mais sobre o parâmetro de janela na criação do Neuronkey? Estou certo ao entender que esse é o número de neurônios sequencialmente (com uma etapa) que são usados para o cálculo de uma etapa? Para economizar energia computacional?