Rede Neural Perceptron Adaline

Como criar uma rede neural do zero e aprender os conceitos importantes

A rede Adaline (Adaptive Linear Element) proposta por Widrow e Hoff (1960) tem a mesma estrutura do Perceptron, diferenciando apenas no algoritmo de treinamento.

Características da Adaline
* Rede adaptativa
* Inclusão de um algoritmo pioneiro para treinamento de redes de múltiplas camadas, o algoritmo de treinamento da Regra Delta
* O algoritmo da Regra Delta é baseado no método dos mínimos quadrados.
* Método de aprendizado mais suave

Diagrama de uma rede Perceptron Adaline

A figura acima ilustra uma rede Adaline com n sinais de entrada (x1…xn) e uma única saída (y). Na Adaline é proposto a inclusão de um bloco de sinal de erro com o intuito de modificar os valores dos pesos antes de se submeter a função de ativação (g). Note também que ilustra apenas um único neurônio.

De modo semelhante ao Perceptron o processamento se dá pelas seguinte expressões:

Onde xi são os sinais de entrada, wi são os pesos sinápticos associados, θ é o bias (limiar de ativação), g(.) é a função de ativação (degrau ou degrau bipolar) e u é o potencial de ativação. O bloco associador demonstrado no diagrama acima tem uma função auxiliar no processo de treinamento da rede.

erro = d-u

Erro é igual ao valor esperado menos o valor do potencial de ativação produzido pela rede.

Regra Delta

O algoritmo de treinamento do Adaline é baseado no método dos mínimos quadrados, conhecido como Regra Delta.

Devido a incapacidade do algoritmo de treinamento do Perceptron em gerar pesos que classifiquem dados não linearmente separáveis, Widrow e Hoff projetaram a regra Delta em 1960.

O algoritmo utiliza o método do gradiente descendente com a intenção de diminuir o valor da função de erro possibilitando assim a convergência para um mínimo da função de erro

  • Objetivo: Realizar iterações locais para obter o ponto mínimo da função de erro e, assim, fixar os valores dos pesos quando o mínimo foi encontrado
  • Funcionamento: Através de um ponto arbitrário (vetor de pesos iniciado aleatoriamente), o algoritmo percorre, a cada iteração a superfície da função de erro em direção ao ponto de mínimo.

Então, temos:

Dessa forma o processo de treinamento da rede Adaline procura mover continuamente o vetor de pesos buscando minimizar o erro quadrático em relação as amostras de dados disponíveis para aprendizado.

A fim de ilustrar o processo visando o alcance da fronteira da separabilidade entre classes apresentamos abaixo duas situações que mostram sua convergência rumo a estabilização considerando apenas duas entradas {x1 e x2}

No Perceptron o hiperplano de separação das classes pode ter “infinitas disposições” pois a configuração final vetor de pesos (w) é dependente dos valores iniciais aleatoriamente atribuídos.

Na Adaline, a inclinação do hiperplano é ajustada por intermédio do método dos mínimos erros quadrados (LMS — least mean square), ou seja, independentemente dos valores inicialmente atribuídos ao vetor de pesos ocorrerá a busca pelo ótimo.

Construindo uma Rede Adaline

Um exemplo de rede Adaline para separar duas classes de flores Iris (Setosa e Versicolor) os dados para treinamento consistem em apenas 5 colunas (comprimento da pétala, largura da pétala, comprimento da sépala e largura da sépala, a última coluna é a classe da flor) e 35 amostras (linhas).

O programa aqui está escrito em linguagem python:

Gráfico do dataset considerando comprimento e largura da pétala / Gráfico de valor do erro por época durante o treinamento
Hiperplano de separação das classes Setosa e Versicolor

Ao plotarmos os dados no plano podemos ver as classes bem distantes, o que o caracteriza como um problema linearmente separável. O gráfico do erro/época está considerando uma taxa de aprendizado 0.001, o erro é então diminuído a cada época até que encontre o mínimo da função. Por fim, a separação realizada pelo Adaline, que segundo o treinamento realizado é a melhor separação (erro mínimo).

Procurei deixar bem ilustrativo, imprimindo gráficos com o hiperplano de separação das classes.

Enfim, espero que seja útil para aprender alguns conceitos importantes na construção de suas próprias redes.

Referências: https://books.google.com.br/books/about/REDES_NEURAIS_ARTIFICIAIS_PARA_ENGENHARI.html?id=w2VHbwAACAAJ&source=kp_book_description&redir_esc=y