PyBrain - Panoramica

Pybrain è una libreria open source per l'apprendimento automatico implementata utilizzando python. La libreria offre alcuni algoritmi di addestramento facili da usare per reti, set di dati, trainer per addestrare e testare la rete.

La definizione di Pybrain come indicato dalla sua documentazione ufficiale è la seguente:

PyBrain è una libreria di machine learning modulare per Python. Il suo obiettivo è offrire algoritmi flessibili, facili da usare ma ancora potenti per le attività di machine learning e una varietà di ambienti predefiniti per testare e confrontare i tuoi algoritmi.

PyBrain è l'abbreviazione di Apprendimento per rinforzo basato su Python, Intelligenza artificiale e Libreria di reti neurali. In effetti, prima abbiamo inventato il nome e successivamente abbiamo decodificato questo "Backronym" piuttosto descrittivo.

Caratteristiche di Pybrain

Le seguenti sono le caratteristiche di Pybrain:

Reti

Una rete è composta da moduli e sono collegati tramite connessioni. Pybrain supporta reti neurali come Feed-Forward Network, Recurrent Network, ecc.

feed-forward networkè una rete neurale, in cui le informazioni tra i nodi si muovono in avanti e non viaggeranno mai all'indietro. La rete Feed Forward è la prima e la più semplice tra le reti disponibili nella rete neurale artificiale.

Le informazioni vengono passate dai nodi di input, accanto ai nodi nascosti e successivamente al nodo di output.

Recurrent Networkssono simili a Feed Forward Network; l'unica differenza è che deve ricordare i dati ad ogni passaggio. La cronologia di ogni passaggio deve essere salvata.

Set di dati

I set di dati sono i dati da fornire per testare, convalidare e addestrare sulle reti. Il tipo di set di dati da utilizzare dipende dalle attività che verranno eseguite con Machine Learning. I set di dati più comunemente usati supportati da Pybrain sonoSupervisedDataSet e ClassificationDataSet.

SupervisedDataSet - Si compone di campi di input e target. È la forma più semplice di un set di dati e viene utilizzata principalmente per attività di apprendimento supervisionato.

ClassificationDataSet- Viene utilizzato principalmente per affrontare problemi di classificazione. Ci vuoleinput, targetfield e anche un campo extra chiamato "class" che è un backup automatico dei target forniti. Ad esempio, l'output sarà 1 o 0 o l'output verrà raggruppato insieme ai valori in base all'input fornito, ovvero, o cadrà in una particolare classe.

Trainer

Quando creiamo una rete, ovvero una rete neurale, verrà addestrata in base ai dati di addestramento forniti. Ora se la rete è addestrata correttamente o meno dipenderà dalla previsione dei dati di test testati su quella rete. Il concetto più importante in Pybrain Training è l'uso di BackpropTrainer e TrainUntilConvergence.

BackpropTrainer - È un trainer che addestra i parametri di un modulo secondo un dataset supervisionato o ClassificationDataSet (potenzialmente sequenziale) retropropagando gli errori (nel tempo).

TrainUntilConvergence −Viene utilizzato per addestrare il modulo sul set di dati finché non converge.

Utensili

Pybrain offre moduli di strumenti che possono aiutare a costruire una rete importando il pacchetto: pybrain.tools.shortcuts.buildNetwork

Visualizzazione

I dati del test non possono essere visualizzati utilizzando pybrain. Ma Pybrain può lavorare con altri framework come Mathplotlib, pyplot per visualizzare i dati.

Vantaggi di Pybrain

I vantaggi di Pybrain sono:

  • Pybrain è una libreria gratuita open source per imparare il Machine Learning. È un buon inizio per qualsiasi nuovo arrivato interessato al machine learning.

  • Pybrain usa python per implementarlo e questo lo rende veloce nello sviluppo rispetto a linguaggi come Java / C ++.

  • Pybrain funziona facilmente con altre librerie di Python per visualizzare i dati.

  • Pybrain offre supporto per reti popolari come Feed-Forward Network, Recurrent Networks, Neural Networks, ecc.

  • Lavorare con .csv per caricare i set di dati è molto semplice in Pybrain. Consente inoltre di utilizzare set di dati da un'altra libreria.

  • La formazione e il test dei dati sono facili utilizzando i trainer Pybrain.

Limitazioni di Pybrain

Pybrain offre meno aiuto per qualsiasi problema affrontato. Ci sono alcune domande senza rispostastackoverflow e così via Google Group.

Flusso di lavoro di Pybrain

Come da documentazione di Pybrain, il flusso dell'apprendimento automatico è mostrato nella figura seguente:

All'inizio, abbiamo dati grezzi che dopo la preelaborazione possono essere utilizzati con Pybrain.

Il flusso di Pybrain inizia con i set di dati che sono suddivisi in dati addestrati e dati di test.

  • la rete viene creata e il set di dati e la rete vengono forniti al formatore.

  • il trainer addestra i dati sulla rete e classifica gli output come errori addestrati e errori di convalida che possono essere visualizzati.

  • i dati testati possono essere convalidati per vedere se l'output corrisponde ai dati addestrati.

Terminologia

Ci sono termini importanti da considerare mentre si lavora con Pybrain per l'apprendimento automatico. Sono i seguenti:

Total Error- Si riferisce all'errore mostrato dopo che la rete è stata addestrata. Se l'errore continua a cambiare ad ogni iterazione, significa che ha ancora bisogno di tempo per risolversi, finché non inizia a mostrare un errore costante tra le iterazioni. Una volta che inizia a mostrare i numeri di errore costanti, significa che la rete è convergente e rimarrà la stessa indipendentemente dall'addestramento aggiuntivo applicato.

Trained data - Sono i dati utilizzati per addestrare la rete Pybrain.

Testing data - Sono i dati utilizzati per testare la rete Pybrain addestrata.

Trainer- Quando creiamo una rete, ovvero una rete neurale, verrà addestrata in base ai dati di addestramento forniti. Ora se la rete è addestrata correttamente o meno dipenderà dalla previsione dei dati di test testati su quella rete. Il concetto più importante in Pybrain Training è l'uso di BackpropTrainer e TrainUntilConvergence.

BackpropTrainer - È un trainer che addestra i parametri di un modulo secondo un dataset supervisionato o ClassificationDataSet (potenzialmente sequenziale) retropropagando gli errori (nel tempo).

TrainUntilConvergence - Viene utilizzato per addestrare il modulo sul set di dati finché non converge.

Layers - I livelli sono fondamentalmente un insieme di funzioni che vengono utilizzate sui livelli nascosti di una rete.

Connections- Una connessione funziona in modo simile a un livello; l'unica differenza è che sposta i dati da un nodo all'altro in una rete.

Modules - I moduli sono reti costituite da buffer di input e output.

Supervised Learning- In questo caso, abbiamo un input e un output e possiamo utilizzare un algoritmo per mappare l'input con l'output. L'algoritmo è fatto per apprendere sui dati di addestramento forniti e iterato su di esso e il processo di iterazione si interrompe quando l'algoritmo prevede i dati corretti.

Unsupervised- In questo caso, abbiamo input ma non conosciamo l'output. Il ruolo dell'apprendimento senza supervisione è quello di essere addestrati il ​​più possibile con i dati forniti.