Rede neural - página 3

 
joo >> :

O objetivo de minimizar/maximizar a função alvo E(w1,w2) é encontrar um extremo global. E se esses extremos globais são um milhão, que diferença faz para nós qual deles NN cai em nós!

É pior se ficar preso em um dos mínimos/máximos locais. Mas não é mais um problema da NN. É um problema do algoritmo de otimização.


Descrito por gpwr - de jeito nenhum.


Concordo que se todos os mínimos locais forem idênticos em profundidade e, portanto, globais, não faz diferença em qual deles a rede vai parar. Mas para a versão simplificada da rede com séries ruidosas, também existem mínimos locais nos vértices da superfície E(w1,w2). Portanto, precisamos de uma otimização genética ou descida gradiente com várias variantes de valores iniciais para acabar no vale. Meu exemplo foi destinado a ilustrar a matemática de redes neurais paralelas que leva a um grande número de mínimos locais e a um complicado (longo) processo de aprendizagem. Este processo de aprendizagem consiste freqüentemente em várias etapas utilizando diferentes técnicas de otimização: global (algoritmo genético, evolução diferencial, otimização de enxame de partículas, otimização de colônia de formigas) e local (descida de gradiente, gradiente conjugado, Levenberg-Marquardt, BFGS), e leva muito tempo.

A base da matemática de redes neurais é o teorema de Kolmogorov: qualquer função contínua de n variáveis x[1]...x[n], pode ser representada como uma soma de 2n+1 superposições de mapeamentos contínuos e monótonos de segmentos de unidades:


Qualquer função contínua também pode ser representada como uma série infinita de Taylor:


Uma série de potências é uma versão simplificada de uma série Taylor:



Representar uma função desconhecida como uma série de potências é matematicamente mais simples do que uma rede neural. Explicarei a seguir.

Vamos tomar uma série de poder da primeira encomenda:


(1) y = f(x[1]...x[n]) = a[0] + soma(a[i]*x[i], i=1...n)


Isto é algo mais do que uma função linear. Se y,x[1],...,x[n] são termos da mesma série, então temos um modelo autoregressivo linear (AR). A rede neural de camada única também é descrita pelo mesmo modelo (1).

Agora vamos fazer uma segunda série de pedidos de energia:


(2) y = f(x[1]...x[n]) = a[0] + soma(a[i]*x[i], i=1...n) + soma(b[i,j]*x[i]*x[j], i=1...n,j=1...n)


e assim por diante. Os parâmetros desconhecidos do modelo baseado em uma série de potências são coeficientes a[i],b[i,j],..., que são derivados parciais da função f(x[1]...x[n]) para cada entrada x[i]. A saída do modelo é uma função linear destes coeficientes enquanto que a saída é uma função não linear de x[1]...x[n]. A busca de coeficientes de modelo a[i],b[i,j],..., é feita pela minimização da soma dos quadrados de erros, como no caso do treinamento de rede neural:


E(a[i],b[i,j],...) = soma( (t[k]-y[k])^2, k=1...p)


Mas no caso da rede neural, obtemos um método dos mínimos quadrados não linear, e no caso de uma série de potências obtemos um método dos mínimos quadrados lineares, que é resolvido de forma bastante simples: encontramos as derivadas E(a[i],b[i,j],...) para cada coeficiente a[i],b[i,j],... e as igualamos a zero. Obtemos um sistema linear simétrico de equações com desconhecidos a[i],b[i,j],..., que é resolvido pelo método Cholesky.

As vantagens do método das séries de potência em comparação com o método Kolmogorov (rede neural) são:

1. É muito mais fácil e rápido treinar o modelo: apenas uma iteração. As redes neurais são treinadas em 1000-100000 iterações, combinando diferentes métodos de otimização.

2. O resultado da aprendizagem de uma série de poder é inequívoco, ou seja, apenas um mínimo que é tanto local quanto global. O treinamento consistente de uma rede neural leva a diferentes mínimos locais e, portanto, diferentes valores de pesos e diferentes modelos do mesmo processo (séries cronológicas)

Abaixo está a superfície E(a,b) para séries de potência y = a*x + b*x^2 com dados de treinamento "ruidosos" t[k] = cos(x[k]) + rnd:


Observe que, em contraste com a rede neural, há apenas um mínimo aqui.

A desvantagem do modelo não linear baseado na série de potências é o rápido crescimento do número de seus coeficientes com o aumento da ordem das séries de potências. Suponha que n é o número de entradas (x[1]...x[n]). O número de coeficientes nc é determinado por fórmulas:

ordem = 1, nc = n+1

ordem = 2, nc = (n+1)*(n+2)/2

ordem = 3, nc = (n+1)*(n+2)*(n+3)/6

ordem = 4, nc = (n+1)*(n+2)*(n+3)*(n+4)/24

...

Por exemplo, um modelo de processo de 3º pedido com 12 entradas tem 455 coeficientes. Sua taxa de recuperação ainda é maior do que a da rede neural com menos pesos. O problema não está em diminuir a taxa de aprendizagem da série de potências, mas em encontrar um número suficiente de conjuntos de treinamento x[1...n][k],t[k] que deve exceder o número de coeficientes do modelo para evitar a degeneração. Na prática, as séries de potência de segunda ou terceira ordem dão resultados satisfatórios.

 
gpwr >> :

Eu ainda sou novo em malhas, portanto não posso falar com autoridade,

mas acho que todos os entusiastas da malha no fórum estão tentando fazer um solucionador linear (um sistema de equações lineares),

e depois, para introduzir imprevisibilidade na solução, eles a tornam adequada, fazendo looping entre a entrada e a saída.


Cheguei à mesma conclusão que você, refletindo e tentando entender o que os outros fazem.

Mas resolvendo-o desta forma você não responderá à pergunta:

E estes dados recém-chegados não têm raízes no sistema - estes são COMPRAR ou VENDER.

Porque não há nenhuma função que defina o modelo.


tentar ensinar a grade para a área pintada.

Você quer treinar TE para que quando as coordenadas desta área forem inseridas, a grade gere 1, e as coordenadas de uma área não pintada obtenham 0.

A saída de cada neurônio deve ter um classificador que deve tomar um estado dependendo do treinamento:

Se d for maior que d ou verdadeiro se for menor que d (d é um limiar, respectivamente). (Se eu estiver errado, não me julgue de forma muito dura).

 
gpwr >> :

Depois de estudar minuciosamente as redes neurais e usar vários algoritmos de aprendizagem, desde a descida gradual até a genética, cheguei à conclusão de que o aparelho matemático das redes neurais não é perfeito.

Você não precisa ter um ideal em suas mãos. Tudo isso repercute na questão de qual porcentagem de movimento se pode permitir-se saltar a fim de melhorar a confiabilidade de entrada no mercado. O ideal seria tomar 100%, bem no ziguezague ;-). Na prática, seria um graal para muitas pessoas levar pelo menos 50% em cada borda.

A julgar pelas informações disponíveis, as grades funcionam. Os problemas de ambigüidade são resolvidos escolhendo a configuração, o tamanho da malha e sua inicialização. Em princípio, o problema dos mínimos locais também é resolvido - pelo recozimento ou pelo mesmo método genético (não escolhemos a probabilidade de aceitar "genes ruins" ali, o que equivale a pular para fora do vale local?) Além disso, também temos que lembrar que existem comitês de redes fazendo o trabalho, não apenas um. E, olhando mais amplamente, não está tudo limitado a uma grade de propagação de volta completa com aprendizado assistido por professores? Por que não tentar colocar citações e sinais no vetor de entrada e alimentá-lo com Kohonen, por exemplo?

 
gpwr писал(а) >>

Você tem uma rede que gera lucros estáveis?

O que você acha que significa "lucros estáveis"?

 
marketeer >> :

Não é preciso ter um perfeito em mãos. Tudo isso ecoa a questão de qual porcentagem de movimento se pode dar ao luxo de pular a fim de melhorar a credibilidade de entrada no mercado. O ideal seria tomar 100%, bem no ziguezague ;-). Na prática, seria um graal para muitos levar pelo menos 50% em cada borda.

A julgar pelas informações disponíveis, as redes funcionam. Os problemas de ambigüidade são resolvidos escolhendo a configuração, o tamanho da grade e sua inicialização. Em princípio, o problema dos mínimos locais também é resolvido - pelo recozimento ou pelo mesmo método genético (não escolhemos a probabilidade de aceitar "genes ruins" ali, o que equivale a pular para fora do vale local?) Além disso, também temos que lembrar que existem comitês de redes fazendo o trabalho, não apenas um. E, olhando mais amplamente, não está tudo limitado a uma grade de propagação de volta completa com aprendizado assistido por professores? Por que não tentar colocar citações e sinais no vetor de entrada e alimentá-lo com Kohonen, por exemplo?


Você entendeu mal a essência do meu raciocínio. Eu não estava falando sobre a correlação entre uma rede "sub-aprendida" e os resultados comerciais. Está escrito em toda parte que a rede deve ser treinada até que o erro na amostra em teste pare de diminuir. Eu concordo com isso e não quero discutir sobre isso. A essência do meu raciocínio foi mostrar como uma estrutura de rede paralela leva a dificuldades em sua otimização e como um modelo não linear baseado em uma série de potências é capaz de atingir o mesmo objetivo que uma rede neural, mas com um aparato matemático muito mais simples e um processo de aprendizado rápido que leva a um resultado único.

Quanto ao comitê de redes, eu tenho uma opinião: tudo isso é inútil. Aqui está uma pergunta para qualquer um que acredite em comitês de rede. Suponha que uma rede dê sinais corretos 60% do tempo. Outra rede dá os sinais corretos 60% do tempo. Agora vamos combinar estas duas redes e calcular os sinais corretos recebidos por ambas as redes simultaneamente. Ou seja, se ambas as redes indicarem "comprar" ou "vender", será dado o sinal correspondente de "comprar" ou "vender". Se uma rede indica "comprar" e a outra "vender", nenhum sinal é dado. Qual é a probabilidade de que esses sinais estejam corretos?

Você poderia formular a mesma pergunta de maneira diferente. Faça uma reunião de cientistas onde todos votem sobre a questão "se há vida em Marte..." do ponto de vista biológico. 60% dos votos respondem corretamente à pergunta (a propósito, não sei a resposta :) Tomemos a reunião de outros cientistas que votam sobre a mesma pergunta, mas do ponto de vista astronômico, e apenas 60% deles estão certos. Em seguida, combinar duas reuniões (biólogos e astrônomos) em uma só e fazer a mesma pergunta. Se você diz que por algum milagre a correção da resposta sobe acima de 60%, então você precisa estudar as estatísticas.

 
gpwr писал(а) >>

Vocês entenderam mal a essência do meu raciocínio. Não falei sobre a relação entre uma rede "destreinada" e os resultados comerciais. Está escrito em toda parte que a rede deve ser treinada até que o erro na amostra em teste cesse de diminuir. Eu concordo com isso e não quero discutir sobre isso. A essência do meu raciocínio foi mostrar como uma estrutura de rede paralela leva a dificuldades em sua otimização e como um modelo não linear baseado em uma série de potências é capaz de atingir o mesmo objetivo que uma rede neural, mas com um aparato matemático muito mais simples e um processo de aprendizado rápido que leva a um resultado único.

Quanto ao comitê de redes, eu tenho uma opinião: tudo isso é inútil. Aqui está uma pergunta para qualquer um que acredite em comitês de rede. Suponha que uma rede dê sinais corretos 60% do tempo. Outra rede dá os sinais corretos 60% do tempo. Agora vamos combinar estas duas redes e calcular os sinais corretos recebidos por ambas as redes simultaneamente. Ou seja, se ambas as redes indicarem "comprar" ou "vender", será dado o sinal correspondente de "comprar" ou "vender". Se uma rede indica "comprar" e a outra "vender", nenhum sinal é dado. Quais são as probabilidades de esses sinais estarem corretos?

Podemos formular a mesma pergunta de outra forma. Faça uma reunião de cientistas onde todos votem sobre a questão "se há vida em Marte..." do ponto de vista biológico. 60% dos votos respondem corretamente à pergunta (a propósito, não sei a resposta :) Tomemos a reunião dos outros cientistas que votam sobre a mesma pergunta, mas do ponto de vista astronômico e apenas 60% deles estão certos. Em seguida, combinar duas reuniões (biólogos e astrônomos) em uma só e fazer a mesma pergunta. Se você diz que por algum milagre a correção da resposta sobe acima de 60%, então você precisa estudar estatísticas.

Este não é um exemplo muito bom...

Há muitas maneiras de construir composições algorítmicas (comitês). Você sugere Votar, pela minha experiência posso dizer que, longe da melhor maneira, uma simples ponderação é muitas vezes melhor.

A autocorrelação (FunkOsh[i]||FunkOsh[i+1]) é normalmente significativa > 0,8. E a correlação das funções de erro dos algoritmos básicos tende a 1. Os comitês construídos acreditam que os algoritmos de base se compensam mutuamente, é necessário que não haja correlação entre as funções de erro para qualquer bem.

E não esqueçamos o AdaBoost - ele realmente funciona, mas tem suas próprias armadilhas.

 
gpwr >> :

Você provavelmente esqueceu, como de fato a maioria dos neuro-escritores deste fórum esqueceram, a julgar pelos comentários deixados, de aprender sem um professor. Por que, se você usa NN no comércio, você tem que ensinar NN alguma coisa? Não podemos nos ensinar adequadamente como negociar. Ao falar sobre o comitê de redes, você quer dizer que cada NN é treinado independentemente? E por que eles dão sinais separadamente um do outro? Ao construir NNs, e ainda mais um comitê de NNs, a única solução correta é "aprender sem um professor". O cérebro tem várias partes do cérebro, e mais de uma dúzia de sub-brancos. Cada um deles desempenha uma função diferente, processando informações externas a eles. E o proprietário deste "comitê" toma uma decisão. Como isso é possível? É possível porque o comitê de redes deve funcionar em conexão uns com os outros - como um complexo, caso contrário nada funcionará e "personalidade dividida" ocorrerá.

 
StatBars >> :

apenas um pouco à minha frente :)

 
gpwr >> :

Sobre o comitê da rede, tenho uma opinião: tudo isso é inútil. Aqui está uma pergunta para qualquer um que acredite em comitês de rede. Suponha que uma rede dê os sinais corretos 60% do tempo. Outra rede dá os sinais corretos 60% do tempo. Agora vamos combinar estas duas redes e calcular os sinais corretos recebidos por ambas as redes simultaneamente. Ou seja, se ambas as redes indicarem "comprar" ou "vender", será dado o sinal correspondente de "comprar" ou "vender". Se uma rede indica "comprar" e a outra "vender", nenhum sinal é dado. Quais são as probabilidades de esses sinais estarem corretos?

Podemos formular a mesma pergunta de outra forma. Faça uma reunião de cientistas onde todos votem sobre a questão "se há vida em Marte..." do ponto de vista biológico. 60% dos votos respondem corretamente à pergunta (a propósito, não sei a resposta :) Tomemos a reunião dos outros cientistas que votam sobre a mesma pergunta, mas do ponto de vista astronômico e apenas 60% deles estão certos. Em seguida, combinar duas reuniões (biólogos e astrônomos) em uma só e fazer a mesma pergunta. Se você diz que por algum milagre a correção da resposta sobe acima de 60%, então você precisa estudar as estatísticas.

probabilidade de sinal correto (0,6*0,6)/(0,6*0,6+0,4*0,4)=69,23%, isto é em teoria)

o exemplo de uma coleção de cientistas é incorreto. da probabilidade para a média.

A estatística é outra parte divertida da matemática :)

 
gpwr писал(а) >> Está escrito em toda parte que a rede deve ser treinada até que o erro na amostra em teste pare de diminuir.

Na verdade, é muito mais complicado do que isso. Quando você o treina a um erro mínimo na amostra em teste, é provável que você obtenha uma rede sobre-treinamento......

Razão: