PyBrain - Visão geral

Pybrain é uma biblioteca de código aberto para aprendizado de máquina implementada usando python. A biblioteca oferece alguns algoritmos de treinamento fáceis de usar para redes, conjuntos de dados, treinadores para treinar e testar a rede.

A definição de Pybrain conforme apresentada em sua documentação oficial é a seguinte -

PyBrain é uma biblioteca modular de aprendizado de máquina para Python. Seu objetivo é oferecer algoritmos flexíveis, fáceis de usar, mas ainda assim poderosos, para tarefas de aprendizado de máquina e uma variedade de ambientes predefinidos para testar e comparar seus algoritmos.

PyBrain é a abreviação de Python-Based Reinforcement Learning, Artificial Intelligence, and Neural Network Library. Na verdade, nós inventamos o nome primeiro e depois fizemos a engenharia reversa deste "Backronym" bastante descritivo.

Características do Pybrain

A seguir estão as características do Pybrain -

Redes

Uma rede é composta por módulos e eles são conectados por meio de conexões. Pybrain suporta redes neurais como Rede Feed-Forward, Rede Recorrente, etc.

feed-forward networké uma rede neural, onde as informações entre os nós se movem na direção para frente e nunca viajam para trás. A rede Feed Forward é a primeira e a mais simples entre as redes disponíveis na rede neural artificial.

As informações são passadas dos nós de entrada, ao lado dos nós ocultos e posteriormente ao nó de saída.

Recurrent Networkssão semelhantes à Rede Feed Forward; a única diferença é que ele deve se lembrar dos dados em cada etapa. O histórico de cada etapa deve ser salvo.

Conjuntos de dados

Conjuntos de dados são os dados a serem fornecidos para testar, validar e treinar em redes. O tipo de conjunto de dados a ser usado depende das tarefas que faremos com o aprendizado de máquina. Os conjuntos de dados mais comumente usados ​​que o Pybrain suporta sãoSupervisedDataSet e ClassificationDataSet.

SupervisedDataSet - Consiste em campos de input e target. É a forma mais simples de um conjunto de dados e usado principalmente para tarefas de aprendizagem supervisionada.

ClassificationDataSet- É usado principalmente para lidar com problemas de classificação. Leva eminput, targete também um campo extra denominado "classe" que é um backup automatizado dos destinos fornecidos. Por exemplo, a saída será 1 ou 0 ou a saída será agrupada com valores baseados na entrada fornecida, ou seja, ou cairá em uma classe particular.

Treinador

Quando criamos uma rede, ou seja, uma rede neural, ela será treinada com base nos dados de treinamento fornecidos a ela. Agora, se a rede é treinada corretamente ou não, dependerá da previsão dos dados de teste testados nessa rede. O conceito mais importante no Pybrain Training é o uso de BackpropTrainer e TrainUntilConvergence.

BackpropTrainer - É um treinador que treina os parâmetros de um módulo de acordo com um conjunto de dados supervisionado ou ClassificationDataSet (potencialmente sequencial) por retropropagação dos erros (ao longo do tempo).

TrainUntilConvergence −É usado para treinar o módulo no conjunto de dados até que ele converta.

Ferramentas

Pybrain oferece módulos de ferramentas que podem ajudar a construir uma rede importando o pacote: pybrain.tools.shortcuts.buildNetwork

Visualização

Os dados do teste não podem ser visualizados usando o pybrain. Mas Pybrain pode trabalhar com outros frameworks como Mathplotlib, pyplot para visualizar os dados.

Vantagens do Pybrain

As vantagens do Pybrain são -

  • Pybrain é uma biblioteca gratuita de código aberto para aprender Aprendizado de Máquina. É um bom começo para qualquer iniciante interessado em aprendizado de máquina.

  • Pybrain usa python para implementá-lo e isso o torna mais rápido no desenvolvimento em comparação com linguagens como Java / C ++.

  • Pybrain funciona facilmente com outras bibliotecas de python para visualizar dados.

  • Pybrain oferece suporte para redes populares como Rede Feed-Forward, Redes Recorrentes, Redes Neurais, etc.

  • Trabalhar com .csv para carregar conjuntos de dados é muito fácil no Pybrain. Também permite o uso de conjuntos de dados de outra biblioteca.

  • O treinamento e o teste de dados são fáceis com os treinadores Pybrain.

Limitações do Pybrain

Pybrain oferece menos ajuda para quaisquer problemas enfrentados. Existem algumas questões sem resposta emstackoverflow e em Google Group.

Fluxo de Trabalho de Pybrain

De acordo com a documentação do Pybrain, o fluxo do aprendizado de máquina é mostrado na figura a seguir -

No início, temos dados brutos que, após o pré-processamento, podem ser usados ​​com o Pybrain.

O fluxo do Pybrain começa com conjuntos de dados que são divididos em dados treinados e de teste.

  • a rede é criada e o conjunto de dados e a rede são fornecidos ao treinador.

  • o treinador treina os dados na rede e classifica as saídas como erro treinado e erro de validação que podem ser visualizados.

  • os dados testados podem ser validados para ver se a saída corresponde aos dados treinados.

Terminologia

Existem termos importantes a serem considerados ao trabalhar com o Pybrain para aprendizado de máquina. Eles são os seguintes -

Total Error- Refere-se ao erro mostrado após o treinamento da rede. Se o erro continuar mudando a cada iteração, significa que ainda precisa de tempo para se resolver, até que comece a mostrar um erro constante entre as iterações. Uma vez que comece a mostrar os números de erro constantes, significa que a rede convergiu e permanecerá a mesma independentemente de qualquer treinamento adicional ser aplicado.

Trained data - São os dados usados ​​para treinar a rede Pybrain.

Testing data - São os dados usados ​​para testar a rede Pybrain treinada.

Trainer- Quando criamos uma rede, ou seja, uma rede neural, ela será treinada com base nos dados de treinamento que lhe foram fornecidos. Agora, se a rede é treinada corretamente ou não, dependerá da previsão dos dados de teste testados nessa rede. O conceito mais importante no Pybrain Training é o uso de BackpropTrainer e TrainUntilConvergence.

BackpropTrainer - É um treinador que treina os parâmetros de um módulo de acordo com um conjunto de dados supervisionado ou ClassificationDataSet (potencialmente sequencial) por retropropagação dos erros (ao longo do tempo).

TrainUntilConvergence - É usado para treinar o módulo no conjunto de dados até que ele converta.

Layers - As camadas são basicamente um conjunto de funções usadas em camadas ocultas de uma rede.

Connections- Uma conexão funciona como uma camada; uma única diferença é que ele muda os dados de um nó para outro em uma rede.

Modules - Módulos são redes que consistem em buffer de entrada e saída.

Supervised Learning- Nesse caso, temos uma entrada e uma saída, e podemos fazer uso de um algoritmo para mapear a entrada com a saída. O algoritmo é feito para aprender sobre os dados de treinamento fornecidos e iterados nele e o processo de iteração para quando o algoritmo prevê os dados corretos.

Unsupervised- Neste caso, temos entrada, mas não sabemos a saída. O papel do aprendizado não supervisionado é ser treinado tanto quanto possível com os dados fornecidos.