PyBrain - 概述

Pybrain 是一个使用 Python 实现的机器学习开源库。该库为您提供了一些易于使用的网络训练算法、数据集、训练器,用于训练和测试网络。

Pybrain 的官方文档定义如下 −

PyBrain 是一个 Python 模块化机器学习库。其目标是为机器学习任务提供灵活、易于使用且功能强大的算法,以及各种预定义环境来测试和比较您的算法。

PyBrain 是基于 Python 的强化学习、人工智能和神经网络库的缩写。事实上,我们先想出了这个名字,然后对这个非常具有描述性的"Backronym"进行了逆向工程。

Pybrain 的功能

以下是 Pybrain 的功能 −

网络

网络由模块组成,它们通过连接进行连接。Pybrain 支持前馈网络、循环网络等神经网络。

前馈网络是一种神经网络,其中节点之间的信息向前移动,永远不会向后移动。前馈网络是人工神经网络中可用的网络中第一个也是最简单的一个。

信息从输入节点传递,然后传递到隐藏节点,然后传递到输出节点。

循环网络与前馈网络类似;唯一的区别是它必须记住每一步的数据。必须保存每个步骤的历史记录。

数据集

数据集是用于在网络上测试、验证和训练的数据。要使用的数据集类型取决于我们要用机器学习执行的任务。Pybrain 支持的最常用数据集是 SupervisedDataSetClassificationDataSet

SupervisedDataSet − 它由 inputtarget 字段组成。它是数据集的最简单形式,主要用于监督学习任务。

ClassificationDataSet − 它主要用于处理分类问题。它包含 inputtarget 字段以及一个名为"class"的额外字段,它是给定目标的自动备份。例如,输出将是 1 或 0,或者输出将根据给定的输入与值分组在一起,即它将落入一个特定的类别中。

Trainer

当我们创建一个网络(即神经网络)时,它将根据提供给它的训练数据进行训练。现在,网络是否得到正确训练将取决于在该网络上测试的测试数据的预测。Pybrain Training 中最重要的概念是使用 BackpropTrainer 和 TrainUntilConvergence。

BackpropTrainer −它是一个训练器,通过反向传播错误(随时间变化)根据监督或 ClassificationDataSet 数据集(可能是连续的)训练模块的参数。

TrainUntilConvergence −它用于在数据集上训练模块,直到它收敛。

工具

Pybrain 提供工具模块,可通过导入包来帮助构建网络:pybrain.tools.shortcuts.buildNetwork

可视化

无法使用 pybrain 可视化测试数据。但 Pybrain 可以与其他框架(如 Mathplotlib、pyplot)配合使用来可视化数据。

Pybrain 的优势

Pybrain 的优势是 −

  • Pybrain 是一个用于学习机器学习的开源免费库。对于任何对机器学习感兴趣的新手来说,这都是一个很好的开始。

  • Pybrain 使用 python 来实现它,与 Java/C++ 等语言相比,这使其开发速度更快。

  • Pybrain 可以轻松地与其他 python 库配合使用以可视化数据。

  • Pybrain 为流行的网络提供支持,如前馈网络、循环网络、神经网络等。

  • 在 Pybrain 中使用 .csv 加载数据集非常容易。它还允许使用来自其他库的数据集。

  • 使用 Pybrain 训练器可以轻松进行数据训练和测试。

Pybrain 的局限性

Pybrain 对遇到的任何问题提供的帮助较少。 stackoverflowGoogle Group 上有一些未解答的问题。

Pybrain 的工作流程

根据 Pybrain 文档,机器学习的流程如下图所示 −

Workflow Of Pybrain

一开始,我们有原始数据,经过预处理后可以与 Pybrain 一起使用。

Pybrain 的流程从数据集开始,数据集分为训练数据和测试数据。

  • 创建网络,并将数据集和网络提供给训练器。

  • 训练器在网络上训练数据,并将输出分类为训练错误和验证错误,可以可视化。

  • 可以验证测试数据以查看输出是否与训练数据匹配。

术语

在使用 Pybrain 进行机器学习时需要考虑一些重要术语。它们如下 −

总误差 − 它指的是网络训练后显示的错误。如果错误在每次迭代中都不断变化,则意味着它仍然需要时间来稳定下来,直到它开始在迭代之间显示恒定的错误。一旦它开始显示恒定的误差数字,就意味着网络已经收敛并且无论应用任何额外的训练都将保持不变。

训练数据 − 它是用于训练 Pybrain 网络的数据。

测试数据 − 它是用于测试训练过的 Pybrain 网络的数据。

训练器 − 当我们创建一个网络,即神经网络时,它将根据提供给它的训练数据进行训练。现在,网络是否得到正确训练将取决于在该网络上测试的测试数据的预测。 Pybrain Training 中最重要的概念是使用 BackpropTrainer 和 TrainUntilConvergence。

BackpropTrainer − 它是一个训练器,通过反向传播错误(随时间)根据监督或 ClassificationDataSet 数据集(可能是连续的)训练模块的参数。

TrainUntilConvergence − 它用于在数据集上训练模块,直到它收敛。

− 层基本上是一组在网络隐藏层上使用的函数。

连接 − 连接的工作原理类似于层;唯一的区别是它将数据从网络中的一个节点转移到另一个节点。

模块 −模块是由输入和输出缓冲区组成的网络。

监督学习 − 在这种情况下,我们有输入和输出,我们可以使用算法将输入与输出映射。该算法用于学习给定的训练数据并对其进行迭代,当算法预测正确的数据时,迭代过程停止。

无监督 − 在这种情况下,我们有输入但不知道输出。无监督学习的作用是尽可能多地使用给定的数据进行训练。