Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Equipment >> Robô industrial

Incorporação de nós de polarização em sua rede neural

Este artigo mostra como adicionar valores de polarização a um Perceptron multicamadas implementado em uma linguagem de programação de alto nível, como Python.


Bem-vindo à série All About Circuits sobre redes neurais, criada pelo Diretor de Engenharia Robert Keim. Antes de continuar nesta lição sobre nós de polarização, considere o restante da série abaixo:
  1. Como realizar a classificação usando uma rede neural:o que é o Perceptron?
  2. Como usar um exemplo de rede neural simples Perceptron para classificar dados
  3. Como treinar uma rede neural Perceptron básica
  4. Compreendendo o treinamento de rede neural simples
  5. Uma introdução à teoria de treinamento para redes neurais
  6. Compreendendo a taxa de aprendizagem em redes neurais
  7. Aprendizado de máquina avançado com o Multilayer Perceptron
  8. A função de ativação sigmóide:ativação em redes neurais multicamadas Perceptron
  9. Como treinar uma rede neural multicamadas Perceptron
  10. Noções básicas sobre fórmulas de treinamento e retropropagação para percepções multicamadas
  11. Arquitetura de rede neural para uma implementação Python
  12. Como criar uma rede neural multicamadas Perceptron em Python
  13. Processamento de sinais usando redes neurais:validação no projeto de redes neurais
  14. Conjuntos de dados de treinamento para redes neurais:como treinar e validar uma rede neural Python
  15. Quantas camadas e nós ocultos uma rede neural precisa?
  16. Como aumentar a precisão de uma rede neural de camada oculta
  17. Incorporação de nós de polarização em sua rede neural






Nós de polarização, que podem ser adicionados a uma camada de entrada ou camada oculta do Perceptron, produzem um valor constante que é escolhido pelo designer.

Discutimos os valores de polarização na Parte 11 e encorajo você a ler (ou reler) a parte relevante desse artigo se você não tiver certeza sobre o que são nós de polarização ou como eles modificam e potencialmente aumentam a funcionalidade de uma rede neural.

Neste artigo, primeiro explicarei dois métodos de incorporação de valores de polarização em sua arquitetura de rede e, em seguida, conduziremos um experimento para ver se os valores de polarização podem melhorar o desempenho de precisão que obtivemos no artigo anterior (Parte 16).


Incorporando preconceitos por meio da planilha


O diagrama a seguir descreve uma rede que possui um nó de polarização na camada de entrada, mas não na camada oculta.




Se esta é a configuração que você está procurando, você pode adicionar um valor de polarização usando a planilha que contém seus dados de treinamento ou validação.

A vantagem desse método é simplesmente que nenhuma modificação substancial do código é necessária. A primeira etapa é inserir uma coluna em sua planilha e preenchê-la com seu valor de polarização:






Agora, tudo o que você precisa fazer é aumentar a dimensionalidade da camada de entrada em um:




Integrando preconceitos no código


Se você deseja um nó de polarização na camada oculta ou não gosta de trabalhar com planilhas, precisará de uma solução diferente.

Vamos supor que queremos adicionar um nó de polarização tanto para a camada de entrada quanto para a camada oculta. Primeiro, precisamos aumentar I_dim e H_dim , uma vez que nosso objetivo é integrar os nós de polarização de forma que funcionem como nós normais, mas com um valor pré-ponderado que é escolhido pelo designer e que nunca muda.

Vou fazer isso da seguinte maneira:




Criando o nó de polarização da camada de entrada


Como você deve se lembrar, usamos o código a seguir para montar o conjunto de dados de treinamento, separar os valores de saída de destino e extrair o número de amostras de treinamento.






Após essas instruções, o número de colunas na matriz bidimensional training_data será igual ao número de colunas de entrada na planilha. Precisamos aumentar o número de colunas em um para contabilizar o nó de polarização na camada de entrada e, enquanto isso, podemos preencher esta coluna adicional com o valor de polarização desejado.

O código a seguir mostra como isso pode ser feito.





Os np.ones () função cria uma matriz de uma coluna cujo número de linhas é igual a training_count , e atribui um valor de +1 a cada elemento nesta matriz. Então usamos o np.hstack () função para adicionar a matriz de uma coluna ao lado direito dos dados_de_treinamento originais variedade.

Observe que eu executei este procedimento tanto para os dados de treinamento quanto para os dados de validação. É importante lembrar que o objetivo não é realmente modificar os dados de treinamento ou validação; em vez disso, estamos modificando os dados como um meio de implementar a configuração de rede desejada.

Quando olhamos para um diagrama de blocos do Perceptron, os nós de polarização aparecem como elementos da própria rede; portanto, todas as amostras processadas pela rede devem passar por essa modificação.


Criando o nó de polarização de camada oculta


Podemos adicionar um bias ao processamento de feedforward modificando o loop for que calcula os valores de pós-ativação da camada oculta e, em seguida, inserindo manualmente o valor de bias para o último nó oculto (que na verdade é um nó de bias).

A primeira modificação é mostrada abaixo:





Se a rede estiver configurada para não ter nenhum nó de polarização de camada oculta, hidden_bias é igual a 0 e a execução do loop for permanece inalterada.

Se, por outro lado, decidimos incluir um nó de polarização de camada oculta, o loop for não calculará um valor de pós-ativação para o nó final na camada (ou seja, o nó de polarização).

A próxima etapa é incrementar a variável do nó para que ela acesse o nó de polarização no postActivation_H array e, em seguida, atribua o valor de polarização.






Observe que essas modificações devem ser aplicadas à parte de validação do código também.


Valores de polarização diferentes de +1


Na minha experiência, +1 é o valor de polarização padrão e não sei se há alguma justificativa sólida para usar outros números. O viés é modificado por pesos, portanto, escolher +1 não coloca restrições firmes sobre como o viés interage com a funcionalidade geral da rede.

No entanto, se quiser experimentar outros valores de polarização, você pode fazer isso facilmente. Para a tendência oculta, você apenas altera o número atribuído a postActivation_H [nó] . Para a polarização de entrada, você pode multiplicar a nova_coluna array (que inicialmente tem +1 para cada elemento) pelo valor de polarização desejado.


Testando o efeito do preconceito


Se você leu a Parte 16, sabe que meu Perceptron teve alguma dificuldade em classificar as amostras no Experimento 3, que era o problema de “alta complexidade”.

Vamos ver se a adição de um ou mais nós de polarização oferece uma melhoria consistente e significativa.

Minha suposição era que as diferenças na precisão da classificação seriam bastante sutis, portanto, para este experimento, calculei a média de dez execuções em vez de cinco. Os conjuntos de dados de treinamento e validação foram gerados usando a mesma relação de alta complexidade entre entrada e saída, e a dimensionalidade da camada oculta era 7.

Aqui estão os resultados:





Conclusão


Como você pode ver, os nós de polarização não levaram a nenhuma mudança significativa no desempenho da classificação.

Na verdade, isso não me surpreende - acho que os nós de polarização às vezes são um pouco enfatizados demais e, dada a natureza dos dados de entrada que usei neste experimento, não vejo razão para que os nós de polarização ajudem.

No entanto, a polarização é uma técnica importante em algumas aplicações; é uma boa ideia escrever um código que suporte a funcionalidade de nó de polarização para que esteja lá quando você precisar.

Robô industrial

  1. Repensando seu plano de jogo para monitoramento de rede
  2. Como fortalecer seus dispositivos para evitar ataques cibernéticos
  3. Construindo uma rede de sensores sem fio em sua casa
  4. Compreendendo os mínimos locais no treinamento de rede neural
  5. Como aumentar a precisão de uma rede neural de camada oculta
  6. Como integrar o gerenciamento de peças sobressalentes em seu CMMS
  7. [Entrevista] Especialistas do setor sobre como escolher sua rede IoT
  8. Como integrar com sucesso a robótica em suas instalações
  9. Transformando sua cadeia de suprimentos em um centro de oportunidades
  10. Quão segura é a sua rede de chão de fábrica?