Você está na página 1de 4

www.datascienceacademy.com.

br



Engenharia de Dados com Hadoop e Spark


Multilayer Perceptron
(MLP)




Engenharia de Dados com Hadoop e Spark

Este é um bônus deste capítulo, que trata de um algoritmo de classificação mais complexo e
mais avançado. Por esta razão, você encontra uma introdução mais formal, com uma
explicação e exemplos sobre o algoritmo.


Rede Neural é um algoritmo antigo que foi desenvolvido com um objetivo: prover cérebro para
os computadores. A Rede Neural é inspirada na estrutura biológica do cérebro humano, com
múltiplos neurônios conectados que formam colunas e camadas. Um neurônio é uma célula
eletricamente ativa que processa e transmite informação através de sinais químicos e elétricos.
Os inputs para os neurônios em uma rede neural são feitos através de nossos sensores
orgânicos (visão, audição, etc...) e então processados em alto nível.

Neurônios são unidades computacionais no cérebro que coletam inputs a partir dos nervos de
entrada, chamados dendritos. Os neurônios realizam a computação destes inputs e enviam o
output pelos nervos de saída, chamados axônios.

Data Science Academy 2


www.datascienceacademy.com.br
Engenharia de Dados com Hadoop e Spark


Desta mesma forma, nós desenvolvemos redes neurais nos computadores. Representamos um
algoritmo de rede neural da seguinte forma:



Onde x1, x2 e x3 são vetores de atributos (variáveis) que são atribuídos a função f, que fará a
computação e apresentará o output. Para problemas de classificação, a função f é normalmente
do tipo softmax.

Uma Rede Neural ou uma Rede Neural Artificial normalmente se refere a uma Rede MLP. Uma
Rede MLP consiste de múltiplas camadas de unidades de neurônios. Vamos compreender uma
rede perceptron de 3 camadas, conforme a figura abaixo. A primeira camada (Input Layer) da
Rede MLP representa o input cujo propósito é apenas encaminhar o input para as camadas
seguintes (feed-forward). A segunda camada é chamada camada oculta e a última camada é a
camada que determina o output. A ativação dos neurônios na camada oculta, pode ser definida
pela soma dos pesos dos inputs:

Data Science Academy 3


www.datascienceacademy.com.br
Engenharia de Dados com Hadoop e Spark

Em cada input e camada oculta, as unidades de neurônio são distribuídas para outros nós e por
isso esse tipo de rede é chamada “rede totalmente conectada”.

Uma Rede MLP pode ter mais de uma camada oculta. Para construir uma Rede MLP efetiva,
devemos considerar uma série de itens, como número de camadas ocultas, número de
neurônios em cada camada, a cost function para minimizar o erro, etc...

A implementação da Rede MLP no Apache Mahout é baseada no modelo de Rede Neural
clássico, sendo implementado em uma única máquina usando Gradient Descent. Na linha de
comando usamos as classes TrainMultilayerPerceptron e RunMultilayerPerceptron do pacote
mrlegacy com três outras classes: NeuralNetwork.java, NeuralNetworkFunctions.java e
MultilayerPerceptron.java. Este design do Mahout, nos dá liberdade para controlar a topologia
da Rede MLP.

Em anexo você encontra o script para criar e executar um modelo MLP para classificar as flores
no dataset iris.

Para criar a MLP usamos:

mahout org.apache.mahout.classifier.mlp.TrainMultilayerPerceptron



Para executar/testar a MLP, usamos:

mahout org.apache.mahout.classifier.mlp.RunMultilayerPerceptron

Data Science Academy 4


www.datascienceacademy.com.br

Você também pode gostar