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

 
joo:

Pedaço por pedaço - eu entendo.

Eu não entendo as outras opções. Como posso apresentar todos os exemplos ao mesmo tempo? - Ou eu sou estúpido?

Bem você submeteu todos os exemplos de uma vez (calculando o valor total de FF em todos os exemplos), os algoritmos de treinamento são diferentes, bekprops por exemplo submete um exemplo de cada vez em ordem aleatória, mas percorre toda a lista de exemplos várias vezes, então por que não dar ao algoritmo todos os exemplos de uma vez, e já os dará à grade de acordo com sua lógica.

HZ não é burro e simplesmente não sei o que eu estava pensando lá, eu vou consertar tudo com explicações.

ZZZY Ainda agora não está pronto para explicar tudo, eu próprio compreenderia :)

 
gpwr:

Rebyata, ya budu seldom syuda zahodit'. Esli est' voprosi ou interes k sovmestnim razrabotkami, pishite na moy yahoo email (ukazan v profile).

Boa sorte com o projecto EngiNeuro!

Obrigado Vladimir, mantenha visitas frequentes :)

Urain:

Tudo de uma vez

Eu também costumava pensar que pedaço por pedaço é o melhor. Mas não. Os algoritmos de gradiente são projetados exatamente para erro cumulativo, então se você se alimentar pela peça, não é exatamente uma descida de gradiente.

Portanto, só tudo de uma vez, pelo menos para a alimentação

 
TheXpert:

Obrigado, Vladimir! Volte mais vezes :)

Eu também costumava pensar que pedaço por pedaço era o melhor. Mas não. Os algoritmos de gradiente são projetados exatamente para erro total, então se você se alimentar pela peça, não é exatamente uma descida de gradiente.

Portanto, só de uma vez, pelo menos para a alimentação.


Sim, depende da implementação do algoritmo, estou a fazer um brainstorming agora se me tiver esquecido de alguma coisa?
 

Notas sobre a formação NS

1) Função Fitness (função de aprendizagem)

Qualquer processo de aprendizagem de NS resume-se a encontrar um máximo (mínimo) funcional no espaço de argumentos adaptativos (no nosso caso, este é o espaço de pesos).

2) MSE

A versão clássica da função é MSE(erro quadrático médio)

Para isso, as derivadas parciais para cada parâmetro adaptativo podem ser facilmente encontradas, o que permite o uso de ajuste de gradiente de pesos.

Para cada exemplo, que é alimentado pela entrada do NS, obtemos a resposta da rede - y, e temos uma 'resposta correta' - y'.

Para o método de aprendizagem incremental, os pesos são ajustados após cada exemplo. Neste caso MSE=MÓDULO(y-y')

Para o método por lotes, os pesos são ajustados após a execução de toda a amostra de treinamento. Aqui MSE=ROUND((AMOUNT(y-y'))^2)

A principal desvantagem do MSE é que você precisa ter a resposta "certa" para cada exemplo

Esta funcionalidade é útil, por exemplo, para a reconstrução de um algoritmo indicador "desconhecido", se os seus valores "correctos" em cada barra forem conhecidos

3) Funcionalidade não-padronizada

Uma gama mais ampla de tarefas pode ser resolvida utilizando funcionalidades não padronizadas

Por exemplo, para buscar estratégias de operação sintética pode-se usar neuronets que são treinados, por exemplo, para maximizar o funcionamento do F=Profit/MaxDownload

Aqui a estimativa é feita após o treinamento completo, porque você pode avaliar o desempenho da estratégia somente no final do período

Nota muito bonita - não precisamos de ter a resposta correcta para cada bar

Há um "mas" desagradável: não há possibilidade de encontrar a derivada parcial do funcional para cada peso, portanto métodos gradientes de construção de pesos são inaceitáveis - devemos usar métodos estocásticos, como a GA

É aqui que entram os GPUs - ainda não há alternativa orçamental para eles

P.S.

Ao contrário do otimizador de parâmetros de cada estratégia comercial em particular, as redes neurais permitem "crescer" algoritmos totalmente sintéticos de estratégias comerciais )))

E o potencial de tal abordagem é muito grande.

 

Estou preparando uma função para salvar a grade em um arquivo de lixo. Toda a informação é facilmente encriptada num conjunto de ulongs, mas o que fazer com os pesos que eu não consigo perceber.

Eu gostaria de usar a função de salvar a matriz padrão.

Alguém tem um algoritmo de encriptação dupla restaurável em ulong?


Eu acho que uma grade deve ser salva em um formato simples adequado para MQL5 (eu a tomei como base), e então eu tenho que usá-la para escrever conversores para diferentes formatos de pacotes de redes neurais diferentes.

 
Urain:

Estou preparando uma função para salvar a grade em um arquivo de lixo. Toda a informação é facilmente encriptada num conjunto de ulongs, mas o que fazer com os pesos que eu não consigo perceber.

Eu gostaria de usar a função de salvar a matriz padrão.

Alguém tem um algoritmo para encriptação restaurável de duplo em ulong?


Eu acho que a grade deve ser salva em um formato simples, adequado para uso em MQL5 (tomando-a como base), e os conversores para diferentes formatos de pacotes de redes neurais diferentes devem ser escritos a partir desse formato.


Porque é que o FileWriteArray não lhe fica bem? Eu não entendo o problema. Pode dar-nos um exemplo?

De qualquer forma, a configuração da grade em um arquivo e os pesos em outro.

Não vejo o que é mais conveniente para a MQL, e não vejo porque precisamosrestaurar a criptografia, pois ela causará freadas desnecessárias.

 
her.human:

O que há de errado com o FileWriteArray? Eu não entendo o problema. Pode dar-nos um exemplo?

Em qualquer caso, a configuração da grade em um arquivo e os pesos em outro.

Não vejo o que é mais conveniente para o MQL, e não vejo porque precisorestaurar a encriptação, pois isso causará travagens desnecessárias.

Sim, será lento (de acordo com a minha estimativa, serão necessários 5 segundos para encriptar 1 milha de pesos), eu só quero armazenar tanto os pesos como a estrutura da grelha num só ficheiro, e não me interessa quantos ficheiros serão necessários, eu vejo conveniências nele.

Para FileWriteArray apenas e quer afiar, mas há um array ulong formando uma descrição da rede (número de camadas, número de neurônios, tipos de neurônios, a relação entre eles) e é anexado um array de pesos, mas em duplicatas,

como enfiar tudo isto num único ficheiro bin (assumindo que o particionamento não é claro, o próprio particionamento é codificado nos primeiros números da grelha) ?

 
Urain:

0. Estou a preparar uma função para guardar a grelha num ficheiro do lixo. Toda a informação é facilmente encriptada num conjunto de ulongs, mas o que fazer com os pesos que eu não consigo perceber.

Eu gostaria de usar a função de matriz padrão, mas não sei o que fazer.

1. Alguém tem um algoritmo de encriptação dupla recuperável para ulong?


Eu acho que uma grade deve ser salva em um formato simples, adequado para uso em MQL5 (tomando-a como base) e depois traduzi-la em diferentes formatos de vários pacotes de redes neurais.

0. É extremamente prematuro. Primeiro você tem absolutamente que esclarecer e concordar sobre todo o conjunto de dados, mapeados sem ambiguidade na estrutura e configuração da grade, em um nível lógico. O armazenamento físico não é, de forma alguma, um problema.

1. É fácil. Em mql5 existe um furo especial para tais conversões - estruturas de diferentes tipos podem ser atribuídas umas às outras sem limitações, desde que tenham o mesmo tamanho.

// ulong e duplo são exactamente o mesmo.

Para um exemplo perverso veja aqui : https://www.mql5.com/ru/forum/3775/75737#comment_75743

2. Mmmm... Por um lado eu concordo - o formato deve ser conveniente e simples, por outro lado deve ser muito universal, como o xml. Talvez planejar duas opções (o máximo possível): um texto, o outro binário. E btw -- veja #0.

---

Tenho andado por este ramo, ainda hesitando em interferir ou não... Por isso não consegui resistir.

Ocorre-me um pensamento. Um. // Quero dizer, tenho muitos pensamentos, mas apenas um. :)

A idéia é esta: o código da grade deve ser gerado após a configuração preliminar no "grid-editor" (configurador). // Esta ideia já foi sugerida muitas vezes e não me lembro de ter sido rejeitada.

Assim, o esquema - representação intermediária obrigatória (por exemplo, como um arquivo xml-) contendo informações completas sobre a estrutura do neurônio.

Uma representação intermediária é cuidadosamente pensada, analisada quanto à completude e outras complexidades, validada e fixado por.

Só depois disso é possível codificar (separadamente): (1) Todos os tipos de configuradores de grelha, (2) Codogeradores - traduzindo a representação intermédia em código mql5.

Pode haver várias implementações de ambas - o que é bom e correcto.

 
Urain:

Sim travões serão (1 mil pesos pela minha estimativa vai encriptar 5 segundos), só quero e peso e o dispositivo de grelha num ficheiro para armazenar, e depois espalhar um monte de ficheiros e o próprio diabo vai partir uma perna, nisto eu vejo a conveniência.

Eu quero aguçar o FileWriteArray, mas eu tenho uma descrição de rede com array ulong forming (número de camadas, número de neurônios, tipos de neurônios, conexões entre eles) e um array de pesos anexados a ele, mas em duplicatas,

como colocar tudo num único ficheiro bin (assumindo que o particionamento não é claro, o próprio particionamento é encriptado nos primeiros números da grelha) ?

Categoricamente contra empurrar tudo em um só arquivo. Descrição da rede separadamente - pesos separadamente. Caso contrário, outros problemas desnecessários irão surgir.

 
Porquê um caixote do lixo? Um ficheiro de texto simples não seria melhor, para que possa olhar para ele com os seus olhos?