O "New Neural" é um projecto de motor de rede neural Open Source para a plataforma MetaTrader 5. - página 12

 
NeuroOpenSource:
Teria de ser algo para codificar. Ainda estamos à espera que o administrador do projecto discuta o plano de implementação.

Na verdade, a opção é inscrever-se no mesmo sorsforge e começar...

Mas provavelmente é melhor esperar que os Metakwots criem o ambiente certo.

 
A propósito, não é uma má ideia pensar em paralelismo. Só que eu não faço ideia de como pode ser implementado.
 
TheXpert:
A propósito, não é uma má ideia pensar em paralelismo. Só que eu não faço ideia de como pode ser implementado.
Não há maneira de fazer isso na minha opinião, a não ser que o comité de rede seja paralelo de alguma forma.
 
TheXpert:
A propósito, é bom pensar no paralelismo. Só que não tenho ideia de como implementá-lo.

Andrey, eu verifiquei sua mensagem sobre recorrência, você está certo, a recorrência é 1,5 vezes mais lenta e limitada em profundidade, então os loops ganharam sem ambigüidade.


Não se preocupe com a paralelização, até que haja API para o processador gráfico não vale nada, as redes neurais são tarefas muito simples para a paralelização entre núcleos (a chamada de linha leva centenas de ciclos de relógio).

A menos que a MQ nos forneça API para redes neurais pelo menos, mas isso requer a formalização da rede universal. Então primeiro um projecto, e depois bater à porta dá-me um API para a GPU.

 

Eu fiz uma foto explicativa do código na página 5:

As amarelas são células de memória ligadas (para ser mais preciso, elas são uma e a mesma célula de memória, referindo-se apenas a diferentes objetos de memória),

os outros, associações de objetos de memória, vermelho seguinte, verde prev, lado azul.

A direcção da seta indica a direcção em que o ponteiro está a ser passado.

A célula zero da memória do operador de atraso é utilizada como célula de saída da memória.


A memória é ligada em ordem inversa, pois uma entrada tem apenas uma saída (da qual recebe dados), mas não o contrário.

Bem, provavelmente é intuitivamente claro que círculos são entradas, pesos quadrados, triângulos operador de atraso (zero operador célula Z saída de neurônio).

ZZZY O esquema é definitivo e não o vou alterar mais :o)

 

1. Imha, o mais importante é especializar-se em negociação e aqui é importante sistematizar o pré-processamento dos dados de entrada. Tanto sinais discretos (por exemplo, um avanço de um certo extremo ou mudança de preço dentro de um período de tempo que exceda algum limite) como sinais contínuos (por exemplo, distância entre 2 rodas ou mudança de preço dentro de um período de tempo) devem ser inputs. É claro que a NS pode obter aprendizagem discreta com as contínuas, mas depois vai para o black-boxing e nem sempre é necessário. Em geral, para os inputs precisamos de uma classe separada, onde o cálculo do preço-acção será definido por um método virtual e os utilizadores podem seleccionar entre os já escritos, ou escrevê-los eles próprios.

2. o EA padrão é essencialmente o mesmo que os sinais elementares de ação de preço e álgebra booleana com eles (e/ou/não). Portanto, a EA padrão também pode ser descrita sob a forma de NS de uma determinada topologia e pesos de ajuste. Talvez uma boa opção - o conversor automático de EAs padrão em NS (é difícil de fazer :)), ou pelo menos permitir projetar os NS usando padrões lógicos booleanos. A fim de dar um ponto de partida para a criação de uma lógica, do ponto de vista do comércio, NS, mas não apenas um conjunto de camadas com alguma topologia.

E também para adicionar elementos de álgebra booleana à NS construída. Por exemplo, nós construímos um CS e queremos verificar a influência de um simples filtro sobre ele, por exemplo, compramos quando o preço é mais alto que МА200 e vendemos - vice versa. É claro que podemos entrar numa nova entrada e voltar a treinar a rede, etc. Ou podemos simplesmente adicionar este filtro como lógica booleana e verificar a sua influência no resultado.

Ou seja, trata-se de combinar intuitivamente a lógica booleana e a NS em diferentes fases do design TS.

3. é lógico fazer uma oportunidade de corrigir algumas conexões para que elas não participem do treinamento subseqüente. Ou seja, há uma espinha dorsal do sistema que não deve ser reconstruída com frequência, e há uma parte mais frequentemente adaptável. A reaprendizagem de todos os pesos é um aumento da adaptação.

4. não é mau, se a espinha dorsal do ponto 3 puder ser seleccionada automaticamente. Isto é, por exemplo, temos uma secção de testes. Está dividido em N partes. NS é treinada sucessivamente em cada parte, mas para que alguma parte dela permaneça fixa (não re-treinada em cada parte).

Isto é, a questão é construir NS robustos que requerem um mínimo de ajuste ao mercado atual.

5. o f-study alvo não deve ser um sucesso individual na previsão (negócios), mas uma característica da curva do patrimônio líquido. Um fator de lucro, por exemplo, ou um fator definido pelo usuário.

6. uma interface visual para a projecção NS é necessária para todas as oportunidades acima referidas e outras.

 

Apenas como um começo, você poderia considerar algum tipo de modelo orientado a objetos de código aberto como http://www.basegroup.ru/library/analysis/neural/fastneuralnet/.

O que faz sentido fazer por analogia, quais são as desvantagens dadas as especificidades da negociação e da MQL5. Ou um modelo open-source mais avançado, de modo a não reinventar a roda :)

BaseGroup.ru :: NeuralBase - нейросеть за 5 минут
  • basegroup.ru
Библиотека компонентов , предназначена для программной реализации нейронных сетей. В качестве примера, созданы компоненты реализующие две нейросетевые парадигмы: рекуррентную нейронную сеть, в нашем случае – это сеть Хопфилда и многослойную нейронную сеть обучаемую по алгоритму обратного распространения ошибки (back propagation). Основным...
 
Avals:

1. Imha, o mais importante é especializar-se em negociação e aqui é importante sistematizar o pré-processamento dos dados de entrada. Tanto sinais discretos (por exemplo, um avanço de um certo extremo ou mudança de preço dentro de um período de tempo que exceda algum limite) como sinais contínuos (por exemplo, distância entre 2 rodas ou mudança de preço dentro de um período de tempo) devem ser inputs. É claro que a NS pode obter aprendizagem discreta a partir de aprendizagens contínuas, mas depois entra no black-boxing e nem sempre é necessária. Em geral, para os inputs precisamos de uma classe separada, onde o método virtual será definido para calcular o preço-ação e os usuários podem selecionar entre os já escritos, ou escrever o seu próprio.

Sim, eu escrevi sobre isso. No entanto, escrevi-o de uma forma diferente. Você pode dar um pequeno exemplo simples de como seria um input de ação de preço?

E também adicionar elementos de álgebra booleana à NS construída. Por exemplo, construímos um NS e queremos verificar a influência de um filtro simples, por exemplo, comprar comércio apenas quando o preço está acima de МА200 e vender vice-versa. É claro que podemos entrar numa nova entrada e voltar a treinar a rede, etc. Ou podemos simplesmente adicionar este filtro na forma de lógica booleana e verificar a sua influência no resultado.

Para que serve colocá-lo na rede? É fácil e simples de verificar sem a rede...

Ou seja, trata-se de combinar uma lógica Booleana intuitiva e compreensível para o ser humano e NS em diferentes fases do design da TC.

Qual é o objectivo da NS, então? Imho, NS deve ser em qualquer caso considerado como uma caixa negra, que converte entradas em saídas.

3. é lógico fazer uma oportunidade de corrigir algumas conexões para que elas não participem da aprendizagem subsequente. Ou seja, há uma espinha dorsal do sistema que não deve ser reconstruída com frequência, e há uma parte mais frequentemente adaptável. Voltar a treinar todos os pesos é para aumentar o ajuste.

E em que princípio? A topologia do poço pode ser alterada (hehe :) ). É possível reduzir a quantidade. Mas para treinar apenas sinapses escolhidas manualmente...

4. seria bom se o nó inalterado do passo 3 pudesse ser selecionado automaticamente. Isto é, por exemplo, temos uma secção de testes. Está dividido em N partes. NS é treinada sucessivamente em cada parte, porém alguma parte de NS permanece fixa (não re-treinada em cada parte).

Basta verificar a operação com a cola. Não se pode livrar do ajuste com tais maquinações de qualquer maneira.

Isto é, a questão é construir NS robustos que requerem um mínimo de sintonia com o mercado atual.

5. o f-study alvo não deve ser o sucesso individual na previsão (negócios), mas uma característica da curva do patrimônio líquido. Fator de lucro, por exemplo, ou um definido pelo usuário.

Não é assim que funciona. Nem todas as entradas podem ser transferidas para a estratégia. Afinal, os NS são separados do TS, eles são independentes. Mas isso pode ser feito ao nível da formação dos inputs/outputs da amostra de formação.

_________________________________

Ou então você tem que estabelecer metas diferentes em geral.

 
TheXpert:

Sim, eu escrevi sobre isso. Mas de uma forma ligeiramente diferente. Você pode me dar um pequeno exemplo simples, como seria um input de ação de preço?

bool F1(período int){

if (High[0]>iHighest(NULL,0,MODE_HIGH,period,1)) retorna(true); else return(false);

}

duplo F2(int ma1P,int ma2P){

return(iMA(...ma1P ...)-iMA(...ma2P....))

}

TheXpert:

Qual é o objectivo de entrar na rede? É fácil e simples verificá-lo sem rede...

Qual é o objectivo da NS, então? Imho, NS deve em qualquer caso ser considerado como uma caixa negra, convertendo entradas em saídas.

Para combinar NS e lógica convencional. A solução da NS pode resolver apenas parte de um problema de negociação, por exemplo, a filtragem e o resultado do seu trabalho será ou comprar ou vender a negociação ou não negociar. Mas os pontos de entrada e saída, assim como outros filtros, podem ser contidos na lógica booleana padrão. Como ensinar o NS necessário, se não deve funcionar sem a parte booleana (dar lucros ou prever mudanças de preços)? Ou seja, cada passo do treinamento NS deve incluir o lançamento do algoritmo na lógica Booleana.

TheXpert:

E em que princípio? Bem, você pode mudar a topologia (hehe :) ). É possível reduzir uma quantidade. Mas você só pode treinar sinapses escolhidas manualmente.

Porque não? :) Por exemplo, um comitê de várias NSs, cada uma resolvendo essencialmente problemas diferentes. Não têm de ser treinados exactamente com as mesmas amostras e com a mesma periodicidade, pois não? Tarefas diferentes requerem períodos de treinamento diferentes.

Existe, por exemplo, uma NS que é bastante boa na identificação de uma tendência/flop. Podemos usá-lo em vários projetos e adicioná-lo a outros NSs, por exemplo. Mas não para o reeducares sempre que precisares de os treinar.

TheXpert:

Basta verificar o seu trabalho na colagem. Não se livrará do ajuste com tais maquinações de qualquer forma.

Acho que é a única forma de funcionar para a NS :)

TheXpert:

Afinal, os NS são separados do TS, eles são geralmente independentes. Mas isso pode ser feito ao nível da formação de entradas/saídas de amostra de treinamento.

E porque não podem ser combinados? Então a NS resolverá apenas uma parte dos problemas, mas será treinada como parte de todo o sistema. E, em geral, combinar o processo de otimização estratégica e treinamento dos NS que faz parte dele, porque é essencialmente a mesma coisa. Isto é, por exemplo, a cada corrida do testador o NS é treinado na amostra. Naturalmente, isto faz sentido se o NS não for um testador autônomo))) preço, mas apenas parte da lógica geral do sistema

 

Não. Não funciona assim.

Falar assim é demagogia. Podemos falar de coisas diferentes sem nos entendermos e chamar-lhes aproximadamente a mesma coisa.