segunda-feira, 2 de março de 2015

[Python] - Redes Neurais com PyBrain

Olá pessoal, nesse post iremos conhecer um pouco mais sobre Redes Neurais Artificiais (RNA) utilizando a PyBrain que é uma biblioteca em Python que implementa redes neurais.

Antes de utilizarmos a PyBrain, é muito importante que você tenha pelo menos uma noção de que se trata redes neurais artificiais.

Gostamos muito da prática, mas a teoria irá lhe ajudar bastante a compreender o que iremos fazer no código. Portanto, antes de visualizar os códigos, assista a esses três vídeos sobre redes neurais:





Assistiu? Espero que tenha assistido pois tenho a certeza de que esses vídeos lhe ajudarão tanto quanto me ajudaram a compreender um pouco mais sobre Redes Neurais Artificiais.

Por que utilizar PyBrain? Primeiramente porque ela é muito fácil de usar (feita em Python, não poderia ser diferente né? hehe), tem uma documentação muito boa, está em constante atualização para melhorias e é open-source.

A PyBrain funciona nas versões do Python 2.5 ou superior e ela precisa também do SciPy versão 0.6 ou superior. É recomendado o Matplotlib versão 0.98 ou superior, veja só as dependências:


Eu instalei ela no Windows, eu precisei do Visual C++ Compiler para Python 2.7 (eu utilizo a PyBrain com Python 2.7).

Clique aqui para baixar o Visual C++ Compiler para Python 2.7

Precisei também instalar a SciPy, independente se você está usando Windows, Mac ou Linux, vai precisar instalar porque é uma dependência da PyBrain.

Para os usuários de Linux ou Mac, sigam as instruções do próprio site do SciPy:


Caso você queira instalar via gerenciador de pacotes pip, tem um tópico no StackOverFlow que trata exatamente disso:


Como eu instalei no Windows, eu instalei a SciPy através de um instalador, caso utilize Windows e queira instalar via executável, clique no link abaixo:


Agora que instalamos as dependências, vamos finalmente instalar a PyBrain, o site oficial da PyBrain é: http://pybrain.org/

Você poderá instalar via git que foi como eu fiz. Caso você não tenha o git instalado, visite o link abaixo para instalar de acordo com seu sistema operacional:


Feita a instalação, basta clonar o projeto com o seguinte comando:

git clone git://github.com/pybrain/pybrain.git

Depois é só entrar na pasta da pybrain, lá estará um arquivo chamado "setup.py", dê o seguinte comando para instalar a PyBrain:

python setup.py install

Você também pode utilizar o "easy_install" como bem descreve a página de instalação da PyBrain:


Agora sim podemos partir para os exemplos!

O primeiro exemplo que iremos fazer é o exemplo do XOR (disjunção exclusiva). Um XOR produz um valor verdadeiro se a quantidade de operadores verdadeiros for ímpar. Veja só a tabela-verdade com dois operadores:

Veja o código abaixo:


O código está bem comentado, mas é preciso alguns comentários a mais.

A rede criada é do tipo FeedForward (FF) que é uma rede onde cada camada se conecta à próxima camada, todas as conexões têm a mesma direção partindo da camada de entrada rumo à camada de saída.

Um exemplo de rede FF é a MLP (Multilayer perceptron) que consiste numa única camada de nós de saída que são alimentados diretamente por uma camada de entrada através de um conjunto de pesos.

Lembrando que é preciso vários experimentos para definir a estrutura ótima de uma rede.

O "bias" é uma espécie de entrada extra sempre com valor unitário sofrendo ponderação de um peso correspondente w0.

O algoritmo de backpropagation utiliza vetores que mapeiam um conjunto de entradas para um conjunto de saídas. O aprendizado é realizado pelo ajuste iterativo dos pesos da rede para minimizar as diferenças entre a saída atual e a saída desejada. Em seguida o vetor de saída produzido pela rede é comparado com o vetor desejado resultando num sinal de erro que é retropropagado através da rede para permitir o ajuste dos pesos.

Por padrão a PyBrain utiliza a função sigmoid para produzir a saída

Lembrando que no nosso exemplo utilizamos vetores de entradas de duas dimensões, mas redes neurais podem trabalhar com várias dimensões.

Estou estudando pelo livro do Ivan Nunes (Redes Neurais Artificiais para engenharia e ciências aplicadas), aconselho a todos que querem ampliar seus conhecimentos na área.


9 comentários:

Anônimo disse...

Parabéns pelo tutorial. Estou aprendendo a usar o Pybrain e foi muito útil.

Jeferson Roberto disse...

Olá, é possível implementar uma rede neural MLP Perceptron com esse framework?

Marcos Castro disse...

Sim, a pybrain implementa MLP Perceptron.

Jeferson Roberto disse...

Ola,

Fiquei muito interessado na utilização de pybrain, depois poderia disponibilizar um canal para tirar uma dúvidas?

Marcos Castro disse...

Tudo bem :)

Jeferson Roberto disse...

Então segue algumas dúvidas, estou tentando criar um modelo de rede neural que indica entre diversas linhas de HTML de um e-commerce, consiga encontrar as linhas na quais estejam relacionadas a produtos, como modelo e preço, para tornar mais fácil interpretação para minha rede, estou transformando todas as linhas de HTML para binário e a partir dai colocar esses arquivos na minha rede para ela verificar o processamento e os resultados obtidos, teria uma idéia de como fazer utilizando esse framework? fico no aguardo.

Marcos Castro disse...

Você poderia disponibilizar mais detalhes do que você quer fazer? Meu e-mail: mcastrosouza@live.com.

Jeferson Roberto disse...

Encaminhei as informações para o e-mail citado, fico no aguardo de um contato, obrigado.

Jeferson Roberto disse...

Já encaminhei as informações para seu e-mail, fico no aguardo, obrigado