PyBrain - Descripción general

Pybrain es una biblioteca de código abierto para el aprendizaje automático implementada con python. La biblioteca le ofrece algunos algoritmos de entrenamiento fáciles de usar para redes, conjuntos de datos, capacitadores para entrenar y probar la red.

La definición de Pybrain según lo establecido en su documentación oficial es la siguiente:

PyBrain es una biblioteca modular de aprendizaje automático para Python. Su objetivo es ofrecer algoritmos flexibles, fáciles de usar pero potentes para las tareas de aprendizaje automático y una variedad de entornos predefinidos para probar y comparar sus algoritmos.

PyBrain es la abreviatura de aprendizaje por refuerzo basado en Python, inteligencia artificial y biblioteca de redes neuronales. De hecho, primero se nos ocurrió el nombre y luego diseñamos este "Backronym" bastante descriptivo.

Características de Pybrain

Las siguientes son las características de Pybrain:

Redes

Una red se compone de módulos y se conectan mediante conexiones. Pybrain admite redes neuronales como Feed-Forward Network, Recurrent Network, etc.

feed-forward networkes una red neuronal, donde la información entre los nodos se mueve en la dirección de avance y nunca viajará hacia atrás. La red Feed Forward es la primera y la más simple entre las redes disponibles en la red neuronal artificial.

La información se pasa de los nodos de entrada, junto a los nodos ocultos y luego al nodo de salida.

Recurrent Networksson similares a Feed Forward Network; la única diferencia es que tiene que recordar los datos en cada paso. Debe guardarse el historial de cada paso.

Conjuntos de datos

Los conjuntos de datos son los datos que se proporcionarán para probar, validar y entrenar en redes. El tipo de dataset a utilizar depende de las tareas que vayamos a hacer con Machine Learning. Los conjuntos de datos más utilizados que admite Pybrain sonSupervisedDataSet y ClassificationDataSet.

SupervisedDataSet - Consta de campos de input y target. Es la forma más simple de un conjunto de datos y se usa principalmente para tareas de aprendizaje supervisado.

ClassificationDataSet- Se utiliza principalmente para tratar problemas de clasificación. Toma eninput, targetcampo y también un campo adicional llamado "clase" que es una copia de seguridad automática de los objetivos dados. Por ejemplo, la salida será 1 o 0 o la salida se agrupará con valores basados ​​en la entrada dada, es decir, o caerá en una clase en particular.

Entrenador

Cuando creamos una red, es decir, una red neuronal, se entrenará en función de los datos de entrenamiento que se le proporcionen. Ahora bien, si la red está entrenada correctamente o no, dependerá de la predicción de los datos de prueba probados en esa red. El concepto más importante en Pybrain Training es el uso de BackpropTrainer y TrainUntilConvergence.

BackpropTrainer - Es un entrenador que entrena los parámetros de un módulo según un conjunto de datos supervisado o ClassificationDataSet (potencialmente secuencial) propagando los errores (a través del tiempo).

TrainUntilConvergence −Se usa para entrenar el módulo en el conjunto de datos hasta que converja.

Herramientas

Pybrain ofrece módulos de herramientas que pueden ayudar a construir una red importando el paquete: pybrain.tools.shortcuts.buildNetwork

Visualización

Los datos de prueba no se pueden visualizar usando pybrain. Pero Pybrain puede trabajar con otros marcos como Mathplotlib, pyplot para visualizar los datos.

Ventajas de Pybrain

Las ventajas de Pybrain son:

  • Pybrain es una biblioteca gratuita de código abierto para aprender Machine Learning. Es un buen comienzo para cualquier principiante interesado en el aprendizaje automático.

  • Pybrain usa Python para implementarlo y eso lo hace más rápido en el desarrollo en comparación con lenguajes como Java / C ++.

  • Pybrain funciona fácilmente con otras bibliotecas de Python para visualizar datos.

  • Pybrain ofrece soporte para redes populares como Feed-Forward Network, Redes recurrentes, Redes neuronales, etc.

  • Trabajar con .csv para cargar conjuntos de datos es muy fácil en Pybrain. También permite usar conjuntos de datos de otra biblioteca.

  • El entrenamiento y la prueba de datos son fáciles con los instructores de Pybrain.

Limitaciones de Pybrain

Pybrain ofrece menos ayuda para cualquier problema que surja. Hay algunas consultas sin respuesta sobrestackoverflow y en Google Group.

Flujo de trabajo de Pybrain

Según la documentación de Pybrain, el flujo de aprendizaje automático se muestra en la siguiente figura:

Al principio, tenemos datos sin procesar que después del preprocesamiento se pueden usar con Pybrain.

El flujo de Pybrain comienza con conjuntos de datos que se dividen en datos entrenados y de prueba.

  • se crea la red y el conjunto de datos y la red se entregan al entrenador.

  • el entrenador entrena los datos en la red y clasifica las salidas como error entrenado y error de validación que se puede visualizar.

  • los datos probados se pueden validar para ver si la salida coincide con los datos entrenados.

Terminología

Hay términos importantes que deben tenerse en cuenta al trabajar con Pybrain para el aprendizaje automático. Son los siguientes:

Total Error- Se refiere al error que se muestra después de entrenar la red. Si el error sigue cambiando en cada iteración, significa que todavía necesita tiempo para asentarse, hasta que comienza a mostrar un error constante entre iteraciones. Una vez que comienza a mostrar los números de error constantes, significa que la red ha convergido y seguirá siendo la misma independientemente de que se aplique cualquier entrenamiento adicional.

Trained data - Son los datos que se utilizan para entrenar la red Pybrain.

Testing data - Son los datos utilizados para probar la red Pybrain entrenada.

Trainer- Cuando creamos una red, es decir, una red neuronal, se entrenará en función de los datos de entrenamiento que se le proporcionen. Ahora bien, si la red está entrenada correctamente o no, dependerá de la predicción de los datos de prueba probados en esa red. El concepto más importante en Pybrain Training es el uso de BackpropTrainer y TrainUntilConvergence.

BackpropTrainer - Es un entrenador que entrena los parámetros de un módulo según un conjunto de datos supervisado o ClassificationDataSet (potencialmente secuencial) propagando los errores (a través del tiempo).

TrainUntilConvergence - Se utiliza para entrenar el módulo en el conjunto de datos hasta que converja.

Layers - Las capas son básicamente un conjunto de funciones que se utilizan en capas ocultas de una red.

Connections- Una conexión funciona de forma similar a una capa; la única diferencia es que desplaza los datos de un nodo a otro en una red.

Modules - Los módulos son redes que constan de búfer de entrada y salida.

Supervised Learning- En este caso, tenemos una entrada y una salida, y podemos hacer uso de un algoritmo para mapear la entrada con la salida. El algoritmo está hecho para aprender sobre los datos de entrenamiento dados e iterados sobre ellos y el proceso de iteración se detiene cuando el algoritmo predice los datos correctos.

Unsupervised- En este caso, tenemos entrada pero no conocemos la salida. El papel del aprendizaje no supervisado es capacitarse tanto como sea posible con los datos proporcionados.