如何使用 pybrain 黑盒优化训练神经网络以监督数据集?

Posted

技术标签:

【中文标题】如何使用 pybrain 黑盒优化训练神经网络以监督数据集?【英文标题】:How to train a neural network to supervised data set using pybrain black-box optimization? 【发布时间】:2013-03-23 00:23:15 【问题描述】:

我玩过一些 pybrain,了解如何使用自定义架构生成神经网络,并使用反向传播算法将它们训练为有监督的数据集。

但是,我对优化算法以及任务、学习代理和环境的概念感到困惑。

例如: 如何使用 pybrain 遗传算法 (2) 实现诸如 (1) 的神经网络来对 XOR 数据集进行分类?

(1)pybrain.tools.shortcuts.buildNetwork(2, 3, 1)

(2)pybrain.optimization.GA()

【问题讨论】:

你不是唯一一个想知道的人。 【参考方案1】:

我终于解决了!!一旦你知道如何,它总是很容易!

本质上,GA 的第一个参数是适应度函数(在文档中称为评估器),它必须将第二个参数(个体,在文档中称为可评估)作为其唯一的参数。

在这个例子中将训练到 XOR

from pybrain.datasets.classification import ClassificationDataSet
# below line can be replaced with the algorithm of choice e.g.
# from pybrain.optimization.hillclimber import HillClimber
from pybrain.optimization.populationbased.ga import GA
from pybrain.tools.shortcuts import buildNetwork

# create XOR dataset
d = ClassificationDataSet(2)
d.addSample([0., 0.], [0.])
d.addSample([0., 1.], [1.])
d.addSample([1., 0.], [1.])
d.addSample([1., 1.], [0.])
d.setField('class', [ [0.],[1.],[1.],[0.]])

nn = buildNetwork(2, 3, 1)
# d.evaluateModuleMSE takes nn as its first and only argument
ga = GA(d.evaluateModuleMSE, nn, minimize=True)
for i in range(100):
    nn = ga.learn(0)[0]

上述脚本后的测试结果:

In [68]: nn.activate([0,0])
Out[68]: array([-0.07944574])

In [69]: nn.activate([1,0])
Out[69]: array([ 0.97635635])

In [70]: nn.activate([0,1])
Out[70]: array([ 1.0216745])

In [71]: nn.activate([1,1])
Out[71]: array([ 0.03604205])

【讨论】:

GA 在这里做什么?众所周知,Xor 可以通过简单的反向传播学习来解决。 XOR 只是一个示例数据集。我使用它是因为它众所周知,小巧而简单。 GA 和 BP 的表现因问题而异。 GA 也很好,因为它们不必与神经网络结合使用。

以上是关于如何使用 pybrain 黑盒优化训练神经网络以监督数据集?的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyBrain 进行神经网络训练不会收敛

训练 LSTM 神经网络以预测 pybrain、python 中的时间序列

神经网络训练中一个时代的意义

使用 LSTM 循环网络的 Pybrain 时间序列预测

如何在 PyBrain 中使用函数 normalize()?

如何使用 pybrain 等外部 python 库在 cython 中编译我的 python 代码