Discussão do artigo "Redes neurais de maneira fácil (Parte 34): Função quantil totalmente parametrizada"

 

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

 

Muito 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


Obrigado


 
Arjang Aghlara #:

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.... :-(

Обсуждение статьи "Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция"
Обсуждение статьи "Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция"
  • 2022.11.29
  • www.mql5.com
Опубликована статья Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция : Автор: Dmitriy Gizlyk...
 
Adicionamos a camada FQF como a última camada da rede neural?
 
A arquitetura nn é semelhante à do artigo anterior, exceto pela última camada?
 
happy side #:
A arquitetura nn é semelhante à do artigo anterior, exceto pela última camada?

Sim