Rede neural
a aprendizagem por trás erro propagação
Colin Fahey

Uma rede neural biológica
1. Software
2. Introdução
Este documento descreve a forma de implementar uma rede neural artificial que é capaz de ser treinado para reconhecer padrões.
Este documento descreve um modelo de rede neural que aprende com um algoritmo que utiliza “para trás erro propagação.”
Este documento inclui demonstrações básicas de aprendizagem por “trás erro propagação.” Este documento tem um link para computador código. O computador contém o código manifestações. O computador código pode ser usado para criar complexas redes neurais. No entanto, o código é único computador para fins de demonstração. Uma alternativa poderia reduzir implementação e uso da memória poderá aumentar a velocidade.
3. Alternativa à aprendizagem por trás erro propagação
Este documento descreve um modelo de rede neural que aprende com um algoritmo chamado “para trás erro propagação.” Este algoritmo pode exigir muito tempo para aprender várias lições. Além disso, este algoritmo pode falhar aleatoriamente para aprender várias lições devido ao estado inicial aleatório da rede neural antes do treino.
Aprendizagem ao “associar insumos activa” é uma importante alternativa para a aprendizagem por “trás erro propagação.” Associando a aprendizagem activa insumos simplesmente associa insumos que são simultaneamente activos. Essa aprendizagem pode ser rápido e confiável. No entanto, para muitos efeitos práticos, que não é fácil de usar uma maneira que a rede neural aprende a associação, considerando que há um caminho óbvio para usar uma rede que aprende por trás erro propagação.
Algumas redes neurais biológicas são conhecidos para aprender a associação dos ativos insumos. Retrospectivos propagação erro não tenha sido observado em qualquer rede neural biológica.
Este documento descreve interessantes usos para uma rede neural que aprende por trás erro propagação. No entanto, a aprendizagem é uma associação muito importante alternativa algoritmo de aprendizado. Desenhar uma rede neural que aprende por associação para resolver um problema particular pode ser mais difícil que uma alternativa desgining rede neural que aprende a propagação erro para trás, mas os sistemas biológicos aprender a associação, de aprendizagem e da capacidade dos sistemas biológicos é evidente.
4. Neurônio Biológicas
4.1 Neuron celular

Um neurônio biológico (modelo “multipolar,” ~4 um célula corporal)
Um neurônio é tipo de célula que tem a capacidade de receber e transmitir sinais nervosos.
Neurônios são a base dos sistemas nervoso, encontrado nos animais, pássaros, peixes, e insetos.
Brains com memória e lógica, e simples reflexo sistemas, ambos são baseados em acordos de neurônios.
Neurônios também são utilizados para transmitir sinais através de longas distâncias em uma criatura do corpo, tais como a partir de sensores para o cérebro, ou a partir do cérebro aos músculos.
O comportamento de um neurônio biológico é muito complexa, mas a seguinte descrição simplificada capta o princípio básico:
O neurônio acumula sinais recebidos de outros neurônios, e se o total de sinal acumulação exceder um limite, o neurônio transmite seus próprios sinais para outros neurônios.
4.2 Neuron peças

Partes de um neurônio biológico
|
SOMA
|
O corpo de uma célula neurônio
|
|
Dendrites
|
Fibras com receptores químicos (insumos) que se estendem a partir da célula corporal de um neurônio. Um neurônio geralmente tem muitas dendrites, dendrites e muitas vezes têm muitos ramos.
|
|
Axónio
|
Um produto químico em fibra emissores (saídas), na sua extremidade que se estende a partir da célula do corpo do neurônio. Um neurônio tem um único axónio, o axónio e geralmente tem muito poucos ramos.
|
|
Sinapse
|
A configuração tal que o axónio de um neurônio e as dendrites de um outro neurônio são separados por um fosso muito pequena. Neste tipo de configuração, substâncias químicas emitidas por um axónio de um neurônio atravessar a sinapse e são recebidos pelo dendrites do outro neurônio. Esse é o modo como neurônios influenciar outros neurônios.
|
4.3 Neurônio disparar
Um neurônio acumula sinais químicos a partir do seu dendrites, e se o total de produtos químicos acumulação exceder um limite dentro de um período de tempo, o neurônio “incêndios,” enviando o seu próprio sinal através do seu axónio.
Alguns neurônios são capazes de disparar sobre a forma de pulsos 100 Hz.
Os sinais passando por acumulações de neurônios envolver (Na) de sódio, potássio (K), e (Cl) iões de cloro, e um potencial resultante eletroquímica (ou seja, tensão).
A tensão (-70 mV) descansando e disparando (+30 mV) tensão podem ser medidos ou mesmo influenciada pelo circuito elétrico convencional.
A tensão que se segue é uma gravação de um rato neurônio disparar a uma taxa de aproximadamente 100 Hz quando um único whisker é tocado e realizada fora de sua posição descanso:

Um rato neurônio disparar (100 Hz) devido a uma exploração whisker.
Apesar de o estímulo é constante, o sinal é rápido neurônio pulsante.
4.4 Rede neural
O cérebro humano tem cerca 10^11 (100 mil milhões de euros) neurônios.
Cada neurônio no cerebelo recebe entrada de tantos quantos 10^4 (10000) sinapses.
Apesar de o axónio e dendrites de um neurônio muitas vezes estender a apenas alguns micrômetros de distância do corpo celular, alguns axons são da ordem de um metro de comprimento.
Um cérebro com neurônios tem relativamente curto axons agrupados em áreas ou clusters.
Um cérebro também tem a bundles de neurônios relativamente longo axons a ligação áreas separadas por centímetro.
Assim, uma rede hierarquizada de elementos de transformação é formado.
4.5 Rede neural status
O estado de uma rede de neurônios é tanto a forma como os neurônios são conectados e os sinais em todas as sinapses.
Não está claro o quanto estatuto informações seriam perdidas se um cérebro em tranquilized foi a total inactividade por qualquer período de tempo.
Pode-se imaginar informação sustentada apenas por sinais que se deslocam através da rede, conectividade de rede e não por si mesma, como autómatos celulares simulações como Conway's “Game of Life”, simples Dynamic Random Access Memory (DRAM) chips, e ecos de uma câmara.
4.6 Aprender rede neural
Convencionais aprendizagem ocorre quando as propriedades de dendrites mudança em uma sinapse a tornar-se mais ou menos eficientes em recepção de sinais de um produto químico axónio.
As razões para essas mudanças são complicadas, mas o resultado é que um neurônio requer uma combinação diferente de sinapse insumos para acionar um sinal de saída.
5. Neurônio artificial
5.1 Definição
Um “neurônio artificial” é um algoritmo ou um dispositivo físico que implementa um modelo matemático inspirado por base o comportamento de um neurônio biológico.
Um neurônio acumula sinais recebidos de outros neurônios ou insumos (por exemplo, sensores) e, se o total de sinal acumulação exceder um limite, o neurônio transmite um sinal para outros neurônios ou resultados (por exemplo, effectors).
Qualquer modelo matemático que incorpora a idéia de acumular múltiplas entradas e produzindo uma única saída (que acentua a relativa intensidade do factor de produção em relação a algum nível nominal) pode ser usado para reconhecimento de padrões.
Esses modelos podem ser a base de um neurônio artificial.
Se a influência de cada entrada pode ser modificado e, em seguida, o modelo pode apoiar a aprendizagem.
5.2 Ativação função
“Activação” de uma “função” é uma função matemática que converte entrada valores abaixo de um determinado valor para um valor relativamente baixo de saída, entrada e converte valores acima de um determinado valor para um valor relativamente elevado de saída.
Uma “ativação função” é usada para converter a soma ponderada dos valores de entrada de um neurônio para um valor que representa a saída do neurônio.
“sigmoid” Uma função é uma classe geral de bom funções que asymptotically abordagem um limite inferior para entrada valores aproximam infinito negativo, e asymptotically abordagem um limite superior para a entrada valores aproximam infinito positivo.
Um sigmoid função específica é a função “logistic sigmoid”:

A função “Logistic Sigmoid”: 1 / ( 1 + Exp( -x ) )
O “logistic sigmoid” função pode ser usada como uma “função” de “ativação” de um modelo matemático de um neurônio.
O matemático derivado do “logistic sigmoid” pode ser computado como uma fórmula, tornando-se mais fácil calcular um associado aprendizagem fórmula.
5.3 Rede neural input
Uma “rede neural entrada” representa um contributo para uma rede neural.

Rede neural input
“Input” é o valor numérico do factor de produção.
5.4 Rede neural de saída
Uma “rede neural de saída” representa uma saída de uma rede neural.

Rede neural de saída
“Output” é o valor numérico de saída.
“Error” é um valor numérico que representa a diferença entre o valor de saída e uma “Desired” valor:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
“Desired” O valor representa um valor desejado, ou um valor ideal, ou um valor correto, que a rede neural deverá produzir como saída em resposta a um determinado montante.
O erro valor é computado e atribuído ao “Error” por um algoritmo de formação.
O valor é feedback de erro da rede neural.
A rede neural pode adaptar-se a reduzir a diferença entre as suas realizações e os valores desejados, ou seja, a rede neural pode aprender, e pode, assim, reduzir erros futuros.
5.5 Neuron corpo
Um “corpo neurônio” representa o corpo de um neurônio, que acumula input contribuições, e acrescenta um viés, e transforma o valor resultante em “função” de “ativação” para produzir um valor de produção.

Neuron corpo
“InputAccumulator” é um valor que representa a entrada de neurônios acumulados saídas cujos links estão ligadas à neurônio corpo.
“Bias” é um valor ajustável que é combinado com o valor acumulado de entrada.
“Output” é um valor numérico que representa a saída valor do neurônio.
A saída valor é calculado utilizando a seguinte fórmula:
Output = ActivationFunction( Bias + InputAccumulator );
“ErrorAccumulator” é um valor numérico representando acumulado erro.
Dado um determinado valor de saída do neurônio corpo, e dado um valor específico de erro de saída, o valor acumulado erro é ajustado de acordo com a seguinte fórmula:
ErrorAccumulator += Output * (1 - Output) * OutputError;
“Rate” é um valor que afecta a forma como o valor “Bias” mudanças em resposta à “ErrorAccumulator” valor:
Bias += (-1) * Rate * ErrorAccumulator;
5.6 Neuron link
Um “link neurônio” representa um elo de ligação entre:
(1) uma entrada da rede neural e uma entrada de um neurônio corpo;
ou,
(2) uma saída de um neurônio corpo e uma entrada de um outro neurônio corpo;
ou,
(3) uma saída de um neurônio e um órgão de saída da rede neural.

Neuron link
“Input” é uma memória cache do seu contributo para a ligação.
“Weight” é um valor ajustável que afeta o modo como sinal valores e erro valores propagar através do link.
“Output” é um cache da saída da ligação.
O valor é calculado através da seguinte fórmula:
Output = Weight * Input;
“Error” é um cache de erro da ligação.
“WeightedError” é um cache do erro do link, o peso ponderado pelo factor:
WeightedError = Weight * Error;
“Rate” é um valor que afecta a forma como o valor “Weight” mudanças em resposta à “Error” valor e as “Input” valor.
Durante a rede neural aprendizagem, o valor é ajustado “Weight” da seguinte maneira:
Weight += (-1) * Rate * Input * Error;
5.7 Rede neural
Uma “rede neural” contém entradas, saídas, neurônio organismos, e links.
A imagem seguinte mostra uma simples rede neural, com duas entradas, e de dois corpos em um neurônio primeira camada, e um único neurônio, em uma segunda camada, e uma saída.

Exemplo de uma rede neural
Durante uma simulação de uma rede neural, input transmitir valores propagar através de links e órgãos neurônio, e eventualmente chegar a resultados.

Exemplo de transmitir a propagação de uma rede neural
Durante a formação, os valores são fornecidos em erro os outputs, e estes erros propagar para trás através da rede neural, resultando na modificação de pesos e desvios nos neurónios órgãos e links.

Exemplo de propagação de erro para trás uma rede neural
5.8 Simulação de rede neural
Definição:
“Rede de simulação” é o procedimento utilizado para propagar através da rede de ligações e de insumos neurônio instâncias até chegar à rede saídas.
Rede simulação envolve a simulação de todos os seus órgãos constitutivos ligações e neurônios.
Simulações sem laços ou hora:
Existem muitas possíveis configurações de rede envolvendo loops.
Há muitos modelos que dependem neurônio tempo.
Mas algumas das aplicações mais comuns de neurônios artificiais envolver nem tempo nem loops.
O que se segue é um modelo matemático de um neurônio organismo:
Output = ActivationFunction( Bias + InputAccumulator );
Com este modelo neurônio, e uma rede sem “loops,” nós simplesmente começar a partir do exterior entradas, saídas de computar a primeira camada de neurônios, e fornecer esses produtos como insumos para a próxima camada, computar saídas para essa camada, e continuar através de camadas de neurônios até o final saídas são computados.
Loops:
Uma rede pode ter ligações, sob a forma de lacetes (ou “ciclos).”
Por exemplo, a saída de um neurônio pode ser conectado diretamente a uma entrada do mesmo neurônio, causando “comentários.”
Outro exemplo é a saída do neurônio # 1 estar conectado à entrada do neurônio # 2, e na saída do neurônio # 2 estar ligado à entrada do neurônio # 1.
Se você pode começar a partir de algum ponto em uma rede e trace um caminho através de neurônios e conexões, obedecendo a uma forma de o fluxo de sinais, e eventualmente chegar a esse mesmo ponto de partida, então, o caminho é um loop.
Loops interessante introduzir a possibilidade de sinais de correr ao redor da rede para períodos de tempo indeterminado.
Alguns modelos simples supor que leva um determinado período de tempo para a passagem de sinais neurônios individuais.
Em tais modelos, sinais através de lacetes circular com poucos neurônios mais rápido do que circulam através de sinais loops com muitos neurônios.
Um neurônio conectado a si mesmo terá o mais rápido sinal taxa de circulação.
Se um neurônio tem uma entrada X, W um peso, um viés B, e não um produto negativo Y (por exemplo, 0.0 -> 1.0), então nós podemos formar um oscilador simplesmente através da fixação de W = (-8) e B = +4 e de ligação Y a X;
cada vez que simulam o neurônio, o sinal será toggled para o estado oposto.
Uma rede com loops pode ser ocupado com atividades até mesmo quando ele não aceita sinais externos (estímulos) como insumos.
As regras de autómatos celulares Conway's “Game of Life” poderia ser implementado em uma rede neural, que lhe dá uma pequena dica da diversidade da atividade que pode acontecer em uma rede neural com loops.
- Estado Finitos máquinas (FSM), osciladores, memória volátil (em contraste com a aprendizagem através mudando os padrões pesos), são possíveis em looping.
Se tem uma rede de loops, não é possível atualizar quaisquer saídas enquanto não computar todas as saídas; assim, é necessário um buffer temporário para armazenar computadorizada saídas enquanto não computar todas as saídas, e então nós podemos cometer os novos valores de saída para os neurônios na rede.
Qualquer método que actualiza as realizações efectivas em rede de forma progressiva, ao invés de um tudo-em-uma vez maneira, introduz uma ordenação arbitrária no tempo que leva ao caos.
Física simulações envolvendo acoplado entidades, tais como planetas orbitam uma estrela com forças gravitacionais mútuo entre todos os organismos, requerem o mesmo tipo de abordagem: computar as forças líquido em todas as instâncias antes de atualizar qualquer velocidade e posição.
Time-dependência:
Uma simples rede de simulação insumos tipicamente envolve a provocar a saída desejada após um único intervalo de tempo da simulação.
Neste tipo de simulação, pensamos em termos “de número” de “iterações” em vez de “tempo em segundos.”
, Não há necessidade nenhuma correspondência entre iterações e um período de tempo.
Um sistema pode ser projetado para fazer uma simulação de rede (iteração) só está disponível quando a nova entrada, o que poderá ocorrer a intervalos irregulares de tempo.
No entanto, considero um modelo matemático de um neurônio que a tentativa de simular a saída pulsante aspecto biológico de um neurônio.
A pulsação pode ser caracterizado em termos de tempo, tais como a pulsação em uma determinada frequência ou de ter impulsos cuja curva estende por um determinado período de tempo.
Nós podemos ter outros elementos, em tempo-dependente de um modelo matemático de um neurônio, como um contributo acumulador cujo valor recebe contribuições de insumos, mas tem um vazamento proporcional ao seu valor atual.
Em geral, podemos encontrar um circuito elétrico para a analogia elementos que obedecem a determinadas equações matemáticas, e assim se pode considerar um neurônio como um circuito com resistências, condensadores, e um amplificador não-linear.
Da mesma forma que um circuito pode expor complexo comportamento tempo-dependente, a saída de um neurônio pode ser considerado como uma função que depende dos seus factores de produção e tempo em um caminho complicado.
5.9 Retrospectivos erro propagação
Definição:
“Retrospectivos erro propagação” é um matemático processo que começa com o erro na saída de uma rede neural e propaga esse erro para trás através da rede de erro de saída para produzir valores para todos os neurônios na rede.
Retrospectivos erro propagação fórmulas:
Os valores dos erros na rede neural saídas são calculadas utilizando a seguinte fórmula:
Error = (Output - Desired); // Derived from: Output = Desired + Error;
O erro de um neurônio acumulação corpo é ajustada de acordo com a saída do neurônio e do corpo de erro de saída (especificado por links relacionados ao neurônio corpo).
Cada valor de erro de saída contribui para o erro acumulador da seguinte maneira:
ErrorAccumulator += Output * (1 - Output) * OutputError;
Em certo sentido, a saída de todos os erros na próxima camada de fuga para trás através da entrada em pesos e acumular a saída de um neurônio em um nível anterior.
Este valor acumulado é multiplicado por um valor que é maior quando a corrente de saída do neurônio é mais neutra (a maior parte dos “indecisos),” e é menos quando a saída do neurônio é mais extremas (muito “certas).”
Peso mudar e mudar viés fórmulas:
A base de aprendizagem é o ajustamento das ponderações e valores viés, numa tentativa de reduzir a produção futura erros.
“Taxa de” aprendizagem é essencialmente um valor numérico que indica o quão rápido um neurônio ajusta peso e de valores de acordo com viés erro valores.
A fórmula seguinte indica a forma de alterar os pesos de um neurônio com um determinado conjunto de valores de entrada e de saída erro seu valor:
Weight += (-1) * Rate * Input * Error;
A fórmula seguinte indica a forma de mudar o viés de um neurônio, dada a actual produção erro para o neurônio:
Bias += (-1) * Rate * Error;
6. Formação uma rede neural
6.1 Processo de Formação
Pode-se começar com uma rede formada e continuar a reduzir ainda mais a formação de erro de saída, mas começa com uma freqüência sem uma rede.
Antes de treinamento, escolha aleatória valores para todas as massas de todos os neurônios na rede.
Eu problemas observados quando eu selecionados aleatoriamente valores no intervalo [ -1.0, +1.0 ], e eu não tenho problemas quando eu seleccionados aleatoriamente valores a partir do intervalo [ +0.1, +1.0 ].
Menciono estas observações, mas eles poderiam ser devido a meus erros.
O objectivo do aleatória pesos é atenuar a possibilidade de eventuais situações patológicas em uma rede.
Se todos os neurônios em uma rede começou com o mesmo peso, a rede não teria qualquer base para reforçar a diferenciação entre os neurônios.
Tenho observado que a fixação de valores para todos os preconceitos zero (0.0) é aceitável.
Uma sessão de formação envolve a passar por um treinamento conjunto muitas vezes, talvez centenas ou milhares de vezes.
Para cada passe através do treinamento conjunto, nós consideramos cada item na formação previstos.
Um conjunto de formação item tem um conjunto de factores de produção, e um conjunto de resultados desejados.
Nós simular a rede, utilizando o conjunto de factores de produção especificados pela formação item.
A simulação rendimentos valores de saída.
Nós propagar os erros para trás pensamento da rede neural para computar os erros de saída para todos os neurônios.
Nós atualizar todos os pesos e vícios.
Cuidado: Um texto acadêmico que discutiu redes neurais defendido a atravessar todo o treinamento conjunto e só soma peso mudanças e vícios.
Depois de passar por todo o treinamento conjunto, temos um conjunto de somas de peso e alterações viés mudanças.
Tomamos essas quantias e atualizar todos os pesos e vícios.
Tais quantias poderiam ser enormes para grandes conjuntos de formação - e as resultantes do peso, salto em espaço seria exageradamente grande.
Portanto, eu penso em dividir o número de itens de formação, para obter o peso médio mudar valores e preconceitos mudar os valores médios, seria razoável.
Há algo atraente sobre computação uma única mudança peso que de algum vetor toma todo o treinamento em conjunto para consideração.
Não sei se eu simplesmente cometeu um erro na execução da idéia, mas eu dava-se quase inteiramente em redes neurais, porque da forma como transformar as coisas foram mal.
Então, quando eu tentei o ingénuo alternativa, ou seja, fazer atualizações sobre cada item da formação, tudo funcionou perfeitamente.
Considerando todo o conjunto treinamento antes de fazer uma atualização tem algumas vantagens e desvantagens:
Vantagens:
Único formação itens em conjunto com a formação extrema erro (ou seja, má formação item) não irá fazer uma grande contribuição para a atualização, pois será esmagada pela influência dos “bons” dados;
Desvantagem:
Se N é o número de itens na sua formação conjunto, sua taxa de progresso para o vetor peso ideal será dividido por N.
Ou, para uma determinada distância, terá apenas uma fração de direção dicas ao longo do caminho, em comparação com a abordagem ingénua;
Talvez esta técnica irá trabalhar para você, mas experimentar a abordagem ingénua antes que você desista em redes neurais, em absoluto frustração!
6.2 A incapacidade de reduzir erro
A formação pode falhar a reduzir os erros globais para o treinamento conjunto.
É importante para a detecção de um fracasso para reduzir a erro.
A lista a seguir descreve causas de fracasso para reduzir erros, e as possíveis soluções.
Os itens na lista estão listados em ordem aproximada de probabilidade, com o primeiro item a ser mais provável.
(1) O peso combinação atingiu um mínimo local da superfície do erro, e “está” parado;
Solução: Iniciar uma nova simulação com os novos pesos aleatórios.
(2) A rede tem muito poucos neurônios ou camadas para codificar todos os padrões de formação no seu conjunto;
Solução: entreter com cuidado a possibilidade de acrescentar camadas ou neurônios.
(3) Um ou mais itens na sua formação ou conjunto contradiz grosseiramente é incompatível com os seus outros itens de formação;
Solução: Verifique o seu conjunto de dados para irregularidades.
Encontrar itens que o teste rendimento a mais para o seu erro treinados rede.
Olhe no peso médio de técnicas para as mudanças ao longo do todo o conjunto de dados para reduzir a influência de qualquer má casos.
(4) A taxa de aprendizagem é muito alto (1.0 é provavelmente mais alguma coisa excessiva), e as atualizações sempre superação da meta;
Solução: Reduzir a taxa de aprendizagem.
(5) A taxa de aprendizagem é muito baixa (abaixo 0.01 nada poderia ser demasiado pequeno), e da rede é realmente convergentes sobre o peso ideal combinação - mas é demasiado lento;
Solução: Aumento taxa de aprendizagem.
A formação de duas camadas, três neurônio-para corresponder à rede exclusiva-ou (xor) função, pode, apesar da simplicidade da função, não a convergir.
Isto pode ser surpreendente e frustrante.
No entanto, a solução é simplesmente colocar todas neurônio link pesos para novos valores aleatórios e, depois, tentar formar a rede novamente.
No caso da formação de uma rede para corresponder à exclusiva-(xor) ou função, aleatórios positivos parecem pesos para conduzir a aprendizagem bem sucedida de cada vez, enquanto que certas combinações de pesos positivos e negativos, por vezes causam a formação de falhar dramaticamente.
A necessidade de selecionar novos aleatória pesos iniciais de recuperação de uma falha de convergir é uma das consequências negativas da combinação do processo de aprendizagem.
O processo da aprendizagem é essencialmente à procura de um mínimo global por steepest ascendência sobre uma superfície, eo potencial para a presença de um “mínimo local” em que a pesquisa pode tornar-se aprisionado.
6.3 Globalmente formação erro
O erro global de uma rede pode ser caracterizada pela-raiz quadrada da média dos erros ao quadrado, “ou-raiz quadrada média-(RMS).”
O erro em qualquer rede específica de saída é dado pela seguinte fórmula:
Error = (Output - Desired);
A soma do quadrado erros de um único item de formação é dada pela seguinte fórmula:
double squaredError = 0.0;
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
A soma do quadrado erros para todo o conjunto de itens em um treinamento conjunto é a soma do quadrado erros de cada um dos itens. O código a seguir mostra como o quadrado erros para todo o conjunto de itens de formação pode ser computada:
double squaredError = 0.0;
for
(
int trainingItemIndex = 0;
trainingItemIndex < totalTrainingItems;
trainingItemIndex++
)
{
trainingSet.SetAllInputNodeValues( trainingItemIndex );
Simulate( propagationIterations );
trainingSet.SetAllOutputNodeErrorValues( trainingItemIndex );
PropagateErrors( propagationIterations );
UpdateWeightsAndBiases();
foreach (NeuralNetworkOutput output in ListOfOutputs)
{
squaredError += (output.Error * output.Error);
}
}
A média global de raiz quadrada-(RMS) do erro é dado pela raiz quadrada da média do quadrado erros:
double rmsError = Math.Sqrt( squaredError / (double)totalTrainingItems );
Esse valor é uma maneira de caracterizar o erro global de uma rede de formação considerando todos os casos.
7. Aprender
Aprendizagem ocorre quando o peso eo viés valores de ligações e neurônios neurônio órgãos são ajustados de acordo com o especificado rede insumos e os valores de erro de saída.
Considere uma rede neural com duas entradas (x1 e x2), e duas ligações (com pesos w1 e w2), e um neurônio corpo, e uma saída (y).

Rede neural com duas entradas, e um neurônio corpo, e uma saída
Treinamos esta neurônio pelo fornecimento de insumos, computando a saída, o erro informática, computação e peso viés mudanças e atualizando os pesos e as distorções, chegando a novos pesos ( w1', w2' ).
Há uma maneira muito interessante para visualizar este processo.
Podemos considerar o conjunto de pesos como um vetor em um espaço multi-dimensional. Por exemplo, nós temos dois pesos para o vetor W = (w1, w2) em um “espaço” bidimensional “peso.”
Quando os pesos são ajustados, temos um novo vetor W' = (w1',w2') peso.
Podemos visualizar este como um ponto W mudança para um novo ponto W' como parte de um processo de saída para minimizar o erro.
Normalmente seria um erro não computar a saída para todas as combinações possíveis peso, porque a esperança é a de que o processo de ajuste de peso será eficiente cabeça em direção a melhor combinação.
No entanto, vamos parcela da superfície que, no essencial, como bem mostra um neurônio satisfaz todos os itens em um conjunto de formação em função dos seus dois pesos:

Soma do quadrado erros de um treinamento conjunto especificado como uma função de dois pesos (w1, w2)
Basicamente, o objetivo da aprendizagem é a descer ao nível mais baixo desta superfície, onde erro é minimizado.
Assim que encontrar o ponto W = (w1, w2) que retorna o valor mínimo nesta superfície, a aprendizagem está acabado e, em seguida, nós podemos simplesmente utilizar os formados neurônio.
O gráfico seguinte mostra a saída de um neurônio treinados em função de todos os possíveis insumos X = (x1, x2):

Neurônio de saída como uma função de duas entradas (x1, x2) um peso para a combinação que minimiza erro quadrado
Apesar de a soma ponderada de dois contributos para este neurônio é simplesmente (w1*x1 + w2*x2), a activação função transforma uma simples girada em avião para um precipício.
Essa superfície tem a corrigir valores de saída para todas as combinações de entrada (x1, x2) especificado pela nossa formação previstos.
Mas você pode imaginar como vetores de entrada X = (x1, x2) semelhante à formação valores levará também à boa saída valores; esta característica é chamada de redes neurais e de “generalização” é o principal valor de redes neurais.
Na tentativa de “descer” da superfície do quadrado erro, temos de “salto antes de nos olhar!”
Atualizamos o peso eo vetor parcialidade e, em seguida, nós avaliamos a “altura” da superfície em nossa nova localização.
Uma consequência disto é que se pode deslocar para um ponto mais extremo com um erro.
Outra consequência é que pode demorar um pouco para descer de volta para a profundidade da nossa localização anterior.
A possibilidade de “saltar” para mais extremas picos e vales do erro superfície está directamente relacionada com a “taxa de aprendizagem,” porque a taxa de aprendizagem determina quanta influência sobre o nosso erro valores têm peso e de viés mudanças.
O gráfico seguinte mostra como aumentar a taxa de aprendizagem hastens nossa chegada em posições mais baixas sobre o quadrado erro superfície, onde erro é minimizado.
O gráfico também mostra que o aumento da taxa de aprendizado também introduz a possibilidade de fazer mau etapas:

Curto prazo tendência de raiz-média-quadrado (RMS) erro para todo o conjunto da formação ao longo de várias iterações de formação, para a aprendizagem de taxas 0.1, 0.5, 1.0, e 2.0.
Aqui está um gráfico da raiz-média-quadrado de erro de saída de uma rede multi-camada com um treinamento conjunto com 19386 itens que experimentou muitos maus passos no caminho para o melhor peso vectores:

Formação vezes surgem picos na raiz-média-quadrado (RMS) erro, quando há algum erro aumenta iterações antes de retomar uma tendência decrescente.
Às vezes, a tendência é simplesmente bom para a desejada convergência conjunto de pesos:

Evolução da raiz-média-quadrado (RMS) erro para todo o conjunto da formação ao longo de várias iterações de formação, para a aprendizagem de taxas 0.1, 0.5, 1.0, e 2.0.
8. Exemplo: Exclusivo-ou (xor)
“Exclusivo-ou” (xor) é uma função que aceita dois booleanos insumos e dos rendimentos uma única saída booleana de acordo com a seguinte tabela:
|
X1
|
X2
|
Y = xor (X1, X2)
|
|
0
|
0
|
0
|
|
0
|
1
|
1
|
|
1
|
0
|
1
|
|
1
|
1
|
0
|
Em geral, tem um único neurônio insumos {x1, x2, ...}, entram através de ligações com pesos {w1, w2, ...}.
O neurônio calcula uma quantidade d = bias + (w1*x1 + w2*x2 + ...) intermédio, que pode ser considerado como identificar qual avião, em uma infinita série de planos paralelos, contém um determinado ponto com coordenadas {x1, x2, ...}.
O neurônio calcula um valor de produção, y = ActivationFunction( d ), que tem o efeito de dividir o infinito conjunto de aviões, em paralelo aos dois conjuntos, com um conjunto reduzido produzir valores de saída, e os outros produtores estabelecidos valores elevados de saída.
Assim, um único neurônio divide espaço multidimensional, em que duas regiões, separadas por um avião bias + w1*x1 + w2*x2 + ... = 0, e atribui pontos aos baixos valores de saída da região em um lado do avião, e atribui pontos aos elevados valores de saída da região no lado oposto do avião.
Assim, se dois conjuntos de pontos no espaço multidimensional têm classificações distintas e podem ser completamente separados por um avião e, em seguida, um único neurônio pode ser usado para classificar corretamente os pontos de conjuntos como pertencente a um conjunto ou a outra.
A exclusividade de funções ou (xor) classifica pontos em duas dimensões espaciais (com coordenadas (x1, x2)) esses pontos em que o conjunto { (0,0), (1,1) } são classificadas como produzir uma saída de “0,” e pontos no conjunto { (0,1), (1,0) } são classificadas como produzir uma saída de “1.”
Não existe um único “avião” (neste caso, uma linha) que pode separar esses quatro pontos em que os dois conjuntos.
Por isso, um único neurônio não pode ser utilizada para classificar os pontos de acordo com a função exclusiva-ou (xor).
Um único neurônio só pode dividir um espaço de pontos em que duas regiões.
A exclusividade de funções ou (xor) classifica pontos de uma forma que, no essencial, divide um bidimensional no espaço de três regiões (ou, alternativamente, quatro regiões).
Dois neurônios pode dividir bidimensional no espaço de três regiões (por exemplo, por duas linhas paralelas distintas), e pode, portanto, ser utilizada para classificar os pontos de acordo com a função exclusiva-ou (xor).
Um terceiro neurônio pode ser utilizado para combinar as saídas dos outros dois neurônios em uma única saída.
A seguinte rede neural, com duas entradas, e de dois corpos em um neurônio primeira camada, e um único neurônio, em uma segunda camada, e uma única saída, pode ser utilizada para classificar os pontos de acordo com a função exclusiva-ou (xor).
A seguinte rede neural tanto podem ser treinados para computar a exclusividade-(xor) ou função, ou a rede neural pode simplesmente ter o seu peso eo viés valores atribuídos de uma maneira que produz o comportamento desejado.

Uma rede neural capaz de classificar pontos, de acordo com exclusividade-ou (xor)
O computador código associado a este documento demonstra formação da rede neural mostrado no diagrama acima, para coincidir com a exclusiva-ou (xor) função.
As redes neurais, por vezes não consegue aprender a funcionar, mas o software pode simplesmente ser reiniciado para tentar aprender com um novo conjunto de pesos iniciais.
Se o software com êxito aprende a (xor) função exclusiva-ou, então o resultado assemelha a seguinte:
x1 = 0.0000 x2 = 0.0000 y = 0.0172 error = 0.0172
x1 = 1.0000 x2 = 0.0000 y = 0.9802 error = -0.0198
x1 = 0.0000 x2 = 1.0000 y = 0.9839 error = -0.0161
x1 = 1.0000 x2 = 1.0000 y = 0.0154 error = 0.0154
A saída é (y) dentro de 2% do valor desejado para cada uma das quatro combinações das variáveis (x1, x2).
Apesar de a rede foi treinada para aprender valores de saída para a combinação de apenas quatro variáveis (com valores 0.0 e 1.0, representando valores booleanos), os insumos para a rede neural pode ser definida para qualquer arbitrariedade de ponto flutuante de valores.
A imagem seguinte mostra a saída da rede neural treinada para muitas combinações de valores de entrada:

Uma rede neural capaz de classificar pontos, de acordo com exclusividade-ou (xor)
A superfície representa a saída da rede neural para todas as combinações possíveis de entrada (x1, x2) nas gamas [ -2.0, +2.0 ].
A saída é fechar a 0.0 a baixar em áreas da superfície, e à saída é fechar a 1.0 ao mais alto áreas da superfície.
Note que a superfície está em baixa para os pontos { (0,0), (1,1) }, ea superfície é elevada ao nível dos pontos { (0,1), (1,0) }.
A rede só foi treinado para produzir resultados desejados para quatro combinações específicas das variáveis de entrada, mas a rede neural também produz saídas para todas as outras possíveis combinações de valores de entrada.
A capacidade das redes neurais para produzir respostas razoáveis para casos gerais, após ter sido treinado para casos específicos, pode ser considerado como “generalização.”
Qualquer processo que se ajusta os dados apontam para um modelo, tais como os pontos de fixação de uma linha ou outra curva, também produz um efeito “generalizar,” por isso o fato de que uma instalação de rede neural para produzir resultados desejados para aulas específicas resulta em um tipo de generalização não é extraordinário, mas que, todavia, é interessante observar a capacidade de generalizar a partir de casos concretos.
9. Exemplo: Tic-tac-toe “(Naughts e Cruzes)”
9.1 Introdução
Tic-tac-toe “(Naughts e Cruzes)” é um jogo simples 3 * 3 jogado em uma grade de células que podem ser marcadas com “O” ou “X”.
Os jogadores alternadamente lugar “O” e “X” marcas em células desocupados até um dos jogadores completar uma linha, coluna, ou diagonal.
Porque há 3 linhas, colunas e 3, 2 e diagonais, há oito vencedores padrões para cada jogador.

Tic-Tac-Toe bordo e ganhar padrões
É banal a escrever uma função recursiva que explora todas as possíveis Tic-Tac-Toe jogos, pois a duração máxima do jogo é de nove jogadas.
Em cada ponto do jogo nós simplesmente analisar os resultados do movimento em cada um dos restantes desocupados células.
Essa função pode confirmar que Tic-Tac-Toe um jogo “perfeito” jogado com “jogadores” irá terminar sem vencedor.
9.2 Formação uma rede neural para indicar as melhores jogadas
Uma função recursiva pode explorar todos os jogos possíveis e determinar a melhor jogada para cada configuração bordo.
Nós adicionamos bordo de cada configuração (insumos), ea melhor jogada (resultados desejados), a formação de uma lista de itens.
Estamos então a rede de comboios de produzir os resultados desejados para cada conjunto de factores de produção.
A rede terá 9 entradas correspondentes a cada célula da grelha, e os valores de entrada serão limitados aos seguintes valores:
0: desocupados celular
+1: Protagonist jogador
-1: Adversário jogador
A rede terá 9 realizações correspondentes a cada célula da grelha, e valores de saída será limitado aos seguintes valores:
0: Não mova aqui
1: Mova aqui
Oito saídas deverá ser ajustado para “0,” e uma saída será definido para “1.”
Assim, após a formação da rede neural, um conselho configuração pode ser especificado como entrada, e a rede neural irá indicar a melhor jogada.
A saída mais próximo de “1” irá indicar a melhor jogada, e todas as outras saídas deve ser próximo de “0.”
Em geral, qualquer função com parâmetros booleanos e saídas booleana pode ser representada por uma rede neural com duas camadas de neurônios.
A primeira camada de neurônios pode dividir o espaço multidimensional, em que regiões, ea segunda camada combina a região classificações apropriadas para produzir os valores de saída.
O Tic-Tac-Toe rede neural booleana produz resultados, e embora os factores de produção têm três estados ( -1, 0, +1 ), poderíamos, em princple, converter esses poucos discreta entrada para um conjunto de valores booleanos insumos.
Portanto, duas camadas de neurônios deve ser suficiente para saber Tic-Tac-Toe.
Devido ao facto de a rede tem 9 saídas, há 9 neurônio instâncias, no final (segundo) camada.
Os únicos remanescentes rede neural design decisão é decidir o número de neurônios órgãos de colocar na primeira camada da rede neural.
Para tomar esta decisão, código computador pode gerar e formar uma rede neural com N neurônios na primeira camada.
A capacidade da rede neural para aprender o conjunto completo de formação para Tic-Tac-Toe pode ser gráfico.
O gráfico seguinte mostra a formação global fixado para cada um erro durante a formação de 48 diferentes redes neurais, com N = 1,2,...,48 neurônios na primeira camada.

Globalmente treinamento conjunto erro durante a formação, para N = 1,2,...,48 neurônios na primeira camada (N = 1 está no topo, e N = 48 está na parte inferior, ea maior parte intermediária curvas são mais baixos para os valores mais elevados de N)
Outra maneira de visualizar esta tendência é a de formar uma superfície a partir da seqüência de curvas:

Globalmente treinamento conjunto erro durante a formação, para N = 1,2,...,48 neurônios na primeira camada (N = 1 é a parte de trás, e N = 48 está na frente)
Assim, vemos que, como nos aproximamos N = 48 neurônios na primeira camada, a rede parece ser capaz de aceitar todos os processos de formação.
Nada menos do que 48 neurônios níveis parece suficiente para saber o conjunto completo de casos.
Por baixo do número de neurônios, cada neurônio adicional reduz significativamente o erro global.
No entanto, quando o número de neurônios está perto do número necessário para aprender a todo o conjunto de aulas, cada neurônio adicional só reduz o erro em uma quantidade relativamente pequena.
A imagem seguinte mostra uma rede neural com 9 entradas, e 48 neurônios na primeira camada órgãos, organismos e 9 neurônio em uma segunda camada, 9 e saídas.

Uma rede neural capaz de aprender a jogar tic-tac-toe
O computador código associado a este documento inclui código para a construção e treinar a rede neural mostrado acima.
O treinamento conjunto de formação tem 4520 pontos.
Formação em 200 iterações (envolvendo propagação 3