Etiqueta de mercado ou boas maneiras em um campo minado - página 37

 

OK, acho que já descobri qual é o meu erro. Na verdade, percebo que o comprimento do vetor de treinamento é igual ao número de pesos! Porque eu acumulo correções ao comparar a saída de um neurônio com cada amostra do vetor de treinamento, enquanto eu preciso compará-la apenas com a n+1ª amostra. Estou escrevendo um novo código.

É por isso que os gráficos são tão anormais.

 

Aqui, dê uma olhada:


Azul é a amostra de treinamento, vermelho é a amostra de teste. Os valores tangentes estão no canto superior esquerdo da imagem.

Estranhamente, eu tive que remover a inicialização da balança por completo. Somente então os resultados se tornaram repetíveis. Ainda há algumas perguntas, mas já terminei... -:)

Estou anexando a listagem. Desculpe, sem comentários ainda, mas é feito de forma muito simples, sem um monte de funções diferentes - tudo em um procedimento, exceto tangentes e mnc.

Arquivos anexados:
neyrona.rar  132 kb
 

Parece-me que você tem uma lógica muito complicada de numeração do vetor luuch...

Talvez o erro seja uma mistura trivial de índices, ou você está zerando pesos apenas uma vez durante todo o procedimento do conjunto estatístico(W[i]<-0):

Observe que seu vetor D, que é a entrada para o NS, não é recalculado com o conjunto de estatísticas (índice i). Talvez eu esteja errado, porque não estou totalmente familiarizado com isso. Foi mais fácil para mim inserir numeração consecutiva em seu código, e foi o que eu consegui:

Agora, sua garota sente a randomização inicial dos pesos e aprende adequadamente (ambas as linhas passam pela origem). Vermelho é a amostra de treinamento, azul é o exame. Um arquivo com a versão afinada é anexado abaixo.

Arquivos anexados:
modif.zip  16 kb
 

Conhecendo...

Diga-me, Sergey, por que seu neurônio de duas camadas (e você tem dito isso desde o início) não tem função de ativação? E então como mudaria a derivada? Isto é, foi (para o) (1-OUT^2)

e se torna (1-OUT) ?

P.S. Obrigado por sua ajuda

 

Aha! Finalmente entendo como esta coisa funciona. As entradas únicas não são necessárias apenas para o período de aprendizagem, e depois são utilizadas como todas as outras - para dados?

Eu nem pensei em tal coisa! Além disso, as entradas são todas simples - sem hipertangentes. É porque a BP é uma função regular, ou apenas para dar o exemplo?

E outra pergunta: se a menina está ligeiramente subtreinada - bem, dê-lhe apenas 5-7 épocas - então as tangentes de ambos os mncs serão maiores do que a unidade, isso não indica que a menina está olhando para o futuro (não estou falando do seno)?

 

Pode ser rigorosamente demonstrado (citando o trabalho dos matemáticos) que, para uma única camada NS, a ativação da saída por uma função não linear não acrescenta a sua potência computacional em comparação com a saída linear. Portanto, um único neurônio com FA não-linear é um disparate.

Para o bilayer NS, a ativação do neurônio de saída não acrescenta potência computacional (esta arquitetura já tem potência computacional máxima ou igual de todas as arquiteturas possíveis - 3, 4, etc.), portanto, a ativação do neurônio de saída por hipertangente é razoável de se usar se a saída for interpretada como probabilidade de previsão precisa.

No caso de saída linear, a derivada não é (1-OUT) mas simplesmente 1 - é a derivada da função linear y(x)=1*x.

Quanto às entradas individuais, elas são naturalmente utilizadas tanto durante o treinamento quanto durante a operação. Muito bem feito para detectar! Eu perdi este bug. A maneira correta de representar um neurônio é esta:

W[0] é um peso que é sempre alimentado com 1. No caso de um único neurônio, o efeito do uso de uma compensação não é muito perceptível. Embora não seja difícil simular uma situação em que ela teria um papel importante na aceleração do processo de aprendizagem também neste caso.

если девушку слегка недообучить - ну дать её всего 5-7 эпох - то тангенсы обеих мнк будут больше единицы, не говорит ли это о том, что девушка заглядывает в будущее(я не об синусе)?

Não, isso indica apenas uma pequena quantidade de material estatístico e um aprendizado deficiente. Julgue por si mesmo: você não pode saber algo melhor do que realmente é. Este caso limite corresponde a tg()=1 e só pode ser maior que 1 por causa da variação estatística dos dados.

 
Neutron >> :

...cite o trabalho dos matemáticos


-:) Espero que perceba como isso é inútil... pelo menos no meu caso.

Vou ter outra oportunidade neste único neurônio. Preciso ter tudo resolvido na minha cabeça, e quero quebrar o código em blocos simples, e amanhã vou tentar acrescentar outra camada à minha namorada. Mas tenho uma pergunta um tanto tola: ao reescrever o código de Matkad para MQL, como você verifica o que foi feito? Você não pode reescrevê-lo diretamente - o Matcad é um ambiente diferente e sua lógica de programa não é a mesma que na MQL.

 

É aí que as coisas se complicam!

Por exemplo, eu produzo a tangente de inclinação (no caso de entradas válidas) como uma característica integral do desempenho de NS ou porcentagem de sinais corretamente adivinhados (no caso de sinais binários) e a comparo com os do Matcad. No entanto, até este ponto, é preciso peripiscar NS-ka pelo padrão MCL, é quando a contagem zero é a última e mais profunda (em Matkadeck vice versa). Além disso, é necessário verificar a correção da NS no processo de vinificação, que é quando a BP é obtida pela integração de uma variável aleatória. Aqui sua garota deve obter um "D" de ferro nos exames, e ele lhe dirá que ela não está trapaceando, ou seja, a tangente do ângulo de inclinação deve tender a zero com um número de experimentos tendendo ao infinito como 1/n.

Este é o gerador de uma série Wiener:

 

É sobre o vinaire:


 

Vou só tirar um momento: nada sobrou do meu último gráfico, onde eu ia procurar a causa do "milagre" - iFractals me enganou sem vergonha novamente. Assim que escrevi meus próprios iFractals, tudo se esclareceu, ou seja, o milagre desapareceu :)

Boa sorte, colegas