2013-04-01 14 views
19

Ho giocato un po 'con il pybrain e ho capito come generare reti neurali con architetture personalizzate e addestrarle a set di dati supervisionati usando l'algoritmo di backpropagation.Come addestrare una rete neurale a un set di dati supervisionato usando l'ottimizzazione pybrain black-box?

Tuttavia, sono confuso dagli algoritmi di ottimizzazione e dai concetti di attività, agenti di apprendimento e ambienti.

Ad esempio: Come implementare una rete neurale come (1) per classificare il set di dati XOR utilizzando l'algoritmo genetico di pybrain (2)?

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

(2) pybrain.optimization.GA()

+0

Tu non sei l'unico che vorrebbe sapere. –

risposta

20

fine ho lavorato fuori !! È sempre facile una volta che sai come!

In sostanza, il primo argomento dell'AG è la funzione di fitness (denominata valutatore in documenti) che deve prendere come argomento il secondo argomento (un individuo, definito valutabile in docs).

In questo esempio si alleneranno a 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] 

I risultati dei test dopo che lo script di cui sopra:

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

Cosa fa il GA qui? Xor è noto per essere risolvibile con un semplice apprendimento backprop. –

+0

XOR è solo un set di dati di esempio. L'ho usato perché è ben noto, piccolo e semplice. GA e BP si comportano diversamente a seconda del problema. Le GA sono anche belle perché non devono essere usate insieme a una rete neurale. –

+2

Ho eseguito il codice, ma non è riuscito a classificare XOR ... – SomethingSomething