Artigo: Previsão de preços com redes neurais - página 14

 
Neutron, o efeito suavizante de aumentar o número de entradas é legítimo. Mas o atraso pode ser determinado por muitos fatores, tanto pela falta desses inputs quanto por possíveis imperfeições da rede, talvez sub-treinamento. É outra questão se isto, com todo o "+" aos critérios acima, der um atraso.
 
Neutron:

Isto mostra os resultados dos testes da capacidade de previsão das duas NS.


A figura mostra em vermelho a série temporal original (RT), em azul a previsão a 1 barra à frente da rede linear de uma camada, e em verde a rede não linear de duas camadas. A profundidade de imersão é a mesma em ambos os casos. Pode-se ver que para este caso artificial existe um resíduo marcado dos dados previstos no gráfico de tendência da BP. Será que meus colegas experientes observam esse efeito e, em caso afirmativo, a que poderia estar relacionado?

Sua rede está de alguma forma se comportando de forma estranha - está recebendo o mesmo conjunto de dados de entrada na seção de tendências e está recebendo previsões diferentes (está recebendo uma linha quebrada na trama enquanto deveria estar reta). A este respeito, as questões são:

1) Quantos neurônios existem nas camadas intermediárias da rede?

2) Quantas entradas?

3) o que é alimentado com os insumos?


Em relação ao atraso nas previsões sobre a tendência. É assim que deve funcionar. Você alimentou cerca de 30 vetores de treinamento na rede, onde valores ascendentes consecutivos de 0,1 geraram um aumento de 0,1, e alimentou 1 vetor onde os mesmos valores ascendentes consecutivos geraram uma queda de 3. Você treinou a rede sobre dados inconsistentes. Assim, calculou a média das 31 previsões contraditórias de vocês.


Também construí uma NS de 2 camadas. Com 3 entradas e 3 neurônios intermediários. As entradas eram valores incrementais. Para comparar, treinei esta rede uma vez em todos os dados e, pela segunda vez, excluí os outliers do treinamento - ou seja, todos os vetores de treinamento que continham valores muito grandes em entradas, ou seja, aquele colapso muito abrupto por 3. A diferença é evidente:

 
rip:
slava1:
Bem, você pode discutir sobre isso por muito tempo quem entende o que eles entendem, ou não entendem. A conversa foi sobre a preparação dos dados. Entendo que ninguém quer discutir esta questão aqui. Pena

Se você quiser dar uma palestra sobre como preparar dados para o treinamento NS, eu não acho que deva ser feito neste fórum, poucas pessoas estariam interessadas nele aqui.

Bem, você está errado! Eu acho que seria interessante ler a experiência dos praticantes, como eles fazem

 
ds2:

Sua rede está se comportando de forma estranha - recebe os mesmos conjuntos de dados de entrada na seção de tendências, mas dá previsões diferentes (aparece como uma linha quebrada no gráfico, enquanto deve ser reta). A este respeito, as questões são:

1) Quantos neurônios existem nas camadas intermediárias da rede?

2) Quantas entradas?

3) o que é alimentado com os insumos?


Em relação ao atraso nas previsões sobre a tendência. É assim que deve funcionar. Você alimentou cerca de 30 vetores de treinamento na rede, onde valores ascendentes consecutivos de 0,1 geraram um aumento de 0,1, e alimentou 1 vetor onde os mesmos valores ascendentes consecutivos geraram uma queda de 3. Você treinou a rede sobre dados inconsistentes. Assim, calculou a média das 31 previsões contraditórias de vocês.


Também construí uma NS de 2 camadas. Com 3 entradas e 3 neurônios intermediários. A entrada foi alimentada com valores incrementais. Para comparar, treinei esta rede uma vez em todos os dados e, pela segunda vez, excluí os outliers do treinamento - ou seja, todos os vetores de treinamento que contêm valores muito grandes em entradas, ou seja, aquele colapso muito abrupto por 3. A diferença é evidente:

ds2, e a todos que responderam, muito obrigado por sua atenção e conselhos sensatos - isso realmente ajudou. A questão é que eu limitei o número de ciclos de treinamento (acredito que se chama Epochs) a 100 vezes para acelerar a previsão em minha rede. É claro que isso não foi suficiente, de modo que a rede não estava aprendendo adequadamente. Depois de aumentar o número de épocas para 1000, tudo funcionou bem - tique a tique (bem, quase).

Eu tenho uma rede de duas camadas com não-linearidade na forma de tangente hiperbólica, com o número de neurônios em uma camada oculta 2 e o número de sinapses d*2+2, onde d é uma dimensão da entrada NS. Eu tenho d=2, para o caso mostrado na fig. e o número de vetores de treinamento é 6. O número de vetores na amostra de treinamento é igual ao número de sinapses, então vejo que a rede não se retrai e não tenta suavizar a previsão, o que me permite rastrear os saltos de preço de forma mais eficaz. Para treinamento eu também alimentei uma seqüência de valores incrementais como entrada. Ainda não estou familiarizado com a bela arte de preparar os dados de entrada (quero dizer seus "picos excluídos do treinamento pela segunda vez"), mas espero dominar esta arte muito em breve.

Aqui está um resultado pré-interessado:


É uma previsão de um passo à frente com re-treinamento em cada passo de uma única camada de NS não linear com UMA entrada! e amostra de treinamento = 2 vetores com um elemento em cada um.

Estou arrebatado....

Acontece que as Redes Neron e a Inteligência Artificial não são simples, mas muito simples!

 
Neutron:
ds2:

Sua rede se comporta de forma estranha - recebe os mesmos conjuntos de dados de entrada na seção de tendências, mas dá previsões diferentes (aparece como uma linha quebrada no gráfico, enquanto deve ser reta). A este respeito, as questões são:

1) Quantos neurônios existem nas camadas intermediárias da rede?

2) Quantas entradas?

3) o que é alimentado com os insumos?


Em relação ao atraso nas previsões sobre a tendência. É assim que deve funcionar. Você alimentou cerca de 30 vetores de treinamento na rede, onde valores ascendentes consecutivos de 0,1 geraram um aumento de 0,1, e alimentou 1 vetor onde os mesmos valores ascendentes consecutivos geraram uma queda de 3. Você treinou a rede sobre dados inconsistentes. Assim, calculou a média das 31 previsões contraditórias de vocês.


Também construí uma NS de 2 camadas. Com 3 entradas e 3 neurônios intermediários. As entradas eram valores incrementais. Para comparar, treinei esta rede uma vez em todos os dados e, pela segunda vez, excluí os outliers do treinamento - ou seja, todos os vetores de treinamento que continham valores muito grandes em entradas, ou seja, aquele colapso muito acentuado por 3. A diferença é evidente:

ds2, e a todos que responderam, muito obrigado por sua atenção e conselhos úteis - isso realmente ajudou. A questão é que eu limitei o número de ciclos de treinamento (acredito que se chama Epochs) a 100 vezes para acelerar a previsão em minha rede. É claro que isso não foi suficiente, de modo que a rede não estava aprendendo adequadamente. Depois de aumentar o número de épocas para 1000, tudo funcionou bem - tique a tique (bem, quase).

Eu tenho uma rede de duas camadas com não-linearidade na forma de tangente hiperbólica, com o número de neurônios em uma camada oculta 2 e o número de sinapses d*2+2, onde d é uma dimensão da entrada NS. Eu tenho d=2, para o caso mostrado na fig. e o número de vetores de treinamento é 6. O número de vetores na amostra de treinamento é igual ao número de sinapses, então vejo que a rede não se retrai e não tenta suavizar a previsão, o que permite rastrear os saltos de preço de forma mais eficaz. Para treinamento eu também alimentei uma seqüência de valores incrementais como entrada. Ainda estou longe da bela arte da preparação dos dados de entrada (quero dizer, seus "picos excluídos do treinamento pela segunda vez"), mas espero aprender o truque em breve.

Para melhorar a amostra, tente ampliar a série de treinamento, digamos, por este princípio:

há dois valores adjacentes da série - x1,x2 no intervalo eles adicionam x1,2 = (x1+x2)/2


Este método funciona bem para séries cronológicas com alta correlação de valores vizinhos.

O caso de um fluxo de citações é exatamente isso.

 
Neutron:


Aqui está um resultado pré-interessado:


Esta é uma previsão de um passo à frente, com um treinamento de reciclagem em cada passo de uma única camada de NS não-lineares com UMA entrada! e uma amostra de treinamento = 2 vetores com um elemento em cada um.

Estou arrebentando...


Posso pedir-lhe que poste o arquivo de dados brutos a partir do qual os vetores de treinamento foram gerados?

 

Como deve ser o formato do arquivo para que você possa lê-lo. A questão é que eu escrevo minha própria NS do zero e uso os dados em um formato com o qual eu me sinto confortável.


Для улучшения выборки попробуйте расширить обучающий ряд, скажем по такому принципу:

Há dois valores adjacentes de uma série - x1,x2 entre eles adiciona x1,2 = (x1+x2)/2

Este método funciona bem em séries temporais, com alta correlação de valores adjacentes.

O caso das citações de streaming é exatamente isso.

Este caso é adequado para séries positivamente correlacionadas. O preço VR tem uma correlação negativa significativa entre amostras vizinhas, portanto, este método não será correto.

Mais uma coisa. Seria bom se os estimados usuários do fórum publicassem argumentos razoáveis a favor de uma maior capacidade de previsão de NS de 2 camadas em relação a NS de camada única, sendo todas as outras coisas iguais.

Como opção. Abaixo você pode encontrar um arquivo zip com um vetor de teste, que é mostrado na Fig. Corte-o você mesmo como achar melhor.

Arquivos anexados:
rnd.zip  1 kb
 
Neutron:

Estou arrebentando...

Acontece que as Redes Nero e a Inteligência Artificial não são apenas, mas muito simples!


Eu ainda não tentei praticamente aplicar NS (embora eu pareça ser levado lá no contexto da última idéia), mas de uma perspectiva humana o vetor de teste consiste em dependências muito simples (cerca de dois ou três parâmetros) e deve ser muito facilmente aproximado de forma fragmentada. Eu suspeito que é exatamente isso que a NS faz. Um rearranjo rápido pode ser uma conseqüência da simplicidade da NS, ou seja, neste caso, a memória curta é uma bênção.

 

Em geral, Candidato, eu concordo com você, mas quero ir mais fundo... Por exemplo, quão justificada é a complicação de NS (camadas ocultas).

E, na verdade, estou louco! A questão é que se você representa a não linearidade da NS de uma certa forma, você pode obter a solução analítica exata para os pesos. Isto, por sua vez, significa que será possível recusar o método de Propagação Inversa do Erro para treinamento da rede e obter o resultado o mais preciso possível em uma única ação, sem nenhuma das 1000 épocas de treinamento!!!


P.S. Esqueci de avisá-lo que uso uma sinapse com um nível constante de excitação em cada neurônio.


Adendo.

Trouxe-o, trouxe-o e carregou-o ;-)

Esta é a solução analítica "FINA" para as escalas de uma única camada de NS não linear:

Isso me fez sorrir.

Mas o cálculo completo leva um milissegundo.
 

Explique-me isto como "neurocientista" novato... Entendo que a rede em questão é um perceptron de várias camadas.

Qual a razão para escolher este tipo de rede, por que não Hopfield ou Kohonen ou algo mais?

Razão: