PyBrain - 概述


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

Pybrain 官方文档的定义如下 -

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

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

Pybrain的特点

以下是 Pybrain 的功能 -

网络

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

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

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

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

数据集

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

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

ClassificationDataSet - 主要用于处理分类问题。它接受输入目标字段以及一个称为“类”的额外字段,它是给定目标的自动备份。例如,输出将为 1 或 0,或者输出将与基于给定输入的值分组在一起,即,它将属于一个特定类别。

训练师

当我们创建一个网络(即神经网络)时,它将根据给定的训练数据进行训练。现在网络是否训练正确将取决于在该网络上测试的测试数据的预测。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 文档,机器学习的流程如下图所示 -

Pybrain的工作流程

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

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

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

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

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

术语

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

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

训练数据- 用于训练 Pybrain 网络的数据。

测试数据- 用于测试经过训练的 Pybrain 网络的数据。

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

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

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

- 层基本上是一组用于网络隐藏层的函数。

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

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

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

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