Skip to content

Este é um código que implementa, passo a passo, o processo de treinamento de um neurônio artificial com o algoritmo Backpropagation.

Notifications You must be signed in to change notification settings

Daniell-Dantas/Treinamento-de-Rede-Neural-Artificial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 

Repository files navigation

Treinamento de Rede Neural Artificial

ezgif com-gif-maker

💻 Como trabalho proposto na disciplina Redes Neurais Artificiais da graduação em Engenharia Elétrica, este é um código básico que implementa, passo a passo, o processo de treinamento de uma Perceptron de Múltiplas Camadas por meio do algoritmo backpropagtion. Para isso, foi utilizado um banco de dados conhecido para problemas de classificação, o dataset Iris 🌼

OBS: O código tem por objetivo exemplificar a etapa de treino 🏋🏾‍♀ e atualização dos pesos com código próprio, as outras etapas importantes como validação cruzada e teste não estão presentes neste código.

Modelo de Neurônio

O neurônio é a unidade básica morfofuncional do tecido nervoso e, da mesma maneira, é a unidade básica de processamento da rede neural. Estes modelos computacionais inspirados em neurônios biológicos possuem algumas características semelhantes aos naturais para poder desfrutar da capacidade de aprendizado, são elas: sinais de entrada, pesos sinápticos, função de soma, função de ativação e sinal de saída. Para realizar esse processo em uma linguagem de programação, é aconselhável utilizar operações matriciais, pois assim ocorre uma otimização na etapa de compilação. Teremos então, um vetor de entrada e um vetor de pesos (ou matriz, caso haja mais de um neurônio na camada).

neuronio

Forma de Aprendizado

Os pesos sinápticos são peças fundamentais para o armazenamento de informação do neurônio artificial, é através deles que o modelo possui a capacidade de aprender. Utiliza-se o algoritmo de Backpropagation, que possibilita o ajuste dos pesos em camadas intermediárias, fazendo a chamada “retropropagação do erro”, ou seja, utiliza o valor do erro da camada de saída no ajuste dos pesos das outras camadas ocultas.

Algoritmo Backpropagation

A inicialização dos pesos sinápticos ocorre de maneira randômica, a escolha dos pesos iniciais pode prevenir o problema do mínimo local e ainda a saturação prematura da rede. O fluxo de informação acontece em duas etapas, primeiramente na etapa "forward", a rede é apresentada aos padrões de treinamento e tem seus pesos excitados a produzir uma saída, na etapa “backward”, calcula-se o erro da rede para aquele padrão e este erro, então, é "retro propagado" para as outras camadas ocultas da rede, que não tem acesso direto ao erro da camada de saída. É nesta etapa que os pesos são atualizados e a rede adquire conhecimento, o processo se repete até que o critério de parada seja satisfeito (o critério adotado foi o de número de épocas de treinamento).

A imagem abaixo faz um resumo geral das etapas do código

Gráficos

Os gráficos apresentados a seguir tem por finalidade melhorar a compreensão dos processos executados e a importância de cada um. Para gerar estes gráficos, utilizou-se 5 neurônios na camada escondida, 300 épocas e taxa de aprendizado de 0.01

  • Imagem 1 - Evolução do erro por número de épocas

Esta imagem mostra a magnitude do erro quadrático médio para cada número de épocas, onde o erro se inicia em aproximadamente 0.04 e finaliza em aproximadamente 0.015 na época de número 300

  • Imagem 2 - Saída desejada e saída de treinamento

Apresenta os valores de saída do treinamento (círulo azul) sobrepostos aos valores de saída desejado (asterisco verde) para as classes 1 (Iris Setosa), 2 (Iris Versicolour) e 3 (Iris Virginica). Note que esta imagem não representa a classificação final, já que os valores estão plotados de maneira contínua. Para performar a classificação, poderíamos por exemplo instituir limites de valores para as classes, sendo a classe 1 correspondendo aos valores de saída entre 0.5 e 1.5, a classe 2 aos valores de 1.5 a 2.5 e a classe 3 aos valores entre 2.5 e 3.5

  • Imagem 3 - Saídas e épocas

A finalizade desta imagem é proporcionar o "feeling" sobre como as classificações vão se ajustando e ficando melhor à medida que o número de épocas aumenta. Na imagem podemos observar que as classificações começam muito dispersas e se concentram à medida que os pesos se ajustam

Para qualquer dúvida, consideração ou sugestões, fique à vontade de entrar em contato 📧

About

Este é um código que implementa, passo a passo, o processo de treinamento de um neurônio artificial com o algoritmo Backpropagation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages