Com a crescente popularização da Inteligência Artificial, temos ouvido falar sobre o treinamento de redes neurais para solução de problemas.

Vamos explicar um pouco o que é redes neurais, como funciona, e como podemos visualizar na prática o seu funcionamento.

Se quiser aprender mais sobre esses assuntos sugerimos a leitura: O que é Machine Learning?

Como nosso Cérebro Funciona?

O cérebro recebe informações, essas por sua vez geram impulsos elétricos para os neurônios dentro do cérebro e o neurônio certo é ativado com base no seu conteúdo.

A imagem abaixo representa a estrutura de um neurônio em nosso cérebro.

imagem ilustrativa de um neurônio em nosso cérebro

Como um Neurônio funciona?

Dentrites são como caixas únicas de informação(conteúdo) e só geram impulso elétrico para o Axon Terminal quando identifica a informação.

Por exemplo: Quando um dentrite que tem como informação o que é um circulo. Só irá ativar o neurônio quando receber um Circulo como informação.

Se você mostrar um quadrado a esse dentrite. Por sua vez não irá produzir corrente elétrica até o Axon Terminal e por isso não irá ativar o neurônio.

Ativando o Neurônio

Na imagem abaixo podemos ver a ativação de um neurônio ocorre quando a linha Threshold(linha linear) é ultrapassada.

imagem matemática de pulsos eletricos gerados no cérebro e a linha que eles devem ultrapassar para ativar o neurônio

Como um Neurônio Artificial funciona?

Pensando nisso, surgiu-se a ideia de que cada Neurônio tem um linear de ativação diferente.

Logo quando um neurônio recebe um informação(x), só irá ativar o neurônio quando o seu peso(w) for superior a sua linha de ativação(t).

Caso contrário a corrente morre ali.

Já em caso positivo é gerado uma saída com um resultado entre 0(negativo/falso) e 1(positivo/verdadeiro).

imagem gráfica e matemática de um neurônio artificial, uma bola com duas detas de entrada e uma de saída.

Nesse ponto começa as questões matemáticas, onde forma definidas funções lineares para poder gerar o modelo básico do neurônio.

Nesse modelo o neurônio só consegue fazer operações binárias simples.

O que é Perceptron?

O modelo inicial acima era muito simples e para encontrar respostas mais precisas, foi modificado e nasceu o Perceptron.

O Perceptron é um neurônio que trabalha com vários pesos(w) e uma função linear que dará um valor que irá dizer se o neurônio será ativado ou não.

Assim o Perceptron é o modelo mais utilizado hoje, já que permite receber mais informações para gerar respostas mais precisas.

imagem do modelo matemático do perceptron, com N entradas e uma única saída com base em um função matemática linear

Abaixo uma imagem de como cada função de ativação produz um resultado diferente, e cada neurônio pode usar uma diferente da outra.

Exemplo gráfico de funções de ativação e seu comportamento padrão

O que é Multilayer Perceptron(MLP)?

Agora que você entendeu o que é Perceptron, nós iremos mostrar o seu uso ao resolver um problema.

Imagine em um plano, pontos negativos e positivos em um determinado espaço, como mostra a figura abaixo.

O objetivo do nosso algoritmo é separar esses pontos nesse espaço de alguma forma.

imagem de um plano no espaço com pontos positivos e negativos espalhados e agrupados.

O básico para resolver nosso problema seria traçar um hiperplano nesse espaço, algo que se parece como uma reta transversal como na figura abaixo.

imagem do plano no espaço com os pontos espalhados e agrupados agora dividiso por uma linha reta cortando esse plano separando em dois

No exemplo acima um único Hiperplano, não resolver nosso problema, já que ele vai acertar apenas a menor quantidade de dados. Logo eu preciso de mais um hiperplano.

imagem do plano com pontos agrupado agora separado por duas linhas retas separando o plano em 4 partes

Camada de Entrada: é a camada responsável por receber a informação e passar ela adiante para as próximas camadas. Conhecidadas como camadas escondidas.

imagem da camada de entrada, x1 e x2

Camada Escondida: é composta por neurônios, cada neurônio, gerar um corte no espaço gerando seus próprios resultados.

Na imagem abaixo podemos ver que existem 2 neurônios após a camada de entrada e repare que no nosso plano no espaço apareceram duas novas linhas.

imagem dos nuerônios na camada escondida, após a camada de entrada junto com o plano separado por duas linhas retas

A camada de entrada é responsável por enviar os dados para os neurônios avaliarem, e cada entrada é enviada para todos neurônios da camada escondida.

imagem da camada de entrada enviando informaçÕes para a camanda escondida

Camada de Saída: após as camadas de escondidas temos a camada de saída(output), que irá receber o resultado das análises feita por cada neurônio na camada anterior.

imagem da camada escondida enviando informações para a camada de saída

A camada de saída irá produzir um único resultado, que é o resultado que desejado.

Em nosso exemplo esperamos o resultado entre “positivo” ou “negativo”.

imagem completa da rede neural com os resultados esperados

Pesos(w): os valores enviados pela camada de entrada, são enviados para a camada escondida usando um peso(w) como multiplicador.

Na imagem abaixo podemos ver que a camada de entrada envia a informação X1 com o mulptiplicador w1 para o neurônio 1.

imagem da rede neural e agora mostrando a variável peso(w)

Seguindo os passos acima é feito o mesmo procedimento para cada entrada na camada de entrada enviando pesos para cada neurônio na camada escondida.

A imagem abaixo representa uma rede neural e o seu processo de treinamento até chegar a resposta desejada ou aproximada.

imagem da rede neural completa com todos os parâmetros possíveis para o treinamento

Redes Neurais na prática

É de extrema importância conhecer esses detalhes sobre parâmetros, também conhecidos hiper-parâmetros, do treinamento das redes neurais.

Hiper Parâmetro: entrada, pesos, quantidade de neurônios, funções lineares, ativação, normalização.

São parâmetros que podemos otimizar para que o resultado gerado seja mais preciso.

Vamos praticar?

Preparamos esse conteúdo para você aprender na prática a trabalhar com Redes Neurais e visualizar de forma gráfica os resultados.

Trabalhar como a otimização dos parâmetros e acompanhar em tempo real e visual como os resultados são alterados.

1 – Entre em http://playground.tensorflow.org/

2 – Na camada escondida deixe apenas 2 neurônios e na camada de saída colocamos 1 neurônio.

3 – Clique em Play e aguarde até 001,200 que representa 1200 treinamentos.

4 – Observe o resultado em output

imagem da rede neural pronta para ser treinada

Como esperado o resultado foi que o algoritmo não foi bom.

Porque ele só conseguiu separar parte dos meus pontos azuis.

Entendendo melhor o resultado, as cores de fundo quando são mais intensas representam a precisão dos resultados.

Logo fundo azul escuro sobre pontos azuis é o resultado preciso, do contrario os resultados não são precisos.

imagem do resultado do treinamento da rede neural

5 – Agora adicione mais 2 neurônios na camada escondida e rode o teste novamente.

Podemos observar abaixo que o algoritimo agora chegou mais próximo de uma resposta precisa.

imagem da rede nueral com 4 neurônios na camada escondida e o resultado que este teste produziu, que é mais positivo.

Agora é com você!

Nossa sugestão faça novos testes e mostre nos comentários qual o resultado que você conseguiu.

Dica: nesse mesmo exemplo adicione um novo neurônio na camada de output e veja o que acontece!

Deixe um comentário sobre o que achou desse conteúdo!

Referências

https://cloud.google.com/blog/products/gcp/understanding-neural-networks-with-tensorflow-playground

1 Comentário

Escreva um comentário