Rede Neural Perceptron Multicamadas
Crie sua própria multilayer perceptron (MLP) do zero usando TensorFlow
Perceptron Multicamadas (PMC ou MLP — Multi Layer Perceptron) é uma rede neural com uma ou mais camadas ocultas com um número indeterminado de neurônios. A camada oculta possui esse nome porque não é possível prever a saída desejada nas camadas intermediárias.
Para treinar a rede MLP, o algoritmo comumente utilizado é o de retropropagação (Backpropagation)
Diferentemente do Perceptron e Adaline, onde existe apenas um único neurônio de saída {y}, a MLP pode relacionar o conhecimento a vários neurônios de saída.
O algoritmo de aprendizado da MLP é chamado backpropagation é composto de 4 passos:
1º Passo: Inicialização
- Atribuir valores aleatórios para os pesos e limites
- Escolha dos valores iniciais influencia o comportamento da rede
- Na ausência de conhecimento prévio os pesos e limites devem ter valores iniciais aleatórios e pequenos uniformemente distribuídos
2º Passo: Ativação
- Calcular os valores dos neurônios da camada oculta
- Calcular os valores dos neurônios da camada de saída
3º Passo: Treinar os Pesos
- Calcular os erros dos neurônios das camadas de saída e oculta
- Calcular a correção dos pesos
- Atualizar os pesos dos neurônios das camadas de saída e oculta
4º Passo: Iteração
- Repetir o processo a partir do passo 2 até que satisfaça o critério de erro
Construindo uma Rede MLP
Faremos aqui uma rede MLP para separar as classes de flores Iris (Setosa, Virginica e Versicolor), utilizamos o mesmo dataset utilizado no post sobre a Rede Adaline, mas ela só conseguia separar em duas classes.
Observe que nossa rede terá 3 neurônios de saída (y) e como entrada (x) os valores de largura e comprimento das pétalas e sépalas. Teremos 1 camada oculta com 10 neurônios (você pode criar quantas camadas e neurônios quiser).
Dataset para Treinamento:
https://raw.githubusercontent.com/smoreira/MultiLayerPerceptron/master/iris.train
Dataset para Validação:
https://raw.githubusercontent.com/smoreira/MultiLayerPerceptron/master/iris.test
Exemplo em Python de TensorFlow:
Dica: Aumentar o número de camadas e neurônios nem sempre é a melhor solução para uma melhoria de performance/acurácia.
Na verdade uma das limitações da rede MLP é que ao se aumentar muito o número de camadas e neurônios ela tende a ficar com um número de parâmetros muito grande e com isso tão pesada ao ponto do hardware não conseguir processar e ela não convergir (chegar a um resultado), talvez por essa razão, até a evolução do hardware ela tenha ficado um pouco estagnada.
Referência
Silva, IN da, Danilo Hernane Spatti, and Rogério Andrade Flauzino. “Redes neurais artificiais para engenharia e ciências aplicadas.” São Paulo: Artliber (2010).