Pybrain 简明教程

PyBrain - Overview

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

Pybrain 官方文档对其的定义如下 −

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

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

Features of Pybrain

以下是 Pybrain 的功能 −

Networks

一个网络由模块组成,并且它们使用连接进行连接。Pybrain 支持神经网络,如前馈网络、循环网络等。

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

信息从输入节点传递到下一个隐藏节点,之后传递到输出节点。

Recurrent Networks 类似于前馈神经网络;唯一的区别是它必须在每个步骤中记住数据。必须保存每个步骤的历史记录。

Datasets

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

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

ClassificationDataSet − 它主要用于解决分类问题。它接受 inputtarget 域,还接受一个名为“class”的额外域,它是所给目标的自动备份。例如,输出要么是 1 或 0,要么是基于给定输入的值将输出分组,也就是说,它会属于一个特定类。

Trainer

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

BackpropTrainer − 它是一个训练器,它通过反向传播误差(通过时间)根据监督或 ClassificationDataSet dataset(潜在序列)训练模块的参数。

TrainUntilConvergence − 用于训练数据模块,直至其收敛。

Tools

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

Visualization

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

Advantages of Pybrain

Pybrain 的优点包括:

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

  2. Pybrain 使用 Python 来实现它,与 Java/C++ 等语言相比,这使得它的开发速度很快。

  3. Pybrain 可以轻松地与 python 的其他库一起使用来可视化数据。

  4. Pybrain 为前馈网络、循环网络、神经网络等流行网络提供支持。

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

  6. 使用 Pybrain 训练器,可以轻松地训练和测试数据。

Limitations of Pybrain

Pybrain 对遇到的任何问题提供的帮助更少。在 stackoverflowGoogle Group 上有一些问题没有得到解答。

Workflow of Pybrain

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

workflow of pybrain

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

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

  1. 创建网络,并向训练器提供 dataset 和网络。

  2. 训练者训练网络中的数据,将输出归类为训练误差和验证误差,这些误差可以直接显示。

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

Terminology

在使用 Pybrain 进行机器学习时,有一些重要的术语需要注意。它们如下所示 −

Total Error − 它指的是网络训练后显示的误差。如果误差在每次迭代时都在不断变化,则表示它仍需要时间来平稳,直到它开始在迭代之间显示恒定的误差。一旦它开始显示恒定的误差数字,则表示网络已收敛,无论是否应用任何其他训练,它都将保持不变。

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

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

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

BackpropTrainer − 它是一个训练器,它通过反向传播误差(通过时间)根据监督或 ClassificationDataSet dataset(潜在序列)训练模块的参数。

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

Layers − 层基本上是用于网络隐含层的函数集。

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

Modules − 模块是包含输入和输出缓冲区的网络。

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

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