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.