É uma questão principal, em relação à teoria das redes neurais:
Por que precisamos normalizar a entrada para uma rede neural?
Entendo que, às vezes, quando, por exemplo, os valores de entrada não são numéricos, uma certa transformação deve ser realizada, mas quando temos uma entrada numérica? Por que os números devem estar em um determinado intervalo?
O que acontecerá se os dados não forem normalizados?
Respostas:
Está bem explicado aqui .
fonte
Nas redes neurais, é uma boa ideia não apenas normalizar os dados, mas também escalá-los. Isso se destina a uma aproximação mais rápida aos mínimos globais na superfície do erro. Veja as seguintes imagens:
As fotos são tiradas do curso coursera sobre redes neurais. O autor do curso é Geoffrey Hinton.
fonte
Algumas entradas para NN podem não ter um intervalo de valores "naturalmente definido". Por exemplo, o valor médio pode ser lento, mas aumentando continuamente ao longo do tempo (por exemplo, vários registros no banco de dados).
Nesse caso, alimentar esse valor bruto em sua rede não funcionará muito bem. Você ensinará sua rede sobre valores da parte inferior do intervalo, enquanto as entradas reais serão da parte superior desse intervalo (e possivelmente acima do intervalo, com o qual a rede aprendeu a trabalhar).
Você deve normalizar esse valor. Você poderia, por exemplo, informar à rede quanto o valor foi alterado desde a entrada anterior. Esse incremento geralmente pode ser definido com alta probabilidade em um intervalo específico, o que o torna uma boa entrada para a rede.
fonte
Olhando a rede neural de fora, é apenas uma função que recebe alguns argumentos e produz um resultado. Como em todas as funções, ele possui um domínio (isto é, um conjunto de argumentos legais). Você precisa normalizar os valores que deseja passar para a rede neural para garantir que esteja no domínio. Como em todas as funções, se os argumentos não estiverem no domínio, não é garantido que o resultado seja apropriado.
O comportamento exato da rede neural em argumentos fora do domínio depende da implementação da rede neural. Mas, em geral, o resultado é inútil se os argumentos não estiverem dentro do domínio.
fonte
Existem duas razões pelas quais precisamos normalizar os recursos de entrada antes de alimentá-los na rede neural:
Razão 1 : Se um
Feature
naDataset
é grande em escala em comparação com outros, esse recurso em grande escala se torna dominante e, como resultado, as previsões da Rede Neural não serão precisas.Exemplo : No caso de Dados do funcionário, se considerarmos Idade e salário, a idade será um número de dois dígitos, enquanto o salário poderá ser de 7 ou 8 dígitos (1 milhão, etc.). Nesse caso, o salário dominará a previsão da rede neural. Porém, se Normalizarmos esses Recursos, os valores de ambos os Recursos estarão no intervalo de (0 a 1).
Razão 2 : A propagação frontal de redes neurais envolve o produto pontual de pesos com recursos de entrada. Portanto, se os valores forem muito altos (para dados de imagem e não imagem), o cálculo da saída leva muito tempo de computação e também memória. Mesmo é o caso durante a propagação traseira. Conseqüentemente, o modelo converge lentamente, se as entradas não forem normalizadas.
Exemplo : Se executarmos a Classificação de imagem, o Tamanho da imagem será muito grande, pois o Valor de cada pixel varia de 0 a 255. Nesse caso, a normalização é muito importante.
A seguir mencionadas são as instâncias em que a Normalização é muito importante:
fonte
Acredito que a resposta depende do cenário.
Considere NN (rede neural) como um operador F, de modo que F (entrada) = saída . No caso em que essa relação é linear, de modo que F (A * entrada) = A * saída , você pode optar por deixar a entrada / saída não normalizada em suas formas brutas ou normalizar ambas para eliminar A. Obviamente, essa suposição de linearidade é violado em tarefas de classificação ou quase qualquer tarefa que produza uma probabilidade, em que F (A * entrada) = 1 * saída
Na prática, a normalização permite que redes não ajustáveis sejam ajustáveis, o que é crucial para os experimentadores / programadores. No entanto, o impacto preciso da normalização dependerá não apenas da arquitetura / algoritmo da rede, mas também das estatísticas anteriores para a entrada e saída.
Além disso, o NN é frequentemente implementado para resolver problemas muito difíceis de maneira caixa preta, o que significa que o problema subjacente pode ter uma formulação estatística muito ruim, dificultando a avaliação do impacto da normalização, causando a vantagem técnica (tornando-se adaptável) dominar sobre seu impacto nas estatísticas.
No sentido estatístico, a normalização remove a variação que se acredita não causal na previsão do resultado, de modo a impedir que o NN aprenda essa variação como um preditor (o NN não vê essa variação e, portanto, não pode usá-la ).
fonte
Quando você usa recursos de entrada não normalizados, é provável que a função de perda tenha vales muito alongados. Ao otimizar com a descida do gradiente, isso se torna um problema, pois o gradiente será acentuado em relação a alguns dos parâmetros. Isso leva a grandes oscilações no espaço de pesquisa, enquanto você está saltando entre encostas íngremes. Para compensar, você precisa estabilizar a otimização com pequenas taxas de aprendizado.
Considere os recursos x1 e x2, onde variam de 0 a 1 e 0 a 1 milhão, respectivamente. Acontece que as razões para os parâmetros correspondentes (digamos, w1 e w2) também serão grandes.
A normalização tende a tornar a perda mais simétrica / esférica. É mais fácil otimizar porque os gradientes tendem a apontar para o mínimo global e você pode executar etapas maiores.
fonte
A razão pela qual a normalização é necessária é porque, se você observar como uma etapa adaptativa prossegue em um local no domínio da função, e simplesmente transportar o problema para o equivalente à mesma etapa traduzida por algum valor grande em alguma direção na domínio, então você obtém resultados diferentes. Tudo se resume à questão de adaptar uma peça linear a um ponto de dados. Quanto a peça deve se mover sem girar e quanto deve girar em resposta a esse ponto de treinamento? Não faz sentido ter um procedimento de adaptação alterado em diferentes partes do domínio! Portanto, a normalização é necessária para reduzir a diferença no resultado do treinamento. Ainda não escrevi isso, mas você pode apenas olhar para a matemática para uma função linear simples e como ela é treinada por um ponto de treinamento em dois lugares diferentes. Esse problema pode ter sido corrigido em alguns lugares, mas não estou familiarizado com eles. Nos ALNs, o problema foi corrigido e posso enviar um artigo se você escrever para wwarmstrong AT shaw.ca
fonte
Camadas ocultas são usadas de acordo com a complexidade de nossos dados. Se temos dados de entrada que são separáveis linearmente, não precisamos usar camada oculta, por exemplo, porta OR, mas se tivermos dados não linearmente separáveis, precisamos usar camada oculta, por exemplo, porta lógica ExOR. O número de nós obtidos em qualquer camada depende do grau de validação cruzada de nossa saída.
fonte