NS + indicadores. Experiência. - página 11

 
Figar0 >>:

Пора поднять веточку, все-таки она посвящена входам НС и новую тему заводить не стану...

Появилась пара совсем простых теоритических вопросов-раздумий.

*

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

*

Два). Хочу услышать мнение опытных или считающих себя таковыми нейросетевиков, как далеко должны быть входы от цены в нащей прикладной задаче прогнозирования ценового ВР? Мои опыты показывают, что использование всяческих индикаторов, "производных N-го порядка" от цены, в лучшем случае, вообщем-то ничего не дает. Цена, максимум сглаживание, экстремумы, все остальное от опиум для НС.. Не считаете?

Em) As informações são "tautológicas" para você, para mim, para muitos outros programadores μl... Você já tentou uma correlação mútua e viu como as entradas estão correlacionadas? Fora da área de aprendizagem, por experiência própria, a diferença só aparece devido à não-estacionariedade da entrada...

Dois)Quanto a "quão longe os insumos devem estar do preço" - pelo contrário, para mim, o uso de derivativos melhora o critério... Pessoalmente, acho que não. O que as entradas devem ser depende da saída, o problema depende de como você se propõe (mais ou menos falando).

 
Figar0 >>:

Ать). Подавая в НС варианты входов, которые утрировано выглядят примерно так:

а) Open[0]-Open[1], Open[0]-Open[2], Open[0]-Open[3], Open[0]-Open[4],..., Open[0]-Open[N]

б) Open[0]-Open[1], Open[1]-Open[2], Open[2]-Open[3], Open[3]-Open[4],..., Open[N-1]-Open[N]

рассчитывал получить примерно одинаковый результат. Все-таки входы весьма тавтологичны. Ан нет, результаты далеко не всегда даже рядом лежат, как и на участке обучения так и вне его. Пробовал разные варианты сетей, разные нейросетевые пакеты, везде картина примерно одинакова... Почему? несовершенство механизма обучения? "Слабость" сети? Многого от нее хочу?

À primeira vista, as informações alimentadas pela rede nos casos a) e b) são de fato tautológicas. O cérebro, através dos olhos, recebe informações gráficas sob a forma de fórmulas escritas.

Os símbolos das fórmulas em si não trazem nenhuma informação útil para o cérebro, a informação está contida nos valores desses símbolos.

Praticamente não vê a diferença no início. Eu não o vi. :)

Ela não vê a diferença até começar a entender que números estão escondidos sob os sinais das fórmulas. É aqui que fica imediatamente claro qual é a diferença, Uma grande diferença.


Aqui está uma captura de tela do gráfico a),

Vemos uma linha quase perfeita do infinito para o valor da diferença entre Open[0]-Open[1]:



Vejamos agora o gráfico b):



A diferença, como eles dizem, é óbvia! No segundo caso, o valor de nossa função "salta" em torno de 0, em limites bem definidos.

Qualquer NS tem limites de sensibilidade de insumos determinados pela função de ativação dos neurônios e limites de pesos. A rede não pode ser obrigada a aprender algo que não tenha aprendido dentro dos padrões da função de aprendizagem e dentro de seus limites de sensibilidade. Isto significa que o NS pode calcular corretamente apenas nos dados de entrada, mesmo que não tenha sido na amostra de treinamento, mas ao mesmo tempo, se os valores submetidos à entrada pertencem à área de determinação da função de treinamento e estão dentro da sensibilidade da rede. Estas são duas condições necessárias, sob as quais qualquer NS funciona corretamente.

Figar0 >>:
Dois). Quero saber a opinião de profissionais experientes ou considerem-se experientes em redes neurais, até que ponto os insumos devem estar longe do preço em nosso problema aplicado de previsão de preço VR? Minha experiência mostra que a utilização de todos os tipos de indicadores, "N-ésima ordem de derivados" do preço, geralmente não dá nada na melhor das hipóteses. Preço, suavização máxima, extremos, tudo o mais do ópio NS. Você não acha?

Os indicadores derivados do preço, que têm principais diferenças entre eles nos princípios de cálculo, podem e devem ser utilizados. Barras vizinhas separadas por si só não trazem nenhuma informação útil. Informações úteis só podem ser obtidas se considerarmos a interação de "grupos" de barras, ou, em outras palavras, "janelas".

 
joo писал(а) >>

À primeira vista, as informações alimentadas pela rede nos casos a) e b) são de fato tautológicas.

Aqui está uma captura de tela do gráfico a),

Algo me diz que você não interpretou graficamente a) corretamente a fórmula.

Seu gráfico é algo como (variante de):

f[0] = Aberto[0]-Abrir[1] Vejo.

f[1] = Aberto[0]-Aberto[2] Isto é, olhando para o futuro?

Ou substituir Open[0] pelo valor atual, ou seja

f[1] = Aberto[1]-Aberto[2] i.e. fórmula b)

Ou ahem.

f[1] = Aberto[1]-Aberto[3] Mas isso não decorre do contexto

Pelo que entendi (pelo menos era isto que eu tinha em mente com "experimentos" semelhantes com inputs), tudo isso é uma matriz de dígitos N-1 no "ponto 0", ou seja, f[0][N-1].

no ponto f[1][N-1] será Open[1]-Open[2], Open[1]-Open[3], ...

Isso significa que se deve desenhar um plano n-1-dimensional.

O fato de os resultados serem diferentes é natural. Mas eu ainda não decidi quais entradas são "mais corretas" (para as mesmas saídas).

SZY. Eu procurei há muito tempo e em "caixas pretas".

 
SergNF >>:

Что-то мне подсказывает, что Вы не правильно графически интерпретировали формулу a).

E você está consultando este "Algo" para nada.

Faça um indicador e veja.

SergNF >>
O

fato de os resultados serem diferentes é natural

.

Mas quais entradas são "corretas" (para as mesmas saídas)

eu

ainda não decidi.

O que você quer dizer com os resultados são diferentes? Que entradas são as mesmas que saídas! E quais deles são "corretos", descreveu o posto acima.

 
joo писал(а) >>

E você está recebendo conselhos desse "Algo" para nada.

Você provavelmente está certo :)

Faça um indicador e veja.

Top "gráfico" do vetor de entrada!!!!! DBuffer[i]=Fechar[i]-Fechar[i+DP período];

"gráfico" inferior do vetor de entrada!!!!! DBuffer[i]=Fechar[i+DP período]-Fechar[i+DP período+1];


O que se segue é uma análise lingüística do posto original e... Novamente à questão da exatidão da redação nos ToR. ;)

 
SergNF >>:

Наверное Вы правы :)

Верхний "график" входного вектора!!!!! DBuffer[i]=Close[i]-Close[i+DPeriod];

Нижний "график" входного вектора!!!!! DBuffer[i]=Close[i+DPeriod]-Close[i+DPeriod+1];


Дальше будет лингвистический разбор исходного поста и ... опять к вопросу о корректности формулировок в ТЗ. ;)

Sim, portanto, o ToR do questionador não é bom, já que duas pessoas interpretaram a questão de forma diferente. :)

Devemos esperar que Figar0 veja o que ele tem a dizer.

 
StatBars писал(а) >>

O que as entradas devem ser depende da saída (tarefa), a tarefa (saída) de como você se propõe (mais ou menos falando).

Quais podem ser as saídas? Os sinais segundo os quais esperamos obter o crescimento suave da equidade sem deslizamentos) Embora a tarefa possa de fato ser definida de forma diferente pela NS....

joo escreveu >>

Bem, isso significa que o ToR do questionador não é bom, já que duas pessoas interpretaram a questão de forma diferente. :)

Devemos esperar pelo Figar0, o que ele tem a dizer.

Honestamente, não pensei que houvesse tanta diferença de opinião. O custo da fabricação de NS em seus mundos apertados. SergNF entendeu meu "ToR" corretamente) Dois vetores de entrada, onde um pode ser facilmente obtido do outro e com resultados diferentes na saída. E parece que começo a entender porque eles são diferentes, amanhã farei algumas experiências e tentarei colocar esse entendimento em letras...

 
Figar0 >>:

Какие могут быть выходы? Сигналы, работая по которым надеемся получить плавный рост эквити без просадок) Хотя задачу НС можно действительно поставить по разному....

Os sinais para os quais esperamos obter uma ascensão suave é um tipo de problema, e pode haver muitos princípios, mas muitos ainda serão muito semelhantes (pelo menos em termos de correlação). E a produção foi destinada neste mesmo contexto.

O que você pensa sobre isso?

Concordo que não devemos compartilhar experiências, em qualquer caso, muitas coisas seriam mais fáceis por um lado, e informações importantes sobre o projeto e desenvolvimentos ainda ficariam ocultas, ou seja, por exemplo, tenho algo a compartilhar que facilitará a vida dos outros, mas ao mesmo tempo não revelará meus segredos de forma alguma :)

 
Figar0 писал(а) >>

E acho que estou começando a entender porque diferente, amanhã farei algumas experiências e tentarei colocar esse entendimento em letras...

Bem, parece haver um entendimento definitivo, uma conclusão:

- As entradas a) e b) são as mesmas, e resultados diferentes devido ao mecanismo de aprendizagem imperfeito, e erros de cálculo na conversão de dados. Isto é, se eu usar para aumentos de insumos de qualquer coisa: indicadores, preço, eu ainda vou pegar a diferença do relatório zero ou de pontos adjacentes. Aprendi isso apenas experimentalmente, tendo simplificado o NS até o limite e tornado possível a aprendizagem através da busca completa de pesos. Os resultados coincidem com um centavo...

Depois de digerir esta conclusão, caí no estudo da GA.

StatBars escreveu >>

Concordo que é um desperdício não compartilhar experiências, de qualquer forma, muitas coisas seriam mais fáceis por um lado, e as importantes informações sobre o projeto e os desenvolvimentos ainda permaneceriam escondidas, ou seja, por exemplo, tenho algo a compartilhar que facilitará a vida dos outros, mas, ao mesmo tempo, não revelará meus segredos :)

Definitivamente um desperdício... Não é uma má idéia sincronizar seu relógio pelo menos de vez em quando)

Vou começar por mim mesmo. No momento estou preparando minhas redes em MQL, e estou treinando-as apenas no testador/optimizador do terminal. No entanto, investigo alguns componentes de insumos na Statistic. Esta abordagem tem tanto desvantagens quanto certas vantagens. A maior vantagem é aprender a rede diretamente no ambiente de aplicação e você pode ensiná-la até o objetivo final - o lucro. Como arquitetura, parei experimentalmente no MLP com poucas camadas: entrada, saída e uma ou duas escondidas. IMHO mais do que suficiente aproximador. No momento, estou pensando em acrescentar ligações em atraso ao MLP. O número de entradas utilizadas ~ 50 a 200, mais complicaria a arquitetura e o treinamento, e eu acho que seria redundante.

Talvez algumas de minhas descrições sejam estranhas, talvez não, mas eu sou um neuro-rede autodidata, além do mais, protegendo ciosamente meu cérebro do excesso de literatura empoeirada)

 

Utilizo MQL para pré-processar dados, carregá-los para o formato interno e analisar os resultados da rede. Eu só treino redes em NSH2. É claro que também existem redes no MCL e C++, mas NSH2 é melhor...

As redes geralmente não são mais do que as 3 camadas habituais (MLP), mais não é necessário.

A propósito, sobre insumos, no máximo alimentei 128, por alguns experimentos descobri que mais de 20-30 insumos já é um forte excesso, e o mais provável é que a remoção de insumos sem importância melhorará muito o critério de aprendizado. Se menos de 40 entradas, a questão ainda pode ser discutível, mas mais de 40 entradas é 100% exagero.

O critério de aprendizagem é padrão no NSH2 - sko.

Certifique-se de usar uma amostra de teste para evitar a instalação na rede. Além disso, a divisão da amostra sequencialmente - a primeira parte da amostra, digamos de 2005.01.01 - 2006.01.01 - amostra de treinamento, amostra de teste - 2006.01.01 - 2006.04.01. Muitos podem duvidar que tal forma de se livrar da reciclagem da rede, mas estou 100% certo de que ela se livra da reciclagem, se você não se livrar, então o problema em outra, ou seja, não recomendo mudar a divisão da amostra, mas ensinar exatamente assim (com 2 amostras). Considere o que é mais importante para você: a rede deve ser estável para começar, mas você precisa trabalhar nela para torná-la lucrativa o suficiente :) Ou a rede é lucrativa, mas você não sabe quando ela não será lucrativa, ou seja, primeiro vemos lucro, e depois descobrimos a estabilidade da rede. Eu não quis dizer um crescimento suave da equidade, mas o fato de que a rede está mostrando resultados diferentes em diferentes testes de avanço (drenos de depoimento e vice versa).

A primeira é mais importante para mim pessoalmente, pois estou me desenvolvendo nesta direção. Agora eu alcancei certos resultados, por exemplo: (já o disse no fórum, mas repito) há "amostra geral", eu treino a rede em cerca de 20-30% da amostra geral e após o treinamento a rede funciona igualmente em todos os lugares, em toda a amostra, e a data da "amostra geral" é de 2003 até agora.

Com a rentabilidade da rede, também, já cheguei muito perto de uma solução. A rede reconhece 84% das amostras e 87% é um limiar mínimo para um crescimento estável e suave de

equidade. Quando comecei a resolver este problema, a taxa de reconhecimento era de 70%.