Neste artigo irei explicar um pouco como um perceptron funciona, sabendo que ele é a base para entendermos uma rede neural artificial, e por fim irei disponibilizar um código em Python que realiza a criação de um perceptron de uma única camada.
Perceptron
Perceptron camada única
Primeiro para entendermos o perceptron precisamos entender como ele é formado, os Perceptrons são formados por 5 etapas sendo elas, Camada de entrada, calculo da soma, Função de ativação, camada de saída e Ajustes dos pesos.
Teoria
Camada de entrada
A camada de entrada como o próprio nome já diz será a camada onde você passara seus dados para que sejam calculados os valores para chegarmos aos valores de output desejados.
Calculo da soma
O calculo da sema é realizado para encontrarmos o valor desejado através da multiplicação das entradas pelos pesos, e o que seriam os pesos?
O peso é a coisa mais importante da rede neural, pois elas tem como função aprender o melhor peso possível para encontrar a saída desejada ou a saída mais próxima da desejada, os pesos são iniciados aleatoriamente, e a rede neural vai ajustando eles ate chegar neste melhor valor possível.
Formula da soma
Função de Ativação
A função de ativação tem como função realizar o ajuste da saída da função de soma para um certo valor e repassar ela para a camada de saida, em uma rede neural de uma única camada onde resolvemos somente problemas lineares iremos utilizar sempre a Step Function, e sempre ira retornar 0 ou 1 o que é mais que suficiente para problemas lineares, para retornar estes valores ela levar em consideração a seguinte condicional.
Se o Valor de Soma for maior ou igual a 1 ira retornar 1
Caso o valor seja menor de 1 retornara 0
Na parte pratica deste artigo ira compreender melhor como este função realiza esta conversão.
Camada de saída
Nesta parte do perceptron é onde chegamos ao resultado e todo o processo anterior e então a rede neural ira comparar com o resultado esperado e realizar o calculo do erro, onde iremos utilizar este erro posteriormente para o ajuste dos pesos, o calculo do erro é feito realizando a subtração da resposta esperada pela resposta obtida atraves da seguinte formula:
Ajustes dos pesos
Esta é a parte mais essencial para uma rede neural, pois a função das redes neurais é aprender pesos para chegar o mais próximo possível de um output desejado, para isso você terá que entender algumas partes teóricas sobre este ajuste de pesos, Primeiro teremos que entender o que seria a Taxa de aprendizagem
Taxa de Aprendizagem: Tem como função passar a velocidade de aprendizagem de uma rede Neural, uma taxa de aprendizagem baixa garante que você passe por cada uma das possibilidades de peso podendo assim ter um resultado melhor em sua Rede, te ajudando a chegar no mínimo possível de erros porem o tempo de processamento será mais alto, já uma taxa de aprendizagem alta ira diminuir seu tempo de processamento porem pode não chegar ao melhor resultado possível.
A formula de ajuste dos pesos é a seguinte:
Após entender estes conceitos podemos passar para a parte pratica de como estes cálculos são realizados
Execução
Para a execução desse nosso perceptron iremos utilizar a seguinte base de dados
Iremos começar pelo calculo da soma e iremos realiza-lo para cada uma das entradas de nossa base de dados.
Para isso precisaremos realizar a inicialização dos pesos e iremos iniciar com os pesos zerados para irmos ajustando eles aos poucos.
Calculo da soma Para cada um dos registros:
1º Registro:
Soma = (0*0)+(1*0)
Soma = 0
2º Registro:
Soma = (0*0)+(0*0)
Soma = 0
3º Registro:
Soma = (0*0)+(1*0)
Soma = 0
4º Registro:
Soma = (0*0)+(1*0)
Soma = 0
Após realizar o calculo da soma para cada um dos registros precisaremos realizar a passagem pela função de ativação e entao apos realizara passagem de cada registro pela função de atuvação vamos recebr os seguintes resultados :
1º Registro:
Saída=0
2º Registro:
Saída = 0
3º Registro:
Saída = 0
4º Registro:
Saída = 0
E após recebermos nossa saída podemos calcular o valor do nosso erro para cada registro a partir da seguinte formula
1º Registro:
erro = 0 -0
Erro = 0
2º Registro:
Erro = 0 -0
Erro = 0
3º Registro:
Erro = 1–0
Erro = 1
4º Registro:
Erro = 0–0
Erro = 0
Após encontrarmos o valor do erro precisaremos realizar o ajuste dos pesos para que os erros sejam diminuídos e iremos realizar isto apenas com o valor do erro que foi gerado pelo 3º Registro que foi o valor 1
Agora será necessário definir uma taxa de aprendizagem, iremos defini-la como 0.5 para encontramos de forma mais rápida no resultado final e entao calculamos o ajuste do peso que ira ficar da seguinte forma
Peso(n) = 0 +(0.5*1*1)
Peso(n) = 0.5
Com o peso ajustado retornamos para a primeira parte de nossa rede novamente realizando a função de soma, que retornara os mesmos resultados para os registros 1,2,4 já para o registro 3 iremos receber o seguinte valor
Soma = (1*0.5) +(1*0.5)
Soma = 1
Após isso passaremos este valor de soma para nossa função de ativação e se estiverem lembrados iremos receber o valor 1 pois o valor da soma é igual a 1
Após isso calcularemos o erro para esse nosso registro através do seguinte calculo
Erro = 1–1
Erro = 0
Sendo assim chegamos a todos os resultados esperados para cada um de nossos registros e então a rede neural é finalizada.
Lembrando que nem sempre a rede neural ira conseguir finalizar sem nenhum erro neste caso em especifico por se tratar de um problema simples ela conseguiu chegar a este resultado!
Espero Ter ajudado no entendimento sobre os perceptron simples!
Qualquer outra duvida estou a disposição para esclarece-la!
