Pybrain 简明教程
PyBrain - Overview
Pybrain 是一个使用 Python 实现的机器学习开源库。这个库为您提供了一些易于使用的训练算法,用于训练和测试网络的数据集和训练员。
Pybrain 官方文档对其的定义如下 −
PyBrain 是一个模块化的 Python 机器学习库。它的目标是为机器学习任务提供强大、易于使用且灵活的算法,以及各种预定义的环境来测试和比较您的算法。
PyBrain 是基于 Python 的强化学习、人工智能和神经网络库的简写。事实上,我们首先想出了这个名字,然后对这个非常具有描述性的“反义词”进行了逆向工程。
Features of Pybrain
以下是 Pybrain 的功能 −
Networks
一个网络由模块组成,并且它们使用连接进行连接。Pybrain 支持神经网络,如前馈网络、循环网络等。
feed-forward network 是神经网络,其中节点之间的信息向前移动,并且永远不会向后传播。前馈网络是人工神经网络中可用网络中第一个也是最简单的网络。
信息从输入节点传递到下一个隐藏节点,之后传递到输出节点。
Recurrent Networks 类似于前馈神经网络;唯一的区别是它必须在每个步骤中记住数据。必须保存每个步骤的历史记录。
Datasets
数据集是提供给测试、验证和训练网络的数据。要使用的数据集类型取决于我们要使用机器学习完成的任务。Pybrain 支持的最常使用的数据集是 SupervisedDataSet 和 ClassificationDataSet 。
SupervisedDataSet − 它由 input 和 target 组成。它是最简单的 dataset 形式,主要用于监督学习任务。
ClassificationDataSet − 它主要用于解决分类问题。它接受 input 、 target 域,还接受一个名为“class”的额外域,它是所给目标的自动备份。例如,输出要么是 1 或 0,要么是基于给定输入的值将输出分组,也就是说,它会属于一个特定类。
Advantages of Pybrain
Pybrain 的优点包括:
-
Pybrain 是一个开源的免费库,用于学习机器学习。对于任何对机器学习感兴趣的新手来说,这都是一个很好的起点。
-
Pybrain 使用 Python 来实现它,与 Java/C++ 等语言相比,这使得它的开发速度很快。
-
Pybrain 可以轻松地与 python 的其他库一起使用来可视化数据。
-
Pybrain 为前馈网络、循环网络、神经网络等流行网络提供支持。
-
在 Pybrain 中,使用 .csv 加载数据集非常容易。它还允许使用来自其他库的数据集。
-
使用 Pybrain 训练器,可以轻松地训练和测试数据。
Workflow of Pybrain
根据 Pybrain 文档,机器学习的流程如下图所示:
在开始时,我们有原始数据,经过预处理后,可以使用 Pybrain。
Pybrain 的流程从 dataset 开始,dataset 分为训练数据和测试数据。
-
创建网络,并向训练器提供 dataset 和网络。
-
训练者训练网络中的数据,将输出归类为训练误差和验证误差,这些误差可以直接显示。
-
可以验证测试数据以查看输出是否与训练数据匹配。
Terminology
在使用 Pybrain 进行机器学习时,有一些重要的术语需要注意。它们如下所示 −
Total Error − 它指的是网络训练后显示的误差。如果误差在每次迭代时都在不断变化,则表示它仍需要时间来平稳,直到它开始在迭代之间显示恒定的误差。一旦它开始显示恒定的误差数字,则表示网络已收敛,无论是否应用任何其他训练,它都将保持不变。
Trained data − 它是用于训练 Pybrain 网络的数据。
Testing data − 它是用于测试经过训练的 Pybrain 网络的数据。
Trainer − 当我们创建一个网络,即神经网络时,它将根据给定的训练数据进行训练。现在,网络是否正确训练取决于在该网络上测试的测试数据预测。Pybrain 训练中最重要的概念是使用 BackpropTrainer 和 TrainUntilConvergence。
BackpropTrainer − 它是一个训练器,它通过反向传播误差(通过时间)根据监督或 ClassificationDataSet dataset(潜在序列)训练模块的参数。
TrainUntilConvergence − 它用于训练模块上的数据集,直到它收敛。
Layers − 层基本上是用于网络隐含层的函数集。
Connections − 连接的工作原理类似于层;唯一的区别是它将数据从网络中的一个节点转移到另一个节点。
Modules − 模块是包含输入和输出缓冲区的网络。
Supervised Learning − 在这种情况下,我们有输入和输出,并且我们可以利用算法将输入与输出进行映射。该算法旨在学习给定的训练数据并在其上进行迭代,当算法预测正确数据时,迭代过程停止。
Unsupervised − 在这种情况下,我们有输入,但不知道输出。无监督学习的作用是根据给定的数据尽可能多地进行训练。