Подтвердить что ты не робот

Как обучить нейронную сеть контролируемому набору данных, используя оптимизацию "черного ящика" с помощью pybrain?

Я немного поиграл с pybrain и понял, как создавать нейронные сети с пользовательскими архитектурами и обучать их контролируемым наборам данных, используя алгоритм backpropagation.

Однако меня смущают алгоритмы оптимизации и концепции задач, обучающих агентов и сред.

Например: Как я могу реализовать нейронную сеть, такую ​​как (1), чтобы классифицировать набор данных XOR с использованием генетического алгоритма pybrain (2)?

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

(2) pybrain.optimization.GA()

4b9b3361

Ответ 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]

Результаты теста после выше script:

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])