Neurônios Artificiais – Modelo Perceptron
Continuando com o modelo de neurônio artificial, na visão de McCulloch-Pitts (MCP) e o limiar introduzido por Rosenblatt, vamos agora tratar da regra de aprendizagem dessa tecnologia. Podemos pensar que se trata de uma aproximação reduzida para simular como um neurônio biológico funciona dentro do cérebro, ou seja, se o neurônio vai ou não disparar um sinal de saída.
Portanto, em uma simples sumarização, o algoritmo de aprendizado, seria:
- Os pesos são iniciados com 0 ou em números aleatórios menores que 0.
- Para cada exemplo de treinamento, x(i):
a. Calcular a saída para, ŷ.
b. Atualizar os pesos.
Regra de Aprendizado
No primeiro artigo sobre o modelo perceptron, foi mostrada a regra da função que faz o cálculo linear com a entrada da rede:
O resultado dessa equação é o label, ou seja, a classe predita pelo resultado da combinação linear. Agora, considerando a regra de aprendizagem, vamos atualizar simultaneamente o valor de cada peso, wj, no vetor de pesos, w.
A seguir, uma definição formal para regra de atualização dos valores do vetor de pesos.
Nesse contexto, cada wj, será atualizado. Considerando a regra de aprendizagem, ∆wj, a regra é definida como:
Aqui, η é a taxa de aprendizado (geralmente uma constante entre 0.0 e 1.0).
y(i) é o valor da verdadeira classe para cada exemplo de entrada e ŷ(i) é o valor predito para cada entrada. Importante notar que todos os pesos do vetor de pesos, w, serão atualizados simultaneamente. O que significa que não poderemos calcular o label que foi predito em ŷ(i), antes de todos os pesos estarem atualizados.
Apresentamos um exemplo de cálculo para um conjunto de dados com duas dimensões:
A próxima etapa é a visualização de como funciona a atualização dos pesos e o ajuste no vetor de pesos, w. Para avançar, é necessário utilizar outros gráficos como apresentado anteriormente. Cria-se uma escala entre os vetores w e x, com pesos e entradas, e, através da definição geométrica, podemos escrever o mesmo produto e escalar da seguinte maneira:
Com os vetores, as suas magnitudes e o produto a escalar, podemos achar o ângulo entre os vetores:
De acordo com a geometria, há uma projeção escalar de w em x.
Vamos analisar um exemplo e usar um gráfico para verificar o processo de forma um pouco mais intuitiva.
Podemos imaginar aqui, que temos um conjunto de dados de um time de futebol (A e B). Simplificando, temos apenas duas colunas: a região do time e se ele possui técnico, ou não:
Agora, imagine que a região norte será fundamentada através de valores positivos e a região sul por valores negativos, o mesmo acontece com o campo que denomina se há ou não técnico. Se sim, temos valores positivos, caso contrário, valores negativos.
Exemplo:
É possível imaginar que quando a nossa rede tiver uma entrada de valores, [1,1], deveríamos ser capazes de prever que os dados são de um torcedor do time A.
Com o raciocínio apresentado é possível concluir:
É possível notar que o cosseno de α é proporcional ao produto dos vetores de x e w. Assim, quando o ângulo entre w e x for menor que 90 graus – para o caso do exemplo acima – com as entradas positivas, em que w pertence a classe que estamos procurando, ou quando o ângulo entre w e x for maior que 90 graus, a entrada x não pertence a classe que estamos procurando.
Em suma, o vetor de pesos é normalmente iniciado com valores aleatórios. Ao rodar o algoritmo, temos a etapa de atualização dos pesos. Imagine então que no processo de atualização dos pesos – o código será apresentado no próximo artigo – faz o vetor w, “deslizar” pelo plano, até convergir para a classe que estamos querendo encontrar. Aqui, para título de exemplo, consideramos uma entrada com dois vetores, mas podemos ter mais entradas, aumentando a dimensionalidade.
Para finalizar, confira um exemplo considerando os dados supracitados. Aleatoriamente, o nosso vetor de pesos w, foi definido como:
O input x, que para o nosso exemplo será o time A, ficou:
Lembrando que, w0 e A0 são os bias, ou seja, inserir termo em português, conforme explicado anteriormente. Em uma demonstração extremamente simples, temos:
Para esse caso z = 0.1, então z é > 0. Considerando uma demonstração bem simples, vamos assumir que a entrada A pertence a classe de torcedores do time A.
No próximo artigo, vamos examinar o passo a posso do algoritmo que faz a atualização dos pesos e implementar o modelo perceptron em Python.
Conclusão
Esse é o modelo perceptron. Agora que você entendeu o modelo básico, é possível avançar para os códigos ou algo do tipo para concluir o pensamento e adiantar que teremos o terceiro artigo da série. Clique aqui para ler o primeiro artigo desta série e acompanhe a @gftbrasil para acessar mais conteúdos.
Referências
https://towardsdatascience.com/perceptron-learning-algorithm-d5db0deab975
http://www.cs.columbia.edu/~mcollins/courses/6998-2012/notes/perc.converge.pdf
https://blogs.umass.edu/brain-wars/files/2016/03/rosenblatt-1957.pdf
Python Machine Learning – 3rd Edition – Sebastian Raschka e Vahid Mirijalili