Discussão do artigo "Redes neurais de maneira fácil (Parte 34): Função quantil totalmente parametrizada"
Obrigado.
Tentei fazer isso e consegui compilar tudo com sucesso, sem nenhum erro.
Estou testando no eurusd e estou recebendo o erro abaixo.
Alguma ideia?
2022.11.30 11:51:46.689 Core 08 genetic pass (0, 286) tested with error "OnInit returned non-zero code 1" at 0:00:00.000
Agradecimentos
Olá, para executar o EA no testador, você precisa copiar o arquivo nnw para o diretório "MetaQuotes\Terminal\Common\Files".
Obrigado!
Sua "produtividade" é surpreendente. Não pare!
São pessoas como você que mantêm tudo funcionando!
P.S..
Estive lendo as notícias da NeuroNet....
"Нейросети тоже нуждаются в состояниях, напоминающих сны.
Esta é a conclusão a que chegaram os pesquisadores do Laboratório Nacional de Los Alamos..."
Bom dia.
Usando seu código, fiz um "Sleep" semelhante do NeuroNetwork.
A porcentagem de "previsão" aumentou em 3%. Para o meu "Supercomp", é um voo para o espaço!
//+------------------------------------------------------------------+ //| sonho| //+------------------------------------------------------------------+ int Dream(int dream = 0) { Comment("!!! Dream !!! "); int sleep = (dream==0 ? 7 : dream); for(int j=0;j<sleep;j++) { TempData.Clear(); for(int b=0; b<(int)HistoryBars; b++) { if( !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0) || !TempData.Add(0) || !TempData.Add(0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) ) break; } if(TempData.Total()<(int)HistoryBars*12) return(0); Net.feedForward(TempData); Net.getResults(TempData); //-- Você pode dar uma olhada em "Dreams" da NeuroNet. switch(TempData.Maximum(0,3)) { case 0: dPrevSignal=TempData[0]; break; case 1: dPrevSignal=-TempData[1]; break; default: dPrevSignal=0; break; } //-- ... mas isso não é essencial. //--??? TempData.Clear(); TempData.Add(0.0); TempData.Add(0.0); TempData.Add(0.0); Net.backProp(TempData); //--??? } return(0); }
Apliquei esse recurso no final de cada época de treinamento:
if(add_loop) count++; if(!stop) { dError=Net.getRecentAverageError(); if(add_loop) { Net.Save(FileName+".nnw",dError,dUndefine,dForecast,dtStudied,true); printf("Era %d -> error %.2f %% forecast %.2f",count,dError,dForecast); } ChartScreenShot(0,(string)FileName+(string)IntegerToString(count)+".png",750,400); } Dream(SleepPeriod); //-- Dormir. printf("Período do sonho = %.2f !",SleepPeriod); }
Você poderia testar e depois comentar como fez isso? De repente, os "sonhos" poderiam ajudar a IA?
P.S.
SleepPerriod=1;
Adicionei a
SleepPeriod
SleepPeriod + (Delta++)
onde Delta=0. Mas meu computador é muito, muito fraco.... :-(
- 2022.11.29
- www.mql5.com
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Novo artigo Redes neurais de maneira fácil (Parte 34): Função quantil totalmente parametrizada foi publicado:
Continuamos a estudar os algoritmos de aprendizado Q distribuído. Em artigos anteriores, já discutimos os algoritmos de aprendizado Q distribuído e de quantil. No primeiro, aprendemos as probabilidades de determinados intervalos de valores. No segundo, aprendemos intervalos com uma probabilidade específica. Em ambos os algoritmos, utilizamos o conhecimento prévio de uma distribuição e ensinamos a outra. Neste artigo, vamos examinar um algoritmo que permite que o modelo aprenda ambas as distribuições.
Esta abordagem permite treinar um modelo que é menos sensível ao hiperparâmetro do número de quantis. E sua distribuição aleatória torna possível ampliar a gama de funções aproximadas para funções não uniformemente distribuídas.
Antes de ser inserido na entrada do modelo, é criado uma incorporação de quantis gerados aleatoriamente, utilizando a fórmula apresentada abaixo.
Durante o processo de combinação da incorporação resultante com o tensor de dados de entrada, existem várias possibilidades. Isso pode ser feito através de uma simples concatenação de dois tensores ou por meio da multiplicação adamar (elemento por elemento) de duas matrizes.
Abaixo está uma comparação das arquiteturas consideradas, conforme apresentadas pelos autores do artigo.
A eficácia do modelo de aprendizado Q foi confirmada por meio de testes em 57 jogos Atari. Abaixo podemos observar uma tabela comparativa retirada do artigo original [8].
Hipoteticamente, dado o tamanho não limitado do modelo, esta abordagem permite que qualquer distribuição da recompensa prevista possa ser aprendida.
Autor: Dmitriy Gizlyk