Redes neuronais artificias — Perceptron de uma camada
Esta série de artigos tem como objetivo trazer de forma simples e objetiva os conceitos mais importantes para aqueles que têm interesse em aprender sobre machine learning e aplicar em sua vida cotidiana de desenvolvedor de software tais conceitos.
Não se preocupe, não muito adiante vamos apresentar os códigos para tal, o mais importante é desenvolver o entendimento de como é possível que um computador “aprenda” algo.
Partindo do início, uma rede neural é uma técnica que objetiva aprender um padrão a partir de um conjunto conhecido de amostras e generalizar seu aprendizado para um conjunto não conhecido. Isso funciona basicamente como nós, seres humanos, aprendemos as coisas. Suponhamos que você aprendeu identificar um cão da raça pastor alemão, golden retriever e labrador. Quando você ver pela primeira vez um shih-tzu, saberá que se trata de um cão pois aprendeu quais são as características genéricas que o definem tal tipo de animal.
A imagem acima representa o valor de entrada, ou o valor observado. os pesos atribuídos a cada um desses valores, ou seja, a “importância” desses valores para o modelo. Depois disso temos uma função de somatório do produto dos pesos (w) pelas observações (x) seguindo de uma função de ativação para então deduzirmos o possível valor de f(x).
Acima podemos ver dois exemplos de função de ativação, no primeiro o valor é ativado, quando o valor observado é maior que zero, caso contrário ele é inativado. No caso da função Sigmoid ela não possui uma ativação binária, mas trabalha com um espectro de ativação ou probabilidade.
Precisamos ter em mente mais um conceitos muito importante no contexto de machine learning que é o de taxa de aprendizado. Essa taxa vai ditar o ritmo ou a velocidade que o algoritmo avançará em direção à obtenção dos pesos. Na figura abaixo podemos observar que caso a taxa de aprendizado for muito baixa, a acurácia será alta, entretanto o tempo de aprendizagem será muito alto. Caso a taxa for muito alta poderemos “pular” a solução ótima, que nesse caso seria o ponto mais baixo da curva.
Um exemplo prático seria aprender qual o padrão de uma porta lógica AND e OR. Vejamos o exemplo abaixo:
Acima podemos ver que AND é verdadeira quando todos os seus valores são TRUE e OR é falso quando todos seus valores são FALSE.
Vamos agora aplicar o modelo de rede neural apresentado na Figura 1 para chegarmos a essa mesma conclusão sobre a porta AND.
Observamos através da Figura 5 que iniciamos os pesos com o valor zero, calculamos o somatório do produto dos valores observados (x1, x2) pelos pesos (w) . A função de ativação ao final da rede será uma função degrau, ou seja, ela será ativada como TRUE caso o valor seja maior que 1. Como a taxa de aprendizado foi atribuída como 0.1, o algoritmo incrementa esse valor a cada iteração. Nas Figuras 6:10 a mesma lógica será aplicada. O erro é simplesmente o valor observado classe menos o valor previsto f(x).
Na sexta iteração o algoritmo chega em seu valor ótimo, onde o valor do erro é igual a zero, nesse caso aprendendo o padrão para classificar como TRUE ou FALSE dada uma entrada x1 e x2 para uma porta lógica AND ou OR.
Podemos dizer que o conhecimento de uma rede neural reside em seu conjunto de pesos. Assim, seu objetivo é encontrar o conjunto de pesos que para qualquer entrada ela possa generalizar seu conhecimento assim classificando um conjunto de entradas ainda não conhecido.
O conjunto de pesos acima consegue classificar uma porta como AND ou OR, entretanto não consegue generalizar o suficiente para ser capaz de classificar uma porta como XOR. Isso porque não é possível separar no plano cartesiano por meio de uma reta, valores sendo TRUE ou FALSE para a porta XOR.
Percebemos analisando a Figura 11 que o modelo Perceptron de uma camada tem como limite de atuação problemas linearmente separáveis. Para conjuntos de dados não lineares, aqueles que compreendem a grande maioria dos problemas do mundo real que temos interesse em resolver vamos precisar fazer uso de um modelo de multi-camadas, o qual apresentaremos em nosso próximo artigo. Até lá.